1 | Introduction

In this next section we are going to dive into our level building process and begin with developing the top network to generate terrains.  This will walk us through a workflow that allows us to completely design our terrains within the Unity Editor.  We will walk through how to design an HDA to enable level designers to layout a terrain and then how to process the layout into a final Unity terrain complete with erosion and split into tiles. 

2 | Creating a Terrain Layout Tool

To start our terrain building process we should let level designers provide some sort of input to the system rather than let the system procedurally generate a landscape for us.  In this lecture we are going to build an HDA from the ground up to allow level artists to do just that.  We will look at how we can use the Houdini Engine painter to give designers control over where mountains should be placed and how big they should be.  We will then close out the section by learning how we can export from an HDA, directly inside of the Unity engine.

3 | Testing the Terrain Layout Tool

With that HDA built, let’s take some time and make sure everything is working the way we want inside of the Unity editor.

4 | Creating the Main TOP network

Now that we have a rough level layout for our terrain, let’s now focus our attention on building the main TOP network that will be responsible for building our entire level.  This will introduce you to building larger TOP networks specifically for the Unity Game Engine.

5 | Projecting the Terrain

In this lecture we are going to convert our layout geometry into a usable Heightfield, so we can leverage all the Heightfield functionality inside of Houdini.  This will set us up to erode, split, texture and scatter our terrain.

6 | Eroding the Terrain

Just about every large game terrain uses erosion to add more realism to the look and feel.  So let’s go and add some erosion to our TOP network and provide some controls for users to tweak the look.  

7 | Testing our TOP Network in Unity

In this lecture we are going to test out our TOP network inside of Unity.  This will also get us more comfortable with the development process when using TOPs with the Houdini Engine.

8 | Texturing Terrains with TOPs

One of the core components of a terrain is its material and textures.  What we want to do is automatically assign our textures to the Terrain while it is being built.  So let’s take a look at how we do this with Houdini, TOPs and the Houdini Engine for Unity.

9 | Hook up the Terrain Texture HDA

Now that we have the HDA which is responsible for the texturing of the terrain, let’s get it hooked into the TOP network so it is producing the textures for our terrain inside of Unity.

10 | Splitting Terrains with TOPs

To finish off our terrain, we should take a look at how to split our terrains using TOPs.  This is great for large scale terrains so we can take advantage of the Occlusion Culling feature in Unity.  

11 | Conclusion

To close out this section let’s do a quick review of the topics we covered throughout the lectures.


  • pauhol 8 months, 3 weeks ago  | 

    Does splitting the terrain into tiles affect the speed the cooking takes in Unity compared with keeping the terrain as one pice and cooking it ‘whole’?

    What is to prefer in order to keep the waiting time down as much as possible for testing out different variations (for example trying out different settings on the noises) of the terrain in the scene?

    Thank you!

  • Petoncle56 8 months, 3 weeks ago  | 

    Really a great tutorial, but as pauhol said, is splitting the terrain into tiles affect performances ?

    Thanks !

  • borbs727 8 months, 1 week ago  | 

    Is it possible to undo while painting? I'm noticing that ctrl+z doesn't do anything making the workflow kind of clunky. I haven't finished the tutorials yet, so maybe there's a solve, but at the moment I'm thinking it might be best to do all the setup in Houdini and just send over the result to Unity.

  • Animate4evr 8 months, 1 week ago  | 

    Howdy Guys! I am going to try to answer these questions as best I can.

    With regards to speeding up the design of terrains and performance when using Split Terrains, I highly recommend splitting the terrain when using PDG as you can update the individual tiles when they are dirtied rather than having to update the entire terrain for every small modification. You can do this using the Partition by Bounds and setting the Dirty mode to "Mapping Standard". This will make it so only those tiles that are affected by a change will update. That said, if you are updating something like changing the entire noise on a whole terrain, this would update the terrain as a whole anyways. Let me outline a different way to go about designing terrains to speed up the iteration time.

    Basically what I have started doing is creating terrain stamps. These stamps are exactly like brushes in Zbrush or Photoshop, but they are in 3D...but have the same sort of falloff. Each stamp represents a different type of terrain feature. Large mountain, river bed, rolling hills, etc. I then use those stamps in Houdini Engine to craft an entire game level. This is faster cause all the stamps are individual HDA's. This give more iteration to design. When I am happy with the design I turn it into a unity terrain by projecting it onto the terrain stamps.

    Hopefully that helps with the design of terrains.

    With regards to undo while painting, I don't see it either...I usually put the brush in subtract mode and remove value from the attributes. It is totally valid to create the rough terrain shapes in Houdini as well and just import the bgeo file into your PDG network.

    Thanks so much guys! :-)

    • borbs727 8 months, 1 week ago  | 

      I'm having trouble getting the textures to work in Unity. The cook finishes but it's just a blank terrain.

      I've found this information about the "Resources" folder requirement in the Unity docs and am just curious if this is why we're required to use this project structure with PDG?

      Also, here's my error message for the missing textures:

      Part with id 3 is missing.

      Unable to setup instancer!

      • olindstrom 4 months, 3 weeks ago  | 

        Did you ever find an answer to this? Currently having the same issue.

        • james001 4 months, 2 weeks ago  | 

          same problem here

          • drewmassey 2 months, 2 weeks ago  | 

            Has anyone tracked this down? I'm having the same problem still too. Houdini 17.5.360, Unity 2019.2.

            • Animate4evr 2 months, 2 weeks ago  | 

              Howdy Drew!
              So yes! I actually got a fix for ya. So there were a lot of changes to the terrains in Unity 2019.2 it seems...Ive tested with Houdini 17.5.380 and HEngine 3.2.44 and its working using the unity_hf_texture_diffuse attribute on prims. I tried using the new Terrain Layers through HEngine but they still seem broken. But hooking up your Diffuse, Normal, etc using the hf attrs works! Let me know if you need an example.

              • drewmassey 2 months, 2 weeks ago  | 

                Thank you so much! Switched to Unity 2018.3 and works like a charm.

                • aarongrove 2 months, 2 weeks ago  | 

                  Hi, having trouble with the part 9 as well, the texture node in unity fails for me (runs fine in houdini). The other nodes work fine, and I've tried comparing against the provided project files. I'm also using Houdini 17.5.360 and Unity 2019.2, and when I started a new project in Unity 2018.3 all my nodes failed. I also get the "Part with id 1 is missing" and "Part with id 3 is missing" errors. Do you have any ideas why this could be happening or more information about how I can go about finding the issue? Thanks.

              • Opheliar 2 months, 1 week ago  | 

                Just to be 100% sure, can you show an example of what you mentioned? This tutorial is great thanks to your constant examples of the common errors or oversights.

              • stinzen 1 month, 3 weeks ago  | 

                Hey! I have the same problem as the other with the texture node failing in Unity and the "Part with id 3 is missing. " error. Would be great if you could make an example with the correct setup. Thanks.

  • borbs727 8 months, 1 week ago  | 

    Also, thanks for the tutorials! I'm learning a lot!

  • 3clipse 8 months, 1 week ago  | 

    k so cannot get my textures to show up in Unity... (other than the Grass). After the texture node is added your implementation starts cooking 7 nodes. Mine still only starts cooking 4. So the issue is somewhere here, however I have gone over the tutorials from lecture 8 and 9 up to this point multiple times now and cannot see what I have done incorrectly I am hoping that there is an obvious answer that I have missed?

    • 3clipse 8 months, 1 week ago  | 

      nvm... I did not have the erosion HDA selected when I copied the File node... copied a new one correctly and it works fine... still only cooks 4 nodes (perhaps that is a change in 17.5.173

  • shoria 8 months ago  | 

    I cannot find any textures (.tga) in the project files. Any clue where I can find them?

    • 3clipse 8 months ago  | 

      Go onto the unity store... there are plenty of free textures there... also opengameart . org etc... simply google free textures and you will be able to get 3 to get through the tutorial... same applies for the prefabs... they aren't great but they are sufficient to at least get the tutorials finished.

  • Vectonaut 7 months, 2 weeks ago  | 

    Hey Kenny, really great tutorial so far and I really appreciate the amount of work you've put into this whole series (and other tuts).

    Just wanted to point something out for those not aware, and which is a huge time saver for updating HDA parameters. Basically instead of navigating up and down the network nodes to right click open the HDA type properties, you can instead right click on the HDA in the network file path. You know the bit just above the network graph with something like 'obj/level_creation_top/topnet1'. Just right click where your HDA is and you'll see the type properties option.

    Here's a picture to make it super obvious: https://i.imgur.com/58VyBos.png

    This means you can stay deep down in the network of your HDA and bring up the type properties window whenever you need it. I never see this mentioned in tutorials, but it's such a great quality of life improvement.

    • Animate4evr 2 months, 2 weeks ago  | 

      Whaaaa! Nice! How did I never know about that! Thanks! :-)

  • GlenD 1 month, 3 weeks ago  | 

    Hi everyone. Working on one of the last videos, Splitting the terrain. When I split the terrain in Unity, and Cook Node, only one tile is appearing. Is anyone else have this issue?

    • KokLiangTan 1 month ago  | 

      I do address the same issue either! Did u solve it?

    • Kind Lau 2 weeks, 6 days ago  | 

      Houdini 17.5.425 and H Engine 3.2.44 , Unity 2018.4.11,has same issue.
      And I try to add attribute "unity_hf_terraindata_export_file " to heightfield for keeping terrain data, but nothing help : (

  • stausend 1 month, 2 weeks ago  | 

    None of the course file does contain the Terrain Textures. Anyone know where to get them?

    • FJSsam 1 week, 2 days ago  | 

      Just google some textures.

  • BenjaminYde 1 month, 2 weeks ago  | 

    I have it as well

  • FJSsam 1 week, 2 days ago  | 

    There's no iteration parameter in the new HDA processor in hou 18. How do I go through each tile ?

Please log in to leave a comment.