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...
The club background lighting levels may also be adjusted to taste.
If you see a double image, but can not perceive any depth, try selecting the 'Invert stereo' option.
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.
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.
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.
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.
'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.
Disabling shadows will increase the frame rate.
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.
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).
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.
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.
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.
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:
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.