In this tips and tricks episode we’re going to look at how to use Forest Pack's surface tools to quickly populate entire scenes with basic ecosystems that adapt according to the elevation. In the process we’ll share 11 tips for creating this lake scene that can be applied to scattering geometry and optimising renders to create similar environments.
By completing this tutorial you'll learn several useful tricks that have a much wider range of applications, including:
The files for this tutorial include the lake starter scene. The majority of this tutorial can be completed using models included in the built-in library, although Forest 6 is required to use some of the library objects shown. The supplied files are compatible with 3ds Max 2015 or above and Chaos Group's V-Ray renderer. Quadspinner's Gaea was used to model the terrain environment.
First of all, when working with very large terrains it’s often easier and faster to use a small section of the landscape to help set up the Forest Pack objects that will define the ecosystem. There are several ways you could create a section of the landscape, you could for example select and clone a section of the terrain or add slice modifiers to isolate a selection, but we find it’s easiest to just draw a straight spline above the terrain to define a representative cross section, and then use iToo Software’s free Glue Utility to project it onto the terrain. To do this:
It’s sensible to plan out your ecosystem in advance. In that way you avoid wasting time modelling or sourcing things that later are not required. In this scene we’re going to keep it quite simple. Along the bottom of the lake bed we will add some seaweed, nearer the river banks we want some reeds. In fact we’ll add two types of reeds, tall ones that are largely above water level and smaller ones that poke above the water line and add some interest. Moving up as we get near the river bank we want some stones and pebbles that will transition into grass weeds and finally trees, rocks and flowers.
With a plan in place you can easily create a Forest Pack object for each of the distinct areas straight away. Here's a step-by-step example for creating the trees.
You should do the same thing for all the Forest Objects in your ecosystem plan. To save you from having to read a lot of unexciting repetition we're not going to show the creation of everyForest Objects. Throughout this tutorial we'll explain a principle and allow you to apply it yourselves. If you'd like to know more about the fundamentals of Forest Pack we recommend first following the Canal tutorial which will get you up to speed quickly, before tackling this tutorial.
As you can see, at this stage we didn't worry too much about any other settings, only the choice of models, their probabilities and distribution. If you use Forest Pack's built-in presets, like the new Layered Grass for example, you can probably use the default settings. In fact the scene mostly uses objects from the Forest Pack 6 library. Only the reeds and flowers are from a third party. If you want to follow the tutorial you will need to supply your models for these areas, or you could substitute them with the canes and daisies that come with the plugin.
With all of the Forest Objects created we can restrict them to the elevation range planned in the first tip. This is made possible using the Limit by Altitude feature found in the Surfaces rollout. Using a simple Bottom and Top value you can restrict the scatter to a specific elevation range. We'll take this one Forest Object at a time from the bottom to the top, starting with the seaweed:
With those changes made you should have seaweed that is growing only on the bottom of the lake. Exactly the same technique is used to limit all the other Forest Pack objects used in this scene to create a complete ecosystem.
To help disguise the joins between Forest objects and make them knit together seamlessly, it's a good idea to overlap their altitude range values. For example if we enable the Forest object that adds stones along the shore line you can then adjust the Bottom value so that it overlaps the seaweed. Similarly you should use a Top value so that the stones overlap the waterline and go up onto the shore a short distance. At this point we'll enable the main Forest object and turn on Altitude range starting on the lake bed and moving up the terrain. The settings we used in this scene were as follows, but different scenes will of course require their own experimentation:
Objects | Bottom | Top |
---|---|---|
Seaweed | 14m | 19.15m |
Stones | 18.7m | 20.2m |
Grass | 19.98m | 25m |
Trees | 20.6m | 500m |
Notice that each layer's Bottom value is lower than the preceding layer's Top value, creating an overlap.
The main parts of the ecosystem are now in place, but the transitions can be a bit too sudden. Ideally we would gradually fade scatters where they overlap. This can be achieved using Density falloff which uses a graph to control the density of the scatter between the Top and Bottom altitude range.
The graph's X axis represents the altitude range between the Bottom value on the Left and the Top value on the Right. On the Y axis we have 0% Density at the bottom of the axis and 100% at the top. For example, this graph gradually fades the density of the objects to nothing as they reach the Top altitude value.
Let's take a look at the stones object in this scene as an example. We'd like them to fade as they overlap with the seaweed at the bottom and the grass at the shoreline. To achieve that:
The density will now gradually fade as it approaches the bottom of the lake and as it overlaps the grass making the interaction between the two Forest objects much more natural.
In addition to the stone you can add the same effect to the grass, seaweed and anywhere else you need to disguise a hard visible line.
As well as being able to control the density of the scatter based on the elevation, you can also control the scale. This can be useful if you need to change the size of objects based on their altitude, for example trees often get smaller the higher they are on a mountain due to the gradual reduction in oxygen levels (they're also less diverse and more scattered). In this case we can also use it to control the size of the seaweed so that it gets smaller the higher it is up the bank to the shore. This will stop it breaking through the water surface.To achieve this effect:
The same technique can be used to control the scale of the large reeds (created later) as they ascend the shore.
Now that we have the 4 basic zones setup - seaweed, shore, grass, trees - you can add more layers to each one to add diversity and interest. the easiest way is often to clone an existing Forest object so that some of the work is already done. For example we can clone the stones and use the style to add some reeds:
In these scene we've used the same approach to add additional weeds in the grass zone. Short reeds and long reeds to the shoreline, and small trees and rocks to the trees zone.
When you create new layers by cloning an existing Forest object it's important to update the distribution settings. If you don't, cloned Forest objects scatter items in exactly the same places. Let's adjust the reeds as an example. Because they were creating by cloning the same source the small reeds and the large reeds share identical distribution settings, so you'll never really see the small ones under the large ones. What we want are overlapping distributions that are hidden and revealed in a believable way. To fix this:
Sometimes you get a distribution pattern and density that's working well, but you still want to break up the scatter with gaps to add another level of randomisation and reveal other layers. The large reeds are a good example of this. The changes we made to the density are working well but we would like some sparser areas with items removed from the existing distribution. A neat way of doing this is to use Forest Pack's clusters feature, here's how:
Repeat this trick to add some interesting interaction to any layered objects.
Let's assume at this point that we have all the layers set-up on the test terrain and it's time to add them to the real scene. First, it's important to do some optimisation. Several of these objects have a high density setting and applying them to a terrain several kilometers wide is not a sensible idea. There are two easy optimisations that should be applied to nearly any object: camera culling and distance based falloff and clipping.
Camera culling can be applied to more or less everything. To illustrate we'll add the trees to the final terrain by unhiding the environment, selecting the trees, and then opening the surface rollout.
As I mention, you should use this feature on nearly every style to optimise your renders. It's applied to everything in this scene.
Closely related to this is the ability to clip geometry based on a distance from the camera. With small plants and ground cover there comes a point when they're so far from the camera that they're barely visible. At that point it's really not worth wasting resources computing them. To demonstrate this feature we'll optimise the Forest Pack object used to add the grass object.
Do the same thing to all the Forest objects, applying camera clipping, limiting the scatter based on distance and finally swapping the temporary surface for the real terrain. We're now ready to make a few adjustments to the scatters to cater for other objects in the scene like the buildings and Jettys.
So far we've used only altitude information to create these scatters. The Final step is to make some adjustments for the composition and the requirements of the scene. These include.
In total 11 Forest Objects were used in this scene, including seaweed at the bottom of the lake, a shore line consisting of two types of reeds and stone, two layers of grass, some large rocks with flowers and tall weeds, and finally saplings and mature trees. That's a lot of layers, but they all used a combination of tips explored in this tutorial to populate and optimise a scene automatically, based on the elevation of the terrain. This is a really powerful technique for quickly fleshing out environments, even if a little manual adjustment is required later. Best of all, if we were to change the terrain, perhaps by sculpting a second island or changing the shape of the shoreline, the system would automatically adapt to the new landscape. Thanks to the camera clipping modes, the view can also be changed and the scene will be re-optimised accordingly.
Thanks for reading, please stay tuned for our next tips and tricks instalment and check out our other videos in the tutorials section of the website and If you use these tutorial files or the techniques shown in this tutorial for your own work, we'd love to see it on our forum.