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

What went wrong


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.