Multi Index Materials

Multi Index materials are a powerful tool included in the plugin to smoothly blend multiple materials.

They allow up to 4 different materials per voxel, and up to 6 different materials per chunk (if you have more, the less present ones will be hidden).

They support smooth transitions, and have an additional channel left called Wetness that can be used to store Wetness or any other data you'd want.

The plugin includes a complex example material that allows you to easily use textures such as the Quixel Megascans ones. You can also use Multi Index with landscape material collection (see Materials)

Quick Start

Make sure you have the Examples.

Configuring the Voxel World

  • Add a new voxel world to your scene

  • Set its material config to Multi Index, and its material collection to MC_Quixel.

  • You should have a flat world like this:

Painting

  • Go into the Voxel tool panel, choose the Surface tool, untick Sculpt and tick Paint

  • In the dropdown, select Medieval Blocks:

  • Set the Target Value to 1, and start painting. Notice how nicely the grass blends with the rocks:

This is because this collection is using a Heigh Blend material.

  • Set the Target Value to 0.5: notice how the lower parts of the rocks are now grass

  • Select Coral Mud, set the target value to 0.8 and paint over the rocks & grass. Notice how the rocks disappear under the brush:

  • To fix that, add Medieval Blocks to Locked Channels:

  • Now, the coral will go over the rocks, without removing them!

Importing textures from Quixel

Thanks to Epic, Quixel Megascans are now entirely free with Unreal Engine!

ARM + Separate Height

This is the recommended channel packing option: setup the following

HRA, no metallic

The plugin example material also supports HRA textures if you tick the Use HRA parameter in the material instance. This tutorial will not cover this.

Doing the export

Make sure Unreal is running with your project open, and click Export.

Setting up the textures in Unreal

In Unreal, your Quixel textures have been imported under Megascans/Surfaces. For example:

  • Rename ARM to texturename_ARM, to help keeping your project clean

  • Open the ARM texture, make sure sRGB is unticked:

  • Open the Displacement texture, set the Compression Settings to Alpha:

  • Open the Normal texture and make sure Flip Green Channel is ticked:

Setting up the material instance

  • Open YourTextureName_inst (here Beach_Sand_2x2_M_00_inst).

  • Change its parent to be MS_VoxelQuixel

  • Set the Top Textures. If you wish to use a different texture set for sides/bottom, tick Sides Textures or Bottom Textures and configure the slots accordingly.

  • Your material should look correct:

Setting up the material collection

  • Create a new Voxel Instanced Material Collection

  • Open it. It should look like this:

    • Max materials to blend at once can be left to 6. You can reduce this to reduce the max shader cost of your materials.

    • Redirects can be left to their default values. They are used to not have to fill Sides and Bottom textures in all your instances: these will just default to Top if not set.

    • Templates is where the master materials doing the blendings are stored. They store 6 different templates: to do 1, 2, 3, 4, 5 or 6 blends at once. We can use the builtin ones here: MCT_Quixel_Tess

    • Layers is where your material instances will be stored. The parameters of these instances will be copied to the blend templates, with a VOXELPARAM_X: prefix to differentiate them.

  • Add your instances to Layers:

Wrapping up

You can now set your Voxel World material collection to that new one, and start painting!

Disabling tessellation on far chunks

Doing tessellation on the entire voxel world can be quite expensive. Thankfully the plugin includes the option to use different materials based on LOD.

  • Create a new Voxel Instanced Material Collection Instance. This is like a Voxel Instanced Material Collection, except it copies the layers from another collection.

  • Set Layers Source to the tessellated collection. The Layers should automatically fill up. Set Templates to MCT_Quixel.

  • In your Voxel World, add a new element under LOD Materials, set its collection to the new collection, Start LOD to 2 and End LOD to 26:

This will disable tessellation on any chunk with a LOD >= 2!

Last updated