-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

So, in order for Ter'Angreal (the VOS Browser) to be able to reconfigure itself for new applications, I see a few of fundamental operations that are required: binding keys to actions, binding mouse events to actions, and having the ability to overlay application specific information onto the 3D window (to display health, scores, inventory, toolbox etc).

I'm going to discuss input in this email.

An action in this case is an abstract input trigger. The browser would provide a mapping from key, mouse or possibly other events to VOS messages that are then sent from the browser to some Vobject.

When visiting a new world-app, the browser would receive a list of possible actions and suggested key and mouse bindings. A game might provide actions for "shoot" and "jump". A constructive world may provide a rich variety of commands for creating, manipulating and retrieving information about objects. The user would be able to change those bindings to suit their preferences (or keyboard layout), of course.

Now, one way of acomplishing this might be through an embedding scripting language like Javascript. I think that having client-side scripting is going to eventually be necessary, but I think we can get a lot out of a simpler "dumb terminal" approach.

We will need some sophistication in specifying input events that can be intercepted. For mouse commands especially: in addition to mouse movement and button presses, we also want to capture mouseovers for 3D objects, click-and-drag events, and mapping a click to a specific polygon and even the 2D coordinates of the texture point the user hit. It may be useful to provide a direct implementation of contextual menus (if several actions are bound to the same mouse button, than pop up a menu) and so on and so forth.

We will also need a way of specifying the destination of the event (a "shoot" action would probably go to our avatar, but a "press button" action would go to whatever is in front of us. For mouse events, we want to specify what is underneath the mouse pointer, and so forth.

To try and make this a little more concrete, here's a couple examples.

First, an actions are saved on the local client using named message blocks:
<messageblock name="shoot">
 <message to="$(avatar)"
          method="myapp:fire-gun" />
</messageblock>

<messageblock name="select-object">
 <message to="$(object-under-pointer)"
          method="myapp:you-are-selected">
   <pointerpos>$(pointer-coordinates)</pointerpos>
</messageblock>

Then, a message to the client is sent:

<message to="vip://client/browser"
         method="describe-actions">
 <action>select-object</action>
 <pointer>click1</pointer>
 <bindto>select-object</bindto>

 <action>shoot</action>
 <key>spacebar</key>
 <bindto>shoot</bindto>
</message>

The <pointer> or <key> fields specify a default binding, which can be changed locally by the user.

As you may have noticed above, outgoing messages will have substitution parameters. This gives flexibility in specifying the destination for messages as well as filling in various event details as message fields.

One feature of this system is that it is abstract enough that it would be relatively simple at some point in the future to replace simple "send this message" bindings with script fragments to perform more complex actions on the client side.

[   Peter Amstutz   ][ [EMAIL PROTECTED] ][ [EMAIL PROTECTED]  ]
[Lead Programmer][Interreality Project][Virtual Reality for the Internet]
[ VOS: Next Generation Internet Communication][ http://interreality.org ]
[ http://interreality.org/~tetron ][ pgpkey:  pgpkeys.mit.edu  18C21DF7 ]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFDnRH5aeHUyhjCHfcRAsc4AKCnGJbc0+WRJWbe41PLi/NoYYvNmgCfSip6
PX5sN3QwdoNWjkSK0pY6/O4=
=o/tq
-----END PGP SIGNATURE-----


_______________________________________________
vos-d mailing list
vos-d@interreality.org
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d

Reply via email to