Instance Tool

51 votes
Version: 
2.6
Date Updated: 
09/23/2020
Author Name: 
Matan Halberstadt

Instance tool analyze the geometry objects in the scene and finds groups of objects that could be represented as instances of one of them. Then the user can turn every group into actual instances and choose which object from the group will be preserved. The objects in the group are objects that have the same topology (could be morph targets of one another) and the difference between them could be described with transformation alone. After making a group into instances, all the objects in the group except the master object will become instances of the master and a new transformation value (position rotation and scale) will be applied to transform them back to their original shape and orientation.

 

The advantages of using instances over just copies of objects are:

  1. It saves storage space.
  2. It saves memory.
  3. It saves render time.
  4. It saves work time (modifying one instance effect all of them, like uv mapping).

 

Updates:

version 2.6

  • fix an error with corona scatter

version 2.5

  • fix for the "undefined to integer" error (tested and confirmed on 2019)
  • fix for issues with "preserve pivot"

version 2.4

  • Added Group by Material ID checkbox - if checked, only objects with the same material ID setup will be grouped as instances.
  • UI is now resizeable on the height axis.

version 2.3

  • Added Group by Scale checkbox - if checked, only objects with the same scale will be grouped as instances.
  • Added Group by Material checkbox - if checked, only objects with the same material will be grouped as instances.

 version 2.1

  • "-- Unknown property: "getName" in undefined" error message in early max versions is now fixed.

version 2.0

  • All mesh geomety is now supported including Editable mesh, Editable poly and primitives.

Installation:

 

  1. Drag and drop the mzp file into the viewport, the tool will pop up.
  2. Go to Customize -> Customize user interface.. -> Toolbars tab
  3. Under the category "Snowball VFX" you will find the InstanceTool, drag it into a toolbal.
  4. Enjoy.

 

 

UI description:

 

  • Get groups Button: analyze the scence and collect the potential groups. In no objects are selected, the whole scene will be analized, but if there are selected objects, only groups containing at list 1 selected object will be created (this will take less time).
  • Tolerance Spinner: set the maximum distance alowed for every vertex of an object to move from it's original location in order to become instanced to another object.
  • Ignore hidden objects CheckBox: If checked, it will ignor hidden objects.
  • Random wirecolor per group CheckBox: if checked, every group will recieve a unified  random wirecolor.
  • Instance selected group Button: Make the selected group in the Groups listbox into instances of the master object.
  • Instance all groups Button: Make all groups into instances.
  • Groups ListBox: Shows all the found groups after the analyze is done, and let the user select a group. Double clicking the group will select the objects of the group in the scene.
  • Remove selected group Button: Delete the selected group from the list.
  • Group Membets ListBox: Shows the objects in the selected group. Selecting an object from the list will select it in the scene. Double clicking an object in the list will set it to be the master (the master is the object that has the prefix ">>" in the list. This is the object that will not be changed at all when instancing the group, all the other objects will become instances of it).
  • Remove selected Object Button: Delete the selected object from the group.
  • Attach selected group Button: Attach all the members of the selected group into one mesh.
  • Attach all groups Button: Attach all the groups, every group will become one mesh.
  • Detach selected objects Button: this option is only available if you are running snowball pipeline for now.
  • Select instances: Select all the instances of the selected objects in the scene.

 

Instance tool UI

 

Links:

http://www.snowballvfx.com/

http://cargocollective.com/matan#1450373/Instance-tool

Version Requirement: 
Tested on 3ds Max 2019
Video URL: 
AttachmentSize
instancetool_dragdrop.mzp110.32 KB
instancetool_help.pdf88.78 KB

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Matan's picture

the new version has the

the new version has the requested features:
* checkbox - group by scale
* checkbox - group by same material
cheers.

visit my portfolio at http://cargocollective.com/matan3D

Tornado's picture

Additional Features

This additional features looks great, when we expect to see it ?, and are you going to make for your personal use or you can share it ?

Best Regards,

voltaire585's picture

Additional Features

Hi Matan , love the script very useful to optimize large files.

I would like to add some additional options. ie
- check to instance only objects of the same scale
- checkbox to instance objects only of the same material

We would be happy to implement these features ourselves if that would help. Would it be possible to get the script as human readable?

Thanks

leejk's picture

Tolerance Not Working

After experimenting some more, the tolerance setting does not work for me in 3ds max 2015. Regardless of what it is set to, I get the same result. It often will try to instance square like objects that are clearly visually different. I'd be happy to share an example scene to demonstrate.

rgds

leejk's picture

Doesn't Handle Square Objects

Hello,

Very useful tool, but as someone else mentioned it has problems with objects that are the same in vertex count, but have different widths & heights. For example, it makes all square like objects of different sizes all the same instance. Not sure the tolerance setting is working as it should in this case.

rgds

Matan's picture

The tolerance parameter works

The tolerance parameter works like this: two objects are considered as potential instances if one of them can be transformed into the other with a single linear transformation, in the sense that all of it's vertexes will align with the other object's matching (by index) vertexes with a maximum error distance of the tolerance value. I hope this is clear enough.

visit my portfolio at http://cargocollective.com/matan3D

Matan's picture

works for me on 2015, can you

works for me on 2015, can you give me some more info on the error you get?

visit my portfolio at http://cargocollective.com/matan3D

eyepiz's picture

Does not work with like objects

Great tool...but it instances unwanted items, such items that are exactly the same only different in height and lengths.

I don't this the Tolerance Spinner works.

Creates problems with UV's

ltchest's picture

latest version

anyone got this working in Max 2015 ?

lillolas's picture

and for splines?

good job! this is a great tool, no doubt, but I'll like to use it for splines (shapes) too. consider this for future versions please!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.