FMP 1- Procedural Interior Generator

 The first tool I have decided to create follows on from my Houdini learning; developing the interior generator. I changed some of the base functionality of the tool, such as the door width, after I created a modular kit to test it. The walls used to be generated as shared walls between the rooms and corridor, but I realised that this caused more inconvenience and inefficiency than it solved; hidden backfacing walls would be the same as visible corridor walls, the shared corner walls would need an extra three way piece etc. Now all walls require their pivot points to be on the edge of the floor plain, so two walls can be placed back-to-back and not interfere with each other. The door functionality is the same, but they can now move all the way around the intersection as opposed to only one straight wall.


The main problems I encountered were: deciding on how to take input, referencing a node in a multiparm, and getting the intersection of rooms in order to add doorways. 

I have three options in terms of input, and I believe the locked node method to be the most efficient. The tool has the option to allow input from Unreal, but this would require the user to input every piece of every mod kit, which is tedious and clogs up the interface. After creating just a few rooms, the process would quickly become difficult to keep track of, but the process is a bit more procedural. Using a file node to search for the fbx file would work better; however, because of our remote working situation, the tool would need to move around computers quite frequently, breaking the reference. A locked file node therefore trumps this method; even though the fbx would have to be reloaded into the tool manually for every change, it means that everyone's mod kits are already present, and all they have to do in engine is tweak the parameters. 

Unreal input parameters

Referencing a node in a multiparm did not work the way I expected it to. A simple details reference worked in Houdini, but Unreal could not process it. With the help of a junior tech artist, I created a Python node which manually told Unreal to reference the relevant node in the multiparm using a clear directory. This taught me more about Houdini-specific functions and variables.

Python node

The room intersections caused a number of issues, which I fixed mainly by using larger for-loops. The doors caused the most trouble, as they were behaving differently with each room I added. I solved the main problem of placing doors at the intersections by using a group by range into a split node. I was using the room edges to group the intersecting points, but this would have created two overlapping doors at each intersection, as the for loop runs through for each room. The group by range then takes every second room, whose bounds group the other rooms, therefore creating one intersection. These doors use a separate for loop to stop them interfering with the corridor intersections.

For loop for placing room walls

Intersection











Comments

Popular Posts