Composing Networked Virtual Environments by David E
Total Page:16
File Type:pdf, Size:1020Kb
COMPOSING NETWORKED VIRTUAL ENVIRONMENTS BY DAVID E. PAPE B.S., Computer Science, Rensselaer Polytechnic Institute, 1988 M.S., Computer Science, Rensselaer Polytechnic Institute, 1990 THESIS Submitted as partial fulfillment of the requirements for the degree of Doctor of Philosophy in Electrical Engineering and Computer Science in the Graduate College of the University of Illinois at Chicago, 2001 Chicago, Illinois ACKNOWLEDGMENTS I would like to thank all of the countless people who have helped me and made this work possible. Unfortunately, in singling people out for acknowledgment by name, I’m almost bound to forget one, or many, of them, especially after all the years it’s taken to get to this point. But, I’ll give it a shot, and hope not to offend anyone. Thanks go to: · the members of my committees – Tom DeFanti, Dan Sandin, Andy Johnson, Tom Moher, Bob Kenyon, and Steve Jones – for their support. · Josephine Anstey, Tomoko Imai, and Maria Roussou, for insisting, against my better judgment, on continuing to use ‘the MMB code’ in new projects, thus leading to this dissertation. · Carolina Cruz-Neira, Tom, and Dan, for creating the CAVE and then passing on to me the combined blessing and curse of responsibility for some of it. · Maxine Brown, Dana Plepys, and Maggie Rawlings, for actually keeping EVL running and successful. · Jim Costigan, Greg Dawe, Gary Lindahl, Alan Verlo, and other support crew over the years, for making everything work in the lab and on the road. · Horst Hörtner and the folks at Ars Electronica, for supporting many of the projects described here. · All the students of EVL, present and past, for always making it an exciting place to work. DEP iii TABLE OF CONTENTS CHAPTER PAGE 1. INTRODUCTION ……………………………………………………………... 1 1.1. Networked Virtual Environments ……………………………………….. 1 1.2. Scene Graphs ………………………………………………………….. 2 1.3. Scripting …………………………………………………………….….. 2 1.4. Framework Features ………………………………………………….... 3 1.5. Applications ………………………………………………………….… 3 1.6. Test Cases ……………………………………………………………... 8 2. PREVIOUS WORK ……………………………………………………………. 11 2.1. SIMNET / NPSNET ………………………………………………….. 11 2.2. BrickNet …………………………………………………………….… 12 2.3. VR-DECK …………………………………………………………….. 13 2.4. DIVE …………………………………………………………….……. 13 2.5. dVS / dVISE …………………………………………………………... 14 2.6. WorldToolKit / WorldUp / World2World ………………………………. 15 2.7. Alice …………………………………………………………….……... 16 2.8. Avango …………………………………………………………….….. 17 2.9. Bamboo …………………………………………………………….…. 18 2.10. Comparison of features …………………………………………………. 19 3. TOOLS …………………………………………………………….…………… 23 3.1. Virtual Reality Hardware …………………………………………….….. 23 3.2. CAVE Library ………………………………………………………….. 25 3.3. OpenGL Performer …………………………………………………….. 27 3.4. Vanilla Sound Server …………………………………………………… 28 3.5. Bergen …………………………………………………………….….... 29 3.6. CAVERNsoft …………………………………………………………... 30 4. XP …………………………………………………………….………………... 32 4.1. Objectives …………………………………………………………….... 32 4.2. Design …………………………………………………………….……. 33 4.3. Implementation Details ………………………………………………….. 39 4.4. Networked XP …………………………………………………………. 44 iv TABLE OF CONTENTS (continued) CHAPTER PAGE 5. USE AND EVALUATION OF XP …………………………………………….. 46 5.1. The Thing Growing ……………………………………………………... 46 5.1.1. The Storyline …………………………………………………………… 47 5.1.2. Constructing the Story and the Character ……………………………….. 50 5.1.3. Networked Thing and Autonomous Thing ………………………………. 53 5.1.4. Implementing the Thing in XP ……………………………………….…... 54 5.2. Discussion of Design Problems ………………………………………….. 59 6. YGDRASIL …………………………………………………………….………. 62 6.1. Design …………………………………………………………….……. 62 6.2. Distributed Scene Graph ………………………………………………... 65 6.2.1. Node Structure and Automated Networking ……………………………. 69 6.3. User Model …………………………………………………………….. 75 6.4. Scripting …………………………………………………………….….. 77 6.5. Implementation …………………………………………………………. 78 6.5.1. Scene Files ……………………………………………………………... 78 6.5.2. Core Classes ………………………………………………………….... 79 6.5.3. Events and Messages …………………………………………………… 85 6.5.4. World and View ………………………………………………………... 86 6.5.5. User Classes ………………………………………………………….... 88 6.5.6. Adding Node Classes …………………………………………………... 89 6.5.7. Networked Database …………………………………………………... 90 6.5.8. Utilities …………………………………………………………….…… 91 7. USE AND EVALUATION OF YGDRASIL …………………………………… 93 7.1. Shared Miletus …………………………………………………………. 93 7.1.1. The Demo …………………………………………………………….... 95 7.1.2. Implementation Details ………………………………………………….. 97 7.1.3. Issues Encountered ……………………………………………………... 100 7.2.1. Virtual Harlem ………………………………………………………….. 102 7.2.1. Contents of Virtual Harlem ……………………………………………… 103 7.3. Composability ………………………………………………………….. 108 7.4. Networking Problems …………………………………………………... 109 7.5. Performance Tests ……………………………………………………… 111 7.5.1. Non-networked Scene Updates ………………………………………… 113 7.5.2. Networked Updates on a Single Host …………………………………... 118 7.5.3. Bandwidth use ………………………………………………………….. 120 7.5.4. Final comments …………………………………………………………. 123 v TABLE OF CONTENTS (continued) CHAPTER PAGE 8. CONCLUSION …………………………………………………………….…... 124 CITED LITERATURE ………………………………………………………….. 126 APPENDICES …………………………………………………………….……. 131 Appendix A ……………………………………………………………... 132 Appendix B ……………………………………………………………... 142 VITA ……………………………………………….…………….……………... 153 vi LIST OF TABLES TABLE PAGE I. DATABASE ORGANIZATION ..…………………………………………………….. 20 II. PROGRAMMING METHODS .……………………………………………………… 21 III. SIGNIFICANT IDEAS ……….………………………………………………………. 22 IV. XP NODE CLASSES …………….…………………………………………………... 40 V. CONTENTS OF THE THING GROWING ………………………………………….. 56 VI. CONTENTS OF SHARED MILETUS ……………………………………………….. 98 VII. CONTENTS OF VIRTUAL HARLEM …………………………………………….… 105 VIII. NETWORK BANDWIDTH WITH MULTIPLE HOSTS ………………………….…. 120 vii LIST OF FIGURES FIGURE PAGE 1. Example scene graph and its XP scene file - a trigger turns a light on or off ...................... 34 2. Debugging XP - the wireframe sphere shows the area of a normally invisible trigger .......... 37 3. BNF grammar for an XP scene file ................................................................................. 39 4. xpNode class interface ................................................................................................... 41 5. Rough flow chart of XP's main program .......................................................................... 42 6. A user dances with the Thing in the CAVE ...................................................................... 48 7. The cousins welcome the user and the Thing .................................................................... 49 8. The Thing itself is modeled very simplistically .................................................................. 51 9. The Thing Growing – scene graph structure of the "on the plain" segment .......................... 57 10. The Thing Growing – scene graph structure of the character of the Thing .......................... 58 11. The world-tree Ygdrasil .................................................................................................. 63 12. Ygdrasil software layers ................................................................................................. 64 13. Example of a global scene graph ..................................................................................... 66 14. The global scene graph can be broken up and distributed among several computers ............ 67 15. Scene 1’s scene graph .................................................................................................... 68 16. User 1’s scene graph ...................................................................................................... 68 17. Sharing node data by storing keys in and receiving them from a CAVERNsoft database ... 72 18. Every attribute of every scene graph node is stored in a separate key ................................ 73 19. Example of a sub-graph representing a user's controls and avatar ...................................... 76 viii LIST OF FIGURES (continued) FIGURE PAGE 20. Ygdrasil scene file grammar ............................................................................................ 78 21. Example Ygdrasil scene file containing a background color, spinning object, and trigger ... 79 22. Relationships among the basic Ygdrasil classes ................................................................ 84 23. Shared Miletus – a view inside the Delfinio ...................................................................... 95 24. Virtual Harlem running on an ImmersaDesk at iGrid 2000 ................................................. 103 25. Virtual Harlem scene graph structure of the Cotton Club and trolley .................................. 106 26. Virtual Harlem scene graph structure of the city ............................................................... 107 27. An array of a few hundred simulated users ...................................................................... 112 28. Update speed of Ygdrasil vs. straight Performer, with many dynamic avatars .................... 115 29. Breakdown of timing data for 250 avatars ........................................................................ 116 30. Speed of updates to dynamic transformation nodes .......................................................... 117 31. Update speed of networked vs. standalone Ygdrasil ......................................................... 119 32. Ygdrasil class hierarchy .................................................................................................