Foliage
Setting the meta graph
For this example, we'll be using the following meta graph as base:
To spawn the foliage, we will need to do line traces against a physics scene. Create a new one:
Add a new Generate Marching Cube Collider node to your meta graph, assigning the physics scene you just made to it:
This node will populate the physics scene with marching cube colliders we can use to line trace our foliage against.
Setting up the foliage asset
Create a new foliage asset:
In the foliage asset, switch to the Foliage Graph at the top right:
Add the following nodes:
To convert the Vector2D output of the Generate Halton Position 2D node to a Vector, just drag the Vector2D pin to the Vector one. Make sure to set the Z value to 1000000.0.
Make sure to also assign your physics scene and a mesh.
This graph does the following:
Generate some 2D positions using a Halton random generator
Line trace against the colliders we generated earlier
Assign a mesh to the hit positions
Render the hit positions
Wrapping up
Back into your meta graph, create the following node:
You should now see spheres being spawned in your level!
If you increase your Distance Between Positions in your foliage graph to 500:
You'll get less dense spheres:
Restricting the spawning slope
To restrict the slope at which your foliage spawns, you can use the following logic:
20 is the max spawn angle in degrees here. This gives you the following (with tuned noise settings):
Controlling foliage density with brushes
Follow Brush & Channels, but keep our current meta graph. This should get you setup with some simple brushes and a voxel channel. Alternatively, follow Installing Example Content.
Add the following nodes at the end of your foliage:
This will query the distance from MyChannel at the foliage position, and only select foliage which are less than 10m away from the brush.
This results in this behavior:
Spawning foliage on foliage
Spawning foliage on foliage is just a matter of outputing foliage colliders into a new physics scene, and tracing against that physics scene.
Make a new physics scene, name it FoliagePhysicsScene:
Duplicate your foliage graph, and add the following at the end:
Make sure to add your new foliage in the Generate Foliage node of your meta graph.
You should be getting something like this:
In your "small foliage" graph, add a new line trace node tracing against our foliage physics scene. Merge the result back into our main attributes:
You should now see foliage being spawned on top of other foliage!
Tips & tricks
You can create foliage collection to make it easier to reference your foliage in your meta graph
You can toggle Debug on the line trace nodes. This will show you the traces being done
Just like with brush assets, you can make foliage asset instances!
You can increase the LOD of your line traces. Going from LOD 0 to LOD 1 will be ~8x faster
Last updated