2.2 Advanced Rendering Techniques
Even with access to state variables and intermediate
variable calculations, artists often find that they need
advanced rendering techniques to realize their
artistic vision. Techniques that fall into this category
are vertex morphing, real-time texture manipulation,
alternate rendering viewpoints, clipping planes and
stencil buffer operations. These techniques must be
componentized carefully in order that they remain
flexible and useful within the scripting environment.
We use two strategies to address these needs;
segmentation of functionality and separation of
rendering object from rendering source.
The majority of early dynamic nodes for
Ygdrasil encapsulated the time based dynamics
within the node itself. For instance, the spinner node
only accepted a message to adjust the period of a full
rotation but could not be paused or reversed. By
segmenting the time manipulation into a general-
purpose timer node and passing only an orientation
value to the spinner we can gain better control of the
dynamics. Nodes for path following, vertex
morphing, material properties and others can now
have their dynamics paused, reversed, and looped
easily with this new implementation. Moreover,
segmenting the manipulation of large data arrays
helps to retain the power of techniques without
sacrificing flexibility. Programs such as Photoshop
and Maya are useful for manipulating large arrays of
pixels and vertices respectively. Our vertex-
morphing node only takes a keyframe position and
morphs between the vertex positions defined within
two 3D model files. And, our texture application
node applies a secondary texture to an arbitrary
location on an existing texture for producing effects
such as burns, bullet holes, or x-ray vision through
surfaces. Users do not manage the values of
individual pixels, they merely apply a smaller image
onto another image at a specified X and Y location.
In both cases, the manipulation of individual pixels
remains in the realm of more special purpose
programs while the expressive power of the
rendering technique can easily be manipulated
dynamically within Ygdrasil.
Many rendering techniques rely both on an
object located within the scene and operation on
some subset of the geometry in the scene. The
clipping plane node, for instance, must both position
the clipping plane in the scene and indicate the
subset of the scene graph that is subject to clipping.
Our viewTexture node renders a subset of the scene
from an alternate viewpoint and applies it to a
texture object within the scene. And, our
stencilBuffer node must specify both a graphical
object used to create the stencil mask and a subset of
the scene graph to be rendered subject to the mask.
In order to accommodate these dual needs we locate
the rendering node at one location within the scene
and give it the name of a node indicating the subset
of the scene graph it should apply to. In the
following script segment
stencilBuffer(node(stencilGroup)) {
object tree(file(tree.pfb))
}
group stencilGroup(){
object moon(file(moon.pfb))
}
object terrain(file(terrain.pfb))
the tree object defines the geometry shape of the
stencil mask, the moon object is rendered into the
resulting mask, and the terrain is rendered normally.
As a result, the user can see the moon only within an
area defined by the rendering of the tree.
3 RUTOPIA 2
Rutopia 2 is a virtual reality art project describing a
magic garden with interactive sculptural trees that
create portals to distant worlds. It was conceived as
a virtual environment linked to a matrix of several
other unique virtual environments that together
create a shared network community. The goal of the
interaction scheme is to avoid the preliminary
instructions usually required to familiarize the user
with the virtual environment and its rules of
exploration. User interaction is based on the
participant proximity to interactive locations while
the wand interface is used only to control the
direction of movement. The project implementation
utilized Ygdrasil, OpenGL Performer 3.2, CAVElib
and the Bergen spatialized sound server on an Intel
Linux PC running SUSE 10.0 and connected to an
Ascension Flock of Birds tracker.
Figure 1: The Island world with the trees.
DEVELOPMENT OF RUTOPIA 2 VR ARTWORK USING NEW YGDRASIL FEATURES
227