Houdini Engine is a fantastic technology. If you don’t know what Houdini Engine is – it is a way to run Houdini inside other applications. In other words – it is a plugin that allows you to generate procedural content directly inside another application. You can even use objects created in your 3d application as an input for your Houdini setups.
Currently there are integrations for all mayor 3D DCC applications as well as two most popular game engines – Unity and Unreal Engine. This is especially powerful, because it allows game developers (or other game engine users) to utilize Houdini to create more in-engine content in procedural ways. Previously you would have to develop specific tools yourself from scratch in game engine, but now you can utilize amazing tools in Houdini to make your own higher level tools much easier.
While Houdini Engine plugin for Unity is great, currently it only supports Unity Meshes, Terrains and other HDAs (Houdini Digital Assets) as inputs. Using Unity Tilemaps are not supported. Fortunately it is quite easy to extend the plugin and add new interfaces to support more Unity object types as inputs for your Houdini Digital Assets.
Why is this needed? Idea is that Unity Tilemaps can be a nice way to quickly make level layouts for certain types of games or applications. Based on these tilemaps, you could genereate much more complex game levels by replacing tiles with 3D models based on specific rules, automatically place decoration 3d models, ligts, particle emitters or even generate unique 3d meshes from your tile layouts.
Interface for Unity Tilemaps
This is what I want to share – I made a simple interface for Unity Tilemaps, so they can be used as inputs in Houdini Engine. In my implementation, they are converted to simple 2D point grids with certain Houdini attributes (like sprite name, coordinates, color, tilemap dimensions etc.). In Houdini you can use this point grid to do whatever you want.
Just drop the unity package in your project and it should just work – now you can drag and drop unity tilemap objects in input parameters of your Houdini Digital Assets.
This uses two tile layers. First layer is used to define room layout – we can use Sidefx Lab Tools Wang Tile nodes to place 3D meshes (based on Wang Tile rules) to make proper 3d rooms with walls. In this example I’m just using default Want Tile meshes from Sidefx Labs, but obviously you can use whatever meshes you want to generate your levels.
Second tile layer is used just to instantiate certain Unity Prefabs in specifica places.
This is more about generating unique geometry from Unity Tilemaps and combining that with procedurally placed prefab instances. While it is not a practical approach in real sidescroller games, because I’m just generating large and unoptimized meshes, I just wanted to show it as an inspirational example.
Here I have 3 input layers – foreground rocks, background layer and background cloud layer.
For each layer I generate unique 3d mesh based on tile map layout. On top of that, I instantiate some 3D grass prefabs on the rock layer.
You can download the HDA file here (it will probably say that it is missing some other HDA, but just ignore that.. it’s super simple and dirty anyway).