City Generation

Discussions about SOFTIMAGEs© Interactive Creative Environment©
Ramon
Posts: 111
Joined: 19 Aug 2010, 22:47

Re: City Generation

Post by Ramon » 10 Jun 2011, 21:30

Monster!

Chris_TC
Posts: 411
Joined: 22 Mar 2010, 17:43

Re: City Generation

Post by Chris_TC » 11 Jun 2011, 20:13

I have now begun making rules based on Google street view images. This is a first rough building type. There are no proper ground floor and top floor rules yet (they are both crudely adapted from the middle floor rules, and I just noticed that the top floor height is wrong).
Of course everything is still completely procedural and adapts to building footprint, height and all the parameters that are specified.

Image

User avatar
mattmos
Posts: 445
Joined: 02 Dec 2009, 16:59

Re: City Generation

Post by mattmos » 12 Jun 2011, 01:17

I'm amazed how quickly you've progressed. Its great seeing it develop!

User avatar
Rork
Posts: 1359
Joined: 09 Jul 2009, 08:59
Location: Close to The Hague, Netherlands
Contact:

Re: City Generation

Post by Rork » 12 Jun 2011, 10:36

indeed... massive steps instead of baby ones ;)

Chris, did you see the new videos on the SI Youtube channel about building creation in ICE? Are you following the same rules/setup, or are you on a different approach all together?

Interesting to see how you going to integrate this into the map to create city blocks :)

rob
SI UI tutorials: Toolbar http://goo.gl/iYOL0l | Custom Layout http://goo.gl/6iP5xQ | RenderManager View http://goo.gl/b4ZkjQ
So long, and thanks for all the Fish!!

Chris_TC
Posts: 411
Joined: 22 Mar 2010, 17:43

Re: City Generation

Post by Chris_TC » 12 Jun 2011, 11:19

Rork wrote:Chris, did you see the new videos on the SI Youtube channel about building creation in ICE? Are you following the same rules/setup, or are you on a different approach all together?
I did watch that, and what I'm doing is completely different. They pre-modeled three entire floors (or two floors and the roof). They then copy/paste these elements, which gives them control over how many floors there are. That's pretty much the only parameter they have for controlling the look of the building because the floors are pre-modeled.
I build all floors and its elements parametrically, which gives a huge number of possible combinations. It will soon become apparent how much control this gives, because I'll build a bunch of randomized buildings when all rules for this building style are done.

I must soon look into a texturing workflow because I think that every rule needs to pass on UV and material information for all its elements. And right now, I have no clue how to this because so far I've only done modeling in ICE. Hopefully the manual will help.
Interesting to see how you going to integrate this into the map to create city blocks :)
This should be pretty easy, I've already got the theory worked out. I'm a bit worried about the performance. It appears that my building generation is not properly multi-threaded and can take a while. Must see if I can speed things up. I might post the building compound for others to look at, since performance ought to be as fast as possible.

User avatar
Rork
Posts: 1359
Joined: 09 Jul 2009, 08:59
Location: Close to The Hague, Netherlands
Contact:

Re: City Generation

Post by Rork » 12 Jun 2011, 11:51

I have to admit I just grazed the videos to see what was going on ;-)
But they look nice as well though.

Regarding UV's, the Vimeo video's from Fabricio on his PowerExtrude tool might have some clues? Not sure though....

rob
SI UI tutorials: Toolbar http://goo.gl/iYOL0l | Custom Layout http://goo.gl/6iP5xQ | RenderManager View http://goo.gl/b4ZkjQ
So long, and thanks for all the Fish!!

Chris_TC
Posts: 411
Joined: 22 Mar 2010, 17:43

Re: City Generation

Post by Chris_TC » 12 Jun 2011, 12:38

Rork wrote:But they look nice as well though.
They look great indeed, but for a city you need more variation than number of floors* There are some excellent papers out there that describe the workflow of making random buildings for a city.

I must re-iterate that you don't need to be a programmer or mathematician to do these things. When I first read the papers I barely understood what they explained. But it's really not that hard if you build everything step by step, plugging nodes and trying things. You remember how I started out this process by making a silly L system that turns letters into other letters. My entire building generation is based on this exact compound. I don't need to think it through anymore because I know that the compound makes it all work.

*I appreciate those videos very much, ICE modeling has barely been covered yet in tutorials.
Regarding UV's, the Vimeo video's from Fabricio on his PowerExtrude tool might have some clues? Not sure though....
Thank you, will take a look.

Chris_TC
Posts: 411
Joined: 22 Mar 2010, 17:43

Re: City Generation

Post by Chris_TC » 13 Jun 2011, 15:46

Same test building. But now it automatically generates UVs and materials for all elements.

Image

fabricio.chamon
Posts: 94
Joined: 09 Jun 2009, 23:47

Re: City Generation

Post by fabricio.chamon » 15 Jun 2011, 06:06

Pretty decent stuff, nice job Chris !! hope we can see this evolve into a final fully procedural city builder.

User avatar
claudevervoort
Posts: 89
Joined: 16 Oct 2009, 02:56
Location: Montréal, QC, Canada
Contact:

Re: City Generation

Post by claudevervoort » 15 Jun 2011, 14:53

That's really amazing Chris! I'm quite bluffed actually that you could actually pull that off in ICE alone and keep your sanity :) That got me reading a bit about L systems too. Really nice!

Claude

Chris_TC
Posts: 411
Joined: 22 Mar 2010, 17:43

Re: City Generation

Post by Chris_TC » 15 Jun 2011, 18:48

claudevervoort wrote:I'm quite bluffed actually that you could actually pull that off in ICE alone and keep your sanity :)
Haha, frankly so am I. But it turns out that ICE works really well for this sort of stuff. I'm not using any crazy workarounds or hack jobs. ICE feels right at home with it all.
At the moment I'm doing a lot of reorganizing and restructuring. Not only have I been able to make the tree much smaller by using some different logic, but it's also much faster than originally. I'm working all of this stuff out before I start making more rules. This way I won't have to worry about it later.

I also want the workflow of adding rules to become as straightforward as possible.
The commercial product CityEngine uses a grammar called "CGA Shape". Users define rules through a syntax. For instance, to split a facade into a ground floor (height 3.5) and two upper floors (height 3.0), the syntax may be:

Code: Select all

FrontFacade -->     
    split(y){ 3.5 : Floor | 3 : Floor | 3 : Floor }
This removes the shape (FrontFacade) and replaces it by three shapes (Floor, Floor, Floor).

In ICE, split(y) is simply a compound with inputs for height/width and a checkbox to do vertical or horizontal splitting. When you "write" a rule, you just bring in all the shape compounds you need and define the inputs. You don't have to type numbers for those inputs of course. You can connect ICE tree logic to use relative values or whatever else you like.

grahamef
Posts: 281
Joined: 23 Jun 2009, 21:01

Re: City Generation

Post by grahamef » 15 Jun 2011, 18:50

This is really great stuff.

Chris, I assume one of the papers you've looked at is http://www.vision.ee.ethz.ch/~pmueller/ ... ersion.pdf? If not, take a look. I'm not proposing implementation of a CGA Shape language parser in ICE, but it has a number of interesting ideas and references.

EDIT: We must have been posting at the same time -- I see that you're familiar with CGA Shape.

Chris_TC
Posts: 411
Joined: 22 Mar 2010, 17:43

Re: City Generation

Post by Chris_TC » 15 Jun 2011, 20:02

Thank you Graham, this is indeed one of the papers I've read. I've got a whole collection on my hard drive now. The one thing I haven't looked at yet is procedural roof generation. But I've already downloaded some papers in anticipation :D

dominikmk
Posts: 9
Joined: 10 Feb 2011, 15:51

Re: City Generation

Post by dominikmk » 20 Jun 2011, 15:11

Really great stuff Chris, I'll follow your work on Procedural city for sure! We have just switched to si 2012 and i'm really a newby to ice modeling. Seam pretty solid!

Thx for sharing!

Doum

Chris_TC
Posts: 411
Joined: 22 Mar 2010, 17:43

Re: City Generation

Post by Chris_TC » 27 Jun 2011, 18:20

Alright, I've finally got time to continue working on this. Nothing new to see at the moment, sorry.

I have a question regarding matrices, maybe somebody can help? For all building elements I am storing a 4x4 matrix that contains scaling, translation and rotation data (I use the "SRT to Matrix" node). Now I will need to store additional information for some elements, such as extrusion length, floor type etc. I would like to store all of this additional data in the same 4x4 matrix because that would keep things neat and clean.

It appears that the LAST COLUMN of this matrix always says 0,0,0,1 - regardless of what values I choose in the "SRT to Matrix". Am I right in assuming that I can simply use these 4 slots to store scalar data without EVER destroying the SRT info?

grahamef
Posts: 281
Joined: 23 Jun 2009, 21:01

Re: City Generation

Post by grahamef » 27 Jun 2011, 20:04

Chris_TC wrote:I have a question regarding matrices, maybe somebody can help? For all building elements I am storing a 4x4 matrix that contains scaling, translation and rotation data (I use the "SRT to Matrix" node). Now I will need to store additional information for some elements, such as extrusion length, floor type etc. I would like to store all of this additional data in the same 4x4 matrix because that would keep things neat and clean.

It appears that the LAST COLUMN of this matrix always says 0,0,0,1 - regardless of what values I choose in the "SRT to Matrix". Am I right in assuming that I can simply use these 4 slots to store scalar data without EVER destroying the SRT info?
I suppose you could as long as you are very careful to set those values back before using the matrix as a transform in any way because once you change those values, the matrix no longer represents a valid transformation. However, I don't think that all the packing and unpacking of matrices that would be required is any more "neat and clean" than storing separate attributes -- quite the opposite in fact.

Post Reply

Who is online

Users browsing this forum: No registered users and 32 guests