VRML
Virtual Reality
Modeling Language
What Are We Going to See?
What is VRML?
Syntax of the language
Features
Examples
Credits
Most of the demos Are based on demos from
“Floppy's VRML Guide - VRML97
Tutorial”
The demos are localy saved to increase
efficiency end accessibility. The originals
and many more can be found in :
http://www.vapourtech.com/vrmlguide
A Bit Of History
In the beginning there was VRML 1.0.
– It was the first attempt at an internet 3D
language.
VRML 2.0 replaced VRML 1.0 and add
many features (animation).
Version 2.0 was submitted to ISO for
standardization, the outcome was VRML97
which is almost identical to VRML 2.0.
Technical Stuff - Viewing
In order to see VRML worlds, we need to
install a VRML browser (or player).
Internet Explorer comes with a default
VRML browser, and almost all other
internet browsers can install one.
Technical Stuff - Editing
VRML can be edited by any text editor.
There are many available VRML editors
(with context highlighting).
For more complex worlds, 3D modeling
programs can be used and the result can be
translated to VRML.
The basic output file format is TEXT, but
the browsers can read compressed files
(compressed with gzip).
Demo!!
This is a simple demo
to demonstrate basic
features of the VRML
environment
VRML Syntax
Each VRML file must start with the
comment line:
Basics
VRML world is made out of nodes, which
are types of objects.
Inside the nodes there are fields which are
properties of the node and have a Default.
A node structure is :
NodeName {
filedName value
}
Nodes Cont.
Nodes can be nested:
Some Important Nodes
Lets look at this simple code:
Node
Node
Fields
WHAT IS THIS:
Fields
Node
Reuse of Nodes
Transformations:
Regular affin transformations:
– Translation
– Rotation
– Scaling
Direction of the axes are standard
Every thing works by the right hand rule
Example:
Apperence:
Appearance node can have two fields:
– material
– texture
Materials:
The material field can have a Material node.
The material node can have these fields:
diffuseColor.
The
normal color of the object.
specularColor.
The
color of highlights on shiny objects.
Materials:
emissiveColor.
The
object 'glows' with a light of its own of this
color. It doesn't cast light on any other objects
though.
ambientIntensity.
The
amount of ambient light that the object reflects.
shininess.
How
reflective the object is.
transparency.
How
transparent the object is. Note, some browsers
will not support partly-transparent objects.
Some Materials:
Textures:
appearance field can specify a texture.
There are several types of textures.
– Image textures: defined by a jpg files.
– Movie textures: defined by a mpg file.
– Pixel textures: user defined textures.
Other Basic Shapes:
Box
Cylinder
Cone
Sphere
Text
Cameras & Viewpoints
We can set many viewpoints to our world.
A viewpoint is defined by :
– position : [z,y,z] coordinates of the camera.
– orientation : were the camera looks at
( [x,y,z] =axes + angle of rotation).
– fieldOfView: angle in radians between 0 and pi.
– description : name of the viewPoint.
Some VRML browsers allow specification of
entrance camera in the link to the world:
world.wrl#CAM1
Cameras Cont.
Background & Fog
Background of the world can be set in two
ways:
– Map a texture over a surrounding box.
– Define a gradient of sky & ground around the
center.
Fog enables creating the allusion of
distance.
Sound
Sound Node
Sound {
SFVec3f
SFFloat
SFVec3f
SFFloat
SFFloat
SFFloat
SFFloat
SFFloat
SFNode
SFBool
}
direction
intensity
location
maxBack
maxFront
minBack
minFront
priority
source
spatialize
0 0 1
1
0 0 0
10
10
1
1
0
NULL
TRUE
Sound Node Cont.
direction
Min back
Max back
Min Front
Max Front
AudioClip Node
AudioClip {
SFString
SFBool
SFFloat
SFTime
SFTime
MFString
}
description
loop
pitch
startTime
stopTime
url
""
FALSE
1.0
0
0
[]
Objects of Desire
We can build objects other than the three
default shapes by specifying coordinates of
the vertexes.
Specify coordinates:
Specify Normals:
Specify direction:
General Objects
Setting Normals
Lighting
There are three kinds of lights in VRML:
–
–
–
Directional Light: A light with no specific
location in space only a direction. (gives a sun
effect).
Point Light: A light that have a specific
location and shines evenly to all directions.
Spot Light: A light with a specific location
that shins in a set angle to a specific direction.
Spot Light:
Beam width
Spot Light
Cutoff angle
Direction
Dynamic Worlds
We can specify to the browser what
Navigation capabilities the user will have:
– Walk
– Examine
– None
Events & Routes
Most nodes contain events.
If a field in a node is exposed, the node has two
defined events for it:
– Set_fieldName – used to set the value of the field.
– fieldName_changed – generated when the value was
changed.
The ‘set’ and ‘changed’ can be left out.
Not all fields are exposed.
Events & Routes
A ROUTE wires two events together.
Touch
Touch time
Route
Sound
Node
Node
Start time
DEF SENSOR TouchSensor {
}
DEF SOUND Sound {
}
ROUTE SENSOR.touchTime TO SOUND.startTime
Sensors
There are several types of sensors in VRML:
–
–
–
–
–
–
–
–
Time Sensors
Visibility sensors
Collision Sensors
Proximity Sensors
Touch Sensors
Sphere Sensors
Cylinder Sensors
Plane Sensors
Sensor Code Example
Interpolators
Used to interpolate between key values
Several kinds of interpolators:
–
–
–
–
–
–
Color
Orientation
Coordinate
Normal
Position
Scalar
Bounded Nodes
We can bind some nodes to values in other
– Background
– Fog
– NavigationInfo
– Viewpoint
Programming!?
Real animation must include some sort of
programming.
VRML accepts two kinds of programs:
– JAVA.
– JavaScript.
The script node can receive end send events
very easily.
Script Demo
JAVA
In order to use Java instead of
JavsScript all we need to do is to write
the appropriate class and include it in
the script node:
Script {
url "NewScript.class"
}
Examples
Bibliography
Floppy's VRML Guide - VRML97 Tutorial
WEB3D CONSORTIUM –
– http://www.vrml.org/
VRML97 Specification, ISO-IEC 1477211997
– http://www.vrml.org/technicalinfo/specifications/
vrml97/index.htm
Biota.org - Creatures Gallery –
– http://www.biota.org/gallery/index.html
© Copyright 2026 Paperzz