Today I gave up on the voronoi (just for today tho) and worked on a Opengl/JMonkey graphics display system. The Voronoi was a little to much to face again, and the graphics needed updating because the speed of the maya interface was too slow. You control the camera using the WASD keys, and its all in jME so it should be really easy to turn into a full blown game :) The new window is in the bottom right here, all very nicely lit and everything!

Not much to say, and not much progress, but at least its a post today!


Here's the first output from the Voronoi/Road network generator. Its been really slow going and i dont know why... The green are the generating dots (random at the moment) and the blue lines currently just keep dividing each time a dot is added. Not a true veronoi yet, but soon!

Heres another, with some funny boundary cases fixed up and much larger. Implementing the Voronoi is much more work that I thought because of details such as boundary cases. Its gonna take up at least all of tomorrow (makeing 3 days total) too.... :(


First an explination of whats what in todays picture - The big squares are the waterfall, the little square on the top is a plug (they all have one these except the root). The little squares on the bottom are sockets (zero to many of these. You can plug multiple plugs into one socket and assign probabilities, eg probability of having a mansard or gabled roof ontop of a particular type of floor layout.

Well, four days in and I've made good progress on the GUI. It feels quite polished now (despite lack of polishing). Today I added the ability to make and break links between components(waterfalls). You can also set the probabilities for each subsequent compent using a nice slider sytem. This updates the colour of the lines to show which of the subsequent components is most likely.

I also had the idea of colouring the plugs to show what could be plugged into what. The idea is that you could have a doorstep profile creator that returns a plug of type line. The door then has a line socket. This means that you cant plug a roof into a door door-step profile(good!). Its quite sucessful, but I'm not sure it will work all the way because the type system is based on hierarchical classes extending one another, so you could put a green plug into a red socket, but not a blue plug into a red socket. I wonder if theres an easy way to show inference through colours

Next step is to create the GUI parameters for each waterfall. Which parameters a waterfall has are coded into it:

public ProbInt VAR_numberSections = new ProbInt(1,Integer.MAX_VALUE, 0, 1);
public String DEF_numberSections = "number of floorspace segments joined together";

public ProbDouble VAR_story = new ProbDouble(0.1,100,0.5,1);
public String DEF_story = "how tall is one story";

Using java's funky reflection i'm gonna extract straight out of the code and create a properties panel for each waterfall without having to code them up in GUI/swing stuff. It'll be neat if it works. As I work on this I also have to figure out a way to save and load the waterfalls so I might do that at the same time.


Started off getting JMonkey (3D interface) to work within Javas swing environment. This was a bit of a mess and took a bit of hacking together of the JME and Swing API's. I eventually got it able to open more than one 3d window within one swing application. It was a drag that

They should let the labs get warmer when its hot outside - the air conditioning is freezing in here.

Picture is of hypergraph/'waterfall' system. All done in a 3D engine for opengl niceness of graphics (and dev speed)!

After lunch I made storming progress getting the Maya-like hypergraph up and running. You can select and move components (known as waterfalls). It even draws nice curves between them (but doesn't yet move the curves as you move the waterfalls). The screen shot from today is really pretty.

The idea is to have three windows, one of this waterfall view, one of the predicted output from the currently selected node (eg if your working on a window it shows typical designes that the tree from that point forward would generate) and one with boring load/save etc... buttons. The options for the waterfall will appear in this last window when the waterfall is selected

  • Make the curves/links/'flows' visible over the waterfalls
  • Make the curves move with the waterfalls
  • Make it possible to make and break flows in the GUI
  • Add some text to the waterfalls
  • Create the reflection code that will generate the options for each waterfall
  • [if time: create a grouping/boxing mechanism...]
  • Saving and loading a waterfall structure (and all associated options) comes next...

Dunno why blogspot was down all afternoon, but heres the post!