The project started shortly after the povcomp deadline extension was announced. I had the idea in mind, but needed some more will to start it, as it promised to be quite challenging. The povcomp provided the suitable incentive.
The idea was to represent an interior scene in a high building surrounding a city. The scene clearly takes place in Paris, around 1900. The city buildings are typical of the Haussmannian style, and the interior of the room and people clothing were to have a definite 1900 look.
Early design decisions
It was obvious from the beginning that I would have to write a city generator from scratch, and create custom clothing. As those parts were completely independent, I divided the 14 weeks of the project in several sections:
- 2 weeks to compose the scene, design a rough room and place the main simplified characters and furniture. The idea was to start the scene and decide what parts of the city would be visible later.
- 4 weeks to develop the city generation software.
- 4 weeks to complete the characters and furniture
- 4 weeks to finalise lighting, textures and run the final renderings
As soon as the project started, I began shooting pictures of facades, roofs and shops for later use, and went on until the end.
The city generator was completely written in Java, using the wonderful Eclipse IDE.
It starts from a simple convex polygon, and automatically builds the city on it. First, it breaks the polygon into smaller ones using a custom algorithm which tends to create streets while giving the irregular polygon blocks suitable for Haussmannian urbanism. At some point, each polygon may be marked as unbreakable, which gives blocks of different sizes.
Each block is then assigned a different kind according to its size. Bigger ones are parks, then blocks with inner spaces, then rectangular buildings, then lanes with trees, and finally small squares with statues. At this step, some manual control over the random generators was used to get a global shape which looked nice from the two windows of the building.
Then each type of block was described in detail. The hardest part, of course, concerned buildings. Each polygon was split into consistent sections sharing the same height, facade style and kind of roof. Then each style of roof and facade got more precision.
The object nature of Java was extremely helpful in this process, as it allowed to specialise some parts of the scene at will. For instance a plain facade would be flat, with just one map. A more complex one separates the lowest part, with shops and doors, from an upper part, which in turn can get a different geometry according to the photo which had to be mapped on it.
The generator, which could be extended forever, currently features more than 3000 lines of source code, 40 classes, and generates a 30 MB include file in about 15 seconds.
The inside part
And now for something completely different. The main character here is not Eclipse, but Blender and the great povray exporter "povanim" by Jean-Michel Soler. An important source of information here was the web site of the Quebec National Library, which contains many pictures of typical 1900 fashion. This was extremely valuable, especially to design the dresses.
Every piece of furniture was made with Blender, and in the first steps of this part to get a bit less clumsy in using this software. Then less visible characters, and finally the main couple.
The process was always the same. First, the character was posed, nude, using poser. This allowed to place the characters at the right place, and provided a body attitude to start with. Then the clothes were added and uv-mapped with Blender. Then the character was re-exported keeping only the remaining parts, usually the head and hands.
This project, mostly because it includes many meshes generated with external tools, is really huge as long as source code is concerned. It features tens of images and more than 1500 source files totalling 53 MB and about 2 millions lines of code. Managing such a mess would have become insane without the help provided by Thierry Charles' excellent qtpoveditor, which brings great navigation features for projects involving many files. This editor currently works only under unix, but a windows version would be available if someone could provide him with a legal access to a registered windows version of the Qt library.
The final render in 1440x897 using mlpov took 125 hours, using 640 MB RAM.