Website powered by

Houdini - Window Generator #1

Work In Progress / 01 August 2020

Introduction

A few years ago I already sank my teeth into Houdini, it was just playing around with it really. Now after really getting into the software for a few months I've taken up the task to learn it fully and taking it serious. Actually Houdini represents what I always wanted from Maya but really couldn’t get because of its nature. Full control over every aspect of the creation of something procedurally. I’m really addicted now.



After learning more of the nodes of Houdini I really wanted to dig deeper into the software to understand how to solve technical problems. For this reason I started learning VEX seriously. I learned a great deal from David Kahl and really just google a lot. haha

First subject - A window generator


I wanted to make something contained, that really brings out the creative problem solver in me so I decided to go with a window generator, which sounds simple at first. However I wanted to give the user as much freedom as possible and that means adding any type of shape that can be made into decorative pieces for example. I started looking at gothic window designs to find a pattern in them and decided to build a system based on that.





Shape Creator

In order to do that I created a tool that lets you create all sorts of curve shapes. Since this one HDA really is based on stuff I collected online, it’s not really worth mentioning too much, I’m just clarifying so there is no gap. It does however have some nifty controls for the smoothness of the shape etc, gives some additional control over the look. Still simple stuff.


Later down the line I wanna extend this tool with more varied possible starting shapes as well.


Curve Boolean Tool


The real power comes in play with a tool I made that can boolean curve shapes with each other, right now you can only unite and subtract shapes from each other. Most of the math behind this is done in VEX.


The tool works like this(Union):


A trace goes from the origin of Shape A to the points of Shape B and beyond to intersect with the polylines of shape A.
If the distance is less than the intersection position of the trace then the point must be inside Shape A. This way you can decide that the point needs to be deleted.
Before deleting the points it will add new points to where both shape’s geometry meets. The polylines will then be deleted alongside the flagged points from before, the curve shapes will be reordered(the order will always stay correct) and the curve can be redrawn correctly as one final shape.


This process is very similar for the subtraction as well, here I just reversed a few “greater than” equations to “less than” in the VEX code. Simple changes.







Align Features

The next part I wanted to create is how to align shapes inside another shape, in this case a window frame. 
The way this works is a traceline goes across the window frame curve shape sideways and will create two points. These points then trace downwards and create 2 more points which then combines into a 4 sided plane that I use to fit other curve shapes to.
The planes can be seen in the gif just as demonstration to see what’s going on in the background.
The plane that fits the curve shapes can also be subdivided into smaller divisions to have more control over the number of shapes which I probably could have done with a node but ended up doing it with VEX also to not just have more control but widen my knowledge obviously.




What's next?

Currently I'm working on the frames of the features. You will be able to smoothly transition between 2 sweeping profiles. I'm building my own sweeping node to have more control.

An overview of what is planned:

  • Frames and grilles of the window features
  • Window implementation on a wall surface with actual depth (depth will have a profile)
  • Smaller decoration elements
  • Additional decorative elements outside the main frame (around window)
  • Better alignment system (elements can overhang main window frame to create overlapping structures)
  • Window sill at the bottom