Multi Index Materials
Last updated
Last updated
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)
Make sure you have the Examples.
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:
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!
Thanks to Epic, Quixel Megascans are now entirely free with Unreal Engine!
Download Quixel Bridge, and follow the setup:
In Quixel Bridge, configure the Advanced Settings as follows:
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.
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:
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:
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:
You can now set your Voxel World material collection to that new one, and start painting!
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!