How to paint landscapes with multiple textures/materials. Credits go to CodeLikeMe for teaching me this.

  • Firstly, create a new Landscape. For this tutorial, it doesn’t matter how large it is.
  • Now in your content browser. Create a new folder and call it landscape. We will store our landscape materials.
    • I have mine like this: Content > Geometry > _Materials > Landscape.
  • Open it and create new material and call it M_Landscape.
    • The prefix ‘M’ for material
  • Click the output node (see the image, below how it looks)
  • Under the Material section, tick the box “Use Material Attributes” (see the image, below how it looks)
  • Near the output node, right-click and type in “Landscape Layer Blend”
  • Click the node and under the section “Material Expression Landscape Layer Blend,”
    • Press the ‘+’ three times to create three array elements
    • Open each array element (click the ‘>’) and change the Layer Name to L1, then L2, and so on…
    • The 0th index of the array will have a Preview Weight of 1
      • This will be the default brush
  • Get out of the material window, in the same folder as the M_Landscape, right-click, and create a Material Function
    • It’s under the Materials & Textures tab
    • Call it MF_Layer
      • The prefix ‘MF’ for Material Function
  • Open MF_Layer
    • Right-click, type in “Input”
    • Click the Input Node and rename it to Base color
    • From the output end, type “MakeMaterialAttributes”
      • It should be connected to Base color
      • The OUT on the MakeMaterialAttributes node should be connected the Output Result
  • Open and Minimize/Drag to another monitor the M_Landscape material
  • Drag the MF_Layer into the M_landscape material editor
  • You should have something that looks like this:
  • Connect each MF_Layer to a Vector Parameter
    • To create a vector parameter right-click the editor and type “Vector parameter”
    • Rename each Param to L1 Color, L2 Color, and so on
    • Double click the black box in each Param and choose a color
    • Here’s what I have:
  • Apply and save the material and close it
  • Now right click M_Landscape and create a material instance
    • Call it MI_Landscape
    • The prefix ‘MI’ stands for Material Instance
  • Why are we doing this?
    • Material Instances of other materials allow us to edit materials non-destructively and without recompiling the material
  • Click your landscape and in the Details tab, click “Landscape”
    • Assign the Landscape Material to MI_Landscape
  • Go to Landscape Mode and click “Paint”
    • Scroll down to target Layers and click the plus Icon
    • Select Weight-Blended Layer
    • Allow it to have the default folder directory
    • Repeat till all the Layers have it
  • You should now be able to color your landscape. This should work similarly for materials.

Special Thanks to The FrankRatchye STUDIO for Creative Inquiry at Carnegie Mellon University for sponsoring my projects