spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / experts / 3d / lesson30

Lesson 30 - VRML 97--Touch and Go! - Part 3

Developer News
News Flash: Adobe Has iPhone Workaround
Adobe's Flash 10.1 Goes Mobile (Minus iPhone)
A Salute to Visionary CEOs

The first ROUTE statement in the last example reads as follows:

ROUTE Click.touchTime TO Timer.startTime

The two fields connected by this ROUTE statement will make a lot more sense if we consider the full definitions of the TouchSensor and TimeSensor nodes from the VRML 97 specification.

    TouchSensor {   exposedField  SFBool    enabled TRUE   eventOut   SFVec3f   hitNormal_changed   eventOut   SFVec3f   hitPoint_changed   eventOut   SFVec2f   hitTexCoord_changed   eventOut   SFBool    isActive   eventOut   SFBool    isOver   eventOut   SFTime    touchTime } TimeSensor {   exposedField  SFTime    cycleInterval 1      exposedField  SFBool    enabled TRUE   exposedField  SFBool    loop FALSE   exposedField  SFTime    startTime 0   exposedField  SFTime    stopTime 0   eventOut   SFTime    cycleTime   eventOut  SFFloat   fraction_changed   eventOut   SFBool    isActive   eventOut   SFTime    time }

You can see that our simple examples have been hiding a lot, and we won't pretend to cover it all here. But the main thing worth noting is that the sensors are composed of two kinds of fields. An eventOut field contains a value that can be sent out by a ROUTE statement to another node. An exposedField contains a value that can be both received from another node and (like an eventOut) also be routed to another node. A third kind of field called an eventIn (not shown here) can receive a value routed from another node. Thus an exposedField is a combination of an eventIn and an eventOut.

In our ROUTE statement at the top, the value in the touchTime field in theTouchSensor (Click) is routed (copied) to the startTime field in the TimeSensor (Timer). When the user clicks on the box, the time value at the moment of the click is copied to the startTime field of TimeSensor. This starts the TimeSensor running and it's worth understanding precisely why. The browser is always keeping track of the current time. Once the value in startTime is equal (or earlier than) the current time, the TimeSensor becomes active and starts generating eventOuts to be routed to other nodes and control them. In our examples, the activated TimeSensor is sending fraction_changed values to the interpolator. This idea is undoubtedly rather subtle, so take a moment to make sure you understand it. Notice that the default value of stopTime is 0. Because this value is less than startTime, it's ignored. If it were greater (later) than startTime, it would make logical sense and the TimeSensor will deactivate when stopTime is reached.

The fields in boldface have default values as indicated. Thus our default TouchSensor was enabled (its Boolean value is TRUE), meaning that it was ready to respond to user mouseovers and clicks. Our TimeSensor would have used its default one-second cycle had we not overridden it with a ten-second value. In our looping example (without the TouchSensor) the TimeSensor became activated on read because the default value of startTime is 0. Time in VRML 97 is measured in seconds from midnight GMT January 1, 1970. Thus the browser's current time when the file is read is always later than the value in startTime, and the TimeSensor is necessarily activated.

To Return to Parts 1 and 2, Use Arrow Buttons

Previous Lesson / Table of Contents / Next Lesson


internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Reprints, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs

webref The latest from WebReference.com Browse >
Building a Banking Application Home Page with OOP · Mixing Scripting Languages · Review: phpFox, a Social Networking CMS with all the Bells and Whistles
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Enterprise 2.0: Social Networking in the Cloud · BroadSoft Marketplace Hastens Pace of Telephony Innovation · Review: HTC Hero for Sprint

Created: December 23, 1997
Revised: December 23, 1997

URL: http://webreference.com/3d/lesson30/part3.html