SceneCity 🏬

SceneCity is a city generator for Blender.

Official website
http://www.cgchan.com/store/scenecity

Twitter
https://twitter.com/CouturierArnaud


A close-up inside Blender


Exported to Terragen


Node-based workflow

Original 1st post

--------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------

ORIGINAL POST - VERY OLD
Kept just for fun :slight_smile:

--------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------
I am working on a script that generates cities procedurally for my next personal movie called “Suicidator”, the story of a loser hero.

I plan to make the script available for those of you who might find it useful. It is still a work in progress, but the results are promising :eyebrowlift:

I’d like to collect a few comments, feedbacks or requests from you guys before I release a beta version of the script (soon)

Here is a screenshot

You can also find two demo videos here and here.

Thank you

15 Likes

This looks interesting. Are the buildings pre-made objects, or are they procedurally generated as well?

This may be something quite good to include with Blender 2.5. It already looks heaps better than the ancient city block generator which didn’t do much more then make rectangle buildings in a grid.

Haven’t been able to look at the results yet (no access to youtube), but another _noob also was looking into this and pointed to a MEL script that does citybuilding rather well. Here the link to another_nnob’s tread:
http://blenderartists.org/forum/showthread.php?t=141033

I for one would love something like this (I love all those scripts that add a lot of complexity ‘automagically’ like BigNumberToolkit, Discombulator, L-Systems etc)

I have been working (slowly) on the building generator.

Here is a screenshot with examples of buildings:
built instantly; 15,555 faces; 25 buildings
http://picasaweb.google.com.au/lh/photo/xQdCbthG3YEuAAkiTSPdyQhttp://picasaweb.google.com.au/lh/photo/xQdCbthG3YEuAAkiTSPdyQhttp://lh3.ggpht.com/_NgXGR9y5w6o/SSJAwPqAPAI/AAAAAAAAAGU/9yRExV8AJxk/s800/buildings_v0.3.jpg

Buildings are nothing more than cubes stacked in different manners.

The main parameters are number of floors, base size (x,y), and number of iterations (repeat the process on the roof).

The city is then made by placing buildings of different heights according to a texture (population map), where white represents high buildings, and black represents short buildings or nothing at all.

hi piiichan,
that is stunning work.
I have left some links to useful information/scripts here:
http://blenderartists.org/forum/showthread.php?t=141116
Keep up the great work, we would love to see this script soon,
even a beta release.
Thanks again.
Brendon.
http://wiki.blender.org/index.php/Scripts/Catalog

Fantastic work Piichan!
I had also seen the Mel script for Maya and was feeling darn envious! Your script does indeed look promising :wink:

keep it up and keep us posted! :slight_smile:

regards,
Alvaro

Ooooooh…that last render is making me drool…

Not only does it look like a useful script, but the architectural style is a work of art in and of itself.

I can’t wait to get my hands on the script and play around with it!

Awesome render the last one! I’d say the buildings need some kind of rooftop walls to prevent people from falling down, what I mean is this:

http://img354.imageshack.us/img354/6348/rudyburckhardtlosangelehl1.jpg

You see, the roofs aren’t just cubes, they have about knee high walls to prevent people from falling.

Other than that, I love the design of the buildings :3 A true work of art!

Great work. I was just reading over some stuff on “shape grammar”, fractals and linear algebra to try to do something similar. Really a lot of detail. Looks great.

Will it have option auto-material-assigning as well.

So some walls get assigned material 1, roof - material 2, windows - material 3, decorative stuff - material 4, ect…

I said optional in case we wanted a single material for the whole building like if it’s ice covered or something.

Discombobulator does the same kind of thing. But it does not generate building details like you have shown in the screen shots here.

Now one question that I have always had about city generators. After you get the building meshes generated procedurally do you then have to go in and uv texture each individual building? That would seem really tedious if you had to do all of that individually.

Oh btw how about a link to the actual script :slight_smile:

After you get the building meshes generated procedurally do you then have to go in and uv texture each individual building? That would seem really tedious if you had to do all of that individually.

Some could be done with the texture module, but you would have to do a lot of setup first. You would need to differentiate between say roof surfaces, walls, streets, etc. It is possible, but it would be a lot of work.

piichan, your work looks great, and it would be nice if you could tell more about the algorithms behind the script, and something about the main criterias when you started to design the city.

Do I have right when I see some fractal maps behind the first picture?

well what I’d really love to see is support for streets and blocks which are not 90 degrees to each other. This would also mean houses which have not all sides 90 degrees to each other… Other beautiful thing would be import of real city plans (in vectors) and support for those. other thing - organic shapes in the l-system, so some towers would be simply special and sci-fi like…
otherwise, your results are already impressive and very nice.

This looks freakin Awesome man! When do we get to see the code???

Yeah, I like the render that looks like a painting, how do you do that?

The script is now released here.

The city is built based on a population map, which is a texture representing how populated (or rich) each area of the city is. On white pixels will stand higher buildings, and on black pixels, lower buildings. Below a gray level of 30%, no buildings will be created.
You can use any picture you like for the population map:

  • draw it yourself: you can control where high buildings will be
  • or use a procedural one: random placement of high and short buildings

Therefore you can greatly change the aspect of a city by modifying the parameters of the script, and also by changing the texture used for the population map.

The algorithm is simple: it iterates over the population map. For each pixel, it decides how many buildings are to be built for that pixel, their size and height, and their position. L-Systems are not used.
I designed the cities and buildings simply by observing pictures of real cities and buildings, and also by observing the results of another city engine by Mueller which I admire.

For now, buildings are simple cubes. Having detailed buildings such as those in the screenshot is possible, but not through the GUI yet. I am working on it for version 0.3.

The parameters are the following, from the bottom:
http://lh3.ggpht.com/_NgXGR9y5w6o/SSbEYQSbjYI/AAAAAAAAAGk/oFkCR0P9H4A/s400/suicidator_city_engine_0.2_GUI.PNG

Pop map size
This is the size of the population map, and it directly affects the area covered by the city. It is the main way to increase visual complexity: simply generate a larger city.
http://lh3.ggpht.com/_NgXGR9y5w6o/SSbLIPgwNnI/AAAAAAAAAGs/Uwd3Nt52gRk/s288/popMap20.pnghttp://lh6.ggpht.com/_NgXGR9y5w6o/SSbLICnzsgI/AAAAAAAAAG0/xFZdqkSfjXc/s288/popMap30.png

Randomize pop map
Disable it if you use a custom population map.
If you are using a procedural texture, such as “stucci”, you may want to keep the same type (eg stucci VS clouds) but change the layout. This is what this button is doing, by randomizing the texture offset.

Building height
If you want higher buildings, this is where you set it

Height difference
With this parameter, you can set whether short and tall buildings will have a great difference in height or not. This parameter may not always produce what you expect because it makes short buildings very short, and tall buildings very tall. So it may shorten most or all buildings to the minimum size if they do not reach a certain height before this parameter is applied.
You can increase the value of the “building height” parameter (above) to reduce this negative effect.
http://lh4.ggpht.com/_NgXGR9y5w6o/SSbP_FUxEII/AAAAAAAAAG8/cTNmToJ9aE4/s288/heightDiff3.pnghttp://lh3.ggpht.com/_NgXGR9y5w6o/SSbP_GnQtFI/AAAAAAAAAHE/zfHq9MdkYhM/s288/heightDiff5.png

Buildings per pixel
For each pixel of the population map, there may be more than one single building. The shorter a building, the more subdivisions. Here you control the probability of a building to be subdivided into many smaller ones.
http://lh6.ggpht.com/_NgXGR9y5w6o/SSbR3CJvAhI/AAAAAAAAAHM/hlaeUAnz8bw/s288/buildPerPix0.pnghttp://lh4.ggpht.com/_NgXGR9y5w6o/SSbR3NsFeCI/AAAAAAAAAHU/DJCrgj4rMkw/s288/buildPerPix10.png

Building loc variation
When a building is positioned, its horizontal locationn is varied randomly inside the area of its respective population map pixel, to make the city look less “grid-like”. However, if you want the buildings to be more aligned, then decrease the value of this parameter. 0 means all buildings are aligned exactly on the population map.

http://lh6.ggpht.com/_NgXGR9y5w6o/SSbVALBr6DI/AAAAAAAAAHc/Y1oOKhISfaM/s288/locVar0.pnghttp://lh6.ggpht.com/_NgXGR9y5w6o/SSbVADSv8XI/AAAAAAAAAHk/26KklhV50mg/s288/locVar1.png

Min/max hori size factor
You can control how thick or thin buildings are with this parameter. The minimum horizontal size factor is in Blender units. The maximum horizontal size factor is how many times a building can be larger than the minimum size.

http://lh3.ggpht.com/_NgXGR9y5w6o/SSbWpgzS0DI/AAAAAAAAAHs/WEiHV5O6rM8/s288/size0.5-4.pnghttp://lh4.ggpht.com/_NgXGR9y5w6o/SSbWp0OiEFI/AAAAAAAAAH0/DHdbaVqmsBQ/s288/size1-4.png

Concerning all your comments

  • I plan to have non-square buildings
  • I plan to have networks of streets
  • I plan to separate buildings faces into different materials (wall, roof)
  • I plan to include illuminations for night scenes

But these are only ideas. They may or may not be implemented in the future.

May you encounter any bug, please report them on this thread. Version 0.3 with more parameters and complete buildings should come soon. And most importantly, thank you all for your encouragements!

A demo video here

I think that’s a painting and not a render, that image was in a post asking for a small feature.

So could you use this to make low-poly buildings for games then? Or does it have to have that level of detail?