MegaScatter is a system that allows you to scatter multiple objects into regions of your scene either defined by spline shapes with the option to scatter either inside the closed spline shapes or to scatter along a spline. Or you can scatter objects via an overlaid texture where different colors can be assigned to scatter different object types and a second texture can be used to control the size of the object. Each object can have a weight for how often it will appear as well as random factors for scaling, rotation etc. You can ask the system to either scatter the objects as new objects in the scene or combine the objects into single meshes for massively reduced draw calls and increased performance. There is also the option to have the objects be scattered at runtime this means you can greatly reduce the size of your game and reduce loading times.
MegaScatter can scatter objects in any kind of scene onto any kind of objects, so you can use it with Unity terrains or just normal mesh scenes so will work across all platforms and works with both Unity Free and Unity Pro.
Faster Games, Less Memory
One of the key advantages to making use of a procedural scattering system that can be used at runtime as well as in Editor mode is the big reductions in file sizes and loading times you can benefit from. For example the demo scene seen in the video on this page and images had a file size of 44MB when built the normal way with the objects scattered into the scene and the game built. But with the objects deleted and the system told to use the same values to scatter the scene at startup the file size was reduced to 10MB, and with scattering you could have loads of different scenarios and choose which one to chose when the game starts, so you could have four scatter scenarios setup one for each season of the year, so normally that could potentially be one scene file of 150MB plus with loads of objects hidden or 4 different scenes to maintain each 40MB plus. With MegaScatter you can have all four seasons with next to no memory usage in one scene file of 10MB.
The other advantage to using a scatter system is the reduction in draw calls, again for the scene in the video the draw call count when the scene was built without MegaScatter was over 10,000 due to high number of objects in the scene, with the mesh combining system used by MegaScatter the scattered scene only uses 250 draw calls, another big performance saving.
You can add as many MegaScatter objects as you like to your scene and each object can scatter any number of different objects to the scene, this makes it easy to set-up scatter objects for say different platforms or detail settings in the same scene. The scattering can either be done in the Editor or the system can be told to do the scattering at start-up, this means very detailed scenes can be set-up that use no memory until the scene is run, this massively reduces your game file size and hugely reduces loading times for scenes.
MegaScatter objects can also be told upon which objects the scattered objects can be placed as well as being told which objects they should not appear on or near so for example in a scene that already contains objects such as houses and walls you can tell each scatter object to ignore areas covered by existing objects in the scene via a user defined list. And you can off course control whether the objects being scattered can overlap themselves of objects previously scattered by the object.
You can at any time change the Density or Count values for the scatter objects and re scatter so again you can easily adjust the detail your scenes have depending on the platform and CPU power of the system running you game. Each scatter object has dozens of options to control how it is scattered in the scene, there are controls to limit the slope the object can appear on, or controls for the height range in the scene the object can appear in.
As well as saving many hours over the normal manual positioning or painting of objects into a scene the MegaScatter system allows for variations in the objects to automatically handled so you can define random rotation and scaling factors on all axis, as well as if the object should align to any surface it is to be scattered on. And color variations can also be applied so if you are scattering say a rock mesh in your scene you can easily set-up any number of different colors that rock can be when it is scattered. There is also an option to add noise to the vertices of the meshes being scattered so making sure each instance of the object is unique looking.
To further fine tune and control your scattering there are various constraints you can define for each scatter layer such options as Snap values for position and rotation angle if you need things a little less random. You can also define a slope angle limit so that you can have grass only appear of relatively flat areas and rockey outcrops on steep slopes. And also a height option to again limit the area of any scattering for a layer to between two height values, so that makes it easier to use a single spline shape and have it filled with different plants, trees rocks etc and control that grass stops as trees begin and rocks only start to appear higher up.
The scatter system is very simple and easy to use but it does also offer a lot of control over some of the finer points of the scattering process to make getting the result you need easier. Such things as control how how much objects will align themselves to the ground, so plants you may not want to align at all but rocks or items with flat bottoms you may want to align correctly. Also when scattering around objects that you dont want your meshes to appear on you can control the distance from such objects that a mesh will be scattered, useful to stop poke through with plants against walls, or for just leaving a clear area around a house or road. Another feature is the ability to stop scattered meshes over hanging the edge of an object which can look unnatural. And finally when scattering a lot of the same mesh and the variations are not offering enough difference there is a vertex noise option to allow you to have a unique mesh shape for every scattered item.
You can also control the behaviour of the scattering from script and at runtime, this allows you to easily enable and disable layers so changing trees or plants from spring mode to winter becomes easy, or changing the weight or count of each scatter layer to adjust for CPU or platform or some game event. And it is important to note that with the scatter system you can have dozens of scatter scenarios or even hundreds for next to no extra memory use so bringing massive variety to your game levels with out the authoring time, memory use or load time issues.
MegaScatter comes complete with the basic version of MegaShapes which is our advanced Bezier spline system which allows you to easily build splines in your scenes not just for the scatter system but also can be used for camera paths etc. MegaShapes also has options to turn the splines in to meshes in numerous ways either filling in the shape and extruding it or extruding along the length of the spline to form tubes or box tubes. MegaShapes can also import SVG files and also available are exporters for 3DS Max and Maya that allow splines built in those packages to be imported directly into Unity.
Demo made using MegaScatter
Demo made using our MegaScatter system, all objects in the scene apart from the house, well and trees are generated and positioned at run time. It is quite a complex scene but you can open the options and adjust the detail setting to increase or reduce the amount of objects scattered in the scene. You can also toggle the various image effects. Hold Mouse Left button to swing the camera, wheel to zoom and keys W and S to roll the ball.
Click Image to launch demo
You must be logged in to post a comment.