Hey friends, finally it's time. We're kicking off part one of our Gaia height map exercises and diving into creating ultra realistic scenes. This tutorial will consist of two videos. First, we'll go over creating a height map in Gaia and then import it into Unreal. Next, we'll work on creating a professional material for the landscape and solve the related issues. We'll work on adjusting the textures with Gaia height maps. Next, we'll try to use PCG to align trees or meshes with the textures. So, stay with us because this tutorial is the best and most complete landscape tutorial on our channel. First, let's review the nodes we created for this height map. As you can see, this scene is made up of three main mountains. The back mountain has a greater height and I made the left mountain a bit shorter and smoother using shaper and curve. Then with the help of hillify and erosion we bring it closer to our reference. [Music] [Music] The right mountain was combined with a weaker mountain that was rotated using the transform node. Then with the clip node, its edges were tightened. And afterward, I applied a slow blur with a pearl and noise effect. I also used hillify and wizard on them so they resemble the left mountain allowing us to combine them together. [Music] Finally, I combined the three mountains together along with a mountain range for the ground and exported the height maps. If you don't know how to export them, check out the previous videos available on the channel. [Music] [Music] Heat. Heat. [Music] in Unreal. I created an empty space, then switched to landscape mode. From the manage tab, I selected import from file and imported the total height map. I changed the Zscale to 300 so that the landscape would be built similar to GIA. Of course, this number isn't always the same. You need to reduce the amount of fog in Unreal to the lowest level, but don't set it to zero. Otherwise, you'll see black in the background. [Music] [Music] Now let's move on to creating the material. First, we create a material, open it, and convert it into a material attribute. [Music] Next, we need to use a landscape layer blend since we want to assign multiple textures to our landscape using height maps. So we create four layers for it and assign a custom name to each one. [Music] Heat. Heat. [Music] [Music] Yeah. [Music] Next, we open QuixleBridge and import the desired textures into Unreal. [Music] creep. [Music] [Music] I can't. [Music] I [Music] don't know. [Music] [Music] Hey. [Music] Hey. Hey. For the first material, I want to use forest floor. So I import the albido. But before that, we create a landscape coordinate along with a color node by pressing the three key and clicking. [Music] We then convert it into a parameter because we want to use the channels to control the scale and normal. [Music] We add a flatten normal to the normal map and connect the normal parameter channel to it. [Music] In the last texture, we first connect the R channel to roughness, the G channel to ambient occlusion, and the B channel to displacement through a multiply node with the other branch coming from our parameter. [Music] [Music] Follow the same process for the other materials as well. [Music] [Music] Woo! Hey, [Music] hey, [Music] hey. Heat. [Music] Heat. [Music] [Music] Heat. Hey, Heat. [Music] [Music] Hey, hey, hey. [Music] behind [Music] me. Maybe [Music] Heat. Heat. [Music] beat [Music] beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep [Music] [Applause] [Music] up. That one back up. [Music] In the end, create a material instance from your material and assign it to the landscape. Now, go to the landscape menu and open the paint section. Click on all material layers created. Then press the plus icon next to each material so they're ready for the step where we assign them to the height maps. Now go to the manage section, open the layers and assign each material its own specific height map. [Music] [Music] Now click on import. And as you can see, the materials are correctly matched with our masks. [Music] You can adjust the scale and normal maps to see them more clearly. If you run into issues with the edges, you can reduce the sharpness somewhat by painting manually and using smoothing. [Music] Heat. Hey, heat. Hey, heat. [Music] fixing texture repetition issues. As you can see, even though we increase the texture size, the repetition issue is still very noticeable. We want to solve this problem using the texture variation node. The texture variation node. The texture variation node in Unreal Engine material editor is one of the nodes used to diversify the appearance of a texture and helps reduce texture repetition on a surface. This is especially important in environments such as terrain, walls, or any surface where a texture is repeated frequently. Height map. You need to connect your own RDP texture here and convert it into an object texture. UV, this is where you plug in the texture coordinate. Variation scale defines the scale at which the variations are applied. Variation level controls the intensity of the variation in the texture. Height map influence determines how much the height map affects the variation process. Mass channel specifies whether to use your own blue map. the height map. Use dither, a graphics technique that creates a fine pattern similar to noise to soften the border between two textures, making the transition look more natural to the viewer. Random applies a random variation to rotation and scale. HD edge compression. When textures are blended together, especially in cases where height map influence or variation level is high, the borders between different sections can become too sharp, creating unwanted patterns or artifacts. The HD edge compression option solves this problem by applying a type of edge compression. You can see this change compared to the previous image. Even though the scale has been reduced, the quality of the highlighted area is much higher. I previously set up a sample of this node so I can show you the result. [Music] To be able to use the height map, we use our ORDP node and convert that to a texture object. [Music] For variation scale, variation level and height influence, we create a color node and convert it into a parameter. [Music] Then we assign the name of each input to the channels and connect them accordingly. [Music] [Music] [Music] [Music] For the mass channel, we create a color and set it to blue since we want to use the height map channel we set up above. [Music] Next, you can connect the node to the textures and as you'll see, the problem will be resolved. Do the same for the other materials as well. [Music] [Music] Dick. [Music] Hey. Hey. [Music] [Music] behind [Music] [Music] [Music] Now. Now, if you don't want the scales and parameters to be the same for all textures, it's better to assign a separate name for each parameter. This way, you can have individual control over each one in the material instance. [Music] [Music] [Music] [Music] [Music] [Music] PCG. Now, we want to use PCG in a few different ways. First, we activate the plugin. And after saving our level, we restart Unreal. We create a folder with the same name and add an empty PCG inside it. Now I want to link our height map to the PCG. So we add a get texture data node. Then we bring our piece G into the scene and match its size with our map. [Music] [Music] [Music] [Music] Now I want points to appear on the ground. So I need a projection node. But I only want the points to appear on the hills and on our green colored texture. So I assign the hill height map to the get texture data node. After pressing D on the node, as you can see, the points are generated, but they're not on the ground. So, we need a get landscape data node, and we connect it to the projection node to fix the issue. [Music] I can't wait. [Music] But we didn't want all the points to appear on the ground. We only wanted them on the hills. So we convert the alpha to red and the problem is solved. If you want to remove the black points around, you can use the density filter. [Music] Next, by adding a noise attribute and then applying another density filter, we can reduce the number of points to make the scene lighter. We add the transform node to create variation in size, rotation, and location, and the self-p pruning node to prevent them from intersecting each other. [Music] [Music] Now we can add a static mesh spawner to place our meshes into the scene. However, since our landscape is very large, the meshes appear small. [Music] Now I want to import a few free samples from Sketch Fab, but this is just for testing. In the final version, I'll be using different meshes. [Music] To make sure the models are correct, I first import them into Blender, adjust their size, and then bring them into Unreal. [Music] [Music] [Music] Now we test them in Unreal and if everything looks fine, we also add the textures to their material. Now we replace the cones with trees in the PCG and by adjusting the values in the density filter, we increase their number. [Music] Hey, [Music] hey, hey. [Music] [Music] [Music] Hey, [Music] [Music] hey, hey. [Music] Down [Music] behind me. Heat. Heat. [Music] [Music] [Music] Hey, beep. [Music] [Music] [Music] I'll add another tree for the one closer to the camera. And I'll explain later why I don't want to keep using them. In this tutorial, as a special gift for all my amazing subscribers, I've included three highquality lowpoly trees in a folder. You can easily find a link in the description of this video and download them for free. Evergreen tree sparkles. I created these trees myself a while back and now I'm sharing them with you so you can use them in your own projects. [Music] I'll replace the previous trees with these new ones. [Music] [Music] Fixing the issue of leaves not being visible. visible from a distance. You can create a material instance for the distant trees and by lowering the opacity mass clip value reduce this issue to some extent. [Music] Heat. Heat. [Music] [Music] Heat. Heat. [Music] Another [Music] solution is to enable two-sided in the leaf material. You can also adjust the MIP gen settings to find the best option for fixing this issue.