VRML 2.0 1 Informatica Grafica VRML 97 Formato per la definizione di oggetti 3D. La versione VRML 1 viene da una semplificazione degli scene graphs di OpenInventor. La versione 2.0 (97) aggiunge molti nuovi nodi e modifica gran parte dei vecchi. Si tratta comunque di uno standard molto recente (Agosto 1996 per la 1.0). I files VRML non sono eseguibili, ma files di solo testo che vengono “eseguiti” da un VRML browser. Il browser legge il file e genera un ambiente 3D interattivo. Molto usato sul WEB.
74
Embed
Informatica Grafica VRML 2.01 VRML 97 l Formato per la definizione di oggetti 3D. La versione VRML 1 viene da una semplificazione degli scene graphs di.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
VRML 2.0 1Informatica Grafica
VRML 97
Formato per la definizione di oggetti 3D. La versione VRML 1 viene da una semplificazione degli scene graphs di OpenInventor. La versione 2.0 (97) aggiunge molti nuovi nodi e modifica gran parte dei vecchi. Si tratta comunque di uno standard molto recente (Agosto 1996 per la 1.0).
I files VRML non sono eseguibili, ma files di solo testo che vengono “eseguiti” da un VRML browser. Il browser legge il file e genera un ambiente 3D interattivo. Molto usato sul WEB.
VRML 2.0 2Informatica Grafica
Ambiente Usato
I browsers VRML sono plugins di un browser HTML. Noi vedremo Cosmo Player 2.0 (della Silicon Graphics) insieme a Netscape 4.
Il browser e’ disponibile gratuitamente sul sitohttp://cosmo.sgi.com
Alternativa: usare WorldView (della Intervista) insieme ad Internet Explorer 4.
Informazioni dettagliate su VRML nei siti:http://www.vrml.org Sito Ufficiale VRMLhttp://www.sdsc.edu/vrml Repository VRML
VRML 2.0 3Informatica Grafica
Tutorial
I lucidi successivi vengono da un tutorial tenuto al SIGGRAPH96 da:
Dave Nadeau, John Moreland e Mike Heck
Versione interattiva disponibile sulla mia pagina e nella directory del laboratorio. Contiene anche molti esempi ed esercizi. Originale sul WWW alla pagina:
http://www.sdsc.edu/siggraph96vrml/
VRML 2.0 4Informatica Grafica
What is VRML?
VRML is: A text file format A simple language for describing 3-D shapes
and interactive environments A web standard
VRML is endorsed by: Most 3-D graphics vendors Most web browser vendors
VRML 2.0 5Informatica Grafica
VRML File Structure
VRML files contain: The file header Comments - notes to yourself Nodes - nuggets of scene information Fields - node attributes you can change Values - attribute values Node Names - names for reusable nodes more. . .
VRML 2.0 6Informatica Grafica
A Sample VRML File
#VRML V2.0 utf8# A CylinderShape { appearance Appearance { material Material { } } geometry Cylinder { height 2.0 radius 1.5 } }
VRML 2.0 7Informatica Grafica
Defining Names for Nodes
Nodes can be named, and usedrepeatedly DEF MyCylinder Shape { . . . } . . . USE MyCylinder . . . USE MyCylinder
VRML 2.0 8Informatica Grafica
Shapes
Shapes are the building blocks of a VRML world Primitive Shapes are standard building blocks: Box Cone Cylinder Sphere
VRML 2.0 9Informatica Grafica
Shapes (2)
Shape nodes describe: geometry - form, or structure appearance - color and texture
A Material node controls: diffuse color - main shading color emissive color - glowing color transparency - opaque or not more . . . Material { diffuseColor . . . emissiveColor . . . transparency . . . }
VRML 2.0 18Informatica Grafica
Example
Shape { appearance Appearance { material Material { diffuseColor 1.0 1.0
1.0 } } geometry . . .}
VRML 2.0 19Informatica Grafica
Grouping Nodes
Shapes can be grouped to compose more complex shapes
coordIndex [ 1, 0, 3, -1, . . . ]Indexes reference ordered points of coord field: Index order is arbitrary (eg: 1, 0) Indexes are Zero-based (eg: 0) Can skip coordinates (eg: 0, 3) Poly-line can be many points (eg: 1, 0, 3) End of poly-line (eg: -1) Multiple poly-lines (eg: . . .)
VRML 2.0 34Informatica Grafica
IndexedFaceSet node
Faces are drawn within perimeter of points IndexedFaceSet {
coord Coordinate {point [ . . . ]
}coordIndex [
1, 0, 3, -1, . . .]
}
VRML 2.0 35Informatica Grafica
ElevationGrid Node
Good for creating terrains, Mountain Ranges, Sea Floors and Planet Surfaces
DirectionalLight { # Standard fields, plus: direction 1.0 0.0 0.0}
VRML 2.0 45Informatica Grafica
Spot Light
Spot lights point in a direction and focus in a cone SpotLight { # Standard fields, plus: location 0.0 0.0 0.0 direction 1.0 0.0 0.0 beamWidth 1.57 cutOffAngle 0.785 radius 1.0 attenuation 1.0 0.0 0.0}
VRML 2.0 46Informatica Grafica
Viewpoint
Primarily used to define named camera positions Browser will usually present a list of viewpoints
using their description strings. Browser may animate between viewpoints.Orientation defines direction of view and "up"
Route: Connects an EventOut to an EventIn A Route is not a node! Output type must match input type exactly Output may connect to multiple inputs (fan-
out) Multiple outputs may connect to single input
(fan-in)
Nodes must be named in order to use Routes
VRML 2.0 51Informatica Grafica
Collision Triggers Sound
ROUTE Node1.collideTime TO Node2.startTime
Note use of DEF to name nodes DEF NODE1 Collision { . . . } DEF NODE2 AudioClip
{ . . . } ROUTE NODE1.CollideTime TO NODE2.startTime
VRML 2.0 52Informatica Grafica
Summary of Events
Event: A message that contains a data value
set_ events: Change node when received
_changed events: Sent when node changes
EventIn: Specifies an event node can receive
EventOut: Specifies an event node can send
VRML 2.0 53Informatica Grafica
Sensors
Sensing the user's "presence" in the world:
Entering the world
Entering a region surrounding an object
Position and orientation within a region
VRML 2.0 54Informatica Grafica
The ProximitySensor
Generates events when viewpoint: Enters Region: SFTime enterTime Leaves Region: SFTime exitTime Moves within Region: SFVec3f position_changed SFRotation orientation_changedProximitySensor { center 0 0 0 size 0 0 0 } Defines an axis-aligned region Zero size disables the sensor All relevant Proximity sensors generate events
VRML 2.0 55Informatica Grafica
Example: Trigger Alarm
Sound {source DEF Alarm AudioClip { . . . }
}
DEF Car ProximitySensor {size 10 10 10 # size of Car
}
ROUTE Car.enterTime TO Alarm.startTime
VRML 2.0 56Informatica Grafica
Other Nodes that "Sense" the Viewer
LOD: Distance to viewpoint (no explicit events)
VisibilitySensor: Visibility of a region. events: isActive, enterTime, exitTime
Collision: Collision of viewer with objects. event: SFTime collideTime
VRML 2.0 57Informatica Grafica
TouchSensor Events
Pointer is on geometry: SFBool isOver
Button press/release: SFBool isActive SFTime touchTime (on ButtonUp)
Pointer dragged over geometry: SFVec3f hitPoint_changed SFVec3f hitNormal_changed SFVec2f hitTexCoord_changed
VRML 2.0 58Informatica Grafica
Other Nodes That "Sense" the User
Anchor: Click on children (causes implicit action)
CylinderSensor: Maps motion to rotation around sensor's Y axis
PlaneSensor: Maps motion to translation in sensor's XY plane
SphereSensor: Maps motion to general rotation around center of sensor
VRML 2.0 59Informatica Grafica
Summary of Sensors
Sensors are not grouping nodes Trigger on geometry defined by sibling nodes When geometry overlaps, closest object is used Sensor "lowest" in the graph sends the event Multiple sensors may send "simultaneous" events Use these sensors to detect user actions. Use their events to start and stop animations.
Also for simple dragging, rotating objects.
VRML 2.0 60Informatica Grafica
Time
A TimeSensor node is similar to a stop watch (sorta)
You control the start time, stop time, and cycle length
The sensor generates events while it is running You ROUTE events to change node fields
VRML 2.0 61Informatica Grafica
Time Sensors
TimeSensor nodes describe: start and stop time - when to run cycle interval time - how long a cycle is looping - whether or not to repeat cycles TimeSensor {
Can create continuously running timmers: loop TRUE stopTime < startTime Can run one cycle then stop loop FALSE stopTime < startTime Can run until stopped, or after cycle is over loop TRUE or FALSE stopTime >= startTime The set_startTime input event: Sets when the timer should start The set_stopTime input event: Sets when the timer should stop
VRML 2.0 63Informatica Grafica
Timer Cycles
The first cycle starts at the start time
The cycle interval is the length (in seconds) of the cycle
Each cycle varies a fraction from 0.0 to 1.0
If loop is FALSE, there is only one cycle, otherwise the timer may cycle forever
VRML 2.0 64Informatica Grafica
Timer Output Events
The isActive output event: Outputs TRUE at timer start Outputs FALSE at timer stop
The fraction_changed output event: Outputs values from 0.0 to 1.0 during a
Many actions are too complex for built-in sensors, interpolators, shapes, etc. Computed animation paths (eg. gravity) Algorithmic shapes (eg. fractals) Collaborative environments (eg. games)
You can write program scripts in Java, JavaScript, etc, that:
Accept event inputs Generate event outputs Read and write fields
VRML 2.0 73Informatica Grafica
Program Script UseScript nodes include: url - the program script to use Script { url "circle.class” or… url "circle.js” or...
url "javascript: ...” }Script nodes also declare:
fields and events - the program script interface Each has a name and data type Fields have an initial value