In her 2017 GDC presentation, Tracery developer Kate Compton talks of greebling and footing as two vital elements of believable environments. Greebling and footing is fine detailing added to the surface and cracks of a larger object that makes it appear more complex, and therefore more visually interesting. In games, this is often a vital part of the level art pass and most game developers have various takes on the practice (my personal favourite is Hidetaka Miyazaki's addiction to planting headstones all over the place.
While nowadays realtime mesh painting tools allow for impressive customization and complex detailing, the final greebling pass is often done manually and (to the pained cries of level artists) often requires touch-ups when (not if, when) the level design changes. With this engine-agnostic plugin, you can now simply set a bounding volume, throw in the meshes you'd like to use and you will then be able to interactively instance them all over the map (while also being able to control values like noise magnitude, mesh orientation and density).
The package installed, simply navigate to the new Tools/Spawn Greebler menu item to spawn the greebler manager object in the scene. If you have gizmos enable you should now see a bunch of black dots in the bounding volume - these are the preview locations for your greeble.
You now have a new asset type, the Greeble Component. It's pretty self explanatory (message me if you still have issues) - this is essentially the asset type you use to populate your scene with the greeble manager.
You can tweak a few settings (if you're feeling anxious they all have in-engine tooltips):
- Voxel Size: How dense should the generated previews and greeble be. Smaller numbers = higher detail
- Noise Magnitude: Noise applied to the final spawn positions.
- Footing Threshold: Higher values here will make greeble only appear in cracks. 3 is a good value, use 2 for stuff like grass.
- Gravity Direction: Vector direction of where greeble will settle. Set to 0,1,0 for stalactites?
- Drop Threshold: Voxel threshold to spawn greeble. Higher values = Higher density though you probably should just decrease voxel size.
- Spawn Mask: Spawn mask to decide on which layers to spawn greeble.
When you're happy with the preview, press the Greeble button and your scene should get populated with meshes. If you're unhappy with it, press Reseed and keep tweaking!
Per usual for detail meshes, remember to have them non-static and with a GPU instanced shader to save on performance. Don't feel guilty about dynamic meshes, that's what the Made with Unity did for the Book of the Dead foliage!
After setting up which static meshes you'd like to use in the static meshes array, you can tweak a few settings:
- Voxel Size: How dense should the generated previews and greeble be. Smaller numbers = higher detail
- Noise Magnitude: Noise applied to the final spawn positions.
- Footing Threshold: Higher values here will make greeble only appear in cracks. 3 is a good value, use 2 for stuff like grass.
- Gravity Direction: Vector direction of where greeble will settle. Set to 0,1,0 for stalactites?
- Drop Threshold: Voxel threshold to spawn greeble. Higher values = Higher density though you probably should just decrease voxel size.
When you're happy with the preview, press the Greeble button and the plugin should pop out an instancedStaticMesh actor into your scene.
The repository is split for the two engines: the Plugin folder's for Unreal and the Packages folder for Unity.
This is a plugin that makes use of Unity's Package Manager feature. Just drop the com.alexismorin.greebler folder into your packages folder (found at the same level as the Assets folder) and it should work out-of-the-box. If you're using a pre-packman version of Unity (maybe supported, can be made to work if you're courageous), take the stuff inside the com.alexismorin.greebler folder and then drag it anywhere into your regular project hierarchy.
Just drag the Greebler folder into your project's Plugins folder (create it at the same level as your content folder if you don't have one already) and open your project - things should work out by themselves.
Unreal will probably bicker if you don't, but you should also probably:
- Turn on Blueprint Editor Utilities in your Editor preferences.
- Raise your maximum loop iteration count to 5000000 in the project settings - the plugin needs to do a lot of number crunching when creating the point cloud and will trip out Unreal's infinite loop alarm system otherwise.
Per usual, this was whipped up in a couple of hours on my couch (and a few on my bed here and there, give me a break) - bugs beware, tweak or fork as you wish 👨🏻🎨
- Unity: Some stuff still spawns under large objects - not that much of a problem but could be a performance issue for larger projects