Diver and Alice: An Immersive, Virtual Environment, 3D Graphics System
Back in the 1990's, the University of Virginia, under Randy Pausch,
acquired two 100,000.00 SGIs to create virtual environments. We used
magnetic polhemus trackers to know where your head and hands were and a
very heavy head mounted display. The lenses had to sit so far out front
that a sandbag was mounted on the back to counter-balance the gear.
I wrote DIVER (DIstributed Virtual Environment Rendering system) in C,
based on early versions of openGL. Since we used two sgis, one for each
eye, It used udp sockets to communicate updates the the scene graph and
syncs for rendering.
DIVER departed from the Inventor scene graph with its own model, allowing
any object to dynamically reparent under any other object without suddenly
jumping in space due to the newly inherited parent matrices. DIVER
supported the idea of multiple cameras, of a rendering loop that was
independent of a scene update loop, and the development of a simpler API
with calls like object.moveTo() rather than matrix updates.
We then put different, interpretive programming languages on top of DIVER
to allow rapid prototyping without needing to know C or to recompile and
restart the system. Python was the prefered language at the time and
developers could work at remote stations and send the rendering commands
over to DIVER.
In addition to developing new models for virtual environments and creating
a virtual environment based perception lab, we also developed
Alice to help people learn how to program in 3D.
Alice has come a long way since then and has undergone many re-writes and
programming language changes, but even twenty years later, with the occulus
rift, we are seeing folks re-invent and relearn some of the benefits and
problems that an immersive headset creates.
Videos
UVa early VR video
(various time-critical rendering techniques and separation of simulation
from human movement)
Alice: Worlds In
Minature (Richard Stoakley genius) updated with Portal sounds
UVa early VR video 01
UVa early VR video 02
UVa early VR Pool Table
Level-of-Detail control
Papers
Matthew Conway, Randy Pausch, Rich Gossweiler, Tommy Burnette,
Conference companion on Human factors in computing systems. pp 295-296,
ACM, 1994.
Rich Gossweiler, ACM, 1994.
Randy Pausch, Matthew Conway, Robert DeLine, Rich Gossweiler, and Steve
Miale, INTERACT'93 and CHI'93 Conference Companion on Human
Factors in Computing Systems, pp. 13-14. ACM, 1993.
Matthew Conway, Steve Audia, Tommy Burnette, Dennis Cosgrove, and Kevin
Christiansen, Rob Deline, Jim Durbin, Rich Gossweiler, Shuichi Koga,
Chris Long, Beth Mallory, Steve Miale, Kristen Monkaitis, James Patten,
Jeff Pierce, Joe Shochet, David Staack, Brian Stearns, Richard
Stoakley, Chris Sturgill, John Viega, Jeff White, George Williams,
Proceedings of the SIGCHI conference on Human factors in computing
systems, pp. 486-493. ACM, 2000.
Rich Gossweiler, Robert J. Laferriere, Michael L. Keller, and Randy
Pausch. "An introductory tutorial for developing multiuser virtual
environments." Presence 3, no. 4 (1994): 255-264.
Rich Gossweiler, Chris Long, Shuichi Koga, and Randy Pausch.
In Virtual Reality, 1993. Proceedings., IEEE 1993 Symposium on Research
Frontiers in Virtual Reality, pp. 10-15. IEEE, 1993.
Jim Durbin, Rich Gossweiler, and Randy Pausch. "Amortizing 3D graphics
optimization across multiple frames." In Proceedings of the 8th annual
ACM symposium on User interface and software technology,
pp. 13-19. ACM, 1995.
Victoria Interrante, Penny Rheingans, James Ferwerda, Rich Gossweiler,
and Toms Filsinger, SIGGRAPH 97 Course Notes 33.
Mukul Bhalla, Rich Gossweiler, Jonathan Midgett, Psychonomic Bulletin &
Review, 2, 1995, 409-428.