VRML+



Activate

The concept of Activation is needed as a first step towards having behaviours that are triggered by the location of the viewer. The VRML+ spec requires some of this functionality in order to control the text servers, and it was decided that rather to repeat the mistake of WWWAnchor and put together a node specifically for this case, it would be better to come up with a more general purpose composable node that could be used in a number of situations.

Gavin Bell, RobMyers and Mitra met to see if we could come up with a more composable approach. We explored decoupling the sensing, control logic, and resultant action, such that future VRML extensions can independently address each of these three different description problems.

We came up with the following angle of approach, although more work is needed, especially in the re-composition of these nodes into concise kits which support common idioms.

This is a discussion document at this time, and feedback is welcome to the authors.

New Nodes

Sensor {}
generates events and maintains a state machine for sensing various occurances within the scene, user input, and standardized viewer conditions. For instance:

RegionSensor
reports when the viewer's camera position enters, exits, and moves inside (or outside) its target region.
RegionSensor {
    bboxCenter          # as per WWWInline, defines spatial target region
    bboxSize
    target  NODENAME    # or reference geometry to be used as spatial target
    sense   NODENAME    # node whose position is checked; default is camera
    isIn                # TRUE while camera position remains inside region
    {}                  # child geometry is traversed for rendering
}

PickSensor
reports when the viewer picks a node (e.g. user clicks Left Mouse Button over)
PickSensor {
    target  NODENAME    # reference to geometry to be picked
    {}                  # child geometry is traversed for rendering
}

Connection
ties the value of a destination field to the value of the source field.

Trigger
couples an event (e.g. sensor event) with an action
Trigger {                               # perhaps TriggerConnection ?
    condition FIELDNAME
    action ""
}

Channel {}
specifies a sink or source to connect the viewer to a media stream, providing explicit connections across machines which rendezvous on specific channels. These channels are managed by servers at the URL provided. For instance:
Microphone {
    channel "URL"       # direct viewer's audio to an audio server URL
    isListening
}

Speaker {
    channel "URL"       # receive audio from an audio server URL
    isSpeaking
}


Worlds Inc VRML+ Team
Alan Steremberg <alans@core.worlds.net>
Jeff Close <close@halcyon.com>
Kyle Hayes <kyle@core.worlds.net>
Mitra <mitra@mitra.biz>

All contents Copyright © 1995 Worlds Inc. Reproduction for personal use is permitted. All other uses are prohibited without the formal authorization of Worlds Inc., Worlds, Worlds Chat, AlphaWorld, VRML+, Internet Worlds Fair, LifeForms, Worlds Class Builder and It's Your World are all trademarks of Worlds Inc.
Web Problems?