> [!tip] Always use References and Size references > Visual references, plus matched scale references — keep texel density consistent across the terrain. # Heightfield - From a **heightfield**, you can **save the different layers** (`bedrock`, `water`, `sediments`) — either via a **Heightfield Output** node, or via a **Convert** to geometry that turns those layers into point attributes. - **Visualization / Compute Range** — output a height map at the correct range: - ![[file-20240924153446315.png|600]] # Coordinate System *(Section to expand — coordinate system conventions for terrain projection.)* # Megascan Download - **Option: Prefer EXR.** - ![[file-20240924181052229.png|388]] # Lookdev - **Keep the node graph as light as possible.** - **Anyone should be able to make retakes** without asking you what's going on. Document the graph or use sticky notes. - **Displacement only if the studio asks for it** — usually your v1 doesn't have displacement. - The **goal** is to **cover the maximum terrain**, **hide repetition**, and be **as easy to render as possible**. ## Megascan Projection - Like always we need at least a Diffuse, a SpecR and a normal that we will gather from megascan. To project them on ground with relief we need a tri planar (Projection in 3 axis) - The first Tri planar will drive the other as we need the projection to be identical in between maps. so for that you do a **RIGHT CLICK** on your tri planar node then **ACTION** then **CREATE REFERENCE COPY** - ![[file-20240924182716594.png]] - **Input per Axis** = 3 images for the triplanar to work : One image projected in X one in Y one in Z : - ![[file-20240924174426366.png|500]] - **Blend** = blending transition between the different axis projection. - ![[file-20240924174737982.png|500]] - **The Cell** = Super important ! It will allow rotation of your texture, this is useful to hide repetition pattern of your texture - The blend option allow you to blend in between the rotation - ![[file-20240924175136511.png|500]] - You can add if needed color variation, range for spec and specRoughness and then plug everything into a standard shader - For my exemple I need an other megascan projection with moss only, so I repeat the exact same process ## Layer Shader - We need to combine shader as we have different megascan material with different physical properties ## Creating mask - This is where everything make sense, we need to create mask to go from the material 1 to material 2, in my case : soil to moss. - Here I am making a **mask by feature**, a node I already showed you for scattering. I am using it to have a mask which will define the area on the ground around my big trees. I do that by making a shadow mask and by connection the tree to the third channel of the **mask by feature** node. I call this mask : maskMoss - ![[file-20240924191210452.png]] - I will also use the Height and Water maps that the heightfield is making by defaults as a point attribute : ![[file-20240924192215985.png|650]] - To call my maskMoss I am using a user data float. A node that allow to call float attribute from geometry : - ![[file-20240924193820910.png|575]] - I am then using a noise and the diffuse of the soil to create some mask variation and I am adding it to the maskMoss. Connecting everything to the mix of the layer 2 - ![[file-20240924194009921.png|600]] - ![[file-20240924194030809.png|600]] - I am now projecting an other megascan and applied the height mask I talked to you about to target it just in the pound area where the water will be : - ![[file-20240925103921862.png]] - Adding the water geo and shader which is just a transmission shader as I wanted clear water but feel free to add subsurface with you want something more muddy - ![[file-20240925104103934.png]] # Combining displacement - In case you want to combine the differents displacement made by your megascan projection : - Don't forget that the displacement depends on how much you model is subdivided so increase the subdivision if necessary, but more subdiv means more RAM and render time : - ![[file-20240925110920931.png|500]] - The Displacement height, bounds and center are controlled in the arnold parameters of your geometry - ![[file-20240925110956047.png|500]] - Megascan displacement are 0.5 centered . don't forget to change it - I usually don't touch the Height value - In my material I am using a layerRGBA node to combine my megascans displacement. The first layer is a grey 0.5. this is my base. then I am adding my first megascan (soil) displacement layer in overlay mode - ![[file-20240925111621808.png|600]] - 0.5 Value of midpoint --> use Overlay - 0 Value of midpoint --> Use add mode as 0 + 0 still is 0 - The mix value is acting as my displacement strength - To add my second layer of megascan (moss) displacement I need to multiply it with the mask I made as I want the displacement only where the moss is. I am then connecting that to the layer 3 entry of my layer RGBA and that's it ! - ![[file-20240925112101222.png]]