Japanese Building Generator

   1608   6   1
User Avatar
Member
5 posts
Joined: March 2024
Offline
Hello everyone!

For a school project (BUAS) I am trying to create a custom building generator.
I've been trying to wrap my head around the Labs building generator's aproach to this problem and how I would be able to apply it to my own project. With about 2 months of experience in Houdini, I hope to be able to learn many new nodes and get a better insight into the creation of procedural generation systems.

My main goal is to be able to generate Machiya Townhouses using a HDA in Unreal Engine, by using an Unreal Cube as input.
Some Features that I want to add are:
  1. Custom 2m*2m wall inputs
  2. Custom Material inputs
  3. Door placement based on a secondary input
  4. Multiple roof patterns
  5. Preset Wall modules

Below I will show my current progress!

I have a basic graph that allows me to place multiple floors that all fit according to the input geometry

The next steps I am planning to undertake are adding ID's to the different floors within the for-each loop so that I can give different floors different pieces, and making a start on the roof system based on the project Titan Tutorial


I am still very new to Houdini and would appreciate any feedback/insights in how to improve my work!
I will be updating this post with updates during the upcoming weeks.
Edited by SikandarMaksoedan - Sept. 17, 2024 09:54:16

Attachments:
image_2024-09-16_101759235.png (864.5 KB)

User Avatar
Member
5 posts
Joined: March 2024
Offline
Progress report 17/09/2024

Hello everyone!

One of my teachers advised me to test out the generator in Unreal Engine as soon as possible.
Following his instructions, I found a bug that occurs when the bounding box is too small.
Another member of the teaching staff gave me the idea to force the input to always be at least 2 wall-modules in width to ensure you cannot mess up. the system is now working as expected
Image Not Found




While I was working, I added a basic roof that uses the width of the building to determine the height of the roof. I will most likely change this after I do some more research on the topic, but this system seems to be working right now. to ensure that the sides of the roof are closed off, I added a wrangle that gives me the floor level of the last added point (the highest) and makes them a separate group. I create the building as normal and place the roof on the second highest floor, which then proceeds to Boolean and create its own side walls. To ensure that this doesn’t happen to the first floor I added an exception to the selection of the ground floor and made sure the bounding box cannot be smaller than 2 wall-modules in height.


My next goal is to test the generator out with real geometry and find a way to add a door to the building.
Edited by SikandarMaksoedan - Sept. 17, 2024 10:18:19

Attachments:
newHeight.png (1.0 MB)
Roof.png (588.0 KB)

User Avatar
Member
172 posts
Joined: May 2021
Offline
You referenced the Titan project. Are you following this pipeline or creating your own tool?

https://www.sidefx.com/tutorials/project-titan-building-tool/ [www.sidefx.com]



This might be some inspiration as well:

Edited by PHENOMDESIGN - Sept. 17, 2024 11:18:13
PHENOM(enological) DESIGN;
Experimental phenomenology (study of experience) is a category of philosophy evidencing intentional variations of subjective human experiencing where both the independent and dependent variable are phenomenological. Lundh 2020
User Avatar
Member
5 posts
Joined: March 2024
Offline
I am building my own tool, inspired by the methodology of the project Titan building tool. Instead of relying on using the labs building generators, it is my goal to build everything myself as a way to gain more experience with custom tools and Houdini in general.

I'll be taking a look at the video you shared and see if any of it is applicable to my project, thank you very much for sharing!
Edited by SikandarMaksoedan - Sept. 18, 2024 06:02:41
User Avatar
Member
172 posts
Joined: May 2021
Offline
Really cool! This walkthrough article might also be insightful and topical for your project subject domain: https://80.lv/articles/learn-how-to-make-procedural-building-generator-in-houdini/ [80.lv]
Edited by PHENOMDESIGN - Sept. 18, 2024 10:58:18
PHENOM(enological) DESIGN;
Experimental phenomenology (study of experience) is a category of philosophy evidencing intentional variations of subjective human experiencing where both the independent and dependent variable are phenomenological. Lundh 2020
User Avatar
Member
5 posts
Joined: March 2024
Offline
New update!

I managed to get actual building pieces working with the generator, as well as a roof system!



My current plan goes as follows:
  • Rework Copy to curves to Copy to points (for later use with IDs)
  • Add an exception to the copying to have atleast one door per house
  • Add balcony system and support beams
  • Add more custom pieces to have more variety
  • Add variation in pieces

For now, I imported my HDA in unreal and this project is slowly starting to come together

Attachments:
Screenshot 2024-09-23 145501.png (557.8 KB)
HighresScreenshot00000.png (1.1 MB)

User Avatar
Member
5 posts
Joined: March 2024
Offline
Hello everyone!

It's been a while since my last update, so there is a lot to cover!

I'll first start with a basic rundown of the system, since there has been a lot of talk and little to show for it.

My steps are as following:
  1. change Bounding box to determine size
  2. Normalize bounding box based on modular kit dimensions
  3. Cut up bounding box into floors based on modular kit dimensions
  4. Create curves from floors
  5. ​​Resample based on modular kit width
  6. Copy pieces to points based on location (sides get side pieces, front gets standard or alternate)
  7. Add roof through boolean of extra layer + overhanging roof if floor > 1

using these steps we get the process as seen in the gif above.

for the actual update, the first subject I want to adress is the roof.



The roof tiles are finally logically connected by a system of support beams to the roof!
I forgot to mention it in the last update, but this system is from a tutorial made by CGSide, it was very helpfull and with some tweaking I was able to make the base system and his logic to create roofs work with my specific usecase.
I have created two different rooftiles as seen above.
The main issues I currently face with the roof is that at a certain Tile-Density the roof tiles start to overlap at the top, which will be something I will work on in the upcoming project weeks to fix.
The roofs of Japanese houses are a staple to of the structures so I want to give them the amount of detail they deserve, while still trying to keep my assets game-ready. This will be a challenge going forward and may require me to rework some parts of this system again.

After this roof finished was brought to the current state, I started working on a new assetkit that fits more with the style of Japanese houses. these models are all made in Houdini and mostly procedural. I will try to create a few more wall types based on different Japanese Machiya styles.





Now that was all of the visual changes to the building. Under the hood, I reworked the Copy to curves system to work with points instead which allows me to select specific parts of the building to swap out. It also allows me to use more shapes than just basic rectangles as base for the building.


This feature won't be used for this project, since the style of building I am going for doesnt require it, but will instead be left as a feature for the future. I also started experimenting a bit with usage of different parameters to control the placement of alternative walls and the door of the building.

My lecturer has informed of a different way to place my assets to points that doesn't require me to use 11 different copy to points nodes, so I will be taking a look at this after I finish my final modular kits. The bounding box system and placement of assets is fully working, polishing is the main focus for me at this point in the project.


To wrap up this post, I think there is not a whole lot left to finish up this generator. My main focus areas for the next few weeks are:
  • More interesting shapes through natural-looking deformation
  • More artistic control, less full randomization
  • Presentable texturing work for a fully textured output
  • Testing with environment artists to see where changes have to be made

If anyone has any suggestions for interesting additions/changes, or guidance on how to better approach my current solution to the building generator it would very much be appreciated!

See you all at the next update!

Edited by SikandarMaksoedan - Oct. 6, 2024 13:32:15

Attachments:
image5.gif (6.0 MB)
image20.png (1.7 MB)
image21.png (1.5 MB)
image15.png (1.4 MB)
image16.png (1.3 MB)
Lshape.png (540.3 KB)
twohouses.png (1.1 MB)

  • Quick Links