Procedural House

   353   2   1
User Avatar
Member
3 posts
Joined: 2月 2025
オフライン
Hello everyone!

I'm Mathis, a French 3D student with a strong interest in Houdini.

For a personal project, I'm trying to create a procedural house-generation system in Houdini. To get started, I followed Simon Houdini's tutorial on recreating house from Overwatch 2 (link to the video: https://youtu.be/uIe97023sDk?si=kcOB4o1TUgZ7P-jD).

But I want to go further by making each generated house unique, with differents arrangements for its components (windows, doors, etc.).

However, i'm stuck at this part and don't really know how i can handle it (for this system).

If you have any hints or tips it will be a pleasure.
Thanks for reading this post

Attachments:
building_gen.hipnc (967.2 KB)

User Avatar
Member
8 posts
Joined: 10月 2021
オフライン
Hi, great to see someone taking on Houdini!

Welcome and I hope you have a great journey and create amazing things!

There was no particular direction that you specified so I kept the change very minimal for now. It introduces the seed parameter and also uses the iteration attribute to vary the window arrangements.

Also, if you haven't I think it's a great idea to follow through the video till the end and create the exact same thing.
And explore more! There are a lot of tutorials about procedural buildings and houses online including this one from SideFX:
MODEL A PROCEDURAL HOUSE [www.sidefx.com]

Please let us know if there is any particular type of building or nature of procedural assets you are aiming for, and I think we can assist you better.

Image Not Found
Edited by yutohw - 2026年11月6日 16:39:54

Attachments:
building_gen.hipnc (968.7 KB)

User Avatar
Member
40 posts
Joined: 12月 2014
オフライン
Matwowowowo
Hello everyone!

I'm Mathis, a French 3D student with a strong interest in Houdini.

For a personal project, I'm trying to create a procedural house-generation system in Houdini. To get started, I followed Simon Houdini's tutorial on recreating house from Overwatch 2 (link to the video: https://youtu.be/uIe97023sDk?si=kcOB4o1TUgZ7P-jD).

But I want to go further by making each generated house unique, with differents arrangements for its components (windows, doors, etc.).

However, i'm stuck at this part and don't really know how i can handle it (for this system).

If you have any hints or tips it will be a pleasure.
Thanks for reading this post

#1 Create a seed parameter on the asset.

#2 In scatter_assets/ chain / seed:
set the parameter value to:

detail(-1,"iteration",0)+ch("../../seed")

seed being a parameter on the Top Level Asset

# 2
Then scatter the assets in a for loop, driving 'seed' like this (see screen capture)
point(-1,0,seed,0)

That seed being, this time, the randomized attribute on the grid on which you scatter the assets.
That way, you can pass down data that are on the grid to individual nodes in the asset, at which point there shouldn't be any limit to what you can do.

Say you want to randomize the sizes of the buildings:

The first floor X dimension is driven by:
ch(strcat("../x_",detail(-1, "iteration",0)+1))

Then you can adjust this to pick up for example, an attribute on the grid:

You could also drop the MultiParms for the Floors, and generate all the data from just a few attributes, because as of now, this is really not parametric at all:
floorCount
FirstFloorDims
Height
Decay Style (how to compute the other floor dimensions from the First Floor dimensions)
Decay style example: polyexpand(inside) + jitter in XZ plane; this gives a slightly chaotic growth effect

and so on, and compute what you need in the asset.
It's better to have few parameters at the top level, and complex procedures inside between which you can switch independently.

This way, it stays procedural, even if you only need 3 floors of the same size.
Edited by alecaille - 昨日 10:38:22

Attachments:
overwatch.png (420.4 KB)
repeatedPolyExpand.png (173.8 KB)

  • Quick Links