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)

Slides:



Advertisements
Similar presentations
Labour quality and ICT capital skill complementarity: International comparisons Mary OMahony NIESR.
Advertisements

1GR2-00 GR2 Advanced Computer Graphics AGR Lecture 10 VRML - An Introduction.
1GR2-00 GR2 Advanced Computer Graphics AGR Lecture 11 VRML Animation and Interaction.
17.1 Si23_03 SI23 Introduction to Computer Graphics Lecture 17 – VRML: A Rough Guide.
11.1 si31_2001 SI31 Advanced Computer Graphics AGR Lecture 11 VRML - An Introduction.
CHAPTER 19 An Introduction to Data Structures. CHAPTER GOALS To learn how to use linked lists provided in the standard library To be able to use iterators.
1What is the Stage. 2How do you open a panel in Flash
3D sprog X3D: Et 3D sprog til at definere realtime 3D grafik der kan formidles via WWW. – XML integreret – Baseret på VRML – Relativt nyt så der findes.
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 1 – Introduction to VRML.
Informationsteknologi Monday, October 29, 2007Computer Graphics - Class 21 Today’s class Graphics programming Color.
Welcome to 3D §The 3D graphics pipeline §Rigid-body transform §Homogeneous coordinates §Viewing transformation §Projection §Illumination.
Event Routing §Some VRML nodes generate events in response to environmental changes or user interaction. Event routing gives authors a mechanism, separate.
© Richard Jones, 2009 CO641 Computer Graphics 1 CO641 Computer Graphics and Animation X3d / VRML Richard Jones SW107
Viewpoint { eventIn SFBool set_bind exposedField SFFloat fieldOfView # (0,  ) exposedField SFBool jump TRUE exposedField SFRotation orientation.
Zhang & Liang, Computer Graphics Using Java 2D and 3D (c) 2007 Pearson Education, Inc. All rights reserved. 1 Chapter 11 Animation F To understand the.
Introduction to VRML By Salman Yussof Diego Iglesias.
Adding Functionality To Web-Based VR Basic Concepts Client – server model Client-side static Client-side scripting Server-side scripting.
What Is VRML? VRML is: Stands for Virtual Reality Modeling Language A simple text language for describing 3-D shapes and interactive environments VRML.
Virtual reality interfaces in connection with building process simulations. Prof. Nash Dawood Centre for Construction Innovation Research University of.
Multimedia and the WWW Howell Istance and Chris Hand, Napier University.
An Overview of VRML §Scene Graph Structure VRML files describe 3D objects and worlds using a hierarchical scene graph. Entities in the scene graph are.
© De Montfort University, D Graphics and VRML Howell Istance and Chris Hand* De Montfort University * now at
Java 3D Pablo Figueroa University of Alberta April 2000.
Cse591 Spring 981 VRML Basics The basic elements of VRML files are nodes. Every type of node has a set of fields associated with it. –Common single-valued.
Event Routing §Some VRML nodes generate events in response to environmental changes or user interaction. Event routing gives authors a mechanism, separate.
Sketchify Tutorial Graphics and Animation in Sketchify sketchify.sf.net Željko Obrenović
University College Dublin1 Scope ROOT Light SourceTransform Light SourceSphere.
Multimedia Web Components VRML. Introduction to VRML Case sensitive Most easy technique to provide interactive 3D environment in Web Required special.
Texture mapping. Adds realism to computer graphics Texture mapping applies a pattern of color Bump mapping alters the surface Mapping is cheaper than.
VRML Virtual Reality Modeling Language. What Are We Going to See? What is VRML? Syntax of the language Features Examples.
Lahti International Week 2006 Introduction to X3D Lesson 2: Animating your models.
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 3 – Object Definition in VRML.
University of Illinois at Chicago Electronic Visualization Laboratory (EVL) CS 426 Intro to 3D Computer Graphics © 2003, 2004, 2005 Jason Leigh Electronic.
Virtual reality. Tasks 3D digital model from planes 3D digital model of existing objects Office work Field observations Solid modeling Photogrammetry.
VRML Dr. Alun Moon What is VRML The Virtual Reality Modeling Language (VRML) is a file format for describing interactive 3D objects.
CS324e - Elements of Graphics and Visualization Checkerboard World.
VRML - 1 Virtual Reality Modeling Language (VRML) Peter O’Grady.
3D Objects Subject:T0934 / Multimedia Programming Foundation Session:12 Tahun:2009 Versi:1/0.
VRML Shapes and Geometry
VRML Scene Graphs. Learning Objectives Understand the concept of a scene graph Understand how VRML defines transformations (translations, rotations, and.
History of VRML and Its Development Process. Learning Objectives Understand the history of VRML Understand the purpose and functions of VRML Learn how.
Mashups with X3D Earth Mike McCann (MBARI) Alan Hudson (Yumetech)
1 Virtual Reality Modeling Language (VRML97) ©Anthony Steed
University of Sunderland CDM105 Session 6 Dreamweaver and Multimedia Fireworks MX 2004 Creating Menus and Button images.
CVVR National Dong Hwa Univ. 國立東華大學 VRML Virtual Reality Modeling Language
Computer Graphics Group Script node Jiří Žára. Computer Graphics Group Contents 1.Script node 2.Motion generators 2Script node.
H3D API Training Part 2.1: X3D. Outline  Scene graphs  X3D – XML syntax  X3D components overview.
VRML virtual reality modeling language. what is it? standardised (sort of) notation for virtual reality over the web text file (use normal text editor)
111/16/ :14 UML Instance Transformation x y z x y z x y z x y z SRT Model Coordinates.
1 Perception and VR MONT 104S, Fall 2008 Lecture 21 More Graphics for VR.
Virtual Reality Modeling Language 97. What’s VRML? Virtual Reality Modeling Language 2D/3D graphics Audio:.wav,.mid Video: MPEG-1 Interactivity: time-
111/22/ :40 UML VRML 2.0 Scene Graph Structure Group Transformation Shape Nodes.
VRML Anthony Steed Department of Computer Science University College London ©Anthony Steed
X3D Extensible 3D (X3D) Part 1: Architecture and base components.
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 2 – Basic VRML.
Intro to VRML Let’s build something! The source code examples in this tutorial WORK!
DESIGNING 3D WEB USING VRML Bob Hobbs Introduction to Virtual Reality and Simulation CE
1 9 Lighting a Scene v There are four types of lighting: –ambient light –directional light –point light –spotlight v Any number of these can be added to.
CISC 110 Day 3 Introduction to Computer Graphics.
Introduction to VRML for generating 3-D display
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 6 – Texture Maps.
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 5 – Animation in VRML.
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 4 – Object Manipulation in VRML.
DLP for Virtual Environments (I)
MPEG-4 Binary Information for Scenes (BIFS)
Department of Computer Science University College London
VIRTUAL REALITY IN ROBOTICS
Introduction to VRML for generating 3-D display
VRML Shapes.
Lecture 3. Virtual Worlds : Representation,Creation and Simulation
Presentation transcript:

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

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 sito http://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 VRML http://www.sdsc.edu/vrml Repository VRML VRML 2.0

Dave Nadeau, John Moreland e Mike Heck 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

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

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

A Sample VRML File #VRML V2.0 utf8 # A Cylinder Shape { appearance Appearance { material Material { } } geometry Cylinder { height 2.0 radius 1.5 } } VRML 2.0

Defining Names for Nodes Nodes can be named, and used repeatedly DEF MyCylinder Shape { . . . } USE MyCylinder VRML 2.0

Shapes Shapes are the building blocks of a VRML world Primitive Shapes are standard building blocks: Box Cone Cylinder Sphere VRML 2.0

Shapes (2) Shape nodes describe: geometry - form, or structure appearance - color and texture Shape { geometry . . . appearance . . . } VRML 2.0

Specifying Geometry Shape geometry is built with geometry nodes Standard, primitive geometry nodes include: Box { . . . } Cone { . . . } Cylinder { . . . } Sphere { . . . } VRML 2.0

Setting Geometry Dimensions Geometry node fields control dimensions Box { size 2.0 0.5 3.0 } Dimensions are usually in meters, but they can be anything Cone { height 3.0 bottomRadius 0.75 } Cylinder { height 2.0 radius 1.5 } Sphere { radius 1.0} VRML 2.0

A Sample Primitive Shape #VRML V2.0 utf8 Shape { appearance Appearance { material Material { } } geometry Cylinder { height 2.0 radius 1.5 VRML 2.0

Groups Group nodes describe: children - a list of member nodes for the group #VRML V2.0 utf8 Group { children [ Shape { . . . }, . . . ] } VRML 2.0

Specifying Transforms A Transform group node controls: translation - position rotation - orientation scale - size Transform { translation 2.0 0.0 0.0 rotation 0.0 0.0 1.0 0.52 scale 0.5 0.5 0.5 children [ . . . ] } It applies, in a fixed order, scale - rotation -translation VRML 2.0

Appearance The primitive shapes have a default emissive (glowing) white appearance You can control a shape's Shading color Glow color Transparency more . . . VRML 2.0

Appearance (2) Appearance nodes describe: material properties - color, transparency, etc. more . . . Shape { appearance Appearance { material . . . } geometry . . . } VRML 2.0

Materials 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

Example Shape { appearance Appearance { material Material { diffuseColor 1.0 1.0 1.0 } } geometry . . . VRML 2.0

Grouping Nodes Shapes can be grouped to compose more complex shapes VRML has several grouping nodes, including: Group { . . . } Switch { . . . } Transform { . . . } Billboard { . . . } VRML 2.0

Group and Switch The Group node creates a basic group. Every child node in the group is displayed Group { children [ . . . ] } The Switch group node creates a switched group. Only one child node in the group is displayed. You select which child Switch { whichChoice 0 choice [ . . . ] } VRML 2.0

Transform and Billboard The Transform group node creates a group with its own coordinate system. Every child node in the group is displayed Transform { translation . . . rotation . . . scale . . . children [ . . . ] } VRML 2.0

Billboard The Billboard group node creates a group with a special coordinate system. Every child node in the group is displayed. Coordinate system is turned to face viewer Billboard { axisOfRotation . . . children [ . . . ] } A rotation axis defines a pole to rotate round. Similar to a Transform node's rotation field, but no angle (auto computed) VRML 2.0

A Sample Billboard Group children [ Billboard { axisOfRotation 0.0 1.0 0.0 children [ ... ] }, Transform { . . . } ] } VRML 2.0

Summary of Groups The Group node creates a basic group The Switch node creates a group with 1 choice used The Transform node creates a group with a new coordinate system The Billboard node creates a group with a coordinate system that rotates to face the viewer VRML 2.0

Components VRML files describe components of a world: Tables, chairs, lamps, walls, floors, doors Inlining combines files to build larger components Rooms, buildings, neighborhoods VRML 2.0

Inlining The Inline node creates a special group. Children are read from a VRML file selected by a URL. Every child node in the group is displayed Inline { url "table.wrl” } Transform { translation . . . children [ Inline { url "chair.wrl" } ] } VRML 2.0

Esempio (1) Definizione della seguente scena VRML 2.0

Esempio #VRML V2.0 utf8 Group { children [ Inline { url "table.wrl" }, Transform { translation 0.95 0.0 0.0 children DEF Chair Inline { url "chair.wrl" } }, Transform { translation -0.95 0.0 0.0 rotation 0.0 1.0 0.0 3.14 children USE Chair }, Transform { translation 0.0 0.0 0.95 rotation 0.0 1.0 0.0 -1.57 children USE Chair }, Transform { translation 0.0 0.0 -0.95 rotation 0.0 1.0 0.0 1.57 children USE Chair }, ] } VRML 2.0

IndexedFaceSet Hard to build using primitives VRML 2.0

Specifying Coordinates Location of dots (points) using Coordinate node Coordinate { point [ 2.0 1.0 3.0, 4.0 2.5 5.3, . . . ] } Three nodes have a coord field which accepts a Coordinate node PointSet, IndexedLineSet, IndexedFaceSet VRML 2.0

PointSet node A dot is drawn at each point PointSet { coord Coordinate { point [ . . . ] } No control over size of dot Also supports color field for Color node VRML 2.0

IndexedLineSet node Straight lines are drawn between points coord Coordinate { point [ . . . ] } coordIndex [ 1, 0, 3, -1, . . . ] } VRML 2.0

Coordinate Index Values 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

IndexedFaceSet node Faces are drawn within perimeter of points coord Coordinate { point [ . . . ] } coordIndex [ 1, 0, 3, -1, . . . ] VRML 2.0

ElevationGrid Node Good for creating terrains, Mountain Ranges, Sea Floors and Planet Surfaces ElevationGrid { xDimension 3 xSpacing 1.0 zDimension 2 zSpacing 1.0 height [ 0.0, -0.5, 0.0, 0.2, 4.0, 0.0 ] } VRML 2.0

Texture Mapping Wrap images around shapes Apply an image as an opaque "decal" Apply an image with transparent "holes" Wrap a movie's images around shapes Add realistic appearance to shapes VRML 2.0

Texture Mapping Specifics Texture color overrides Material node color Appearance node's texture field wraps an image around geometry The texture can be an ImageTexture, MovieTexture, or PixelTexture VRML 2.0

ImageTexture node Appearance { material Material {} texture ImageTexture { url "myimage.jpg" } The ImageTexture node supports JPEG, PNG, GIF VRML 2.0

MovieTexture node Appearance { texture MovieTexture { url "mymovie.mpg" speed 1 loop FALSE } } The MovieTexture nodes supports: MPEG1-Systems and MPEG1-Video VRML 2.0

PixelTexture Format The PixelTexture node contains data stored as width, height, number of channels, followed by width*height hex values representing the image Example: A 2x4 RGB image PixelTexture { image 2 4 3 0xFF0000 0x00FF00 0 0 0 0 0xFFFFFF 0xFFFF00 } VRML 2.0

Lights Light sources illuminate and effect shading of faces Several types of lights available for maximum control Lights do not cast shadows VRML 2.0

Light Nodes and Fields Three different light nodes PointLight, DirectionalLight, SpotLight Standard fields (common to all 3) and defaults on TRUE intensity 1.0 ambientIntensity 0.0 color 1.0 1.0 1.0 VRML 2.0

Point Light Point lights have a location and glow radially # Standard fields, plus: location 0.0 0.0 0.0 radius 1.0 attenuation 1.0 0.0 0.0 } VRML 2.0

Directional Light Directional lights point in a specified direction # Standard fields, plus: direction 1.0 0.0 0.0 } VRML 2.0

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

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" direction (relative to default orientation). Viewpoint { position 0 0 10 orientation 0 0 1 0 description "DefaultView" } VRML 2.0

Events Event: A message that contains a data value Has a specific data type, eg. SFTime set_ event: Changes node when received Example: set_startTime _changed event: Sent when node changes Example: position_changed VRML 2.0

Data Types Standard VRML Data Types SFBool SFRotation / MFRotation SFColor / MFColor SFString / MFString SFFloat / MFFloat SFTime SFImage SFVec2f / MFVec2f SFInt32 / MFInt32 SFVec3f / MFVec3f SFnode / MFNode VRML 2.0

Fields and Events Each node has specific fields and events Field: A stored value (parameter), eg. url EventIn: An event node can receive, eg. set_url EventOut: An event node can send, eg. url_changed Note: ExposedField defines all three VRML 2.0

Routes 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

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

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

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

The ProximitySensor Generates events when viewpoint: Enters Region: SFTime enterTime Leaves Region: SFTime exitTime Moves within Region: SFVec3f position_changed SFRotation orientation_changed ProximitySensor { 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

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

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

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

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

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

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

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 { cycleInterval 4.0 loop FALSE starTime 0.0 stopTime 1.0 } VRML 2.0

Timer Input Events 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

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

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 cycle Resets to 0.0 at the start of each cycle VRML 2.0

A Sample Time Sensor DEF Monolith1Timer TimeSensor { cycleInterval 4.0 loop FALSE startTime 1.0 stopTime 0.0 } ROUTE Monolith1Touch.touchTime TO Monolith1Timer.set_startTime ROUTE Monolith1Timer.fraction_changed TO Monolith1Light.set_intensity VRML 2.0

Summary of TimeSensors The TimeSensor node's fields control: Timer start and stop times The cycle interval Whether the timer loops or not The sensor generates: isActive events at start and stop fraction_changed events while running VRML 2.0

Interpolators To animate the position of a shape you specify: A list of key positions for a path An interpolator computes intermediate positions for you You specify key values (like positions) along a path Key values have two components A value (such as a position) A key fraction (usually between 0.0 and 1.0) VRML 2.0

Interpolation Interpolation fills in values between your key values: Time Position Time Position 0.0 0.0 0.0 0.0 0.1 0.4 0.1 0.0 0.2 0.8 0.2 0.0 . . . . . . 0.5 4.0 1.0 0.0 . . . . . . PositionInterpolator nodes describe: keys - key fractions values - key positions PositionInterpolator { key [ 0.0, . . . ] keyValue [ 0.0 0.0 0.0, . . . ] } VRML 2.0

Position Interpolator Events The set_fraction input event: Sets the current fraction (usually 0.0 to 1.0) along the key path The value_changed output event: Outputs the position along the path each time the fraction is set DEF Stair1Path PositionInterpolator { key [ 0.0, . . . ] keyValue [ 0.0 0.0 0.0, . . .] } ROUTE Stair1Timer.fraction_changed TO Stair1Path.set_fraction ROUTE Stair1Path.value_changed TO Stair1.set_translation VRML 2.0

Other Interpolators You can also interpolate: Rotations Colors Coordinates Normals Scalars VRML 2.0

Format of Interpolators All Interpolators use keys for key fractions. OrientationInterpolator nodes describe: values - key rotations (axis and angle) ColorInterpolator nodes describe: values - key colors (red, green, blue) CoordinateInterpolator nodes describe: values - key coordinate lists (X,Y,Z lists) NormalInterpolator nodes describe: values - key normal lists (X,Y,Z lists) ScalarInterpolator nodes describe: values - key scalars (used for anything) VRML 2.0

Scripts 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

Program Script Use Script 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 Script { field SFFloat cycles 1.0 eventIn SFFloat set_fraction eventOut SFVec3f position_changed } VRML 2.0

Proto You can create new node types that encapsulate: Shapes Sensors Interpolators Scripts anything else . . . This creates high-level nodes Robots, menus, new shapes, etc. PROTO declares a new node type: name - the new node type name fields and events - interface to the prototype VRML 2.0