HolliDance

for Windows

version 1.9.0




Index
What is it?
Concept
Requirements
Installation
File menu
View menu
Rendering menu
Music menu
Dancer menu
Key Commands
Models
Anti Aliasing
Known Issues
Optimization
Safety
Technical Details
Future Plans
Contact

What is it?
Holli Dance is a real time animation program that I intended to look like a music video. It depicts a virtual girl who dances. Two virtual camera operators capture the action while a virtual lighting effects person sets the mood. She dances to music played through your computer's microphone, line in jacks, built-in audio player, or, possibly, another program's audio player.

Concept
I originally started this project as a 90 second prerendered dance video, but when I discovered that I could render complex scenes on my Mac in real time, I decided that it would be better to create it has a free-running animation program. This way, I can take advantage of faster computers which can render larger and more realistic scenes without having to rerender the whole sequence every time. The program should remain interesting longer as no two of its frames look the same.

Requirements
The Windows version is designed to run on PC's running Windows 95 and beyond. 3D graphics cards provide significantly improved rendering speeds, but are not required. 3D shadows and pixel lighting require a graphics card with shader hardware supporting VP30, FP30 and beyond. Ray tracing requires a graphics card that supports Nvidia's Optix library (CUDA-capable, G80 or later).

Stereoscopic rendering requires a Nvidia Quadro brand graphics card due to its support for OpenGL 'Quad Buffers'. Be sure to choose one with a stereo 3D display option such as electronic shutter display glasses. Consumer video cards can not render HolliDance in stereo even with the consumer stereo driver.

Virtual Reality requires a head mounted display with head tracking. At present, HolliDance requires Hillcrest Labs compatible motion tracking hardware.

To read more on the Virtual Reality setup I used, read the Virtual Reality Details document.

HolliDance also runs on SGI work stations, Power Macintoshes with the classic OS, Be OS, and Sony Play Stations (Net Yaroze).

Installation
Unzip the contents of HolliDance where ever you want. Everything HolliDance needs is contained in the HolliDance directory. HolliDance does not write to any system directories.

User options
HolliDance provides the following menu options...

File

==============
Preferences ...
----------------------
Quit

Preferences
HolliDance provides a user preferences dialog box. You can change the following:


The club is more interesting with furniture added, but these objects slow down rendering. Use this dialog box to selectively render these objects. Note the tables and chairs are the largest drain on rendering speed. The carpet texture may be disabled to increase rendering speed on graphics cards that have trouble with textures.


The number of spot lights can be changed from just the one fixed white spot light to five spot lights. Lighting slows down rendering so reduce the number of spot lights to improve the frame rate. There are more ways to improve the frame rate on the Render tab (see below).

The club background lighting levels may also be adjusted to taste.


Microsoft's Volume Control dialog box can be used to set the audio levels so Holli will dance correctly. I have also provided this dialog box to simplify the audio level adjustment and set a level internal to HolliDance that won't interfere with other audio settings.


The frame rate statistics sliding window average may be adjusted from 0 to 60 seconds. Choose a high number for a smoother readout. When the rendering conditions change, this window average is reset and the frame rate is displayed in ()'s until the window averaging has accumulated a full set of data.


The stereo separation is automatically adjusted for the virtual cameras' field of view. Depending how close you are to your monitor and how large it is, your field of view can be different from mine. You can adjust the separation if the stereo depth appears too shallow or too deep.

If you see a double image, but can not perceive any depth, try selecting the 'Invert stereo' option.


HolliDance now uses up to three rendering engines. The simplest and fastest is the 'CPU Scan Line' render. It can support 2D floor shadows with compatible graphics cards. Selecting 'Simple Lights' speeds up rending the most.

Newer graphics card support the programmable 'GPU Scan Line' renderer. HolliDance lighting improves with this option, but at the expense of a slower frame rate. 3D shadows provide a fairly realistic look, but place an even greater load on the graphics card.

If this option is disabled, your graphics card does not have vertex and pixel shaders powerful enough for HolliDance to use.

New to this version of HolliDance is the very powerful 'Ray Trace' renderer. This type of rendering has been used in movies to provide photo realistic scenes, but has traditionally taken a long time to render each frame. Today's graphics cards are becoming powerfull enough to support realtime Ray Tracing.

Ray Tracing supports 3D Shadows, Reflections, and 3D Textures like the wood grain texture in the HolliDance club.

If the 'GPU Ray Trace' option is disabled, your graphics card does not have vertex and pixel shaders powerful enough for HolliDance to use.

To read more on the different rendering techniques, read the Rendering Details document.

View

==============
Adjust Camera ...
Manual Camera / Auto Camera
Virtual Reality
----------------------
Pause Dance / Resume Dance

The two cameras normally operate automatically, but one may be controlled manually. The Adjust Camera dialog box has controls for 'dolly' in and out, zoom in and out, pan left and right, and move up and down.

Choosing Virtual Reality will set HolliDance to full screen mode with stereoscopic rendering if available. You will need a head set with Hillcrest Labs compatible motion tracking hardware.

If you use the built-in Audio Player, it will also play music as if originating from the club's large two speakers. The view should closely match the orientation of the headset, but slower rendering will create anoying delays between head position and rendered views. If this is observed, try simplifying the rendering options to increase the frame rate. For Virtual Reality, it's usually worth while trading rendering fidelity for a fast response.

You can navigate around the club with a playstation style PC joystick.


Controlling virtual camera motion with the joystick is similar to using a joystick to steer a virtual car. The left analog thumb stick steers your virtual location left or right by moving the stick left or right. Moving the left stick up or down controls forward or aft motion.

Camera height will normally track the floor of the club, but moving the right stick up or down will raise or lower the camera. Pressing the left stick will reset the camera's position and orientation, while pressing the right stick will reset the camera's height.

The virtual camera location is limited by the club walls and interior spaces. If forward motion becomes difficult, try backing up. If that fails, press the right thumb stick to reset the camera's location.

You can pause the dance and Holli will try very hard to stand still.

Rendering

==============
Display Stats / Hide Stats
Render Engine >
____ CPU Scan Line
____ GPU Scan Line
____ GPU Ray Trace
Render Options >
____ {varies}
Toon Shading / Realistic Shading
Hide Club / Display Club
Hide Textures / Display Textures
Empty Club / Full Club
Stereo Rendering / Mono Rendering

An average frame rate and current number of selected polygons can be displayed.

Different Rendering Engines may be selected depending on the capabilities of your graphics card. 'CPU Scan Line' is the fastest while 'GPU Ray Trace' provides the most realistic rendering.

If this option is disabled, your graphics card does not have vertex and pixel shaders powerful enough for HolliDance to use.

Rendering Options vary based on the rendering engine (see below).

Select 'Toon Shading' to see Holli as she really looks.

The club may be replaced with a simple background. This may significantly increase rendering speed.

The textures may be disabled to increase rendering speed on graphics cards that have trouble with textures.

The club is filled with numerous object such as tables and chairs. Removing these should also increase the frame rate.

Stereoscopic rendering is available for some graphics cards like Nvidia's Quadro series. Consumer cards usually don't work because they do not support OpenGL quad buffering. If your graphics card doesn't support OpenGL stereo, this option may still available in the menu. You can determine if your card supports stereo 3D if, after selecting the option, there is a double image in the window.

Selecting the Stereo Rendering option switches the display to full screen mode. The menu bar is still visible, but somewhat difficult to see with some stereo display technologies. Selecting the escape key also disables the stereo effect and returns the window to normal.

Rendering may be customized with one or more options.

CPU Scan Line Options

==============
____ Line Rendering
____ Simple Lighting
____ Flat Shading
____ Shadows

'Line Rendering' displays the 3D objects as wire frames.

One to five spot lights (one stationary) normally illuminate the scene, but switching to 'Simple Lighting' increases rendering speed. 'Simple Lighting' disables shadows.

Flat shading determines whether polygons are rendered smoothly or as flat surfaces. Enable it to remind your self of what impressed us in the 1980's.

Disabling shadows will increase the frame rate.

GPU Scan Line Options

==============
____ Shadows

Disabling shadows will increase the frame rate.

GPU Ray Trace Options

==============
____ Shadows
____ Reflections
____ 3D Textures

Ray Tracing requires many calculations, but one of it's many benifits is that photo realistic effects such as Shadows, Reflections, and 3D Textures require little additional processing. Large model sets also cause minimal reductions in the frame rate.

Music

==============
Select Device...
Select Input...
Music Player...
Dance When Silent

Select an audio source and play some dance tunes!

HolliDance will initially open your preferred audio device (set in the Multimedia control panel) so Holli can dance to music played by another program, input from the 'line in' port, or heard via a microphone. HolliDance also has a built-in audio player (see below). If your PC has no audio capability, Holli will dance anyway. Select the menu item "Select Device..." to choose other devices you may have.

Your audio device probably has several sources of input including CD, line input, and microphone. You might need to alter your audio configuration. Microsoft has recently changed the audio configuration panels.

For older versions of Windows (Windows XP or earlier)

Select the menu item "Select Input..." to launch the Volume Control dialog box (also available from the 'Start' tool bar by right clicking the speaker icon and selecting the 'Open Volume Controls' menu item).


In the Volume Control dialog box (it may have different names in different versions of windows), select the Options, Properties menu item to get the Properties dialog box. Select the 'Adjust volume for Recording' button. Ensure that the volume controls are selected for the sources that apply to your computer and then select OK.


Individual audio sources can now be selected and audio levels adjusted.


All sound sources are mixed prior to being sent to your speakers. Holli, however, can only listen to one sound source at a time. You may need to try different audio sources to get Holli dancing. For example, when I play a CD on my PC, I have to select the "Wave" source rather than the "CD" source in order for Holli to hear the music.

For newer versions of Windows (Windows Vista or later)

In order to access the audio input controls, open the 'Sound' control panel (in 'Hardware and Sound/Manage Audio Devices'. Select the 'Recording' tab. Look for an icon for 'Stereo Mix' or 'CD Audio'. If you don't see one, try right clicking inside the dialog box and verify that 'Show Disabled Devices' and 'Show Disconected Devices' options are enabled.


Select an audio source, right click it to bring up the context menu, and choose 'Properties'. In the 'Properties' panel, select the 'Levels' tab and adjust the level as needed.


If you still don't see either of these icons, your computer may not support recording from another program. Your remaining options include useing a microphone, connecting an audio player to your computer's audio input jack, or using HolliDance's builtin Audio Player.


One or more songs may be loaded from a single directory via the "Load by File" button. Press the control key to select multiple songs. All Songs contained in a directory, including sub directories, can be loaded via the "Load by Dir" button. The current song, or the complete song set can be repeated. The Audio Player dialog box does not need to remain open for songs to be played.

When in Virtual Reality mode, the Audio Player will play songs three dimensionally enhancing the effectiveness of the Virtual Reality presentation.

Choose songs with good consistent beats and Holli will really groove. She will also sway to slower tunes.

Holli can dance in silence if you don't have any music for her or would rather just watch.

Dancers

==============
Holli
Holli (Halter)
Renee
Susan
Penny

HolliDance supports different costumes for Holli as well some new friends for her. If a menu item is grayed out, HolliDance could not find that model. These new models must be downloaded separately from my web page at http://www.cool3dworld.org/dance.html. Just place the files in the Model directory and restart HolliDance. You can mix small and large format models.

Key Commands
In addition to menu commands, these key commands are available:

LEFT: Camera Left
RIGHT: Camera Right
UP: Camera Up
DOWN: Camera Down
I: Camera In
O: Camera Out
W: Camera Wide
N: Camera Narrow
L: Toggle Lights
B: Toggle Background
P: Toggle Pause
C: Toggle Camera
D: Toggle Dance When Silent
T: Toggle Textures
S: Toggle Shadows
ESC: Returns the 3D window to monoscopic rendering when in stereoscopic, full screen mode Q: Quit

Models
HolliDance supports more detailed models. These models contain roughly four times the number of polygons and better match the curved originals. The new models can be downloaded separately in the high resolution model kit.

To install the models, just place them in the model directory. Small and large versions may be mixed to provide the best trade off between model smoothness and frame rate.

Anti aliasing


Selecting the Anti aliasing option for your graphics card improves the quality of rendering by smoothing the transition between pixels. For Nvidia cards, launch the Nvidia Control Panel dialog box. Select '3D Settings/Manage 3D settings' from Task list on the left. In the right panel, select the 'Global Settings' tab and select 'On' for the 'Antialiasing - FXAA' option.

Known Issues
PC compatible computers, these days, are not always compatible with each other. This is especially true for graphics programs like HolliDance. I have tried to make HolliDance reliable, but there are too many variations in different manufacturers' audio and video drivers. Chances are your computer may be just too different from mine and HolliDance won't work correctly. These are some of the problems that I have seen so far:

1) Pull down menu display: Some graphics cards have an Open GL bug prevents menus from being displayed correctly over an animated window. The menus usually display after the mouse is moved down a bit. As a last resort, you can use the keyboard commands.

2) Open GL driver memory leak: HolliDance leaked memory with the ASUS 7700 Geforce 2 card (5.31 driver) I used to use. I don't see this problem on my newer PC's. The leak was not very fast, but after running HolliDance for 2 hours, I had to reboot to recover the memory.

3) Audio task failure: Holli listens to music in a separate program thread (concurrent process) so she won't miss any music while she is being rendered. If the audio task has a problem with your audio card, Holli will pause for a few seconds, then give up on the audio task and dance in silence. When you then quit the program, you may get the following error:


If you do, just choose "Close".

4) Dialog display problem: On some PC's, the dialog boxes appear larger than intended and their contents may separate.

5) Due to the limited resolution of the Windows internal clock (Win 95,98 and ME only), Holli and scene updates are limited to 18 frames/second regardless of the display frame rate.

6) For some unknown reason, HolliDance initially runs slow when using GPU Scan Line rendering on some Nvidia graphics cards with older drivers. Installing the latest driver should solve this problem.

7) HolliDance is running unusually slow, chances are there is a compatibility problem with your graphics card and the program is running in "software rendering" mode. Try setting your color depth to "True Colors (32 bit)" via the Display Properties control panel. Also ensure that you have a recent driver for your video card. HolliDance needs an OpenGL 1.1 or greater compatible driver.

I have developed and tested HolliDance on the Nvidia series video cards. Unfortunately, I don't have the resources to make HolliDance fully compatible with everybody's PC.

Optimization
HolliDance has acquired several new rendering effects in it's history. These new options may cause the program to run too slow. Here are a few ways to speed up HolliDance..

1) Use Fewer Lights. Lights are expensive. Reducing the number of spot lights speeds up rendering. Selecting the 'Simple Light' option in 'CPU Scan Line' rendering provides the most acceleration.

2) When using the Scan Line render options, load the default models that came with the program. The large models have four time the number of components as the models that ship with the program. Different sized models can be mixed. Ray Tracing the large models only slows the frame rate around 12%

3) Scan Line rendering also benefits from emptying the Club: The tables, chairs, etc increase the load on HolliDance.

4) Turn Off Shadows. Scan Line shadows require multiple rendering passes. Since 3D shadows cast shadows everywhere, they are the most expensive.

5) Select CPU Scan Line rendering: GPU Scan Line rendering calculates light values for every pixel as opposed to just the polygon corners. Depending on the window size and model sizes, pixel lighting can require over 100 times the number of lighting calculations.

6) When using Ray Tracing, reduce the size of the window. Ray Tracing renders a scene by rendering a 'ray' for each pixel in the window. Model sizes, on the other hand, don't have much impact since model traversal, in modern Ray Tracers, is optimized.

Safety
HolliDance simulates nightclub lighting and can display a strobe light effect. Unfortunately, some people can be harmed by strobing light, so as a safety feature, I have included a file in the HolliDance directory called 'NoStrobe'. As long as this file is present, the light strobe effect is disabled. To enable the light strobe effect, simply remove or rename the file. Light strobing can be disabled again by creating any file with the name 'NoStrobe' (file size, type, and contents are not important). I apologize for this complication, but some folks can really be injured with strobing lights and it's best not to take chances!

Technical Details
Holli is comprised of over 9,100 polygons. Her club is made up of another 1,500 polygons. The large model sets contain four times as many polygons. Holli is fully articulated with 58 segments. Even her fingers are fully flexible. Her model was originally modeled as roughly 2,300 curved surface patches.

Holli is powered by Open GL for basic rendering. Advanced rendering also uses Nvidia's CG and Optix rendering technologies.

Future Plans
1. Holli dances around her stage rather than dancing in place.
2. More environments for Holli to dance in as well as more dance styles including belly dancing and hula dancing.
3. Display Holli as a continuous flexible surface rather than mostly rigid segments.
4. Holli varies her expressions and blinks her eyes.

Contact
I can be reached via at my web page at http://www.cool3dworld.org. You can email me at dwhite603c@san.rr.com. Please reference HolliDance in the email subject line.