Posts

Showing posts from 2019

voronoi graph

Image
The source position on the skeleton is now available as a point attribute. Also added option to remove segments that has a point as an output allowing only segment to segment curves as I suspect this will be useful. 

Voronoi diagram

Image
Cleaned up the output to be contained inside a boundary. 

Medial axis with source prim id attrib

Image
Now adding attributes for what primitive spawned the medial axis. Next up to add single points. Edit: added single points (see second pic).

voronoi diagram v02

Image
Now handling infinity lines.

Voronoi diagram custom node v01

Image
As Houdini doesn't have a node to produce the medial axis I'm testing to integrate the boost.polygon library. Looks like I got it working. Need to draw the lines that go to infinity and then actually use the input geo from Houdini. Boost.polygon docs here . My git here .

Coverage zone

Image
 Wrangler to find the "cover zone" around a 3d shape. A bit unoptimized atm.

Ecology scattering first setup

Image
Similar to this  guy, I've taken some time to study papers from Eugene Chng  and others. Result is a dynamic scattering system where placement and growth is determined by simulating individual plants with species based preferences. 

paint interface early demo

Image
Thinking of putting this in the freezer for a while so aiming to gifify the current state of things, this is one of the workflows that should look nice and flowy.  

Multi floors and painted rooms merged

Image
Bottom floor has painted rooms, rest is auto generated. This kinda concludes this phase, it merges the solver with a paintable interface, letting the tool gradually go from manual to automatic control. Normally this is the the time for feedback but in the absence of such it's instead deliberation. 

Room paint tool

Image
Paint tool for users to manually place rooms. These can then be combined with automatically placed ones. 

House preview geo

Image
Added some symbolic geo for windows/doors/roof before wrapping it all up to a tool. 

connectivity graph v2

Image
Connectivity can use previously placed paths, thus skipping adding more doors if there's an existing path. Here the top right room doesn't need to add a door to hallway as it can use the center public room's access. 

floor plan geometry

Image
Floor plan as geometry. Joining this to a facade tool I got should make a good base for presentation material. 

Room Connectivity Paths

Image
Connectivity graph converted to paths, these can now be directly used to place doors. 

rooms connectivity graph v1

Image
Rooms can now be connected through other rooms if these are set to "public" (as oppose to "private"). Utilizing this information I can now place doors between connected rooms. 

room expansion v5

Image
Convex expansion with multiple rooms.

Room expansion v5

Image
Convex expansion now functional. After fixing the arms, this is how far I intend to go with pressure solving for now. Next up is construct a connection graph to then deduce module placements.

room expansion v4

Image
Partially expanded walls. Proven and now to deal with the consequences. As the solver tries a lot of solutions and picks the best it needs to be able to revert them. Reverting these expansions is more difficult and they now have an undo queue. Implementing this fully is the next step. After this I think it's ready to generate the first floor plans. It also means rooms can be concave which comes with new problems.  

room packer v03

Image
Rooms are expanding after their desired space and shape. Next up is allowing walls to be broken up.

Room Packer v2

Image
Improved placement algorithm. Now looping over all potential variations until all fits. When no solution can be found, the best one is used. Next up is to add access constraints. Brown square symbolizes the front door, an arrangement should be invalidated if rooms can't get to it through unused squares (black and grey).