View
218
Download
0
Tags:
Embed Size (px)
Citation preview
VRMLVRML
Virtual Reality Virtual Reality Modeling LanguageModeling Language
What Are We Going to See?What Are We Going to See?
What is VRML?Syntax of the languageFeaturesExamples
CreditsCredits
Most of the demos Are based on demos from “Floppy's VRML Guide - VRML97 “Floppy's VRML Guide - VRML97
Tutorial” 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 HistoryA Bit Of History
In the beginning there was In the beginning there was VRML 1.0.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 - Technical Stuff - ViewingViewing
In order to see VRML worlds, worlds, we need to install a VRML browserVRML browser (or player).
Internet Explorer comes with a default VRML browser, and almost all other internet browsers can install one.
Technical Stuff - Technical Stuff - EditingEditingVRML can be edited by any text editor.There are many available VRML editors
(with context highlighting).For more complex worldsworlds, 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!!Demo!!
This is a simple demo to demonstrate basic features of the VRML environment
VRML SyntaxVRML SyntaxEach VRML file must start with the
comment line:
BasicsBasicsVRML world is made out of nodesnodes,
which are types of objects.Inside the nodes there are fields which are
properties of the node and have a DefaultDefault.A node structure is :
NodeName {NodeName {filedName filedName valuevalue
}}
NodeName {NodeName {filedName filedName valuevalue
}}
Nodes Cont.Nodes Cont.Nodes can be nested:
Some Important NodesSome Important NodesLets look at this simple code:
NodeNode
FieldsFields
NodeNode
FieldsFields
NodeNode
WHAT IS THIS:WHAT IS THIS:
Reuse of NodesReuse of Nodes
Transformations:Transformations:
Regular affin transformations:– Translation– Rotation– Scaling
Direction of the axes are standard Every thing works by the right hand rule
Example:Example:
Apperence:Apperence:
Appearance node can have two fields:– material– texture
Materials:Materials:The material field can have a Material node.The material node can have these fields:
diffuseColor.diffuseColor.The normal color of the object.
specularColor.specularColor.The color of highlights on shiny objects.
Materials:Materials:emissiveColor.emissiveColor.
The object 'glows' with a light of its own of this color. It doesn't cast light on any other objects though.
ambientIntensity.ambientIntensity. The amount of ambient light that the object reflects.
shininessshininess.. How reflective the object is.
transparencytransparency.. How transparent the object is. Note, some browsers
will not support partly-transparent objects.
Some Materials:Some Materials:
Textures:Textures:
appearance field can specify a texture.There are several types of textures.
– Image texturesImage textures: defined by a jpgjpg files.– Movie texturesMovie textures: defined by a mpgmpg file.– Pixel texturesPixel textures: user defined textures.
Other Basic Shapes:Other Basic Shapes:
BoxCylinderConeSphereText
Cameras & ViewpointsCameras & Viewpoints
We can set many viewpoints to our world. A viewpoint is defined by :
– positionposition : [z,y,z] coordinates of the camera.– orientationorientation : were the camera looks at
( [x,y,z] =axes + angle of rotation).– fieldOfViewfieldOfView: angle in radians between 0 and pi.– descriptiondescription : name of the viewPoint.
Some VRML browsers allow specification of entrance camera in the link to the world:
world.wrl#CAM1 world.wrl#CAM1
Cameras Cont.Cameras Cont.
Background & Fog 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.
SoundSound
Sound NodeSound NodeSound {Sound { SFVec3f direction SFVec3f direction 0 0 1 0 0 1 SFFloat intensity SFFloat intensity 11SFVec3f location SFVec3f location 0 0 0 0 0 0 SFFloat maxBack SFFloat maxBack 10 10 SFFloat maxFront SFFloat maxFront 10 10 SFFloat minBack SFFloat minBack 1 1 SFFloat minFront SFFloat minFront 1 1 SFFloat priority SFFloat priority 0 0 SFNode SFNode source source NULL NULL SFBool SFBool spatialize spatialize TRUE TRUE
}}
Sound Node Cont.Sound Node Cont.
directiondirection
Min backMin back
Max backMax back Max FrontMax FrontMin FrontMin Front
AudioClip NodeAudioClip Node
AudioClip { AudioClip {
SFString SFString description description "" ""
SFBool SFBool loop loop FALSE FALSE
SFFloat SFFloat pitch pitch 1.0 1.0
SFTime SFTime startTime startTime 0 0
SFTime SFTime stopTime stopTime 0 0
MFString MFString urlurl [] []
} }
Objects of DesireObjects 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 ObjectsGeneral Objects
Setting NormalsSetting Normals
LightingLighting
There are three kinds of lights in VRML:– Directional LightDirectional Light: A light with no specific
location in space only a direction. (gives a sun effect).
– Point LightPoint Light: A light that have a specific location and shines evenly to all directions.
– Spot LightSpot Light: A light with a specific location that shins in a set angle to a specific direction.
Spot Light:Spot Light:
Cutoff angle
Beam width
Spot Light
Direction
Dynamic WorldsDynamic Worlds
We can specify to the browser what Navigation capabilities the user will have:– Walk– Examine– None
Events & Events & RoutesRoutes
Most nodes contain events. If a field in a node is exposed, the node has two
defined events for it:– Set_fieldNameSet_fieldName – used to set the value of the field.– fieldName_changedfieldName_changed – generated when the value was
changed.
The ‘set’‘set’ and ‘changed’‘changed’ can be left out. Not all fields are exposed.
EventsEvents & Routes & Routes A ROUTE wires two events together.
TouchTouch
NodeNode SoundSound
NodeNode
Touch timeTouch time
Start timeStart time
DEF SENSOR TouchSensor {
}
DEF SOUND Sound {
}
ROUTE SENSOR.touchTime TO ROUTE SENSOR.touchTime TO SOUND.startTimeSOUND.startTime
DEF SENSOR TouchSensor {
}
DEF SOUND Sound {
}
ROUTE SENSOR.touchTime TO ROUTE SENSOR.touchTime TO SOUND.startTimeSOUND.startTime
RouteRoute
SensorsSensorsThere 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 ExampleSensor Code Example
InterpolatorsInterpolators
Used to interpolate between key valuesSeveral kinds of interpolators:
– Color – Orientation– Coordinate– Normal– Position– Scalar
Bounded NodesBounded Nodes
We can bind some nodes to values in other– Background – Fog– NavigationInfo – Viewpoint
Programming!?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 DemoScript Demo
JAVAJAVA
In order to use Java Java instead of JavsScript all we need to do is to write the appropriate class and include it in the script node:
Script { Script {
url "NewScript.class" url "NewScript.class"
}}
ExamplesExamples
BibliographyBibliography
Floppy's VRML Guide - VRML97 TutorialWEB3D CONSORTIUM –
– http://www.vrml.orghttp://www.vrml.org/VRML97 Specification, ISO-IEC 14772-
11997– http://www.vrml.org/technicalinfo/http://www.vrml.org/technicalinfo/
specifications/vrml97/index.htmspecifications/vrml97/index.htmBiota.org - Creatures Gallery –
– http://www.biota.org/gallery/index.htmlhttp://www.biota.org/gallery/index.html