[English]


Games

Tortuga - Two Treasures
2006

Mall of America
Kicker Manager 2004
Holiday World

2004
Sacred
2003
Bundesliga Manager X
2001
Pizza Connection 2
2000

Film

Urmel aus dem Eis
2005
Back to Gaya
2004

Visualization

DTE
2006
Ballpoint Pen
2003

Research

Brook
2003
Mountain Flight  
Cloud Flythrough  
Tree Magic
2002

Software Development

Fur Simulation
2002
CPS
Footstep System
1999

Portfolio

Back to Gaya
Copyright 2004 Ambient Entertainment

Credits
Lead Programming
Crowd Tool
Special Vortex Effects
Plug-in and "Move-Tools" Programmer
Additional Financial Co-Producer
Dirk Bialluch
Modeller
Additional Financial Co-Producer
Marco Windrich
Lead Texture Artist
Additional Financial Co-Producer
Kay Poprawe
Special Vortex Effects Assistant
Katrin Schmid
Software
Maya 4.0, Maya 4.5, Maya 5.0
System
Dual AMD 2400+, 1.5GB RAM, GeForce4

Back to Gaya is the first German completely computer generated feature film. On March, 18th 2004 the children picture had its opening night in German cinemas. To read detailed information about the film and its plot visit the official website. On October 2001 we joined the team in Hannover in the production facility of Ambient Entertainment.


Brampf


Galger


Zeck

Software Development

Until the end of production countless MEL scripts and plug-ins were developed for Maya to extend existing technology and provide the artists with completely new tools. Dirk Bialluch was responsible for Maya software development. A total of three programmers were working full time on the project.

Time was pressing for each tool developed. Thus there was not much time for research and most programs had to be suitable for production right from the first line of code. Many small production specific tools were developed. Describing all of them would be out of proportion for this article hence we want to mention the most interesting ones development-wise.

Modeling

CPS

At the beginning of production objects were modeled using nurbs geometry, which is particularly suitable for large scenes due to the low amount of data required to describe complex surfaces. In the course of time polygon modeling proved to be a better solution in terms of handling complex shapes. The Connect Poly Shape tool was used to create organic geometry.

Pivot Toolbox

Another tool used to solve daily modeling tasks is the Pivot Toolbox. This tool provides several functions to modify an object's pivot. The object can also be transformed relativ to the pivot. Further on the tool offers a method to replace multiple objects within a scene with new one mainting postition and rotation.

Noise Deformer

Sometimes we needed to reduce the typical sterile CG look by adding some irregularity to surfaces. Therefore we used a custom Maya deformer based on Ken Perlin's noise algorithm that generates spatial distortion in world and local space.

Texturing

Procedural Crumple Texture

Maya offers a number of procedural, noise based 2D and 3D textures that are sufficient for most tasks due to node connectivity with its diversity of mutual influence. It turned out, however, we could not create detailed rock structures with that typcial irregularitiy and cracks. Since Lightwave provides an excellent shader called "Crumple" to texture rock-like surfaces, we decided to write a Maya plug-in based on this shader with extended functionality. The texture node was developed in two variants: A 2D version for UV based mapping and projections and a 3D version for volumetric texturing.

Crumple Shader Examples

As you can see in these examples the Crumple algorhithm is capable of producing very fine, irregular structures and hard edges. In addition the texture node can generate various wood and marble pattern.

The following example shows a mountain scene with Maya Fluids clouds. In this case the 3D Crumple shader was used to create the complete mountain range with all its geometric details as well as fine surface structures. The snow was simulated using Maya's snow shader. Dirk Bialluch created this scene to test procedural texturing of wide landscapes.


Mountain Flight, DIVX (3,1MB)

Nurbs UV Projection

Quite often one has texture polygon meshes that can be unwrapped using common projection methods, but would benefit from better local projection control due to complex surface curvature. This demand led to the idea to use an arbitrary nurbs geometry as projection source to generate UV coordinates for polygon meshes. Dirk Bialluch developed a special node, that accepts a nurbs and polygon object as input and outputs a new mesh with UVs sampled from the projected nurbs geometry. The tool can handle heavily bend surfaces pretty well and has special functions to avoid problems that may occur at the seam of closed nurbs surfaces (sphere, torus, cylinder).

In the following example the UVs are projected from the upper nurbs surface (wireframe display) to the lower shaded mesh.


This optional visual aid is used to check which patches are used for projection.


Using high quality nurbs sampling results in very clean UVs

 

Landscape Creation

Tree Magic

Tree Magic is a tree generator for Maya. The tool is chiefly script based, only leaves are created procedurally using a node. Tree Magic was programmed within a time frame of three weeks and offers a large number of parameters to generate varying tree shapes.

Trunk, branches and twigs are created from nurbs cylinders. The script provides several parameters to determine the shape, direction and irregularity of the surface. Forces like wind and gravity can be applied to bend branches and twigs. The branch settings are passed on to the next hierarchical level and can be further altered with each iteration to adjust specific attributes like a branch's radius or length. Animation controls for branches can be added optionally during the creation process. These take care of fully automatic movement of branches. Construction history provides attributes for wind intensity and how branches will swing.

Leaves had to be created procedurally using a node to maintain an acceptable interactive performance. The node offers the choice to use an internal leave shape or an user defined polygon object. The node outputs a single polygon mesh that contains all leaves. The node also takes care to stick the leaves to the branches, even if animated. Several animation attributes are available to create a realistic movement. When using the internal leave shape the node provides a method to apply texture shuffling. Thus each leave is assigned a random texture. This feature can be applied i.e. to create differently colored leaves as seen in fall.


Tree Magic Test Scene, DIVX (1MB)

 

Spread Objects

Spread Objects is with more than four month of development by far the most complex tool being programmed during the production of Back to Gaya. This Maya plug-in makes serveral new nodes and MEL commands available to generate and transform some thousand instances. Any Maya geometry or object hierachy can be instanced, even Paint Effects can be duplicated this way. Instancing also supports complete DAG hierarchies. Due to construction history the source objects can be modified and animated at any time. These changes are transferred to all instances automatically.

Spread Objects was developed primarily to create landscapes. It was used i.e. to distribute some thousand trees and stones on vast territories that can be seen during the opening scene approaching Gaya. The main node offers more than 250 attributes and provides the artist with every conceivable method to place objects. Almost every function has an internal random number generator at its disposal and can thus transform every individual instance randomly. Objects can be spreaded on nurbs surfaces as well as polygon geometry. In addition Spread Objects provides several internal primitive shapes like a plane, sphere, cylinder and so on.


Brook, DIVX (1,8MB)

In this test scene stones, grass and pollen were created and animated with Spread Objects.

Spread Objects creates instances not only on two dimensional surfaces. It can create a 3D grid of objects to fill volumetric shapes. Nurbs and polygon surfaces are optionally extended along a third dimension about their normal. Hence you can fill nearly any volumetric shape with instances, i.e. to simulate under water particles or snowflakes.

Since every attribute is animatable you can create masses of animated objects, again applying random functions for irregular animation. In addition each Spreader can be used as particle emitter, thus adding Maya's dynamics as an extra layer of complexity.

To make landscape design with Spread Objects as flexible and intuitive as possible Maya's Artisan tools were integrated right from the beginning. You can use the paint tools to draw instances interactively onto a surface or change i.e. their size or density simply by painting over parts of the base geometry.

Especially for placement of large objects like trees a highly optimized collision model was integrated to avoid intersection of objects.

At times it was required to work with real objects instead of instances. Spread Objects offers a plug-in command to convert its instances to individual DAG hierarchies that are no longer under control by the Spreader. The convert command also handles animation and converts procedural motion to animation curves. As a pleasant side effect even standard Maya particle animations using dynamics can be baked this way.

Dirk Bialluch made sure to keep the tool as interactive and intuitiv as possible which was apparently not that easy due to the enormous scope of functions affecting each other. A display node provides the user with a number of OpenGL guides to aid the artist when creating a large number of instances. Geometry display can be disabled just using just OpenGL guides to position, rotate, scale or even animate instances. To speed things up even further, one can reduce the amount of objects created by a user definable percentage value. When rendering the scene, the full amount of objects is created. This workflow keeps even very complex scenes interactiv within Maya. In tests we have created up to 260.000 animated objects using Spread Objects.


Objects on a nurbs surface


Spread Objects OpenGL display

 

Crowd Simulation

Another plug-in had to be developed to handle some crowd scenes that take place in Gaya. We just had about six weeks to develop a custom crowd simulation.

Based on the Spread Objects tool Dirk Bialluch developed a Maya crowd plug-in. It handles character animation similar to Maya's non linear animation system Trax by storing animation data so they can be evaluated at any point in time. Within the crowd node clips are defined that contain animation snippets. Clip IDs are sorted into an array of animation pools. An animation pool contains i.e. all clips for characters sitting, another animation pool may contain clips for cheering. As the simulation is played the clips are retimed and merged randomly. Blending of clips is also done fully automatically.

The simulation could be previewed in Maya's modeling view using OpenGL display. The artists could use any skeleton structure required to rig the characters. The crowd node could identfy relevant joints and transform nodes using attribute tags, that also defined the type of OpenGL display. The number of characters created with Spread Objects could be reduced temporarily to be able to preview the simulation in real time.

Once the crowd parameter were set properly the animation data were written to a file. This process could take a few hours when exporting some hundred characters. The data were finally rendered in the Renderman compliant renderer AIR.

 

Fur Simulation

At the beginning of production we spent two weeks doing some research about fur and hair simulations. We came up with a solution that creates hair on nurbs surfaces based on control splines that were calculated and stored internally in a node. The resulting hairs were displayed in the modeling view using OpenGL lines. To deform and animate the splines the node applied a 4D noise to rotate single segments of the splines. The fourth dimension was used to animate the noise volume. Develoment was stopped after two weeks because programming a complete hair solution would have been too time consuming at that point.

 

Cloth Tools

Collision Deformer

One of the problems when performing cloth simulations was penetration of clothing with other objects. As simulated cloth had tight contact with straps, belts and other deformed collision objects we had to maintain a certain distance to avoid simulation problems. For this Dirk Bialluch developed a new collision deformer for Maya that calculates collision between deformed objects and any polygon geometry withou the need for a dynamics runup. The deformed geometry is kept at a user defined distance optionally. Several attributes are used to create "soft" collsions so points are not blocked abruptly.

The collision deformer offers serveral OpenGL display options to show which polygons are considered for collision calculations, the resulting collision vectors and the original undeformed points.


Collsion Deformer with polygon mesh as collision geometry

 


Copyright 2003-2007 Lightstorm3D GmbH. All rights reserved
No part of this website may be reproduced unless for personal use without prior written permission from Lightstorm3D GmbH.