The XP-Engine
The XP-Engine was used as the framework for the construction of the 3D
Graphics and the interaction in the application.The XP-Engine is a specialized
framework for the development of 3D Appliaction on VR Systems. It provides
a set of classes and a scripting language for rapid and efficient development,
and is based on the OpenGL Performer graphics library for graphics output
and the CAVELib library for interfacing with VE equipment. Although the
existing framework provided the most of the tools and classes needed for
our purposes, a lot of functionality like special effects, character animation,
particle systems and camera paths were missing and had to be incorporated.
Because the whole plot of the story would take place inside a room,
special effects, easy interaction, interresting actions and animations
had to be incorporated into the main story to keep the attention of the
user. The main technological features and achievements are described below.
Specular Highlights
The creation of realistic specular highlights for various shiny objects
like jewlery or pots was the first problem encountered. Because of the
modulation of material and textures in computer graphics the specular highlights
would not come out as realistic and shiny as they should, despite the fact
that the materials on a object were specified to have highlights in the
modeler package (Softimage) they were created. A special double pass technique
was implemented for the creation of shiny surfaces. The following pictures
show the various steps taken and the end result in the case of bracelet.
The left picture shows the original object, note that although highlighted
material was in the medel packages the highlights do not show up in the
application, the middle picture the the special object which only has highlights
contructed by from the the initial bracelet, and the final picture shows
the results after the merging.
Animated Textures and Blending
At some stage in the application the user is able to inspect the jewlery
which floats in front of him at close range. To make the experience as
belivable as possible and to increase the visual understanding and position
of the jewlery in the scene a force field effect which covers the jewlery
as long as it floats was implemented. A animated texture class was constructed
which would load a set of images and was able to map them transparently
onto any object. in our case we used a sphere as the pictures below demonstrate.
Spline interpolated Camera paths
Although an existing camera class which would allow the camera position
to follow a specified spline path existed, it did not have the required
functionality and posed many restrictions. It only allowed the camera to
follow the specified path and the camera direction would be taken out of
the tangent at the current position, furthermore only the heading could
be changed, changing the pitch of the camera direction was not supported.
We modified the path to take if desired 2 paths, one for the position and
one for the camera direction, so as to enable better control of the camera
movement and also added the functionality for pitching the camera into
any direction desired. The screenshot below shows the current camera position
path in the room, the camera direction points towards the girl during the
camera movement.
Cloth Simulation
Code for cloth simulation was succesfully developed and used throughout
the project. Unfortunately it was not used in the final version of the
project because of a change in the appereance of the room that looked better
without the cloth simulation in it. The topic of cloth simulation is still
experimantal in the field of real time computer graphics. Nevertheless
our simulation code is able to achieve real time frame rates and will be
used in future projects.
Morphing
The development of a Morph class was the main technical achievement of
this project. It was developed to enable morph to target character animation
as seen in various applications, but it was developed further than
that and is now available for more general use. It was coded thread safe
using Performer Fluxes, and takes as input a number of succesive models.
It morphs between these models by interpolating between them to produce
the final result. Not only the vertex information is interpolated between
models as is usual in the various implementations so far, but also normals,
colors, materials, texture coordinates and textures can be interpolated
between the various models making the class able to have a wide variety
of uses. Below a few keyframe of the stand up animation of the girl are
shown. Note that the last frame has a different texture as the others.
Movie
Postmortem
What went right
-
The research done to create convicible and historicaly correct representations.
-
The developmet of new technology which added a lot of new functionality
to the engine.
-
The quality of the graphics models and animations which set a special mood
in the scene.
-
The adequate use of effects to make projects as interresting as possible.
-
Although the storyline was not entirely clear initatially it was developed
and adjusted succesfully during the project development.
-
Constructing animations in a CAVE environment posed an extra challenge
in that although many animation parts would look correct on the screen
when seeing them in real life size in the CAVE environment even minor error
would become visible. Note that in the game industry the animations are
often less detailed and of lower quality.
What went wrong
-
The project went way over the scheduled time and had almost a delay of
one month. To this contributed that the major technical problems experienced.
-
The use of morph to target technology for animations although nowadays
outdated is a viable solution as has been seen in the game industry. Nevertheless
developing succesfully the morphing technology was not enough to provide
a trouble free animation production. Major problems were encountered in
that the models given from softimage had to be processed in a specific
manner so as to be optimized to produce a smooth animation. Special tools
have to be developed for this step. Often some keyframe models given from
softimage would differ from the rest of the models in 1 or 2 triangles
or would have a different triangle order thus making the morhing and animation
code to fail. Time consuming trial and error techniques were needed to
find and correct the problems.
-
The shortage of time to develop a skeleton based approach which is widely
used today for animation. Using skeletons all the above problems which
occured during the creation of the animation would be alleviated. If animations
will be needed in future projects such a animation system has to either
be developed or lincesed from a third party.
Despite the problems the project was finished succesfully, importand
technology and techniques were developed and many experiences gained. Future
projects will be developed on the experiences gained form this projects
and thus many problem areas will be overcome.