Projects

Virtual Puget Sound

Just what it sounds like. Check it out at the PRISM project.

Virtual Deep-Sea Lab

Just what it sounds like. Check it out at the NEPTUNE Project.

Virtual Cadaver Lab

Just what it sounds like. Check it out at the Digital Anatomist Project.

Teachers/Pathfinders VR Web Pages

The Teachers/Pathfinders VR Web Pages project is a site for teachers to visit who are curious about the building of virtual worlds.

VRML Repository

I apologize that much of what follows is out of date (relevant, but not leading edge). Consider it a historical document and I hope you will still find something of interest.

The VRML Repository displays the HIT Lab's worlds as best as it can using the VRML 1.0 standard. I have worked on making the compressed versions as small as possible for quicker download time. I continue to be responsible for its content which was initially put together by Dace Campbell in our lab.

My focus will be on improving the The VRML Notebook and creating a The VRML 1.0 to 2.0 Diary which will track all the issues I encounter in updating our worlds from Version 1.0 to 2.0. The VRML 2.0 standard will allow me to add the existing animations into our worlds within the repository.

Note: Billiards, Kaleidescope, and Chinese Checkers Re-compiled for Beta 3 of CosmoPlayer as of 1/27/97

VRML Billiards

Go ahead and play a game of VMRL Billiards. The graphics may be slow on your machine. I use a Pentium 586 90mhz machine with 16MB of RAM and the graphics are as slow as I can tolerate (which is quite fine and quite exciting considering how much is going on at the same time). The graphics have been slower on faster machines so it depends on your graphics board and graphics memory as well.

In this simplified game of pool, you can not scratch... the cue ball never falls into a pocket. Yet, if you hit it too hard, it will pass right through balls as if it had jumped over them in the real world. I figure that is fair. I am still working on the pocket placement and adding additional java controls (note the blank frame that appears). Anyway, to move the cue ball (the only ball you can move), move the mouse over the green slate. A small blue sphere will follow the mouse -- six pixels to its left. Click on the slate to set the blue sphere and a white sphere will follow you after that. Move the white sphere in relation to the blue to represent the angle of your shot and your speed (the farther they are apart, the more velocity). I am trying to make the distance relate to how far you would move the tip of the cue in the real world. Click on the slate the second time and the shot will be made. To reset the blue sphere, click on the white ball to the right of the table.

Keep playing until all the balls are gone. Take turns if you want with 2 people. I will probably network it at another time. Then, shut Netscape and re-load to play a second game... one of my Java controls will handle this more gracefully. Note you have a viewpoint to come back to that is directly overhead of the table. Use your browser to activate that viewpoint.

READY? Have fun. Visit the Billiards World now!!!

VRML Kaleidescope

Take a look at this VRML Kaleidescope that you control by putting 8 pieces into it and letting the VRML viewer do the rest of the work. You will need CosmoPlayer Beta 3 to see this VRML 2.0 world.

The Three White buttons on the right of the world change the pieces, start the animation, and stop the animation. The left button will choose a random new piece and change one of the 8 pieces in the 'scope unless you choose a piece first by clicking on it in the 'scope, change it to a new shape and color (watch your changes on the right), and then hit the left white button. Then you will replace the piece with your changes. The middle white button starts the animation and the right white button stops the animation.

The 3 sets of color buttons to the left add 10% of red, blue, or green by using the bottom button and subtract 10% of red, blue, or green by using the top color button.

The objects along the bottom allow you to change the shape of the object you are replacing, and choose a starting color from some samples.

READY? Have fun. Visit the Kaleidescope World now!!!

Networked Chinese Checkers

VRML will come to life with the addition of an external interface. Live3D, Community Place, and CosmoPlayer all have plans for incorporating an external Java API into their VRML browsers. In fact, Sony did a fine job of outlining a Java API for VRML 2.0. The Java API is officially part of the VRML 2.0 standard. Yet, the Beta version 3 of SGI's Cosmo Player comes with no documentation on how to use it (or at least it is not easy to find on their web site) and the Community Place viewer can't compete with Live3D's rendering capabilities. So, I started by using Netscape's LiveConnect architecture -- creating a VRML 1.0 based Chinese Checkers world that uses Live3D's external Java API to work with Java buttons that allow a user to play Chinese Checkers. Since VRML 1.0 does not have a 'Touch Sensor' node, I included a 'Choose' button that allowed a player to choose the marble they wished to move by visiting all their marbles sequentially until they highlighted the marble they wanted to move. A nice side effect of this technique was that the player could conveniently take a look at all possible moves before moving.

On November 1st, I finally ported Chinese Checkers world over to VRML 2.0 by using the CosmoPlayer external interface. So, if you want to play a game of networked chinese checkers, you will have to use the CosmoPlayer Beta 3 or later from Silicon Graphics. I know it may be a pain for you to change browsers, but you will have a full functional VRML 2.0 browser at your fingertips. I haven't worked out the texturing yet for CC World, but I have tested CosmoPlayer extensively as I recently finished authoring a book with Chris Marrin from Silicon Graphics. It will be in the bookstores by the end of January 1997. It is called 'Teach Yourself VRML 2.0 in 14 Days' and is being published by the Sam's Net folks of MacMillan Publishing. Anyway, with the VRML 2.0 functionality, you can now just click on the marble you want to move and then click on the 6 larger marbles on the left to choose the direction you want to move or jump. The larger marbles will always display the color of the current player whose turn it is. So, if you are done moving, choose the End Turn button to end your turn. If you move a single space instead of jumping, the marbles should change color automatically. Note also that the buttons at the bottom refer to marble colors and not to the movement of the marbles. You can change the color of the marbles as often as you wish, they will not change for the other person so they can actually play the same color as you! I have only played one complete game. Let me know if you play a full one. I would appreciate the feedback.

I have created two buttons to be used to connect two players (clients) to the server for a networked game of Chinese Checkers: 'First' and 'Second'. You should agree with your partner ahead of time who will move first. Once each player has clicked on their respective button once to connect with the server, the First player should click on the 'First' button to solicit the second player. Once the First player has done that, the Second player can click on the 'Second' button to accept that solicitation. Then the game begins!

The First player moves first by clicking on the marble they wish to move. Once the appropriate marble is chosen, the player clicks on the marble map in the direction they wish to move. If they move one spot to an open spot, their turn ends automatically. If they jump, they can jump again or click the 'End Turn' if they wish to end their turn. Note that once a jump is made, no other marbles can be moved that turn. When the turn ends (automatically or not), the marble map color changes to the other person's color and that player can move one spot or start jumping. The client java script will only allow valid moves, but for now it trusts you will not try to make a move when it is the other player's turn. In other words, it does not keep track of which player is making which moves. I may add this code soon, but I like to be able to be both players for debugging purposes right now.

Note that the game can be easily upgraded to allow for up to 6 players! I will do this soon once the server side code can handle more than two players at a time. If you play a game and have some suggestions, please send me email. On the server side, the server has no idea of what kind of game it is playing. It just passes moves on to all players if the client tells it to. So, the same server code could be used for any game that has pieces, board spots, and moves.

Ready to play a game? Choose one of these two links:

Non-networked Chinese Checkers

Another Non-networked Chinese Checkers with Models from students in my ITT class

Networked-Two Players Chinese Checkers

or take a look at Chinese Checker World with your VRML 1.0 browser. You will not be able to play though:

VRML 1.0 Chinese Checker Board

Have fun... there really is some interesting strategy that goes on with Chinese Checkers... A lot of planning will go a long way.

Marble Machine

The study of Random VRML 1.0 worlds should pay off as I instead use VRML 2.0 to create random behaviors for marbles free falling in a virtual marble machine. The machine design will be similar to a physical marble machine I created when I was 11. It was not sophisticated, made mainly out of Dad's leftover wood, nails, rubber-bands, Styrofoam cups, and glue. The fun was in starting five or six marbles at the same time and then watching which won would finish first. It took about 10 minutes on average for a marble to make it from start to finish and we kept track of "World Records" and marble statistics. I was forced to demolish the machine after making a mess of the basement and ignoring the house rules on visitor's hours. I have thought of that machine ever since.

To give you a sense of the machine as I work on it, I have created a simple world with two marbles starting in what I called a peg-zone. The more pegs a marble hits while coming through this part of the machine, the slower its time. After the peg-zone, I have a funnel zone where marbles fight to get through the funnel first or at least make up time relative to the others in the funnel. After the funnel, the marbles will drop into another zone... then another, then another, etc.

I will provide a program when I am done that will create a random path through the machine for a number of marbles that you choose. The output of the program will be a VRML 2.0 .wrl file that you will be able to load in a VRML 2.0 browser. Then, hopefully, you will get the same excitement in watching your "favorite" marble progress through the machine.

If you use SGI's CosmoPlayer to browse the world, you will be able to hit the Page Down key on your keyboard to go to the next zone of the machine. This way you can focus on a particular marble. If you use another browser, you will have to navigate to each Viewpoint following their instructions.

For now, you can click on the red or green marble to get it started. It will go to the top of the first zone and go through the machine to the bottom of the funnel. It will then return to the top of the machine and you can hit Page Up on your keyboard to start all over again. You can start both marbles if you wish, just click on them to stagger their starts. Of course, in the final machine, you will be able to start all marbles simultaneously.

Go Visit The Marble Machine now.

As I create this machine and randomizing program, I will be envisioning a future where people will be able to come visit a shared marble machine world over the internet and actually become a marble. Then they will be able to experience the machine from their marble's perspective and get the thrill of the ride should they choose. Then, perhaps, I will even write a program to let kids create their own marble machines from the available component parts and run their own marbles through it. We could then connect multiple marble machines together and have a race that could go on for days!!!! This VRML 2.0 stuff is really going to allow for a lot of creativity, a lot of learning, and a lot of collaboration between people all around the world. :)

I have decided to create the Marble Machine generator program using Visual Basic 4.0. So far, it just allows you to create a board with pegs, rubberbands, pendulums, and wheels and then add marbles. The application will run on Windows 3.1, Windows95, or NT. The instructions to use the machine follow. Note that I will be continually be updating the application so come back every 2 weeks or so to get the latest version. I know the interface is boring so far, but that will be my last major improvement once the VRML 2.0 output works as intended.

First, download the MARBLES.EXE file (or MARBLES.EXZ and GZIP.EXE files) from the Marble Machine Generation Program subdirectory. If you downloaded the compressed version, from the subdirectory you downloaded to, run: GZIP -D MARBLES.EXZ to decompress the file. Then, rename decompressed MARBLES.EX to MARBLES.EXE.

Then, follow these instructions in strict order (these will be more flexible in the future):

  1. Run MARBLES.EXE
  2. Press the Create Board Button - the World Builder Window will Appear
  3. As Help Points out, Create the Board for your world starting in the upper left.
  4. Press the Grid Button if you want to see a grid to help judge distance
  5. Click on the Window once for each Peg you want in your machine - Click on the Peg Button after each Click to add the Peg code to your VRML 2.0 file.
  6. Click twice on the Window (once at each end) for each Rubber Band you want in your machine - Click on the Band Button after each set of 2 points to add the Band code to your VRML 2.0 file.
  7. Create a row of Pegs by clicking on the two end points of the Peg string. Click on the Pegs button and choose the number of Pegs you want to fill the string.
  8. Add a Pendulum or Wheel by clicking on the Window once and then the appropriate Pendulum or Wheel button.
  9. Once you have added all the Pegs and Bands you want, Click on Exit to Close the World Builder Window.
  10. Do not made changes to the VRML 2.0 code that has been created - but, feel free to browse it by USING THE SCROLL BAR ONLY.
  11. Click on the Add Marbles Button to add marbles to the scene and close the program.
  12. Save the VRML 2.0 code in a .WRL file on your file system. You choose the name in the file dialog box.
  13. View the .WRL file using SGI's CosmoPlayer application as a plug-in application to Netscape Navigator.
  14. To start the marbles, just click on the Yellow Sphere to the right with your mouse. Once the marble(s) reach the bottom of the machine, click on it again to see a replay.

To See a finished board, visit The Marble Machine now.

I know that there are probably some bugs in this version and the motions are not perfect yet, but hopefully it will give you some vision of the type of application I intend to create for others to use in collaborating to create a gigantic Marble Machine.

Changes I intend to focus on over the next few weeks:

Random VRML 1.0 Worlds

I am very interested in creating VRML worlds that vary based on other variables. To play around with creating random VRML worlds based on the system clock, I created a program using C++ and C modules that create a random world of space stations (3 models) and connects the space stations using enclosed bridges. Whenever a set of space stations are too far apart to connect with a tunnel, I leave at least one window open in each subset of space stations. I haven't revisited the code in a while, but have decided to make it publicly available for download. The DOS based executable can be run from Windows95.

Just to make things fun, I randomly choose one of the space stations to contain a brickfaced sphere. This can then be used as practice for navigating worlds using your favorite VRML browser. Just try to find the sphere in your fastest time. See how many space stations you need to visit before you finally find the sphere. You can cheat by using the different camera locations that are created automatically within the VRML world. Consult your VRML browser for details on navigating to different camera positions. Notice that collision detection will make this world much more fun as you will be forced to navigate within the bridges. But, for now, it makes it easy to go outside of the world and take a look at it. Of all the VRML browsers, Live 3D does the best job of displaying this world.

See the subdirectory: www.hitl.washington.edu/people/bdc/connect on the hitl.washington.edu ftp server and download as many of the files as you wish:

I plan on returning to these files once I get done with understanding the VRML 2.0 standard. Perhaps I will add random behaviors to these worlds also.

Last Modified: