Building Procedural Instancing Tools for Unreal Engine

When dealing with repeating 3D elements, a meaningful approach is to procedurally describe and generate them through a template and a transformation-list. The new upcoming version of ATON 2.0 for instance (yes, pun intended) already provides built-in procedural methods in order to instantiate several 3D objects by streaming a template (e.g. a column) and a transformation-list, thus greatly reducing bandwidth. On the desktop side, a porting of such functionalities from OpenSceneGraph to Unreal Engine 4 (ver. 4.16.1) began a week ago.

A C++ ActorComponent has been developed in order to read common ASCII files representing TransformList (position, rotation and scale) and a StaticMesh representing the Template. Such functionality can be employed into a compact and very basic Blueprint node (see figure) offering a flexible and manageable tool for designers, while maintaining all parsing and processing routines at C++ level. A TransformList file can be externally updated (e.g. generated by another software) and the procedural generation automatically rebuilds right inside Unreal Editor.

A second Instancer tool has been developed (this time, fully Blueprint) to offer a customizable tool to generate randomized instances (always in Editor) in a given radius with draping, overlapping options, scale variance and much more. The following shows an Instancer with trees (top left), another Instancer with boulders (bottom left), and a third Instancer (ferns) testing adaptive location on top of world geometries (right).


Adding another Instancer for grass, and tweaking of scale variance inside Unreal Editor.


There are more upcoming features… Stay tuned!