WBandD

Welcomes

The blaxxun method of triggering gestures is via keywords typed into chat. Seamless3d chat also uses this method.

My question is this, what alternative methods of gesture triggering have you used elsewhere, and which ones did you like ?

For example Secondlife has poseballs to trigger gestures. Some games have list of gestures to choose from, smilies or gestures triggered by the game itself (eg dying gesture).

Feel free to post links or images of gestures or other MU sites to go with your ideas.

Share

Reply to This

Replies to This Discussion

Ultimately the avatar uses a series of SFTime events trigger the gestures. The SFString names of the gestures are used but ultimately have to be converted to Time to be used as an eventIn. I imagine you can use any type of trigger you want as long as in the end it triggers the avatar proto to send an SFTime eventIn.
set_gesture1, set_gesture2, set_gesture3 etc...

On abnet, VC has a gesture list drop down that sends the events without sending it to chat. I like a method like this as it gives you greater control over gesture use. to use this in a game there is simply no interface to call the gestures but rather all behind the scenes in the code. can be sent as a shared event also. this way everyone else will see you die ;)

Reply to This

The blaxxun method is stupid, as it means 5 lines of code per gesture. Time is a relative term when it comes to multiuser anyway, as the network delays everything at the same rate.

The drop down list is good, but downsides include people not realising what it is, and not so useful when there are 100 gestures.

Reply to This

Personally (for the purposes of multiuser chat in 3D) I like the method of initiating gestures via special strings typed into the chat (preferably strings that are user definable and that do not get sent in the chat text to everyone else). For instance, I like the idea of being able to type something like "Hello everyone. /wave/", and everyone else would instead see a wave gesture and the text string "Hello everyone." (i.e. the gesture trigger token would not appear as text to the other users).
The advantage of this is that one would already be typing into the send box and would find it natural to just continue typing the trigger token. This would automatically associate the gesture with the text one is sending, wheras a menu or button would not. That is, sending a string of text and then hunting for a button/menu for the desired gesture just means a delay at the receiving end between getting the chat string and then getting the gesture triggered (possibly a few seconds later). Including the trigger token in the chat string means the trigger token and the text associated with it will be received at the same time at the other end. (i.e. Pressing the Enter key or clicking on the send button sends both the gesture trigger and the chat text at the same time.)
"Just an opinion. :) /smile/"

Reply to This

Doctor said:
Personally (for the purposes of multiuser chat in 3D) I like the method of initiating gestures via special strings typed into the chat (preferably strings that are user definable and that do not get sent in the chat text to everyone else). For instance, I like the idea of being able to type something like "Hello everyone. /wave/", and everyone else would instead see a wave gesture and the text string "Hello everyone." (i.e. the gesture trigger token would not appear as text to the other users).
"Just an opinion. :) /smile/"

The downside I see is the / would make trying urls into chat get messed up. I've seen :wave: somewhere, which is far less likely to get triggered by accident.

Still need a list of gestures somewhere (cheat sheet), so I was thinking make the gesture function as the enter key. That is enter what you want to say and click "smile" or whatever.

Reply to This

fabricator said:
Doctor said:
Personally (for the purposes of multiuser chat in 3D) I like the method of initiating gestures via special strings typed into the chat (preferably strings that are user definable and that do not get sent in the chat text to everyone else). For instance, I like the idea of being able to type something like "Hello everyone. /wave/", and everyone else would instead see a wave gesture and the text string "Hello everyone." (i.e. the gesture trigger token would not appear as text to the other users).
"Just an opinion. :) /smile/"

The downside I see is the / would make trying urls into chat get messed up. I've seen :wave: somewhere, which is far less likely to get triggered by accident.

Still need a list of gestures somewhere (cheat sheet), so I was thinking make the gesture function as the enter key. That is enter what you want to say and click "smile" or whatever.

Yes, you are correct about my choice of the "/" character. Of course, it would be best if the user could configure his/her own list of trigger strings. That would also make it easier for a user to remember his/her own list of strings.
Your idea of sending text and gesture with the click of a gesture button is a good one. However, I think I would quickly get tired of typing a line of text with the keyboard and then having to switch to the mouse to hunt for a button (rather than just pressing the Enter key). Perhaps, if the text trigger token system was used, buttons could be added that simply appended the trigger token to the chat text (only the sender would see the appended token) followed by an Enter key operation. This would (I think) have the behavior that fabricator has described, and it could be added from within VRML if access to the chat text was available (as it is in the blaxxun and Bitmanagement extensions). Allowing the sender to see the apended token would also act as a quick reference (cheat sheet) for how to type that token later on.

What do people think of our (fab and I) hybrid idea of how to trigger gestures (text-method and button-method, both with one click/keypress to send both the chat text and gesture trigger at the same time)? Is there another way that some people might think is even better?

Reply to This

Doctor said:
fabricator said:
Doctor said:
>
What do people think of our (fab and I) hybrid idea of how to trigger gestures (text-method and button-method, both with one click/keypress to send both the chat text and gesture trigger at the same time)? Is there another way that some people might think is even better?

Actually the avatars already have the names of the gestures inside the file. You just have to access it. This is fairly easily done and sending a sting to chat for the verbal part is as simple as setting a shared event.

exposedField MFString gestureNames["Flip","Fly","Sit","Sleepy","Laugh","No","Shake","Good by jim","Signup","Pose","Pose","Walk",]

of course you would also want to have some control over this as you probably dont want to send a string to chat for each and every one of the gestures. It is also nice if you can give the world builder some control over avatar function and not all would have to be controlled internally. personally i think that typing in a word takes longer than selecting it off a drop down but that is just MHO. and if you are entering a word in the text area it is obvious that you will also have to hit enter when that string is complete.
I think that the only way to make it easy and fast to use gestures is to have a HUD. Either a vrml HUD or an html HUD but if either had all the gestures layed out seperately then you could access any gesture immediately with just one click. Of course that makes for a more cluttered web page but I guess that just depends on what your priorities might be.

Reply to This

Steve said:
Actually the avatars already have the names of the gestures inside the file. You just have to access it. This is fairly easily done and sending a sting to chat for the verbal part is as simple as setting a shared event.

exposedField MFString gestureNames["Flip","Fly","Sit","Sleepy","Laugh","No","Shake","Good by jim","Signup","Pose","Pose","Walk",]

Is anyone aware of a way to access the avatar information without using blaxxun/Bitmanagement extensions? (i.e. Using the strict VRML specification)

of course you would also want to have some control over this as you probably dont want to send a string to chat for each and every one of the gestures.

The token string could be as simple as ":)" to trigger the smile gesture -- it need not be an entire word. Also, when the chat text is sent to the other users the token string need not be sent (assuming that we are talking about a new feature on a new VRML browser application or plug-in). Instead, the sending browser would send a single hidden byte along with the chat string (i.e. a simple gesture index).

It is also nice if you can give the world builder some control over avatar function and not all would have to be controlled internally.

Like h-anim avatars? World scripted control over a user avatar (like reaching for a doorknob as the user avatar approaches a door) is the main reason (I think) why the h-anim specification includes a full set of recommended names for joints and segments. That is, not all avatar behavior is scripted internally to the avatar node definition -- some avatar control can be performed from scripts embedded in the world itself.
I'm just wondering if that is the sort of thing you are describing.

Reply to This

Doctor said:
Steve said:
Actually the avatars already have the names of the gestures inside the file. You just have to access it. This is fairly easily done and sending a sting to chat for the verbal part is as simple as setting a shared event.

exposedField MFString gestureNames["Flip","Fly","Sit","Sleepy","Laugh","No","Shake","Good by jim","Signup","Pose","Pose","Walk",]

Is anyone aware of a way to access the avatar information without using blaxxun/Bitmanagement extensions? (i.e. Using the strict VRML specification)

I wrote my own code for handling Avatars, including 3rd person mode etc. There are problems using it but it is standard vrml spec. The real issue is vrml and X3D still have no concept of Multi User, hence avatars and shared events remain non standard.

To access an avatar you simply need to load the contents of its file into an MFNode. nodes[0] contains an instance of the proto, so you can read the fields' default values.
eg: gestureNames=nodes[0].gestureNames;

Reply to This

fabricator said:
I wrote my own code for handling Avatars, including 3rd person mode etc. There are problems using it but it is standard vrml spec. The real issue is vrml and X3D still have no concept of Multi User, hence avatars and shared events remain non standard.

To access an avatar you simply need to load the contents of its file into an MFNode. nodes[0] contains an instance of the proto, so you can read the fields' default values.
eg: gestureNames=nodes[0].gestureNames;

How does one obtain the URL to a user avatar (using strict VRML specification) in order to load its contents?
I am wondering how to do this even when it is not multiuser, since solving that access issue would allow for your suggestion to be implemented.
Somehow one would need to obtain a reference to the currently loaded avatar node, would they not? Or perhaps a reference to the root node of the scenegraph heirarchy, and then search the scenegraph for the avatar node?
I can see how to do any of these tasks using the blaxxun/bitmanagement extensions, but not using the Web3D VRML specification alone.

Reply to This

Doctor said:
How does one obtain the URL to a user avatar (using strict VRML specification) in order to load its contents?
I am wondering how to do this even when it is not multiuser, since solving that access issue would allow for your suggestion to be implemented.
Somehow one would need to obtain a reference to the currently loaded avatar node, would they not? Or perhaps a reference to the root node of the scenegraph heirarchy, and then search the scenegraph for the avatar node?
I can see how to do any of these tasks using the blaxxun/bitmanagement extensions, but not using the Web3D VRML specification alone.

This is the problem, there is no Avatar node in the scene itself, just an Inline with the avatar inside. It somehow edits the contents of the Inline. The problem is its really hard to get to the avatar itself as a result, hard to find.

When you get to blaxxun multiuser its even worse, which Inline is what, I gave up and wrote my own. You can also look at how ABNet uses avatars.

Reply to This

fabricator said:
This is the problem, there is no Avatar node in the scene itself, just an Inline with the avatar inside. It somehow edits the contents of the Inline. The problem is its really hard to get to the avatar itself as a result, hard to find.

Thank you, fabricator. I suspected that there was no way in vanilla VRML to get at the avatar node.

When you get to blaxxun multiuser its even worse, which Inline is what, I gave up and wrote my own. You can also look at how ABNet uses avatars.

Regarding blaxxun multiuser: I once wrote the missing javascript that added and removed avatars to/from the "exposedField MFNode avatars" that appears in the BlaxxunZone PROTO. (As anyone who has tried to use it knows, the version of the BlaxxunZone PROTO supplied by blaxxun did not have the code necessary to keep the avatars list up to date -- the "avatars" exposedField seemed to do nothing.) I seem to recall having to deal with three avatar loads for each user that entered the scene (a null avatar node, then a default avatar node, then finally the user's avatar ... or something to that effect). Whenever a new user entered the multiuser scene a program element that was outside the 3D scenegraph (perhaps the chat portion of the plug-in) would route three successive eventIn messages to the "eventIn MFNode addAvatars" of the BlaxxunZone node -- I would examine each one and discard the two that were not the user's actual avatar. I think the blaxxun documentation provided some code (that didn't work) that assumed all three avatars would appear as one eventIn message to addAvatars, and it took me quite a bit of experimentation to uncover what was really happening.
I can dig out my modified version of the BlaxxunZone PROTO if anyone wants it -- though I suspect the VRML gurus like fab have already fixed the BlaxxunZone PROTO long before I did, and I was just one of the few that did not have the updated copy of the BlaxxunZone PROTO.

The blaxxun extensions to the Browser object also included the "exposedField SFNode myAvatar" to allow one to get at their own avatar. Too bad the VRML specification did not include the "Browser.myAvatar" exposedField.


I'll have to visit ABNet again and investigate how avatars are handled there.

Reply to This

Reply to This

RSS

About

Bruce Lehmann Bruce Lehmann created this Ning Network.

Badge

Loading…
Who Is Online

NEWS

ParallelGraphics starts beta-testing of Cortona3D Viewer 6.0 Beta (previously known as Cortona VRML Client) and invites participants to take part in the beta testing program. Cortona3D Viewer is a fast and highly interactive VRML viewer that is ideal for viewing 3D models on the Web. It works as a VRML plug-in for popular Internet browsers such as Internet Explorer, Netscape Navigator, Mozilla, Mozilla Firefox, Opera, and Google Chrome.

Cortona3D Viewer 6.0 Beta homepage -


Download Cortona3D Viewer 6.0 Beta -


Cortona3D Viewer v. 6.0 Beta: What’s new

Unicode support

Cortona3D Viewer 6.0 provides full support for UTF-8 in VRML.

Localization of the user interface

Now the menus of Cortona3D Viewer can be easily translated into other languages by licensed users.

Latest Web browsers support

Cortona3D Viewer now supports Mozilla Firefox v. 3.0 and Google Chrome.

Phong lighting support

The support for Phong lighting model is provided for graphical cards supporting the shader model v. 3.0 and higher. Limited support for the shader model v. 2.x is also provided.

Improved performance: new DirectX renderer

- Support for real-time anti-aliasing (multisampling).
- Support idle-time anti-aliasing by means of Direct3D.
- Support for composite textures.
- Improved processing of textures and 3D primitives.

Improved installation procedure

The use of Microsoft Installer (MSI) allows for easier installation of Cortona3D Viewer within an enterprise and as a part of third party applications.

New VRML extensions

- The Transform2DEx node allows for positioning layers on the screen and specifying their size in pixels.
- The CompositeTexture3D and CompositeTexture2D nodes allow for adding composite textures to the 3D scene.
- The GradientBackground node allows for creating horizontal or vertical gradient background that is static relatively to the camera movements.

Changes in VRML Automation interface

- Pick method has been changed:
Layers without background: areas with no geometry are considered transparent for the picker.
One-sided surfaces: invisible side is ignored by picker.
Double-sided surfaces: the normal calculation is based on a visible side of the surface.
- New method of geometry bounding box calculation:
§ Now the bounding box can be calculated in global coordinates.


The FreeWRL team have put FreeWRL 1.21.2 on-line, with source, debian (.deb) and Apple OSX dmg downloads.

http://freewrl.sourceforge.net

Summary of changes:
- Verified MIME types for OSX and Linux plugins.

- Classic VRML/X3D parser:
- fixed memory error when IS fields were large.
- dramatic speed improvement in PROTO expansions; visible when large protos are
instantiated.

- XML parser:
- speed increase in parsing attribute values (one test shows 100x speed increase)
- PROTO expansion and Script invocation being reworked - may still have parse errors.
(in progress)

- Source Code:
- OpenGL Shaders code should compile on OpenGL 1.5 and above now (was 2.0 and above)
- CFuncs/sounds.h - include unistd.h on Linux machines.

- Misc rendering changes:

- Javascript, direct writing to scenegraph, boolean values were not correctly translated from
javascript to freewrl internal values.

- FaceSets with Color node, not taking material properties correctly (especially transparency)

- FaceSets, with RGB Color node, keep track of associated material transparency, and work through
color node changes.

- removal of temporary files - code has been reworked, as some temporary files (specific:
files retrieved by wget or curl) were not removed.

- initial work on CubeMapTextures.

- GeoPositionInterpolator - output value not translated to local spatial units. (fixed)

© 2009   Created by Bruce Lehmann on Ning.   Create a Ning Network!

Badges  |  Report an Issue  |  Privacy  |  Terms of Service

Sign in to chat!