VRML - CS

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