Q)How flexible are unit measures in VRML? (i.e. they can be feet, centimeters, yards, meters as long as one is consistent?) I guess it depends on the world - the infamous Tenoctitlan is in in feet I think.
A) Yep, the Tenochtitlan model was constructed in feet -- the original modeler (Bob Galbraith) didn't have VRML in mind, far as I know, and we didn't notice the discrepancy until it was too late to do anything about it for our book. Here's our take on the subject from _The VRML 2.0 Handbook_:
"To a certain extent it doesn't matter what units you use in your own files as long as you're consistent, but if you want to have any sort of connection to other people's worlds or objects it's a good idea to build everything using the standard units [ie, meters]. Note: The Aztec world model was built using data that gave distances in feet; rather than change all the measurements in the file, this book provides examples from that world measured in feet." (p. 62)
So yah, if you're building molecular models, or solar systems, meters may not be the best possible unit. But if you're building human-scale worlds, one of the cool things about VRML is that it's composable; if everyone builds in meters, then my couch object should fit nicely into your living-room scene, and my humanoid avatar should fit nicely into your car model, which should be able to drive around someone else's archaeological site without feeling out of scale.
I definitely recommend against using yards. If your scale is such that yards would be appropriate, use meters. Meters are designed for use with the decimal system (who would specify an object as 1.97 yards long?), and if you use yards the slight scale difference will wreak havoc if you try to intermingle your worlds/objects with those of others. The VRML unit of measure *is* specified as meters; unless you have a good reason not to use, might as well stick to it.
-- Jed Hartman (quoted from the vrml mailing list)
If that isn't enough then you'll enjoy this quote from Rikk and Gavin's book
Rationale for this decision is probably best described in Rikk Carey & Gavin Bell's superlative "Annotated VRML 97 Reference Manual" at
The VRML convention that one unit equals one meter (in the absence of any scaling Transform nodes) is meant to make the sharing of objects between worlds easier. If everyone models their objects in meters, objects will be the correct size when placed next to each other in the virtual world. Otherwise, a telephone might be as big as a house, which is very inconvenient if you are trying to put the telephone on a desk inside the house.
Put a scaling Transform node on top of your objects if you want to work in some other units of measure (e.g., inches or centimeters). Or, if compatibility with objects other people have created is not important for your use of VRML, then nothing will break if you disregard the one-unit-equals-one-meter convention. For example, if you are modeling galaxies then it probably isn't important that a telephone be the proper real-world scale, and you might just assume that one unit equals one light-year.
Radians were originally chosen for Open Inventor's file format to be compatible with the standard C programming language math library routines. Although another angle representation might be more convenient (e.g., 0.0 to 1.0 or 0.0 to 360.0), the benefits of compatibility have always outweighed the minor inconvenience of doing an occasional multiplication by 2 × pi.
Times are expressed as double-precision floating point numbers in VRML, so nano-second accuracy is possible. Although there are no time transformation functions built into VRML, time values may be manipulated in any of the scripting languages that work with VRML.
OK, the experts have spoken... or have they?
The sad truth is that worlds are about more than just the units they are built in. They are also about the navigation paradigms that VRML browser manufacturers have created for us; how the camera moves through the scene. The VRML eye does not seem the same as the human eye. Not only is the field of vision different, but more importantly the navigation of the viewers "eye" is different than in real life. The turning radius of the camera is much greater than the turning radius of a human whilst walking.
What impact does this have on me, you may ask. If you are building worlds, lots. If you get a blueprint or measure the layout of your house and turn it into a VRML world, you will find that it is too "tight" to navigate through easily. Hallways will be to narrow, bathrooms will appear too small. For an avatar to easily move through a world, it should be one and a half times larger than life in the X & Z dimension and twice as tall. OK, as Jed pointed out above, just slap a transform around your house to scale it up to something easily navigable.
Does this solve the problem? No. If you create furniture to scale it will take a lot more of it to fill a room. You will have furniture along the walls and empty cavernous space in the center of the room. The scaling transform for the house will effect the furniture unless you take efforts to place it outside that transform. In Cybertown, you may have seen the Intel HomeBuilder's houses. They look pretty until you start trying to furnish them and realize that you need five or six couches in your living room. Or a couch needs to be long enough for two people to lay down on in order to look like it fits in. A thing that compounds this issue is that the "standard" avatar is human sized. So a couch that looks good to the viewer will look to large when compared to the avatar height (she won't be able to climb up onto it to sit down).
VRML needs a camera that mimics the human eye more and has a turning radius similar to real life if we are ever going to be able to build according to scale. This is the 800 pound gorilla that is going to whomp us up-side the head and stop us in our tracks. It is hard to model reality if a house and an avatar are built on two apparently different scales.