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.


ue4-cpp-instancer2
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).

ue4-inst-draping2

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

ue4-inst-bp-grass-c

There are more upcoming features… Stay tuned!