Spatial Transfer Functions - A Unified Approach of Volume Deformation to Modeling and Animation
M. Chen        D. Silver        A. S. Winter        V. Singh        N. Cornea

In this paper, we introduce the concept of spatial transfer functions as a unified approach to volume modeling and animation. A spatial transfer function is a function that defines the geometrical transformation of a scalar field in space, and is a generalization and abstraction of a variety of deformation methods. It facilitates a fieldbased representation, and can thus be embedded into a volumetric scene graph under the algebraic framework of constructive volume geometry. We show that when spatial transfer functions are treated as spatial objects, constructive operations and conventional transfer functions can be applied to such spatial objects. We demonstrate spatial transfer functions in action with the aid of a collection of examples in volume visualization, sweeping, deformation and animation. In association with these example, we describe methods for modeling and realizing spatial transfer functions, including simple procedural functions, operational decomposition of complex functions, large scale domain decomposition and temporal spatial transfer functions. We also discuss the implementation of spatial transfer functions in the vlib API and our efforts in deploying the technique in volume animation.

We utilize the "skeleton" concept, which is an intuitive mechanism to define kinematic animation, to specify individual segments from the volume dataset. The skeletal segments define box-like bounding regions of the volume that should move together. Each of the hexahedral regions is associated with a spatial temporal transfer function. As the animation progresses, the hexahedral regions change to maintain conectivity about the "joints".

To render the animation shown here, a combination of a backward and forward mapping algorithm was used. The entire volume is rendered as a backward mapped process, and this represents the gross motion as the actor is animating through the dataset. Within these bounds, individual limbs are de-fined in a manner of forward mapping, that is, the control nodes of the  bounding regions  (hexahedral for this implementation) are transformed in line with time. A ray hitting one of these transformed boxes must then perform an inverse transformation to determine the actual scalar value of that intersection point.

The animation that can be dowloaded here was created using an extension of the vlib library.