My third entry to
the Internet Ray Tracing Competition
(Mar-Apr, 2006). The theme was "music." Victoria was thrilled to win two tickets to the symphony. Her boyfriend, Michael was not as excited. In the midst of the third movement, he decided he had had enough and decided to listen to something more his style. The image won an Honourable Mention for Concept, Originality, and Interpretation of Theme. |
|
The making of "Ipod in D minor" I decided early on to have a group of musicians playing together, but the setting eluded me. I started modelling instruments in Wings3d and experimented with the venue. I tried a concert in the park and one in the middle of a highway (called traffic jammin'), but I wasn't pleased with the composition. In the end, I turned to a formal stage and after a few weeks, came up with the idea of an audience member listening to his own music during a concert. |
|
At first, I was unclear as to
which tool I would use to model the instruments. I'm more comfortable
using POV's CSG than Wings, but in the end I chose Wings. The deciding
factor
was that I would have to pose the people around the instruments.
Doing
that in POV would mean a lot of trial and error trying to position
things just so. With Wings, I could export the models as OBJ, import
them into DAZ|Studio (where all
the humans are posed) and position them
quickly. Then I used PoseRay
to convert the models to POV's mesh2 format. My first model was a violin, which I later scaled up to form the cello (I know, I know the two instruments have different proportions, but I was on a deadline). Once I had a few people and instruments, I started rendering group shots. The nice thing about using the mesh2 format is that multiple instances take very little additional memory. That was important to me because I would likely need many copies to form a sizeable orchestra. The disadvantage is that I didn't want to have an orchestra full of clones. |
|
I had trouble deciding on the
camera position for the scene. I started with an "over the conductor's
shoulder"
viewpoint, but it lacked interest. Next, I thought it might be better
to get right up to the players. I played with this perspective for a
couple of weeks. I felt this perspective was more dynamic, but still lacked some composition/meaning/humour. That's when I had the idea of an audience member listening to an mp3 player. |
|
There are multiple instances of
17 different human models in this scene: 3 violinists, 3 cellists, 3 trumpeters, 2 clarinetists, 1 flutist, 2 french hornists, 1 timpanist/conductor, 2 audience members. One of the challenges in this scene was to make it fit into my computer's memory. The humans models take up a lot of RAM - but surprisingly, it's not the mesh, but the high resolutions (often 4000x4000 pixel) image_maps that are used to texture them. Each mesh2 instance would reallocate the image_map (even if it was used by another model). In some cases, I could downsample the images. I also shared most of the textures between the models (for example there are only three male face textures used). Furthermore, sometimes a simple pigment would do - as in the case of the suits, shoes, shirts, skin, etc. Another technique was to position the clones so that you couldn't see their entire face - you can see that there's someone there, but can't necessarily tell it's the same object as elsewhere. The conductor and timpanist are actually the same model. The audience members in the first row are two clarinetists. In one case, I changed the skin color on the left side of a cellist's face and then had two copies of the same model next to each other, with one scaled to make them mirror images. Optimizing the texture usage probably recovered about 40-50% of the memory. The final image still used up about 2.3GB of RAM! |
|
The stage floor is a little
macro to draw random lengths of wood. The curtains are just a bunch of
cones squished together. The risers and music stands are CSG based
macros. The chairs are very basic CSG constructs. The violins, cellos, flutes, trumpets, clarinets, bassoon, and ipod are all Wings 3D models. The timpani (kettle drums), bass drum, and chimes are CSG. The spotlights are media filled cones. |
|
Update
(Oct. 2008) The original scene in this project only had four people in the audience. I decided to use my crowd macro to add an audience with very little additional memory. Some of the shortcuts of the original scene are apparent: The conductor is holding a timpani hammer, some of the musicians' skin sticks through the clothing. I also discovered I never added side walls to the auditorium: I just used a background {rgb 0}. Some people are dressed a bit too casually for a night out at the symphony! |
|
Scene
Statistics Finite objects: 14715 Infinite objects: 0 Light sources: 7 Total: 14722 Render Statistics Image Resolution 1024 x 768 Pixels: 798065 Samples: 1221217 Smpls/Pxl: 1.53 Rays: 55920222 Saved: 1419477 Max Level: 100/100 Ray->Shape Intersection Tests Succeeded Percentage Box 127417527 22046265 17.30 Cone/Cylinder 1706201350 643176514 37.70 CSG Intersection 122814 27118 22.08 CSG Union 122814 29274 23.84 Mesh 1084891673 557324298 51.37 Prism 122814 43691 35.57 Prism Bound 1030870 787388 76.38 Sphere 1694079 221804 13.09 Superellipsoid 33032057 2475749 7.49 Torus 2364987 191338 8.09 Torus Bound 2364987 240054 10.15 Clipping Object 1277970 618784 48.42 Bounding Box 207789688711 72309122420 34.80 Vista Buffer 100875598 62575388 62.03 Roots tested: 284036 eliminated: 51225 Calls to Noise: 7563087 Calls to DNoise: 10 Media Intervals: 1061484024 Media Samples: 13799292386 (13.00) Shadow Ray Tests: 1082356622 Succeeded: 503096096 Reflected Rays: 4888548 Transmitted Rays: 30362469 I-Stack overflows: 1061 Radiosity samples calculated: 249673 (0.78 %) Radiosity samples reused: 31657174 Smallest Alloc: 34 bytes Largest Alloc: 48000032 bytes Total Scene Processing Times Parse Time: 0 hours 2 minutes 51 seconds (171 seconds) Photon Time: 0 hours 0 minutes 0 seconds (0 seconds) Render Time: 6 hours 32 minutes 40 seconds (23560 seconds) Total Time: 6 hours 35 minutes 31 seconds (23731 seconds) CPU time used: kernel 7.08 seconds, user 23692.94 seconds, total 23700.02 seconds Render averaged 33.18 PPS over 786432 pixels POV-Ray finished Interestingly, the peak memory usage stat did not come out. I suspect there's a POV-Ray bug if the memory used exceeds 2 GB (perhaps a 32 bit signed arithmetic limit). The Windows Task Manager showed POV-Ray using about 2.35 GB while rendering. |