visual reality and vrml - chapter 5

Upload: nurainimg

Post on 06-Apr-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    1/43

    Visual Reality and VRML DCM 212

    1Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    2/43

    Visual Reality and VRML DCM 212

    MotivationNodes like Billboard and Anchor have built-in behavior .You can create your own behaviors to make shapes move, rotate,scale, blink, and more .We need a means to trigger, time, and respond to a sequence of

    events in order to provide better user/world interactions .

    2Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    3/43

    Visual Reality and VRML DCM 212

    Building animation circuitsAlmost every node can be a component in an animation circuitNodes act like virtual electronic partsNodes can send and receive eventsWiredroutes connect nodes together

    An event is a message sent between nodesA data value (such as a translation)A time stamp (when did the event get sent)

    3Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    4/43

    Routing eventsTo set up an animation circuit, you need three things:A node which sends eventsThe node must be named with DEFA node which receives eventsThe node must be named with DEFA route connecting them

    Visual Reality and VRML DCM 212

    4Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    5/43

    Using node inputs and outputsEvery node has fields, inputs, and outputs:

    field: A stored valueeventIn: An input

    eventOut: An output

    An exposedField is a short-hand for a field, eventIn, and eventOut

    Visual Reality and VRML DCM 212

    5Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    6/43

    Sample inputsA Transform node has these eventIns:

    set_translationset_rotation

    set_scale

    A Material node has these eventIns:set_diffuseColorset_emissiveColorset_transparency

    Visual Reality and VRML DCM 212

    6Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    7/43

    Sample outputsAn OrientationInterpolator node has this eventOut:value_changed to send rotation values

    A PositionInterpolator node has this eventOut:

    value_changed to send position (translation) values

    A TimeSensor node has this eventOut:time to send time values

    Visual Reality and VRML DCM 212

    7Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    8/43

    Syntax: ROUTEA ROUTE statement connects two nodes together usingThe sender's node name and eventOut nameThe receiver's node name and eventIn name

    ROUTE MySender.rotation_changedTO MyReceiver.set_rotationROUTE and TO must be in upper-case

    Visual Reality and VRML DCM 212

    8Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    9/43

    Event data typesSender and receiver event data types must match!Data types have names with a standard format, such as:

    SFString, SFRotation, orMFColor

    Visual Reality and VRML DCM 212

    9Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    10/43

    Event data types

    Visual Reality and VRML DCM 212

    10Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    11/43

    Following naming conventionsMost nodes have exposedFields If the exposed field name is xxx, then:set_xxx is an eventIn to set the fieldxxx_changed is an eventOut that sends when the field changesThe set_and_changed sufixes are optional but recommended for clarity

    The Transform node has:rotation fieldset_rotation eventInrotation_changed eventOut

    Visual Reality and VRML DCM 212

    11Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    12/43

    Animation example codeDEFTouch TouchSensor { }DEFTimer1 TimeSensor { . . . }DEF Rot1 OrientationInterpolator { . . . }DEFFrame1 Transform {

    children [Shape { . . . }

    ]}

    ROUTETouch.touchTime TO Timer1.set_startTime

    ROUTE

    Timer1.fraction_changed

    TO Rot1.set_fractionROUTE Rot1.value_changed TO Frame1.set_rotation

    Visual Reality and VRML DCM 212

    12Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    13/43

    Using multiple routesYou can have fan-outMultiple routes out of the same sender

    You can have fan-in

    Multiple routes into the same receiver

    Visual Reality and VRML DCM 212

    13Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    14/43

    SummaryConnect senders to receivers using routeseventIns are inputs, and eventOuts are outputsA route names thesender.eventOut, and thereceiver.eventInData types must matchYou can have multiple routes into or out of a node

    Visual Reality and VRML DCM 212

    14Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    15/43

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    16/43

    Controlling timeA TimeSensor node is similar to a stop watchYou control the start and stop timeThe sensor generates time events while it is runningTo animate, route time events into other nodes

    Visual Reality and VRML DCM 212

    16Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    17/43

    Using absolute timeA TimeSensor node generates absolute and fractional time eventsAbsolute time events give the wall-clock timeAbsolute time is measured in seconds since 12:00am January 1, 1970!Useful for triggering events at specific dates and times

    Visual Reality and VRML DCM 212

    17Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    18/43

    Using fractional timeFractional time events give a number from 0.0 to 1.0When the sensor starts, it outputs a 0.0At the end of a cycle, it outputs a 1.0The number of seconds between 0.0 and 1.0 is controlled by the cycle

    intervalThe sensor can loop forever, or run through only one cycle and stop

    Visual Reality and VRML DCM 212

    18Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    19/43

    Syntax: TimeSensorA TimeSensor node generates events based upon timestartTime and stopTime - when to runcycleInterval - how long a cycle isloop - whether or not to repeat cycles

    TimeSensor {cycleInterval 1.0loop FALSEstartTime 0.0stopTime 0.0

    }

    Visual Reality and VRML DCM 212

    19Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    20/43

    Using timersTo create a continuously running timer:

    loop TRUEstopTime

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    21/43

    The set_startTime input event:Sets when the timer should start

    The set_stopTime input event:Sets when the timer should stop

    Visual Reality and VRML DCM 212

    21Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    22/43

    Using timer outputsThe isActive output event:Outputs TRUE at timer startOutputs FALSE at timer stop

    The time output event:Outputs the absolute time

    The fraction_changed output event:Outputs values from 0.0 to 1.0 during a cycleResets to 0.0 at the start of each cycle

    Visual Reality and VRML DCM 212

    22Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    23/43

    Converting time to positionTo animate the position of a shape you provide:

    A list of key positions for a movement pathA time at which to be at each position

    An interpolatornode converts an input time to an output positionWhen a time is in between two key positions, the interpolator computesan intermediate position

    Visual Reality and VRML DCM 212

    23Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    24/43

    Interpolating positionsEach key position along a path has:

    A key value (such as a position)A key fractional time

    Interpolation fills in values between your key values:

    Visual Reality and VRML DCM 212

    24Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    25/43

    Syntax: PositionInterpolatorA PositionInterpolator node describes a position path

    key - key fractional timeskeyValue - key positionsPositionInterpolator {key [ 0.0, . . . ]keyValue [ 0.0 0.0 0.0, . . . ]

    }

    Typically route into a Transform node's set_translation input

    Visual Reality and VRML DCM 212

    25Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    26/43

    Using position interpolator inputs and outputsThe set_fraction input:Sets the current fractional time along the key path

    The value_changed output:

    Outputs the position along the path each time the fraction is set

    Visual Reality and VRML DCM 212

    26Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    27/43

    Position interpolator example codeDEF Particle1 Transform { . . . }DEFTimer1 TimeSensor {

    cycleInterval 12.0loop TRUE

    }DEF Position1 PositionInterpolator {key [ 0.0, . . . ]keyValue [ 0.0 0.0 0.0, . . .]

    }ROUTETimer1.fraction_changed TO Position1.set_fractionROUTE Position1.value_changed TO Particle1.set_translation

    Visual Reality and VRML DCM 212

    27Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    28/43

    Using other types of interpolators

    Visual Reality and VRML DCM 212

    28Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    29/43

    Syntax: OrientationInterpolatorA OrientationInterpolator node describes an orientation pathkey - key fractional timeskeyValue - key rotations (axis and angle)

    OrientationInterpolator {key [ 0.0, . . . ]keyValue [ 0.0 1.0 0.0 0.0, . . . ]

    }

    Typically route into a Transform node's set_rotation input

    Visual Reality and VRML DCM 212

    29Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    30/43

    Syntax: PositionInterpolatorA PositionInterpolator node describes a position or scale pathkey - key fractional timeskeyValue - key positions (or scales)

    PositionInterpolator {key [ 0.0, . . . ]keyValue [ 0.0 0.0 0.0, . . . ]

    }

    Typically route into a Transform node's set_scale input

    Visual Reality and VRML DCM 212

    30Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    31/43

    Syntax: ColorInterpolatorColorInterpolator node describes a color pathkey - key fractional timeskeyValue - key colors (red, green, blue)

    ColorInterpolator {key [ 0.0, . . . ]keyValue [ 1.0 1.0 0.0, . . . ]

    }

    Typically route into a Material node's set_diffuseColor orset_emissiveColorinputs

    Visual Reality and VRML DCM 212

    31Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    32/43

    Syntax: ScalarInterpolatorScalarInterpolator node describes a scalar pathkey - key fractional timeskeyValue - key scalars (used for anything)

    ScalarInterpolator {key [ 0.0, . . . ]

    keyValue [ 4.5, . . . ]}

    Often route into a Material node's set_transparency input

    Visual Reality and VRML DCM 212

    32Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    33/43

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    34/43

    The PositionInterpolator node converts times to positions (or scales)

    The OrientationInterpolator node converts times to rotations

    The ColorInterpolator node converts times to colors

    The

    ScalarInterpolator node converts times to scalars (such astransparencies)

    Summary

    Visual Reality and VRML DCM 212

    34Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    35/43

    Sensing viewer actions

    You can sense when the viewer's cursor:

    Is overa shapeHas touched a shape

    Is dragging atop a shapeYou can trigger animations on a viewer's touchYou can enable the viewer to move and rotate shape

    Visual Reality and VRML DCM 212

    35Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    36/43

    Using action sensors

    There are four main action sensor types:

    TouchSensor senses touchSphereSensor senses drags

    CylinderSensor senses dragsPlaneSensor senses drags

    The Anchor node is a special-purpose action sensor with a built-inresponse

    Sensing shapes

    All action sensorssense all shapes in the same groupSensors trigger when the viewer's cursortouches a sensed shape

    Visual Reality and VRML DCM 212

    36Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    37/43

    Syntax: Touch

    Sensor

    A TouchSensor node senses the cursor's touchisOver - send true/false when cursor over/not overisActive - send true/false when mouse button pressed/releasedtouchTime - send time when mouse button released

    Transform {children [

    DEFTouched TouchSensor { }Shape { . . . }

    . . .]

    }

    Visual Reality and VRML DCM 212

    37Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    38/43

    Touch sensor example codeDEFTouch TouchSensor { }DEFTimer1 TimeSensor { . . . }DEF Rot1 OrientationInterpolator { . . . }DEFFrame1 Transform {

    children [Shape { . . . }]

    }

    ROUTETouch.touchTime TO Timer1.set_startTimeROUTETimer1.fraction_changed TO Rot1.set_fractionROUTE Rot1.value_changed TO Frame1.set_rotation

    Visual Reality and VRML DCM 212

    38Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    39/43

    Syntax:

    Sphere

    Sensor

    A SphereSensor node senses a cursordrag and generates rotations as ifrotating a ballisActive - sends true/false when mouse button pressed/releasedrotation_changed - sends rotation during a drag

    Transform {children [

    DEF Rotator SphereSensor { }DEF RotateMe Transform { . . . }

    ]}ROUTE Rotator.rotation_changed TO RotateMe.set_rotation

    Visual Reality and VRML DCM 212

    39Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    40/43

    Syntax: Cylinder

    Sensor

    A CylinderSensor node senses a cursordrag and generates rotations as ifrotating a cylinderisActive - sends true/false when mouse button pressed/releasedrotation_changed - sends rotation during a drag

    Transform {children [

    DEF Rotator CylinderSensor { }DEF RotateMe Transform { . . . }

    ]}ROUTE Rotator.rotation_changed TO RotateMe.set_rotation

    Visual Reality and VRML DCM 212

    40Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    41/43

    Syntax:

    Plane

    Sensor

    A PlaneSensor node senses a cursordrag and generates translations as ifsliding on a planeisActive - sends true/false when mouse button pressed/releasedtranslation_changed - sends translations during a drag

    Transform {children [

    DEF Mover PlaneSensor { }DEF MoveMe Transform { . . . }

    ]}ROUTE Mover.translation_changed TO MoveMe.set_translation

    Visual Reality and VRML DCM 212

    41Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    42/43

    Using multiple sensors

    Multiple sensors can sense the same shape but. . .If sensors are in the same group:

    They all respondIf sensors are at different depths in the hierarchy:The deepest sensor respondsThe other sensors do not respond

    Visual Reality and VRML DCM 212

    42Prepared By : NURAINI MOHD GHANI

  • 8/3/2019 Visual Reality and VRML - Chapter 5

    43/43