Sunday 6 April 2014

Advanced Animation, integration with Forest Rendering System

It has been a while since I have posted to this blog, especially as my primary development has been working on the Forest Rendering Project this year.  Though I have expanded on the Industrial Abstraction project, particularly to integrate these two systems and to develop simple animations with them. 

A sample of this work can be seen in the animation bellow.  This is a first attempt at creating a short story based animation using these systems:


The raw footage for this animation was composed in a program using both the Industrial Abstraction and Forest Rendering systems in a C# and XNA environment.  The skinned animation for deer was exported from blender, and the final composition, including transitions and color effects was composed in a video editing program.



Integration with the Forest Rendering Project

The specifics of integrating the industrial abstraction systems are explained in the Forest Rendering Project blog, but mainly involve a somewhat lengthy differed rendering process, separating out opaque models, visible point sprite effects (such as steam, flares) and depth point sprite effects (such as heat vents)  Combining these elements is reliant on maintaining a high resolution bit map (with a fairly high bit depth rate, 64 bit vs 32 bit colors)

Probably of the most interest is the ability to extend concepts of land modification, (such as pipeline construction, pollution darkening ground, machines tearing into the earth) can easily be applied to the Forest Rendering System, by rendering interactions to a Modification Map.  This render target can affect the height of a forest (no forest if its height value is 0), if it is a cut block, or the life value (which determines the color of trees)  

Ultimately this allows interactions of industrial processes to be visualized through their impact on forests.  Having a organic life like rendering system mixed with the systems of industrial rendering present a sharp contrast between the two, which amplifies the effectiveness of both.  As shown in the animation above, the steam and flare systems can be directly applied to forests to model wild fires, interaction that which I plan to develop further on its own. 


Animation System

To create high quality animations with these systems, I developed a simple animation system, which records values for different elements separately in layers.  For now, this recording process takes live input, (from mouse, controller, or kinect system) and writes specified values to a vector every half second.  This system can thus record and play back live organic animation.  Though as these recordings usually need to be smoothed out or adjusted, I implemented a simple graph editor using Form controls, which allow me to edit specific values for each layer. 

This animation system is somewhat of a crude implementation, but works fairly well.  As of now it is built entirely around the concept of live animation recording, vs a program such as after effects which can not be done in real time.  Though there are draw backs to such an implementation, particularly that the entire animation must be played back to see the effect of value changes, and that having values recorded every half second means that it can become very tedious to make large changes in an animation, as many value points may need to be modified.  Certainly I can work to improve the editing functions of the control form, especially by being able to select a range of value points, and implement functions such as Set To Value, Smooth, and Interpolate.