LOD Cubes with 3d Texture

I'm trying to get better performance out of my robotic cubes. Reducing the polygon count of a simple cube is almost impossible and I wanted groups of cubes to merge into larger volumes anyway. 8 cubes would become 1 and 8 of those would become 1 as well. Instead of simply decreasing the detail of each cube I opted for less cubes. It fits my story and might even look cool. Scaling them in Unreal Engine wouldn’t work because I wanted the bevel of the cubes to remain a consistent size. A little work in Autodesk Maya should give me 4 levels of detail for cubes of different sizes.

subdivided cubes in Maya

I didn't realize but UE4 makes it quite easy to add levels of detail to a mesh without importing them as one FBX file. Since I plan to use them as separate files anyway, saving them as separate FBX files made more sense to me.

Importing LOD mesh at different levels

The real trick to this technique is assigning a different material or material instance to each mesh. If I didn’t change the material the larger cubes would appear like open and empty boxes since the 3D noise material needs to intersect with geometry to be visible. I added scaling and offset parameters to the material and created 4 instances with values corresponding to their size.

The default values for “screen size” of each level of detail on the static mesh asset didn’t work for this video so they needed to be adjusted to see how it performs. The further the camera gets from the cubes the more they need to merge into larger cubes.

Next I needed to switch out the instance static mesh on the Blueprint in the last tutorial to the new “hierarchical instance static mesh” to accept the LOD cube asset. Performance went up dramatically since there are considerably less polygons being drawn on the screen.