This is the first of a series of articles about the development of MechoEcho. These articles are an opportunity for me to provide insights on the game tech and gameplay, as well as new updates about the development. Today I’d like to talk about the characters’ rendering effects and animation.
Although the characters in-game are made of particles, they are still modeled as 3d meshes. These character models can be fairly simple because it’s hard to see small details in-game when the particle system is running. The same is true for the animation rig (the skeleton used to animate the models). Different characters in the game will be distinguished by their size, shape, and particle colors.
My modeling and animation tool of choice is Blender. The nice thing about Blender is that it is completely free, has a vibrant community, and is highly customizable. Blender also does a nice job at mapping the model mesh onto the rig so I could easily drag the rig bones and watch the model move.
For the Greenlight Trailer I made the animations by rotoscoping existing footage of people running and walking. Rotoscoping is neat trick that allows a programmer to make his own animations in a few hours. However, for the final game, a professional animator will be hired.
Once imported in-game, the model initially looked rather unimpressive: all you could see were bunches of dots over the mesh vertices [Figure A]. To make it look better, I had to do some research.
University websites are a great place to look for inspiration when designing effects for your game. I was lucky enough to find a paper on realtime (fake) fluid simulations on the website of the Computer Faculty of UBC, which I implemented on the GPU [Figure B].
The next steps were to replace the particle dots with sprites, then add normal maps, lighting, and color [Figures C, D, E]. Even so, the effect looked good in motion but not quite right in still frames.
It turns out that without shadows the depth perception was entirely lost. However, having self-shadowed particles was not an option due to performance costs. Luckily, my engine already supported Ambient Occlusion [Figure F], a post-processing effect that works on the final image and selectively darkens certain areas that would be less likely to be exposed to light. Best of all, since the effect was already being applied to the rest of the world, applying it to the particles came at no extra costs.
Let me know if you have questions or suggestions!
Thanks & Credits:
1. “Curl noise for procedural fluid flow”, Robert Bridson. PDF
2. The model of Echo is based on a model courtesy of CG Cookie, Inc & Eat Sheep.