9 May 2020

Making of Ozymandias

I have been postponing writing about Ozymandias because I feel quite embarrassed about it, but anyway...

Ozymandias was my second 3D demo, I started working on it right after Lepus Minor and aimed to participate to the Assembly Summer 2019. Because Lepus had worked out so well I kind of jumped right into a feature overload with this one. The original sketch had something like 9 different scenes, each with separate models and effects. That was the first silly thing to do :)

Then for many weeks I just sat around trying to get other people on board without much success. In retrospect, just starting to work on the first scene would have led me faster to the next phase.

As summer drew nearer I understood that my plan was way too complex and proceeded to cut it down to one scene which was the main point anyway. Just a camera flying over a desert and arriving at the ruins of the city in the desert. That was the central idea in the poem anyway.

For that I needed a big desert terrain model. I had the fractal terraing generation code from Lepus, but for some reason thought that it would be too much for a gpu to handle if it was much bigger. This leads to many hours of premature optimization as I tried to break the terrain into smaller tiles and have Level of Detail versions of those tiles generated automatically. It almost worked, in a very frustrating kind of almost. Then I just abandoned that idea and made a very low poly terrain instead.
Here you can see the LOD system in action when zooming out. It would not make seamless tiles :I



At this point my head was clear enough to make a very focused plan that would get the demo done in time for Assembly. I made the models of the gate and the palace in the magicavoxel, mixed the soundtrack from existing songs using Audacity and programmed a nice skybox that could change color as the sun moved over. And made the shader for the texts that got blown away by the wind.
The sky is a sphere and the texture coordinates are moved as the sun moves, creating the gradient effect.

Using texture coordinates on a small gradient image allows the gpu to do the color blending and results in a soft gradient.
Ambient light color and intensity was also linked to the suns position, which created this hazy morning dust effect.

I first modelled the gate and the used the eraser tool to break it down. The graffiti was texture plane positioned inside the gate.

And at the very last moment my friend Bass Cadet agreed to make some music, which they did in about a day and it fit perfectly.

I was not really happy with the demo, as my original plan had been much grander, but I just wanted to get over it and the main idea was clear enough. I am happy that I released it and I hope I learned a valuable lesson about feature creep and expectations :)

Here is the final demo:


During the event I got feedback that the part where the greets were drawn as graffiti inside the gate was really nice idea. Hearing that made me really happy and it felt like it all had been worth it in the end.




If I make such 3D demos again I am going to spend time creating a way to place objects in the 3D scene, because I wasted a lot of time adjusting positions in a text file, restarting the demo and adjusting again.

No comments:

Post a Comment