The point of this step of the process is to first create a “default” 3D model by reading Supervisely annotation data, and secondly, to develop parameters that can refine the model through manual adjustment. Parameters allow the user to duplicate values, or make values relative to other values, and have Houdini automatically update them whenever they change in real time. The solution is a file type known as an HDA (Houdini Digital Asset). HDAs enable the user to embed the parameter-adjustable models into other Houdini scenes. This way, the HDA model will be able to read data like merlon shapes or the shape of towers and automatically adjust the model to reflect those indicated values.
There were many challenges along the way in creating a simple House model. A major issue faced in the beginning was determining the best way to build and connect the roof to the rest of the house body in the simplest and most effective manner. Many methods resulted in distorted roofs as the house wall dimensions changed, so making sure the roof stayed in the correct proportion to the rest of the house was key. In the end, the team went with a group node and a polyextrude node, which allows specific protrusions along specific facades (faces/areas) of the house. Nodes are the foundation of modeling in Houdini that record user actions and parameters utilized. They allow the creation of a single top-bottom workflow.
Another noteworthy obstacle was the issue of rotation. The roof would distort and twist into different shapes as the house was rotated in the x, y, and z directions. To solve this issue, the team decided to use a lattice node, which brings in a bounding box that constraints the house model. Instead of rotating the object directly, by manipulating (translating and rotating) the bounding box, the object will still move as desired, without strange distortions to its dimensions.
For towers, the challenge was creating a model that could change between circular and rectangular styles depending on annotation attributes and creating working parameters for each. Many of these issues were similar to the house, with the additional complexity of being able to manipulate merlon number and merlon types without distorting the rest of the tower.
We also learned that it is important for the parameters to be set at the geometry SOP level, which is at the top of the hierarchy in Houdini. This allows for better integration and manipulation of the models in the scenes. There are many more procedural models left to create, but by the end of the spring semester we developed a useful workflow for creating these assets.