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:
Reference to a scene object (renderable object) is stored (same as instancing the object).
Reference to object's material is stored (same as instancing the material).
Pivot point position is stored.
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:
Merging shader is compatible with all rendering engines but the main limit it faces is that the Planter has to send all the object data (vertices and faces) to the rendering engine before the rendering of each frame starts. This can consume a lot of memory, therefore scene size must be greatly reduced.
On 32 bit systems there will be a limit of approximately 10 million triangles rendered in the single view (the exact number depends on many different factors including renderer used, OS, memory settings...).
64 bit versions of 3ds Max do not have memory limit problems but rendering setup time could be long if there are huge numbers of plants and this shader is used.
Instancing Object Shader. This shader was added to allow 3rd party plugin objects to be used as plants in GroundWiz Planter.
This was added to allow V-Ray users to use V-Ray Proxies for planted objects. This way it is possible to plant tens of thousands of highly detailed trees and render a huge number of triangles.
Another interesting 3rd party plugin object is SpeedTree. Again Planter can be used to plant a huge forest of trees and let SpeedTree handle the rendering process.
New since version 1.600: SpeedTree v4.0 and higher when using Instancing shader allows each planted tree instance to be unique by using SpeedTree's procedural tree creation. Internally Planter keeps unique value for each planted instance and when rendering begins this value is forwarded to SpeedTree to create unique tree. This way each planted instance in the scene will look different. Please note that viewport preview will not show unique tree instances, but rendered image will.
When using Instancing Object Shader, Planter allows objects to render themselves. Good thing about it is that objects don't have to be convertible to edit mesh and will use whatever rendering methods creators decide to implement. The problem with this method is that Planter doesn't have much control over the rendering process. When the rendering starts, Planter will create all the necessary planted objects and hand them to 3ds Max to be rendered. This way the following limitations need to be observed:
- LOD (Level of detail) system won't work, only the highest LOD object will be used.
- Object Draw Type will always be Draw 3D (Rotate to View and Align to View won't work).
- All the visible object selection is handled by 3ds Max which means that Planter won't do any visibility testing. This way Planter should use up to 100,000 plants for the whole scene since bigger scenes may create out of memory condition once the rendering begins.
Despite the limitations mentioned above, there are cases where custom objects like V-Ray Proxy system used by V-Ray rendering engine can bring great benefits to the end results. In one example, a scene containing 50,000 trees and each tree having 50,000 triangles was rendered, to render a view with 2.5 billion triangles all together!
New since version 1.500: Instancing shader is also used when rendering ArchVision RPC objects. Please note that ArchVision RPC could have long render setup times if there are a big number of RPC objects (many thousands of planted objects). Due to the way Archvision RPC objects work, they also don't support GroundWiz Variation Map to add color variations.
Instancing shader is also used when mr Proxy objects are used that were introduced with 3ds Max 2009 and 3ds Max Design 2009. Just like V-Ray proxies, mr Proxy objects can bring a humongous number of triangles to the rendering process and GroundWiz Planter is there to assist the process.
Mental Ray Shader v2 is used only with mental ray renderer. The advantage of this shader is that it will create merged objects on demand and mental ray can discard them when they are not needed any more - memory becomes much less of a problem. In that case, it is possible to render views with hundreds of millions of triangles. For more information, refer to mental ray Shaders section.
When rendering with Merging shader & Mental Ray Shader v2, Planter uses the following procedure to render the planted objects.
Since rendering engines used with 3ds Max are not good at handling hundreds of thousands of objects instances, Planter uses merging of objects to overcome the problem. However, the main advantage of using Planter is that it will only send objects to the rendering engine that are really visible. As a result, it doesn't waste triangles and basically memory on objects out of the current view. Combining that with LOD (level of detail) system, results can be really full looking scenes where each vertex (face) is well used.
There are many controls to help GroundWiz Planter determine what is visible to be able to do scenes with reflections, wide views, etc. Please refer to Render Settings for more in-depth explanation of those controls.
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.