November 5, 2020

Adding Terrain Details | Chapter 3 - Clip 2

Transcript :

We are now in clip two, of chapter three. We left of with a finished mask on the projected terrain to blend in the tunnel geometry. I grab an object merge and point to that last status of the height field. We definitely need to add some noise here, but for that, we should add a bit of blur to the mask.

Maybe with a little less strength. It should just be enough to avoid harsh seams. Now let's try to add some noise to it. We can connect the mask directly into the second input. This is obviously way too much. I bring the amplitude and the element size way down. My main goal here is to add enough noise to get rid of the smooth surface.

And this is already enough for me. I don't want to do too much since I want to add more overall details in later steps. It is not necessary to clear the mask since you could either replace it or simply not connect the mask. But I like to have a clean slate in between different tasks. So once I don't need a given mask anymore, I throw down a mask clear.

Now it is time to increase the level of overall detail on the height field. This will give us better quality and create a better result for blending the tunnel shapes. So, first of all, we can increase the resolution of our height field with a height field resample note. Remember that these next steps will definitely have an impact on performance.

I am going to use the settings that were also used in these renders. That way you will know exactly what was used, but I recommend to either use, takes or use the processing trigger again. You want to keep the setup as light as possible during iteration. I resampled the resolution up to three here, you could just leave it at one or deactivate the node for later. The resample gives us a lot more to work with and we use it by adding even more distortion to the height map.

You can see how much this adds to the terrain now that its resolution is much higher, but I am done with the big noises. I want to refine the surface and simply add a bit of character to it. This is completely your choice. I found that an element size of roughly 42 gave me a good result. The main shaping is done.

There are only some final touches that I want to make. A good moment to bring in a final erode node. By default, this would melt away the shape we just created. This time I want to keep most of it. For that to happen we make a quick adjustment on the default settings. On the main tab in the thermal section, we reduce the erodeability to 0.5 and bring the cut angle up to 60.

The erodeability stands for the softness of the terrain and a lower value makes it harder to erode while the cut angle goes into the opposite direction, a bigger angle prohibits too much erosion. That is all we need for the last erosion of this project. Let's compute the range for the colors and set the simulation running. And you can see how the overall shape of the terrain stays intact.

As before I throw down a slump node to play around with the debris a bit more. We are absolutely just playing around at this stage and you can decide for yourself what look is more to your liking.

As an absolute final touch, I found a last distortion set to simplex and a very small value gives the whole terrain a bit more roughness.

But now that the terrain is basically finished. I want to get some color back in. At later stages, I am using mega scan textures for the rendering, but I choose these textures with the colored terrain in mind. And my thinking for the colors was defined something with the feel of a wasteland mixed with something outlandish, like something you might have seen in the martian.

That means some red tones. And of course, no water layer.

Something like that. This project is more about creating the logic, but why not try and make it look good at the same time. We already have the final terrain, but there is still something left to do. And that is creating some maps to distribute, the mentioned textures later. I am not trying to create a big piece of art here.

I just want to show the tools to get there yourself. So let's make some simple texture maps. First with a terrain using mountains like this, we should create a map for cliffs. A map for a texture begins as a mask as well. For cliffs, we can simply go by the slope so we know what to do and create a new masked by feature note.

I just want to select everything with a slope of at least 60. I want to have a bit less area covered by the mask. While not changing the selected slope. For that there is a node called mask shrink. With this we can do just that and shrink the mask to a degree of our choice. I mainly want the cliffs to leave a bit of space at the borders, even though the slope is high there as well.

A radius of one seems to be okay. I want the map to have a gradient border so we can follow it up with a mask blur. Nothing extreme, just enough to make the texture blend in. We want to create additional maps. So we need to save this mask as something else. So create a copy layer, node and rename the current mask to cliffs.

I am using the prefix MSK for the maps I create. Now we don't need the mask anymore, and I am using another mask clear to get rid of it.

With the next map, I want to grab the peaks of the mountains. Again, we start with a mask by feature and switch over to mask by height.

I just want to select the top. The smooth preset would be a good start. We just need to push the ramp a bit to the side, to limit its range. For finer adjustments, we can use the  min height slider. This is roughly what I want to have in this mask, but I don't want to have the whole chunk in it. I want to have a clear outline of what will be the peaks.

So in addition to the height, I activate mask by occlusion. This allows us to select a very precise part of the top of the mountains. This also allows us to take in a bigger range of the height while still reduce the selection to the true peaks in the terrain. Here, you can see the height field with inactive lights, making it very clear what God selected in the end.

With another map finished. We use the copy layer again to rename it to MSK peaks. And since we are done with it, I, again, clear the mask for the next and final map. Now you could create as many maps as you need at this point. With more maps, you can increase the variety of your landscape, but the process would be very similar to what we have already done.

One issue remains. If each map gets its own texture later on, what about areas that were not in any of them? Let me show you how you can grab what is left. I start that final map with a mass clear node. 

And if anyone comments on how we could have used the previous node for that, I will find you and make you listen to German folk music.

This node is not really just meant to delete the mask layer. It is meant to set a specific layer to a certain value. That mean we can also set the mask layer to one. And at least once I need to use a hight field wrangle in this course, this is a great example for using vex to simplify a task while getting a closer look at how Houdini is handling data. At this moment, all of terrain is masked.

That means all of it has the attribute mask with a value of one. In this step I  want to take away what is already in one of the created masks, like the debris or the cliffs. What would you do? If you can only use notes, one way could be to use layer nodes to subtract the individual masks that you already got, or you could combine all the maps and reverse it.

That definitely works, but you can imagine the mess this will create in your node tree. Here is a different approach. Not better, just different. And as you might have guessed by now, something that I prefer. In the height field wrangle, I can address attributes as usual, while it iterates over the individual volumes, the attribute mask starts out with one everywhere and all I have to do to get what I was after is to subtract the values of the different maps from that attribute. No additional nodes and wires needed.

And it is a good example on how simple data and Houdini can be manipulated. Once you are aware of where all of it is floating around. Me personally, I don't think you can say one is better using available nodes or vex. In the end the same data is pushed around. It is a question of what you are comfortable with and what fits into your circumstances.

But it is my definite opinion that solving tasks with VEX helps you a lot to understand what Houdini does within the nodes. And I see that as my main task and the purpose of this course. Show you how Houdini 


Great. Are you done? Could we get back to the course now? 

Sure. We now have everything else in the mask that was not yet in any map.

Let's throw down a new copy layer node. And since all of this is not a cliff, no mountain peak, and also not debris, I call this the mask for Sandy material. After this, we can, once again, clear the mask. We are done with the terrain. This was just a small excursion into the hight field tools. And there is a lot more to discover.

Let's also throw down another output for just the height field. For the main part of the course, we need to continue with polygons. So here we convert the height field again. By default, that does not bring in the color, but we can activate bake point color. Now the points have inherited the color as an attribute.

If we look at the data we have on this mesh, we find that there is a lot of stuff that we don't need. At least I don't need it anymore. So I throw down another clean node, but removing attributes using the asterisk also removes what we need to keep. So use the circumflex in front of the attributes that should not be deleted.

We want to keep normals and UVS, the color and all the maps we created. Those can be selected by using the prefix MSK. And finally, the debris map that was created by the erosion node. Now we have a fairly clean terrain mesh, but as you can see, I was a bit too quick with the normals we did not yet create them.

I am going to save the normals on the points and for terrain, I like to use to go by face area.

Finally, we can throw down the final output Null for the detailed poly terrain. 

And with this, we finished another clip. Don't miss the next one, where we finally cut the terrain to pieces with a  boolean operation. And what can you do to make sure you don't miss anything? Yes, you are absolutely right.

Subscribe to the channel. 

Leave a Reply

Your email address will not be published. Required fields are marked *

David Kahl VFX

a Software Developer, Nerd and VFX Artist based in Germany
Visit Patreon
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram