Norvorent Plant Breakdown

growthfinal.png

The flora system I made for Norvorent starts by figuring out how natural forces react to the landscape. Using water, sun direction, collisions, light, and shadow, this procedural system creates an ecosystem. The first step is to create a particle system to quickly simulate how water would pool and flow over the terrain. Using a basic POP network with gravity and the terrain collision gets a nice result, but I like adding the POP fluid node to bring just a little bit of actual water physics. Overall this setup is very fast, almost real-time. Transferring the particle color on to the terrain was all done easily in a SOP solver. Then the color from the last frame of the simulation is used to control the scattering density of the plants.

waterparticles.gif
watercolor.gif

The next thing I implemented was averaging the shadows created by any objects around the plants, in this example its two boxes. Starting with making a directional vector pointing from the scatter points to the sun, this vector is used to ray-trace collision against the two boxes. Combining all the shadows together I can find all the points that are ever in shadow then using the distance from the original position to the ray-traced collision position I can determine the strength of the shadow on the point. This information is used as a growth multiplier for the plants, growing larger in the full sun vs full shadow, vice versa, etc.

sundir.gif
shadowmove.gif
shadowadd.gif

All this information gets pumped into the particle system that grows the plants. I decided not to make secondary branches with this particle system but instead use a branch builder to allow more art direction of the growth and to leverage instances to reduce memory usage. So now we have where the plants will grow from the water information, the height they will grow from the shadows, the direction they will grow towards the sun, and how wind can shape them over time.

Growth Multiplier

Growth Multiplier

Sun Direction

Sun Direction

POP Wind

POP Wind

Making splines out of the particle system I feed this into my branching system. I am not going to dive very deep into this, as I’m planning on doing a much more in-depth breakdown of it on a later date and share the system for anyone to use. The system allows you to get the look of the branches one level of detail at a time.

branchmove.gif
branchmove_ui.gif
adding_branch.gif

Then layering the branching system allows for very detailed and controllable plants.

leaf1.gif

To create the leaves I used a technique I first saw used by the Grove Tree Growing blender add on, where instead of just instancing leaves onto the plant I instance a small branch to reach an even more detailed result with only a small loss on memory.