Array 3D v0.83Summary:
This is a new Helper for 3DS Max, that does the same as the Array tool does, but with some more features and more importantly, the settings can be adjusted on the fly, so you can always change the spacing, rotation, scaling between the array objects, or use splines for either 1D, 2D, 3D position. Also feature an randomize addition that can randomize spacing, rotation, scaling.
Update (v0.83):
Converted the modifier into a Helper, and added an update Array3D script, to update scenes already made with the old version of the script. See full list of changes in the version log. Hopefully I haven't made too many new bugs.
Main features:
- Select one or more objects for the array
- Create array in 1D, 2D or 3D dimensions
- Adjust the position/rotation/scaling in 1D/2D/3D per object or as total value.
- Position incrementing from the previous position and rotation
- Create array using 1-3 splines
- Array group of objects or randomize the objects in the array
- Add randomize values to the position/rotation/scaling
- Turn freezing and bounding box on and off
- Change wireframe color to source color, custom color or a gradient from x,y,z
- Linking the array objects to dummy or custom object
- Offset the array from the dummy
- Convert and rename generated objects and group them
- Adjust any value on the fly
Download:
The script can be downloaded from my website here:
http://www.mcgreed.dk/misc.asp or from
ScriptSpot.comInstallation:
Just unzip all the files into your 3ds max's Scipts folder (..\3ds max 2009\Scripts\)
The modifier should automatically start when you restart 3ds max.
IMPORTANT! READ THIS IF YOU ARE UPDATING FROM OLD VERSION WITH EXISTING SCENES!
If you have scenes already using an older version of Array 3D, you need to take these steps to
update your scene, as the Array 3D Modifier has changed into a Helper:
- Install the script as usual
- Load your scene with the Array Modifiers
- Go up to MAXScript / Run Script... and find the script UpdateArray3D.ms in /scripts/Array3D/
- Run the script and you get a update dialog window. Follow the instructions there to update and convert the Array 3D modifiers to Array 3D Helpers.
- When you have updated all your scenes, and you don't need the old version of the script, feel free to delete the folder /ArrayModifier/ from /Scripts/. The new version is located in /Scripts/Array3D/ and the file ArrayModifier_startup.ms from /Scripts/Startup.
If you don't want to remove it, please note that you will have two different randomize modifiers in your list, the old Array Randomize and the new Array 3D Randomize.
Uninstall:
Go into \Scripts\ folder and delete the folder \Array3D\, and the file Array3D_startup.ms in Scripts\Startup\
Quick start guide:- Go to the Helper section and pick the one call Array3D and click somewhere in the scene
- Now go to the Modify fan
- Now either use the Pick or the Pick List to select the object(s) you would like to use in the array (cannot select groups).
- Select the amount of objects you like to generate in 1D/2D/3D (don't pick too large number, for example: 10x10x10 makes 1000 instances of one object)
- Now go change Spacing rollout and change the values there.
You should now be able to see all your instances created by your array. Play with the settings.
Array Modifier v0.82 Features video
[ame]
http://www.youtube.com/watch?v=UNrAt0boZJo[/ame]Array Modifier v0.8 Brickwall Example video
[ame]
http://www.youtube.com/watch?v=rc4CVsOMWAo[/ame]History:
v0.83
(download link):
- CHANGED: Converted the Array 3D modifier into a Helper
- CREATED: Update Array Script for updating scenes made with old script version
- ADDED: Option to show frozen in grey
- ADDED: Option to Rotate by Spline path
- ADDED: Option to Rotate Array Incrementing
- ADDED: Character string check on prefix (avoid illegal characters)
- ADDED: Option to link used splines to selected link parent
- FIXED: Generel bugfixes
- CHANGED: Rewrote a lot of the code, to make it work with incrementing and in the process the script should also have become faster. Also cleaned up the code
- CHANGED: Activated the animation parameter for those who wants to try to use the script with animated parameter, though the script hasn't been tested with it. Only fields that doesn't create new objects will be animated (so fields like Amount will not be animatable). Recommend to set Creation to Modifiy to avoid creating/deleting objects when animating.
- CHANGED: No encoding! Yeah, my code isn't so messy now, so you can see it now.
v0.825
(download link):
- CHANGED: Improved object picking, can now pick more then one object, right click to stop
- CHANGED: Optimized the way position is calculated, should make changing spacing faster
- FIXED: Scaling calculation was using wrong axis for math, should be fixed and also faster
- FIXED: Fixed a bug that didn't allow the user to change scaling type
v0.82
(download link):
- FIXED: Wireframe colors updates when changing amount
- CHANGED: Rearranged the UI to make room for new function
- CHANGED: Scaling has been improved and now adjustable on all three dimensions
- ADDED: Option to create array objects as group set, or random selected objects
- ADDED: Linking array objects to dummy or custom object (can move dummy and array follows)
- ADDED: Option to only show ever Nth object in array.
- ADDED: Two different ways to do spacing/rotation/scaling, per object or total for all.
- ADDED: Random object seed in UI
- ADDED: Disable array option, which is automatic activated when converting
- ADDED: Ask to delete array objects when removing from list
- ADDED: Check that user can't pick the same object as the one the modifier is applied to
- CHANGED: Made group creation mandatory when converting/renaming array objects
- FIXED: A bunch of bugs and added confirmation boxes for some actions.
- ADDED: Version number in script (backwards compatible for future versions)
v0.80
(download link):
- CHANGED: Changed the modifier name to avoid conflict with old version
- ADDED: Added unique array id for each modifier added to dummy
- ADDED: Added custom prefix in front of array objects
- ADDED: Option to create objects as Copies, Instances (default) or Referances
- CHANGED: Seperated postion/rotation into seperate sections
- ADDED: Now has scaling in %
- ADDED: Option to enable/disable position/rotation/scaling
- ADDED: Option to uniform values position/rotation/scaling
- ADDED: New image for UI (padlock) and delete item icon
- FIXED: Adjusted bracket image, made background transparent
- REMOVED: Randomizing for seperate randomize modifier
- ADDED: New Convert section, where you can convert/rename array objects
- ADDED: New 'Array Randomize' modifier for randomize position/rotation/scale
- Optimized the code
v0.75 (
download link):
- Change modifier to be attach to a dummy (or any object for that matter)
- Pick 1+ objects that should be use in the array
- Gave 3 options to how to create/update objects in array
- Spacing/Rotation for each object and axis
- Change array objects Wireframe color to match source, custom color or color gradiant
- Freeze/Unfreeze array objects
- Bounding box array objects
- Update array on dummy move/rotation (scale?)
- Seed generation
- Randomize Position and Rotation
- Auto update on most elements
- Delete all objects in array
- Manuel Update All button.
Replies
Its the first time I ever made a video tutorial, so I do fumble at times, but I hope its useful anyway.
This version will change into two-part modifier. One modifier is the array itself, the other is the randomize part of it. I decided to do it this way, so you could add several randomize on top of each another, which has its advantages.
I would like it make the whole thing animate-able but I'm not sure if it would work, unless you stick in 'Modifiy' setting and place keyframes on the copies, change settings, place keyframes and so on. Might work.
If you have any suggestions for it, please come with them and I'll see if I can implement them (if they make sense )
Currently I'm working on a little addition, so you can choose to make the array as it is now, where all the objects is used as they are, and then another option that it only use one object in the array, but the instances is picked randomly from the list.
So if you have 15 sources, and make an 10x10x1 array, it will only make 100 objects (10x10), but the objects are randomly picked from the source list. Should be relative easy to add.
I got a functional version of it now, but haven't bug tested it properly yet and I would like like to make another video to showing off the new features. Also need to do some dull work in the shape of some proper documentation. Think I need to drop the text file and have something where I can use images as well.
Unfortunately I still have a problem with updating the old array to the new one, when I fix one thing, it just breaks something else. So until I know a better way, I'm afraid that all settings in the first rollout will be reset to default when updating.
Either way, if people really like my script, they can always donate by paypal on my website if they like.
For people that depend on money it sure sucks sometimes because there are so many awesome free scripts and plugins available, but I believe releasing stuff for free especially smaller tools draws the community only closer which is a good thing.
Why complain about things being encrypted just because its free, should rather complain about things being commercial then free. But that's just me. :P
Agreeing with renderhjs. Additionally, usability drops down to zero for me when encrypting. If I want to change something to my needs when using the script I am bound to the externally visible properties that are changeable. When not encrypted, those constraints are off.
To make an example, a guy in this post
http://www.polycount.com/forum/showthread.php?t=85051
recommended a feature in the edgefinder script that is mostly based on another free script:
http://www.scriptspot.com/3ds-max/scripts/make-parallel-edges.
Making the code available helps the community so much more!
I think encrypting scripts only are applicable for the larger scripts out there, e.g. ghostTown. For me, it makes no sense in encrpyting small utilities.
Whenever I am obsessed with a project and research topics I am about to cover in tools or scripts I am just happy about anything I can get my hands on to learn and forge from (and I google sometimes for weeks). Some areas like UV mapping or RTT used to be very hard to get useful sample scripts for, like how to use certain classes proper because the documentation is missing on those etc.
edit: oh and I too in general don't use scripts that are encrypted either, some kind of developer instinct I guess. If the script is readable however I am actually intrigued to use it, modify it or include it in my max ui setup.
I fully understand the need to see how things are done, and I used a lot myself but its still free tools, if something is missing, you can always suggest it to the person who made it. If people start getting grief for encrypt their work they give out for free, they would just stop doing that and that would only hurt the community.
recently it was me who got a little bit of upset because of the very same nature you just mentioned. The thing that annoyed me actually was that there was no mention in the thread or post that there were commercial intentions and or the script is encrypted- even though it was obvious where the script had its origins from (many other free available scripts). To me thats very important to communicate with people, state right from the start if there are commercial intentions or if there are reasons to close the access to the script, source or extendibility.
Ah well I guess what it means is that the word "free" has different meanings to different people, and people like me get sometimes upset that not everyone can or wants to share absolute free independent scripts.
Havardsc: Yeah totally agree on the small scripts stuff for free and if its a really massive thing sure one could sell it, just like I would expect to pay for a real plugin with powerful functionality worthy paying for.
Also made an update script, so if you have already got scenes using the old version of the script, you can run the script and update all the instances of Array Modifier to the new version.