Transforming 3D Art in Project Giana
Hi, I’m Eric Urocki, the technical art director for Project Giana! This dev diary is about how we made the 3D art for the game, with a focus on the transformations. I’ll also be releasing a more technical version of this document with a lot of 3D artist jargon for the 3D artist community if you prefer something more detailed.
As you probably know, our key feature is morphing from a cute, colorful world to a spooky one and back again. This has impact on gameplay, music, and most noticeably, art. To fully deliver on all fronts, we pushed the visuals for the transformations a little bit further with each step.
Morphing the World
As a first step, instead of switching immediately from one world to another, we decided that it would be worth the effort to attempt actual morphing between the worlds. We experimented with 2D art and photo morphing effects, but weren’t satisfied with the results. In the end, we decided that the only way to make the morphing look convincing would be to have every 3D object in the game actually transform into another. This means that we took all points (called “vertices”) that define the shape of the polygons of an object and moved them to new positions, effectively creating new shapes. Doing this gradually allows you to see one object shift from one form to another.
The 3d morphing looked a lot prettier than a simple 2D morphing, but the transformation still looked a bit boring.
To improve the morphing animation, we added a wobble effect, making the object behave similar to a spring.
Morphing objects has to be done carefully, as the components of an object have to match up between both versions. To preserve the sanity of our 3D artists, our concept artists didn’t only take care to make the concepts look nice, but also paid attention to which parts of an object transform into what, and marked corresponding areas with bright colors in a separate art reference.
This video shows the morphing process for the table in 3D.
To make such morphing possible, one of the main constraints is that the amount of polygons in a 3D object has to remain the same between the cute and the dark version. This applies even to pairs of radically different objects like the anvil and sled in the video below:
The stronger the difference between two objects in a pair, the more difficult they are to morph. During production, after creating the cute version of an object and starting on the dark version, we often discovered that we needed some more polygons for the dark version. This forced us to add more polygons to the cute version to avoid breaking the morphing.
The problem with adding polygons to a finished object is that you have to be very careful with the order. One mistake, and the wrong polygons get paired, giving you some very ugly results. Click on the video above to see something horrible happen to the house.
To repair broken objects, we wrote scripts in 3DS Max that check for the position of the vertices and re-sort them accordingly. Once the order has been reset according to the same system for both objects in a pair, the morphing works as it should again.
Providing the Levels with Depth and Volume
At the very beginning of the project, we decorated the levels like a lot of classic platformers, meaning that we placed the background objects only near the path of the player. We weren’t satisfied with this look, as it felt flat, as if you were running atop of a wall. We wanted to provide stronger immersion, and added more elements to the foreground and background to provide more depth and the feeling of being on an actual landscape.
Adding more objects to the background has a downside, though: it becomes more difficult to see what’s going on when you’re playing the game. As boosting the visuals at the cost of gameplay wasn’t acceptable for us, we used some tricks to improve visibility. For example, we added depth fog to make the foreground pop out more from the background, slightly obscured specific parts of the levels with local particles fog and added dynamic lights to others to make them stand out more.
The following pictures show a case where the small platform over Giana’s head was barely noticeable because it blended into the background. We added a local fog particle effect to separate the playspace from the background, making the platform visible against the light haze.
To improve the depth of this scene we added dynamic shadows. Those are applied on the whole scene and not only on the characters as in most classic side-scrollers. To avoid plunging everything into gloom, we set a default light coming from the front/right. The downside of front lighting is that it makes the picture look flat, and makes it more difficult to distinguish vertical from horizontal surfaces. To solve this problem, we tweaked every level to have its own unique lights, coming more from the side, sometimes even from the back. The first picture shows the results with the default front light. The second has tweaked lights that improve visibility.
As every level has its unique lights, we used the opportunity to make different time of day ambiances (sunrise/sunset/night levels…..)
If we have time, we will continue to improve visibility by using other tricks that make the main path pop out from the foreground and background. As a closing shot, here is an example of a sunset level in cute and dark version.