Using Houdini to make islands
Updated: Nov 9, 2021
Hi! In this post I will be doing a quick breakdown on how I generate the islands In Runes of Time.
The software I will be using is Houdini and the reason I am using it is so I can create HDA assests and import them into Unity. This helps make quick iterative designs without the needy process of having to re-import the islands whenever I want to make a change.
The first step I took in making my island generator is by creating a profile that I can edit in unity, this is like the outline of the island where the inside will be land. This is simply done with a curve or proxy geometry created in Unity and using that to generate the profile of the island.
For easy testing I will also create a HDA (Houdini Digital Asset) and import it into unity. Here is the HDA in action showing how I generate the base with some proxy geometry used as profiles, I've also made a simple terrain shader that i've thrown on.
After getting the basic HDA setup in unity I will now movie on to refining the surface or ground part of the island, the part where the player interacts with and where objects will be placed. To do this I simply extract the top face of the profile and remesh it for even triangles:
Now I will add detail the terrain by adding slight height variation to the surface and the ability to paint paths in Unity, the way I create the paths is actually by painting the vertex colors in the HDA, then when I bake the island in Unity, the shader that I made will sample all the vertex colors associated with the paths and then color the path as dirt. A cool trick you can use in the HDA is to slightly sink the path in a little, to simulate the path is used. Doing it in this step of the process is also optimization friendly as you no longer have to do any vertex displacement calculations in the shader, it's baked into the island itself. The only downside to this approach of painting paths in the HDA rather than the shader is that the process is a little more involved and it takes a little more time to do than doing it all in the terrain shader.
Painting the vertex colors into the island:
Now painting the vertex color in Unity with the HDA:
After this I then add the underside of the islands, which is just some simple noise with its scale intensity set by its distance from the perimeter of the island. This is a crude approach but its simple and quick. At the moment I haven't refined it yet but I plan to add in big shapes with smaller shapes to break it up a little more.
That is pretty much the island generator done, I could go in and make it that Houdini places rocks, plants and some structures procedurally but I opted for a hand placement version as we are still in the prototype phase of our project. With this HDA tool, now I can iteratively create islands at speed, saving my time for other tasks.
Below is a speedbuild of an island from start to finish:
Here is the shader I use for the islands, it's pretty much just a bunch of various noises blended together to create color variations, I then blend the dirt and grass based on the terrain's normal angles. This gives anything flat the green color grass and anything sloped a brown color for rock/dirt.
and that's it, thanks for reading! If you have any comments or questions free feel to contact me!