TITLE: The Fall of a Dynasty NAME: Daniel Dresser (and Fraser Kuyvenhoven) COUNTRY: Canada EMAIL: dsdresse@uwaterloo.ca WEBPAGE: Hopefully I'll make one sometime TOPIC: Mythology COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT. JPGFILE: dkgdome.jpg ZIPFILE: dkgdome.zip RENDERER USED: Povray 3.5 TOOLS USED: Python Numarray Blender RENDER TIME: about 1.5 hours to render, 5 minutes to parse, 15 seconds to generate using Numarray HARDWARE USED: Athlon 2500+, 1 G Ram IMAGE DESCRIPTION: The topic was quite vague about what exactly constituted a myth, so I have chosen a myth from a fictitious culture I've been playing with for a while. I'm hoping to flesh it out sometime into a novel, graphic novel, movie, computer game, or whatever else might come to me at some point. For now, here is the story of Haiduran. This world draws its style primarily from modern fantasy, but the story of Haiduran occurs in the long dead past. Its theme is one predominant in many mythologies, as well as the book of Genesis, which I believe is true, but is categorized with mythology (different discussion). Anyway, a favorite theme in mythology has always been Eve's apple, Pandora's box, a source of power too extreme to be controlled by any mortal. These talismans can destroy any who are so full of the desire for personal gain that they are driven to the hope of harnessing the great power. However, when Haiduran travelled through the caves of the Dekhage, to the Great Dome, and sought the Book of Bright Shadows, he did not think to increase his power. He came with the hope that he might somehow destroy the Book, and end the evil it had been used for. His resolution came from the knowledge that his comrades had died that he might succeed. Haiduran tried to face the Book and resist its temptation, in the hopes that he could secret it away, but no man possessed such strength. In desperation he tried to destroy the Book with the magic he had learned from his forebearers, but he knew this was futile. At this dark moment, he dared to try the unthinkable. He tried to strike out one last time, and with all that remained of his will, strike out not at the immutable book, but simply at everything that surrounded him. He threw his hands towards the ceiling of the Great Dome, and then planted his hand on the Book, knowing it would consume him. The soul of Haiduran was lost, but the Book fueled the hurricane of energy he created. The Great Dome did not still until the work of ages had fractured. All that it contained was buried under miles of rock. No one has since beheld the Book of Bright Shadows ... DESCRIPTION OF HOW THIS IMAGE WAS CREATED: This was a real interesting project for a great number of reasons. I came up with the idea for this story quite a while ago as a daydream, thinking of it as an animation that was totally impractical to produce, but fun to think up. It was Fraser who started persuading me that we should try and make a movie of it, and that I should get a still ready for this competition. I eventually gave in, with the condition that Fraser learn Povray and help out. Fraser's first project was the lamp posts around the edge, which don't actually show much in terms of detail in the final render. They are made up of dozens of nice randomly curvy sphere sweeps topped with a diamond that was written parametrically using a bunch of trig. Fraser doesn't seem to really get the concept of a beginners project. Some of the other factors that made this an interesting project: * It's my first big project in Linux * Fraser is a Mac guy, so even with OS X, his box isn't quite as Linux as it could (should) be * With a combination of Python, Povray, and Blender, we ran into pretty well every error conceivable I started off with the idea making a big autogenerated city, with massive arches and doorways, and write macros to handle multiple styles, and all sorts of crazy stuff. It was originally going to be entirely circular with all walls either perpendicular or parrallel to a line tangent to the center. Then I thought about actually trying to model it, and decided that going hexagonal would be the next best thing. I've often commented that a 60 degree based coordinate system ought to be about as good as a 90 degree, so this was my chance to put my money where my mouth is. It was, umm interesting. Having a grid where the centers of three consecutive elements don't lie on a straight line makes life interesting. There certainly are some advantages to it though. I think it's a more flexible way of looking at things, once you get past all your 90 degree bias. Anyway, I set out to try and write this as a Povray macro. Then I realized that creating 100 000 element arrays in Povray was not an option. I started looking around for a good scripting language that would be quick to write in, and have enough power. I'd heard good things about Python, so I tried it. After playing around a bit, I found Numarray. Numarray is a seriously rocking piece of software. After playing with it for a while, my code got progressively sloppier as I realized that even if I did allocate a 100 000 element array that I didn't really need, it would still run quickly. I think that Python script was taking about 30 seconds even for cities that were significantly larger than I was eventually able to run through Povray. So I ended up playing around with autogenerated cities, and soon discovered that, as I had expected, it would take me a lot longer than 2 months to accomplish everything I would like to. I ended up spending too much time playing with my Python script, and not enough modelling city parts. With a couple of days left, I went into panic mode, and started actually making all the cool stuff that would actually be the focal point of the render. I pulled out the fireballs from another render (took a while to remember enough of what I was doing to actually modify my old code. I really need to comment better). With two days left, I decided to try actually making a person in Blender. I'd played around with Blender before, but never really made anything that looked good. I'd heard that the new Blender was big on subdivision surfaces, and it sounded like a good way of doing things, so I gave it a try. The only problem I found is that I may in serious danger of becoming hooked on a GUI and abandoning my Povray roots (although I'd like to see Blender wrap it's head around this city once I finish it). I really liked some of the earliest renders I did with the the figure from an artistic point of view, before I got the fireballs in too. Nice contrast between a massive city and one lone organic figure. Hoorah for using mixed tools. I should mention that I had an absolutely terrible headache getting the figure from Blender to Povray. I looked around for a script to do it, and found one (povexport.py), and then it didn't work! I'm not sure if I was using it wrong, or if it had been broken by a recent release of Blender. Anyway, after tearing my hair out for a while, I took a look at what the export script was trying to do, and then hacked up my own. Pretty ugly. And then Povray started giving me segfaults when I tried to load the file. I'm not sure if it was just too big, or if it was because of syntax errors, but it seems to work now. With a day left, I then started frantically tweaking things to try and make an actual good render. Parts of the city generation script that didn't quite work before, now work in these specific circumstances but are probably more broken then they were to start with. In the final composition, the city doesn't really show up well at all, which might be just as well, because there isn't much to it yet. I hand tweaked some buildings for the foreground, and they look pretty nifty, but all the work I put into the placement macros isn't really visible. You'll hopefully be seeing another IRTC entry from me once I get that script actually working, assuming I can find an appropriate topic. Anyway, the final result is that it is now 12:54 at night in my time zone, and I need to have this in by 3:00. Both me and Fraser's computers are running renders. One is looking good, the other is running on a minimally booted Linux box so I can't see how it's doing, but hopefully it's looking even better, and will finish in time. I'll throw in my source. There should be enough there to theoretically reconstruct the render, although some of it might be a bit out of date, depending on which computer I grab it off of. I wouldn't recommend trying to use or understand any of it, at this point I can't understand some of the stuff I'm writing, and it is very finicky to run (I have to run Python, reboot, then run Povray to get decent render times (RAM is a huge issue, and something is leaking). On second thought, one thing that might be usefull to other people is the diamond macro Fraser wrote. He even writes intelligible code most of the time. If you need to make any diamonds, that could be handy, so feel free to use it and credit him. I realize that this is an awfully long winded description, but I get verbose late at night. Hopefully I was slightly comprehensible. If you have any questions, or would be interested in seeing the source after I rewrite it to be understandable, then feel free to email me.