Technical Overview of GroundWiz Planter



3ds Max is not good at handling a huge number of objects since each object has some memory overhead and consumes some processing time. The number of objects that can be handled simultaneously is around 10 at most 20 thousand at interactive speeds. To create nature scenes, many plants are necessary and that is why GroundWiz Planter was created.

Planter is optimized to handle millions of objects at the same time and to allow creating and modifying huge forests and other situations that require many objects, while maintaining interactive update speed.


How Planter handles objects used as plants
When a scene object is to be used as a plant, the Planter saves the following data: The object is instanced, so any change made to the original object's vertex, face, UVW mapping structure will also change the look of Planter's object. You are free to delete original object as you can always put it back to the scene later on by using Put button on the Plant panel.
Since instancing is also used with materials, modifying the original object's material will also change the look of Planter's object.

However, if you at any time want to replace the object, replace the material, or move the pivot point of original object, Planter needs to have these fields reset internally. There is a Replace button on the Plant panel that is used in that case. Otherwise Planter won't detect a new material on the object or that pivot point was moved.



Material handling
When objects are added to the Planter, they will all be mapped to use the same Planter's multi-material (named GW Planter Auto Mat). This multi-material is built from all the materials (or multi-materials) of objects used by the Planter and will be automatically updated/rebuilt when objects used by the Planter have their materials changed.

You should always let Planter use this multi-material and not assign another one. If you by mistake do replace it, you can always open Planter on the Modify panel and Planter's multi-material will be automatically reassigned to it.



Rendering with Planter
Currently there are 3 geometry modules (shaders) used by the Planter to render planted objects:

Planting process
Planter has many tools that will help you with planting objects. Planting is always done on a surface of terrain object called 'Ground object'. There are many settings to help you create a diverse look of nature, like using GroundWiz layers, collision avoidance, random scale, orientation... All these settings need to be adjusted before planting starts. Changing these parameters will not change already planted objects. It will only affect objects planted afterwards with Mass Planting and Brush Planting tools.

Once planted, each planted object takes some small amount of memory that stores necessary object data. With today's computers, it should be possible to handle many millions of planted objects without any problems at interactive speed.


Animation Offset
Planter supports plant animations. Each plant (in fact each LOD object) can have its own animation that was created by user. Animations are standard max object animations that modify for example vertices, faces, UVW mapping and are applied to objects via modifier stack (for example Bend, Lattice, Skin…). By default if an object that is used by the Planter has an animation, all planted object will use it.

However, each object using the same animation will make plants look like a robot army - moving all at the same time and in the same way. In that case, you can use 'Animation Offset' that will randomly displace animation positions in time and create more natural out-of-sync look. Each plant has a parameter 'Time Offset' that allows you to specify how far ahead in time plant's animation can be from the current animation time. This value is the maximum possible offset - normally all the plants will end up using some random time offset that is less than the maximum one.

Animation offset will slow down viewport redraw a lot. So, use it only when testing and with only a few visible objects. You can always quickly disable animation offset display in viewport by unchecking 'Show Animation Offset'.

Here is a simple example on how animation offset affects planted objects. In this case, we used a simple cylinder with animated bend modifier applied to it.


Animation without Animation offset


Animation using Animation offset