VRML Notebook

Here's a bookmark to my most recent diary entry:

VRML 1.0 to 2.0 Conversion Diary

Download Sony's 1.0 to 2.0 Converter at http://vs.sony.co.jp/VS-E/works/util/vrml1to2E.html

5-13-96: Investigating Sony's CyberPassage Alpha

I downloaded CyberPassage VRML 2.0 Browser from Sony and also downloaded the circusj.exe, self-extracting circus world. In total, I needed about 22MB of free hard drive space to load the browser and the Circus World. I launched CyberPassage from the Windows group it had created on my NT 3.5.1 machine. I loaded the Circus World by using the File-Open File menu option and began to move about within the world. The world is not complete yet as I discovered by launching some of the links, but it looks and performs fine in a 5x5 inch window on the desktop. I was able to see many interesting animations and links.

Upon reading the COMP.VRML.LANG newsgroup, I figured I would stick with CyberPassage as a browser as I begin to convert some VRML 1.0 worlds to 2.0 worlds. I note that some of the existing 1.0 worlds did not look very clean in the browser compared to the Live 3D browser. But, I spent the rest of the day reading through the various .WRL files that were downloaded by Sony onto my hard drive. I noted that CyberPassage had a Bookmark feature... the first I have seen in any VRML browser.

5-20-96: Using Behaviors with Sony's CyberPassage

I have worked with CyberPassage Alpha for a week now. The ability to change color, move, and rotate objects works fine by implementing Event Nodes with a SCRIPT type of TCL. The browser doesn't have the flexibility of the Live 3D browser and does an inferior job of rendering VRML 1.0 worlds. Most of the more complicated VRML 1.0 based worlds I have tried to load failed with CyberPassage only showing the message "Unable to Load VRML file". I now have to spend time testing which VMRL 1.0 nodes work and which ones do not. I am about to download the beta version of the browser and will document my findings here shortly.

5-27-95: More Testing of Sony's CyberPassage

I spoke with a member of CyberPassage's development team who said the beta version was not worth downloading since the alpha did better rendering. I decided to heed his advice and instead performed testing on the Alpha version. I first looked at the sample worlds that came with the download package. Upon inspection, it appeared that the browser could handle most of the VRML 1.0 nodes. But, I was only successful in loading about half of the examples in the The VRML Sourcebook. I used these examples since they represent very good examples of each of the VRML node types. I noticed that the only texture file format it accepted was the .JPG (JPEG) file format. I concluded that to develop with the Alpha browser, I would have to use the nodes similarly to the usage in the examples. I developed a world of my own to test changing object color, object location, and camera location and also the rotation nodes using CyberPassage. All events work wonderfully using the TCL scripting language. I will clean up the code and then make that world available here (by June 27th).

6-03-96: Java Scripted Behaviors with Sony's CyberPassage

Having succeeded in doing some pretty interested behavioral scripting in TCL, I emailed Sony about helping me get the Java compiling process working with their VS classes. They told me that I needed to include the directory where I had unzipped the 4 VS*.cla files as part of my classpath. I followed the instructions in the http://vs.sony.co-jp/VS-E/Info/classpath.html document as they suggested in an email to me. I have followed all the steps and verified many times and it still is not working. As I compile, the compiler tells me that it cannot find the VRML.* package that needs to be imported to each behavioral scripting class. I am frustrated here, but will pursue at a later date.

6-07-96: Investigation of Sony's CosmoPlayer Beta

I downloaded CosmoPlayer from Silicon Graphics and began reading the VRML 2.0 Draft 2b. The draft is easy to read if you already are familiar with VRML 1.0 and have been playing around with CyberPassage from Sony. The plug-in from SGI is crashing on the NT 3.51 machine in the lab whenever I go to exit or open another document. It is working quite well on Windows95 machines as I have yet to crash once. The Netscape 3.0 Beta (#4) I am using on both machines works fine on Windows95, but has its problems on NT. It is possible those problems are being passed on to the CosmoPlayer plug-in. The browser will not load any of the VRML 1.0 worlds we have created in our HIT Lab VRML Repository pages. But, the VRML1to2.EXE converter that is downloaded as part of CosmoPlayer seems to work very well. We will need to convert our worlds once VRML 2.0 gains critical mass. Note that using the VRML1to2.EXE tool on the The VRML Sourcebook's examples averaged about a 20% file size reduction. This is good news. I will now attempt to create some worlds using VRML 2.0 and to view them using CosmoPlayer. One last note: The interface to the Windows95 based CosmoPlayer browser is similar to Webspace.

6-21-96 Mastering VRML 2.0

I wanted to get CosmoPlayer to show me worlds with the same behaviors that I was able to create for CyberPassage. I struggled at first deciphering the VRML 2.0 standard draft, but once I got the big picture I was able to do most anything I wanted to do in my worlds. The features I thought would be most valuable would be: I was quickly able to create examples of each of these features of VRML 2.0. Just click on the object to activate the behavior. I make the .wrl files available here::

Change Color of Sphere from Red to Green

Change Location of the Grey Sphere

Change Size of Two Spheres - The Gold Gets Larger, The Blue Gets Smaller

Rotate the Green Cube 30 degrees

Change Viewpoint to be closer to Spheres (Click on Gold Sphere)

I then played around with the new node syntax for geometry and transformations. I found the transition to be painless and the new standard clearer to read. Lastly, I decided to create more complex behaviors and created a simpleMarble Machine which comes alive by clicking on one of the two marbles. The whole process was extremely exciting as I got an incredible vision of how we will use this technology. Note: I like the feature of CosmoPlayer that uses the Page Up and Page Down keys to move between consecutive viewpoints provided by the VRML 2.0 author.

7-13-96 through 8-9-96: Building Sophisticated Worlds Based on VRML 2.0

I decided to take 3 weeks to create my own Marble Machine World using CosmoPlayer and VRML 2.0. To see an example of a world, go visit The Marble Machine now. To put the marbles in motion, click on the Yellow Sphere to the right of the marbles to start them going. Click again to replay once they have stopped moving. You can create your own marble machines by using the application explained in My Personal Projects. I have found VRML 2.0 easy to understand and write using a text editor.

8-9-96: Investigating JavaScript for behaviors of VRML 2.0 objects

Now that I understood Exposed Nodes, I was excited to understand JavaScripting since it can be used with the Script node in VRML 2.0. Once I got the big picture, I began investigating how to send Java based messages from a shared server. This will take some time. If I could share messages with others through Java, I would be able to share a world with multiple people. There is lots of work being done with collaborative, virtual worlds. The Contact Consortium is worth visiting for a comprehensive list of collaborative, virtual worlds, many of which are chat based. There is little mention there of VRML 2.0 yet. Since the final VRML 2.0 standard is just being finished and beta browsers are supposed to be unleashed on August 15th, my next journal entry should be pretty informative.

9-2-96: Update on Multi-User Worlds

As expected, much has happened in the last 3 weeks. CyberPassage has officially changed its name to Community Place and Sony has made its Community Place Server available for public consumption. The rendering still seems quite inferior to Netscape's Live3D, but Sony still boasts the only VRML 2.0 Java API to be used to create interesting behaviors in a Multi-Participant world. SGI has no word out on when it will conquer multiparticipant VRML 2.0 worlds so, for now, Community Place seems to be the best technology to work with for VRML 2.0 shared worlds.

As for shared VRML 1.0 worlds, Black Sun's CyberHub Client and Server seem an attractive platform. I had been participating in Pointworld, a shared community I could visit using their Cybergate browser. I was impressed with the conversations I could have with other avatars as fellow visitors were technical and intelligent. The CyberHub seems even more impressive since it uses the Live3D browser for viewing VRML files. Live3D's rendering and navigation are at the forefront right now so my experience was even better using the CyberHub than it had been using Cybergate. It may take a bit of time before the user population gets on board with the new client and so I will wait to see how it performs with 50 or so users... something that worked great with Cybergate. Blacksun has a decent interface for chatting, exchanging business cards, and beaming to other avatars -- all wonderful enhancements to the standard VRML viewers.

Intel also has a VRML 1.0 based multiuser platform called Distributed MOO which at first showed a lot of promise. I found the interface to be quite nice and the microphone/speaker talk capability intriguing. VRML 1.0 does not parse well in the browser and there are no plans to go forward to VRML 2.0 until an improved rendering engine is made available. Intel is continuing to develop the product and the server can be downloaded for free.

As for the Java API capabilities, I read the latest scoop from VRMLSite Magazine in an article called "The Marriage of Java and VRML". The article mentions three ways to extend to Multiuser worlds using Java: 1. Use Community Place. 2. Use the LiveConnect feature of Live3D. 3. Use Liquid Reality's VRML browser which is written in Java and then extend it for additional capabilities. Hopefully, since Sony has made the VRML 2.0 Java API standard public through the VRML Architecture Group, others will use it to extend their VRML 2.0 environments.

So, in terms of my next steps, I will create my own VRML 1.0 based world and make it available through CyberHub and then visit it with others. I will also download the Community Place server and get it to work so that I can create a multiuser world to be browsed by the Community Place browser. Note that both Sony and SGI have created authoring tools for VRML 2.0 development. Sony's is called The Conductor and SGI's is called CosmoCreate3D. I will take a look at these products also.

11-01-96: Earth to Avatars

After dabbling with Chinese Checkers World which got me excited about multiuser sharing of VRML 1.0 based virtual worlds, I figured it was time to get serious about shared VRML 2.0 based virtual worlds. VRML 2.0 allows for much more interactivity. I downloaded the Beta 2a version of CosmoPlayer and read the details on the external interface. The interface examples are very similar to how networked Chinese Checkers works. If you want to follow along, download beta 2a of CosmoPlayer, version 3.0 of Netscape Navigator, and take a look at the Tiny3D example. It shows you how to use Java and CosmoPlayer together in a single user world.

My level of experience was just right for attending the Earth to Avatars conference in San Francisco. There I was able to talk to both SGI and Black Sun about creating shared worlds for the internet. I realized there are a lot of companies supporting the Living Worlds standard. This standard should speed up the process for creating interactive, shared worlds that we will be able to experience with our own avatar. Black Sun is creating a Living Worlds compatible server and SGI is delivering a Living Worlds compatible browser. Supposedly, other server providers will support this standard also so we will all be able to visit many worlds using our same browser and avatar.

The Living Worlds standard is far reaching in scope. It intends to govern how servers should package information about avatars and active objects in a virtual world in order to efficiently forward that information on to each browser that is connected to that server. It will support simple communications between visitors such as 1:1 chat, voice conversations, and white-boarding. The standard will suggest a capabilities interface so each user will know the capabilities of each other visitor to the world. It will also identify a simple security and rights model so each visitor can decide with whom to interact and not be invaded by a unwelcomed participant. All these issues are important, but to me the most critical is the avatar and active object communication between browsers.

Other standards were introduced at the Earth to Avatars technical session. The Universal Avatars standard is being drafted to create a standard way your avatar is represented to all worlds. VRML 2.0 is a great standard for representing the geometry and simple behaviors of your avatar, but additional capabilities can be added beyond VRML 2.0's scope. Universal Avatars will address the standardization of those capabilites. It will also address representation of avatars for participation in a 2D world. The Universal Worlds standard sets the course for interaction among worlds that have a shared scale and coordinate system. Their standard is being implemented based on work done by Mishubitsi's SPLINE group. Instead of being built on top of VRML 2.0 as Living Worlds is, it is more of a Java-based API specification for multiple user communications. Yet, it should work well running on a server that supports the Living Worlds' standard to bring extended shared behaviors to multiuser worlds. The Virtual Humans Architecture Group standard has to do with representing the human body in 3 dimensional space. It's scope goes well beyond avatar representation and has been worked on for a long time for industries that need to model the human body -- the garment industry for example.

I will spend some time to understand these Standards and get familiar with the issues. In the meantime, I will port Chinese Checkers world over to VRML 2.0 and get it working as a multiuser world. After doing that, I will move on to another world that will test out Black Sun's CyberHub server technology. This will tie in directly with my thesis topic. Stay tuned.

Just a quick editorial on the people I met at the Earth to Avatars conference. For the first time, I felt I met people that both thought like me and inspired me. This field includes people from all diciplines in a time when we are talking about the New Science more and more. What better technologies to get involved in than those dedicated to the development of cyberspace? The anthropologists were especially insightful when discussing cyberspace and its ramifications on our society. After the conference, I bought and read the book Snowcrash by Neal Stevenson. Everyone at the conference had read it. I must admit it has a very strong image of the 'Metaverse' -- a 3D shared universe where everyone visits as an avatar. The language is harsh, the author highly opinionated, and there are many sexual inuendos.

Also, the computer scientists are doing some amazing work with digitizing human motion and applying robotics to avatar behavior. The avatars of tomorrow will be really amazing. Take a look at the company Kinetix's work if you get a chance.

01-21-97: SGI CosmoPlayer API and Java 1.02

It has been a while since I entered a diary entry. I have not been jumping VRML viewers as much as I had, but instead have focused on the CosmoPlayer betas from Silicon Graphics. That choice became very fortuitous as I was able to assist in writing a book for Sam’s Net on VRML 2.0. The lead writer works for Silicon Graphics on the CosmoPlayer project and so, I became immersed in their VRML viewer for the examples in the book. The book is called "Teach Yourself VRML 2.0 in 21 Days" and it should be on the bookshelves nationwide by January 30th. I think it is a great technical reference on the standard VRML 2.0 file format and the 3D modeling in general. And, the demonstration worlds are great if you are one apt to cut and paste VRML nodes to create new worlds. The book comes with a CD-ROM that includes the beta 3 CosmoPlayer VRML viewer. That viewer is much more full featured than the beta 2a that preceded it. In fact, it also cleared up some discrepancies from the official VRML 2.0 specification.

I recently have been using the browser through the external interface... yes, the same API I had used to create Chinese Checkers World. The difference now is that I am using some Java Physics Classes that I obtained from John Henckel at IBM through their web site. The web site demonstrates them with Java-based 2D graphical output. I found them easy to use to plug in a VRML 2.0 3D graphical output and now the output looks much better. I will put that on-line soon once I finish debugging. Take a look at my project page for the appropriate links.

These classes have allowed me to produce all kinds of interesting VRML worlds including a VRML pool table for playing billiards, an interactive croquet or golf course building and playing world, and soon, an interactive marble machine world which I will use to test out my thesis.

In fact, I have already started to create the billiard and marble machine worlds. I tested them on a Pentium 90 with 16MB of RAM and they perform wonderfully, at least to my needs. The marble machine looks fine with up to 20 marbles bouncing around at the same time and the billiard world looks ok even upon the initial break when 16 balls are interacting with each other on a regular basis. I will put both of these worlds up soon with the appropriate source code. Again, check my projects page. The results have given me a new sense of excitement in continuing with the thesis work. One limitation I have noticed so far is that moving objects should not move faster than their shortest width as they can miss a collision. In the billiards world, this means I must find a good mix between speed, viscosity, energy loss upon collision, to be able to provide a realistic experience without missing any collisions. If this is not possible, I will modify the source code in order to test for collisions with more intelligence. Also, I am extremely pleased with how user control in the Java interface is immediately picked up in the world. I have to test the same influence of a VRML 2.0 based interface of using objects within the world to manipulate the world as this is a more interesting feature to me.

Lastly, note that the physics classes I am using only handle two dimensions so the worlds I am thinking about all include a ground plane. If I put together an interactive golf course design world, I will have to find the appropriate 3D classes. If you are aware of any physics classes that are available that you think I would be interested in, please send me email at: bdc@hitl.washington.edu.

As for the future, I will most likely be using the CosmoPlayer VRML viewer for some time to come. I will continue to document my findings here and report on the appropriateness of it for performing different tasks. But, remember, I am already sold on VRML 2.0 as a file format. It appears to have everything I would need for creative virtual world development.

05-31-97: VRML 2 Gaining Momentum!

Seems VRML 2 is moving up the curve and there is lots of work in progress. Check out the Web 3D Consortium site for all the details and a gallery of active VRML 2 worlds.

11-11-99: VRML 2 Losing Momentum?

Wow. Is it really two and a half years later? I just got back from the OWorld-DB3 conference in San Jose where I heard many people saying that VRML has failed. That sounds harsh to me. VRML 2 became VRML 97 in order to become an ISO standard. Now, the VRML crowd is working on the X3D specification. The VRML working groups are still very active and the Web 3D Consortium seems to have its act together. Yet, I myself have used little of VRML 97 since the Java 3D API became active in October 1997. I load VRML 97 models into the Java 3D renderer and subclass the Java 3D behavior and picking classes to interact with the models. I still say VRML 2 has been an awesome display of new age technology development process. And, the format works well for my 3D model storage. Java 3D requires a helluva lot more knowledge to get started correctly. So, I still point my HTML class students toward VRML 97 as a starting point for considering 3D authoring. HTML and VRML seem similar enough in requisite language writing skill. Anyway, I'm very interested in this biota crowd and how they will work together as a community. Creating a platform in which to share visualizations of digital life seems important. The task seems huge, but I'm convinced the alifers know their stuff.

03-09-00: VRML 2000 Conference Attendance Sufficient

Seems the VRML 200 conference was well attended with many of the original conference participants coming back for more. I'm surprised since I haven't really heard a peep from the VRML crowd in a while (like Y2K as a whole perhaps). I built my first Linux box yesterday and am looking forward to trying out both VRML and Java 3D on the Linux platform. I'll get the Java 2 and Java 3D pieces from Blackdown and give it a ride. I'll have to surf the Web to find a VRML browser that'll work with Netscape Communicator 4.7 for Linux (It came with the Red Hat 6.1 Linux release). Of course, I can use the Java 3D based VRML 97 player if nothing else is ready to go. I'll let you know what I find out.

Also, Active Worlds is ready to release Beta 3.0. Expectations are high there as well.