Financial Intro:
VRML is great at showing information on geographic basis. The globe is
primary content #1 (the human body #2?)
You can have mosr abstract visualization (with updates via EAI)
You can create "smart models". The "Elevator to nowhere
is a great example" elevator.wrl when vrml.sgi.com is up.
vermel
VRML 1 year ago, Several candidates for VRML 2.0, SGI's Moving Worlds was
selected in late March 96.
2 years ago, the VRMLÊ1 draft was out &Ê1st products were
announced/previewed at I3D in Monterey.
3 years ago, VRML was coined by Dave Raggett and Pesce
and Parisi were developing Labyrinth
4 years ago (Jan 93) Xmosiac was just released and there were only 50 HTTPÊservers.
Neal Stephenson's Snowcrash certainly drove many early on.
VRML 1.0 was just a:
-
3D Graphics file format with
-
URL support (Anchor and Inline) and
-
a MIME type (x-world/x-vrml NOWÊOFFICIAL model/vrml)
www.jch.com/~jch/vrml/FPSudbury.wrl
VRML 2.0 added many things, but these are key:
-
Routes - unidirectional value wiring
-
Sensors - generate events
-
Scripts - embedded "behaviors"
-
PROTOs aka prototypes, or user defined nodes.
other concepts, scalability (localization), bindable nodes...
A conscious decision to NOT design multi-user was made. With PROTOs
and Scripts, the platform for innovation is there.
Nodes - the base object = 54 of them.
-
send & recieve events via Routes
-
have fields
-
can be DEF/USEd
-
are in the Scene Graph, sometimes in Transform hierarchy
-
groups have children... list groups (as time killer?)
Routes connect eventOut fields to eventIn messages.
-
must be same datatype: float, int, bool, string, Node, Vector, Color,
Rotation and SFImage. Array or MF (multivalued field) versions.
-
syntax: ROUTE node1.fieldName TO node2.eventName
-
can be created and destroyed at runtime
Sensors generate events.
-
Touch - generates isOver and Click events
-
Drag sensors - Plane (Vector), Sphere(Rotation), Cylinder (Angle)
-
Viewer sensors - Proximity, Visibility, Collision
-
Time for animations
www.jch.com/~jch/vrml/Athortoy.wrl
Scripts - embed functions
-
invoke functions by sending data to eventIn
-
can send eventOuts
-
can make Browser calls
-
can generate "node events" transformNode.translation = myVec;
-
Java and JavaScript
www.jch.com/~jch/vrml/jsin.wrl
PROTO & EXTERNPROTO
-
clean flexible extension method
-
allows browsers to innovate without breaking world (big problem in
VRML 1.0 timeframe)
-
Use URNs for equivalency test