Digital Space Commons: Welcome to Meet2D
    DigitalSpace.com
 · 
Talkspace.com
 · 
 · 
MeetingPage.com
 · 
Meet2d.com
 · 
Meet3d.com
 

Meet2D Java Thin Client Edition

introducing the family of Oworld Clients:
Meet3D and Meet2D

Applet Parameter Specification
Updated Feb 15, 2001 -- BD

Oworld supports several clients, Meet3D and Meet2D for Java being two. Meet3D has a chat capability and a 3D multi user space supporting avatars. Meet2D is the text "chatPanel" from Meet3D, with no 3D window. In the specification below most of the parameters that involve references to space and object apply only to Meet3D. Those that apply to Meet2D are marked with BLUE NOTATIONS. We will produce a comprehensive spec for Meet2D only in the near future.

Some operational affordances when running Meet3D and Meet2D together
If you are in a Meet3D world connected with "Harry" in a Meet2D chat only applet that is connected to the same port and server, you can still communicate. As Harry will be invisible to you as an avatar, his text is the only way you will know he is there. His text will be prefixed by <in M2D> so you know he is coming in from Meet2D.Similarly, Harry will see your text prefixed by <in M3D> so he knows you are running in a 3D space. That way he won't get so confused when you start talking about spatial things like "just come through this door here"!

Meet3D and Meet2D combined Applet Parameter Specification

The Oworld Meet3D and Meet2D Thin Client Editions and Server system is a Java 1.1 based applet and server supporting multiuser inteaction, motion, and chat within a 3D virtual world environment and a 2D chat room hosted on the Internet. Most elements of the operation of the virtual worlds can be specified in the parameters to the Applet.

Example

The following example shows the applet callout HTML tag for the Meet3D/Thin Client Edition 1.x applet.

General Applet Invokation

<applet CODEBASE="." CODE="com.dspace.client.DsApplet.class" ARCHIVE="dspace.zip" name=teamroom WIDTH="500" HEIGHT="460" >

OR for Javascript Wrapper:

<applet code=com.dspace.client.DsApplet.class ARCHIVE="dspace.zip" name=oworld width=500 height=460>

<!--Client-Specific Parameters (Shout3D) -->

<param name="regcode" value="S3DXXXXXXXXXXXXXXX-NNN">
<param name="regname" value="keyowner">
<param name="antiAliasingEnabled" value="false">
<param name="bilinearFiltering" value="false">
<param name="loadResourcesInSeparateThread" value="true">
<param name="nodeSearchPath" value="shout3d.hanim;DEFAULT">

<!-- Loading of Scene, compressed version -->
<param name="gzip_src" value="models/world.s3z">

<!--Client-Specific Parameters (Anfy3D) -->

<param name="regcode" value="BwRc5hwTBCHn1zQEdPl/xwRr4AExBBlPJewEDXLEtgQWAU98">
<param name="regname" value="bdamer">
<param name="zoom" value="off"> where the 4 valid values are:
1. on (zoom mode which we didn't like (highly pixelated, remember?))
2. antialias (software-antialias mode)
3. hardware-gl4j (hardware acceleration mode)
4. off (everything done in software with zoom mode off) << I'm using this one currently

<!--Basic Scene Loading and Setup -->

<param name="src_root" value="/dspace1/test1/">
<param name="src" value="models/world.s3d">
<param name="backgroundColorR" value="0">
<param name="backgroundColorG" value="0">
<param name="backgroundColorB" value="0">
<param name="headlightOn" value="true">
<param name="appletWidth" value="500">
<param name="appletHeight" value="440">
<param name="chatTextAreaLines" value="24">

<!--Server Settings (VNet) -->

<param name="netServer" value="www.meet3d.org">
<param name="netServerPort" value="8888">
<param name="Channel" value="Default">

<!--Caretaker(s) (world owner) Settings -->

<param name="careTakerKeyID" value=ctbells@qwest.net,damer@digitalspace.com>
<param name="careTakerKeyPwd" value="encryptedgobbledygook,otherencryptedgobbledy">
<param name="careTakerUserName" value="Campbellsan,DigiGardener">
<param name="careTakerPrefix" value="SleeplessInSeattle-, CruzinCaretaker*">

<!--World Description and Welcome Bot Message -->

<param name="worldName" value="tclass">
<param name="worldDescription" value="Teacher's classroom world">
<param name="worldNotice" value="Please be polite">

<!--User Interface Settings -->

<param name="uiPath" value="skins/skin1/">

<!--User Profiling -->

<param name="userName" value="charlie">
<param name="entryAvatar" value="Woman">

<!--User Login Alerting -->

<param name="loginAlertTo" value="caretaker">
<param name="loginAlertIncludeList" value="boobie, regularU, guest8">
<param name="loginAlertExcludeList" value="boobie, regularU, guest8">
<param name="loginAlertPerUserMemory" value="30">
<param name="loginAlertAction" value="bell, popuptext, email">
<param name="loginAlertActionBellSound" value="/sounds/chimes.wav">
<param name="loginAlertActionPopupText" value="User has arrived in the Host Lobby:, userName">
<param name="loginAlertActionEmailAddress" value="ctbells@qwest.net, damer@digitalspace.com">
<param name="loginAlertActionEmailText" value="User has arrived in the Host Lobby:, userName, join us at: http://www.meet3d.org/tgss3d10/build028/chat_c.html">
<param name="loginAlertActionWhisperToUser" value="The caretaker Campbellsan has been contacted, hold on useName while he gets into the room to help">

<!--Avatar Settings -->

<param name="avatarName1" value="Woman">
<param name="avatarURL1" value="avatars/girl.wrl">
<param name="avatarName2" value="Man">
<param name="avatarURL2" value="avatars/man.wrl">
<param name="avatarName3" value="Dalek">
<param name="avatarURL3" value="avatars/dalek.wrl">
<param name="avatarName4" value="Bear">
<param name="avatarURL4" value="avatars/Bear0.wrl">
<param name="avatarName5" value="The Flyer">
<param name="avatarURL5" value="avatars/Flyer0.wrl">
<param name="avatarName6" value="Glypth">
<param name="avatarURL6" value="avatars/Glypth0.wrl">
<param name="maxAvatars" value="16">
<param name="avatarHeight" value="1.7">
<param name="avatarRadius" value="1">
<param name="colliderHeight" value="0.25">

<!--Room Customization -->

<param name="assignSceneObject1" value="ScreenFront">
<param name="changePictureObject1" value="pictures/bruce00.gif">
<param name="changeWebObject1" value="http://www.hitl.washington.edu/people/bdc/">
<param name="assignSceneObject2" value="ScreenLeft">
<param name="changePictureObject2" value="pictures/bruportrait4s.jpg">
<param name="changeWebObject2" value="http://www.damer.com/">
<param name="assignSceneObject3" value="ScreenFront">
<param name="changePictureObject3" value="cam-output/image320x200.jpg">
<param name="reloadPictureObject3" value="10">

<param name="assignModelObject1" value="models/chair.wrl">
<param name="addModelObject1" value="1000, 1500, 120">
<param name="moveModelObject1" value="135, -100, 0 ">
<param name="removeModelObject1">

<param name="changeTeleporterObject1" value="name=PortalDoor5, desc=Another World, location=-28 10 0 180, destination=worlds/anotherworld5.wrl, vserver=www.meet3d.org, vport=8896">
<param name="changeWarperObject2" value="name=WarpUpStairs, desc=Zoom me to the top of the stairs, location=5 0 9 45">

<!--Avatar Camera Settings -->

<param name="avatarCameraName1" value="Full Frontal">
<param name="avatarCameraOffset1" value="3124, 17000, -6777, 45, -90">

<!--Scene Viewpoint Settings -->

<param name="viewpointName1" value="Tea Table">
<param name="viewpointCoords1" value="0,0,0,45,0">
<param name="viewpointName2" value="Galen">
<param name="viewpointCoords2" value="-5000,0,-6000,0,10">
<param name="viewpointName3" value="Campbellson">
<param name="viewpointCoords3" value="0,0,6000,180,10">

<!--Entry Viewpoint -->

<param name="entryCoords" value="0,0,0,45,0">
<param name="entryAvatarCamera" value="Full Frontal">

<!--Text Handling Settings-->

<!--Text styles and colors-->
<param name="careTakerTextStyle" value="bold">
<param name="careTakerTextColor" value="0,0,0">
<param name="whisperTextStyle" value="italic">
<param name="whisperTextColor" value="0,0,200">
<param name="myTextStyle" value="normal">
<param name="myTextColor" value="0,0,0">
<param name="myTextSize" value="12">

<!--Text buffer options-->

<param name="textBufferAccess" value="access">
<param name="textBufferURLs" value="active">

<!--Chat Logging and Scrolling Chat Output Area-->

<param name="assignFileLog1" value="meetinglogs/digis-meeting1.html">
<param name="setAccessLog1" value="append">
<param name="setModeLog1" value="startup">
<param name="chatLogMethod" value="pop-up">
<param name="chatLogUserInstance" value="digi">

<!-- More Chat Settings -->

<param name="textChatEntryAreaButton" value="send">
<param name="loginLabel" value=" Please type in a user name and press Enter">
<param name="loginButtonText" value="Join Autism Chat">

<!--Demo Mode -->

<param name="demoMode" value="offline-interfaces">

<!--Debug Parameters -->

<param name="debugInfo" value="ON">

<!--New Parameters -->

</applet>

Explanation of Parameters

Note that the calling website or database process must be very careful to place correct parameters in the callout to the Applet to avoid problems, such as specifying a source path to a world that cannot be found on the server. The applet will start up and report any problems it was able to detect in the parameters or associated with resources either in the text status area or by failure to operate shown in the Java Console.

  • CODEBASE="." take codebase from directory that applet is running from or another path so specified. Note that this path should be on the same server (below) that the applet's is running from or a Java security exception may result.
  • CODE="com.dspace.client.DsApplet.class" class files to execute for applet
  • ARCHIVE="dspace.zip" archive to extract classes from, this file contains the newest release of the applet and is the file that should be updated to move to a new build or version.
  • WIDTH="500" HEIGHT="460" width and height of applet when running in the webpage, including 3D area and interface.
  • name=oworld Name to assign applet class, this must be "oworld" to be able to tie into external Oworld Javascripting

Applet Parameters:

    Client-Specific Parameters (Shout3D)

    • "regcode" value="S3DXXXXXXXXXXXXXXX-NNN" key for license for unbranded Shout3D tied to each domain
    • "regname" value="keyowner" name ID for de-branding license for Shout3D engine
    • "antiAliasingEnabled" value="false"
    • "bilinearFiltering" value="false"
    • "loadResourcesInSeparateThread" value="true"
    • "nodeSearchPath" value="shout3d.hanim;DEFAULT"
    • "gzip_src" value="models/world.s3z" the compressed world geometry to load

      Client-Specific Parameters (Anfy3D)

      "regcode" value="BwRc5hwTBCHn1zQEdPl/xwRr4AExBBlPJewEDXLEtgQWAU98" product registration code to prevent the branding text from appearing
      "zoom" value="off"
      where the 4 valid values are:
      1. on (zoom mode which we didn't like (highly pixelated, remember?))
      2. antialias (software-antialias mode)
      3. hardware-gl4j (hardware acceleration mode)
      4. off (everything done in software with zoom mode off) << I'm using this one currently

      Basic Scene Loading and Setup

    • "src_root" value="/dspace1/test1/" the path to pre-concatenate on all source loads including: gzip_src, src, UIPath, AvatarURLs and on all source paths for teleporting to new world geometries. Newly specified, to be implemented and tested
    • "src" value="models/world.s3d" the alternate source world geometry to load (note that if client is incapable of loading the compressed version it will attempt to load the uncompressed (source) version). This file could also be a ".wrl" or VRML file, but loading is slower in this format.
    • "backgroundColorR" value="0" background color for world (in this case 0,0,0) be black.
    • "backgroundColorG" value="0"
    • "backgroundColorB" value="0"
    • "headlightOn" value="true" setting that the main forward light should be on
    • "appletWidth" value="500" optional client rendering area width and height parameters that should agree with the overall applet width and height. This allows setting of arbitrarily large or small area for the 3D window to render. Note that for these parameters to work, the UIPath parameter must be set to "none".
    • "appletHeight" value="440" optional 3D rendering area height. Note that the HEIGHT parameter in the applet tag must be 20 more than the AppletHeight parameter to allow space for the chat input control.
    • "chatTextAreaLines" value="24" for MEET2D TEXT-CHAT ONLY MODE: this is the number of lines of text to make the entire applet area (includes the buffer and the chat entry area. To calculate the right applet HEIGHT parameter attribute setting for your chat only applet, multiply your chatTextAreaLines value by 16. Then add a few pixels to taste. For example, if we set the chatTextAreaLines value to 24 we would set the applet HEIGHT to 388 (24*16+4). The appletWidth parameter is consistent with Meet3D usage.

      Server Settings (VNet)

    • "netServer" value="www.meet3d.org" web server to access the multiuser server (OWorld server) from
    • "netServerAccess" value="port" mode of access to the net server. If the value is "port" then netServerPort contains the port number to directly communicate with the server. If the value is "key" then the applet must search for its server access by querying the server for a file which will contain a port number and possibly channel. The file is defined by the prescence of the CaretakerKey parameters described below. See the server access protocol concepts page for this discussion.
    • "netServerPort" value="8888" port to open access to the multiuser server (also will use next canonical port number, ie: 8889). This port number must be tied to the actual running instance of VNET. There must be one running instance of VNET per world, and this instance must be started on a distinct port pair.

      Server Settings (OWorld Extensions)

    • "channel" value="Default" channel to use on the multiuser server pointed to by the netServer parameter

      Caretaker (world owner) Settings

    • "careTakerKeyID" value="ctbells@qwest.net, damer@digitalspace.com" the unique IDs(s) of the owner(s) of the world, called a caretaker. In this example that ID is the caretaker's email address (or two or more). This key is used in the applet obtaining a server connection, see the discussion of how this might work at the page server access protocol concepts.
    • "careTakerKeyPwd" value="encryptedgobbledygook, other.. " the password(s) to access the world. If this is specified there must be a server side password check, if the password does not match the world will not load and the user presented with a message.
    • "careTakerUserName" value="Campbellsan, DigiGardener " which defines who in the M2D/M3D session is actually a caretaker.
    • "careTakerPrefix" value="SleeplessInSeattle-, CruzinCaretaker*" enables the individual caretaker(s) to define their own prefix prepended to chat lines (before the username), so this example would yield: "SleeplessInSeattle-Campbellsan: hello all" or "CruzinCaretaker*DigiGardener: Bruce here".
      World Description and Welcome Bot Message

    • "worldName" value="tclass" a unique (not just filename) ID for the world and this and the following two parms will be "spoken" into the chat area when the user logs in ("Welcome to worldName: worldDescription, worldNotice")
    • "worldDescription" value="Teacher's classroom world"
    • "worldNotice" value="Please be polite"

      User Interface Settings

    • "uiPath" value="skins/skin1/" pathway locally off applet directory where skin JPG or other UI elements can be found, separate skins can be supported by pointing to different paths. If there is no UIpath parameter, then the subdirectory "skins" assumed. If the uiPath parameter exists but is set to "None", "none" or "NONE" then a skinless interface is used (buttons with textual labels only). A skinless interface is advisable on platforms in which java support is poor (ie: Macintosh). New, needs testing

      User Profiling

    • "userName" value="charlie" name to assign user in world, note that this must be a unique name, set by the caller's customer identification system. Note this name must be unique, that is, no other user of the identical name should be able to log in, this is important as we will be doing a force logout of users with identical names when a user tries to enter a world (to prevent server timeout issues).
    • "entryAvatar" value="Woman" the avatar to use on entry, there is no default, this value must be set to the value=parameter and allows different starting avatars. Note that if the calling process would like to present the selection of avatars to the user, then it must pass in the entryAvatar to the applet. If there is any inconsistency detected here, the login screen will be presented.

      User Login Alerting (not yet implemented)

    • "LoginAlertTo" value="caretaker" who to alert, could be caretaker(s) who are online and logged into that instance of the client, caretaker-offline, caretakers who are also offline, or all, everyone online in the client.
    • "loginAlertIncludeList" value="boobie, regularU, guest8" lists those named users that are alerted (and thereby excludes all other users). Especially useful if you are trying to track the arrival of a particular person.
    • "loginAlertExcludeList" value="boobie, regularU, guest8" lists those named users excluded from alerts (if they are online). This list can exclude a caretaker listed in LoginAlertTo. This is useful if you are trying to meet any guest but not wanting alerts when regulars show up.
    • "loginAlertPerUserMemory" value="30" sets a timeout in minutes after which a user who has already generated an alert can generate a new alert. A list of users who have generated alerts will therefore have to be remembered, and timed down. This prevents continuous alerts for a user entering frequently.
    • "loginAlertAction" value="bell, popuptext, email" the actions to take in alerting: bell is to ring a bell, popuptext generates a popup window with text, and email sends an email. See the parameters below for further specification of these actions.
    • "loginAlertActionBellSound" value="/sounds/chimes.wav" the specific sound file to use in alerting, if not specified a standard beep will be sounded.
    • "loginAlertActionPopupText" value="User has arrived in the Host Lobby:, userName" specifies the popup text to present in the popup window. In this case, the string userName should be replaced by the actual name of the user who has entered.
    • "loginAlertActionEmailAddress" value="ctbells@qwest.net, damer@digitalspace.com" specifies the email addresses to send email to upon alert.
    • "loginAlertActionEmailText" value="User has arrived in the Host Lobby:, userName, join us at: http://www.meet3d.org/tgss3d10/build028/chat_c.html" specifies the content of the email to be sent to the addresses specified above. the value useName is filled with an actual user name. The URL is optional and would allow the person reading the email to easily join the specific room.
    • "loginAlertActionWhisperToUser" value="The caretaker Campbellsan has been contacted, hold on userName while he gets into the room to help" specifies a message to send by whisper to the user of userName to inform them that someone is coming to help (assumes an alert was generated by this user).

      Avatar Settings

    • "avatarName1" value="Woman" name of avatar (for example first in list), this is not the same as the user name
    • "avatarURL1" value="avatars/girl.wrl" web address of avatar geometry (relative to the applet directory)
    • ... continue list of avatars until end, these will appear in the avatar choices
    • "maxAvatars" value="16" maximum avatars that can be shown in a scene, any more users are logged into text chat but will have no avatar representation. If this param is not present there is no limit on avatars in the scene.
    • "avatarHeight" value="1.7" avatar height used for collision detection and eye position of the user is fixed at this value.This is the parameter to set to determine how high avatars "float" above the ground plane on entry.
    • "avatarRadius" value="1" radius from center of avatar for collision (bounding box calculation)
    • "colliderHeight" value="0.25" added to avatar height when checking for collision (area of avatar above your eyes)

      Room Customization

    • "assignSceneObject1" value="ScreenFront" assigns the existing scenegraph node (custom object) having the name ScreenFront to the symbol Object1. Assignments cannot be done applied more than once to an object symbol of a certain number, for example, to address another node in the scenegraph, simply use AssignSceneObject2. As these instructions are executed serially and once only at load time, there is no facility nor real need for reuse of object symbols.
    • "changePictureObject1" value="pictures/bruce00.gif" place or replace the picture pictures/bruce00.gif onto the surface of the object identified by Object1. This image must be a JPG or GIF format file and stored locally where the applet is running from to stay within java security guidelines.
    • "changeWebObject1" value="http://www.hitl.washington.edu/people/bdc/" place or replace a WWW inline URL onto the object identified by Object1so that when clicked by the user, a new page is launched. If a "target=" statement is included in the value, then the web page will be launched into the target frame. By default the page is launched in a new window, otherwise the applet will be replaced.
    • "assignModelObject1" value="models/chair.wrl" assign the file models/chair.wrl to the symbol Object1. This assignment cannot be done to an object symbol that is already in use, ie: an object symbol can be assigned to either a Scene object or a Model Object and used once only in this capacity (no reuse).
    • "addModelObject1" value="1000, 1500, 120" put an instance of the object assigned to Object1 at the absolute position in the world specified by the coordinates in 1000x scale (here at 1.0, 1.5, 1.2 meters). Note that the model associated with Object1 can be added many times at different locations. However, future MoveModelObject and RemoveModelObject parameter methods will affect all previously added instances. This allows construction of multi-part models.
    • "moveModelObject1" value="135, -100, 0" modify the location of the instance of Object1 by the relative coordinates given, that is, the current locations of all instances of Object1 will be modified (by addition) by the given coordinates.
    • "removeSceneObject1" removes a scenegraph node object as defined previously in AssignSceneObject.This could be used for instance, to "disappear" a teleporter node in a special case of a particular world.
    • "changeTeleporterObject1 value="name=PortalDoor5, desc=Another World, location=-28 10 0 180, destination=worlds/anotherworld5.wrl, vserver=www.meet3d.org, vport=8896" place or replace code into an AssignScene or AssignModel object that will define a teleporter action for users in the world, where name is the symbolic ID of the teleporter, desc is a textual description of the location to be teleported to, location is the landing point X, Y, Z, and rotation around the normal to face, destination is the target scenegraph to load, vserver is the domain to draw the target world from (has to be same domain as applet is running from, and vport is the port to connect to (presumes that existing server is running there). Note that there can be an additional parameter "warper=warpername" which defines the target warper to use to place the user at a location. An important note about teleporters: if a user is teleporting between two worlds, any room customization thus defined by applet parameters must be passed to that target room and applied. The reason for this is that the teleporting process ostensibly skips the parameterized loading of the world. Thus there may be a need for any teleporter to point to the address of the file defining the parameters for the world to be loaded.
    • "changeWarperObject1 value="name=WarpUpStairs, desc=Zoom me to the top of the stairs, location=5 0 9 45" place or replace code into an AssignScene or AssignModel object that will define a warper action for users in the world, where name is the symbolic ID of the warper, desc is a textual description of the location to be warped to, location is the landing point X, Y, Z, and rotation around the normal to face after warping to this absolute coordinate within the same world.
    • "reloadPictureObject3" value="10" causes the scenegraph element (in the above example FrontScreen) mapped to Object3 to draw in a server-based image file defined previously by changePictureObject3 (in the above example cam-output/image320x200.jpg) to be reloaded from that same file location every 10 seconds. This feature enables support of webcams which in this case would save new images to the file cam-output/image320x200.jpg on the server where the Oworld server is running from.

      Avatar Camera (Avatar Perspective) Settings

    • "avatarCameraName1" value="Full Frontal" the name of the specific (#1 in this case) camera attached to the avatar. Every instance of Meet3D assumes AvatarCameraName0 (camera 0) exists, and that is in-body first person view. This parameter can be used to develop interfaces around setting avatar cameras in the applet or on the entry pages to the applet.
    • "avatarCameraOffset1" value="3124, 17000, -6777, 45, -90" the avatar's moving user camera offset from first person view. This is set as 5 floats (put into two parameters which is kind of awkward but necessary unless we want to add a 'look angle' component (angle around the camera X axis) to the Teleports as well).

      Example from Campbellsan:

      <!--Avatar Camera Settings -->

      <param name="avatarCameraName1" value="Full Frontal">
      <param name="avatarCameraOffset1" value="0,0,2500,180,20">
      <param name="avatarCameraName2" value="Third Person">
      <param name="avatarCameraOffset2" value="0,0,2500,0,0">

      The avatarCameraName should help others understand where the camera is relative to your avatar (note the starting is first person by default). Then, the avatarCameraOffset value works like this (in order):

      avatarCameraOffset Parameters: The x offset (which you shouldn't set or your avatar will not be centered in the camera frame) in MILLIMETERS, The y offset (which you shouldn't set or your avatar will not be centered in the camera frame) in MILLIMETERS, The z offset (which is the distance of the camera from your avatar's eyes) in MILLIMETERS, The y-axis camera offset angle (the axis you look down at your avatar from on top -- commonly called YAW), The x-axis camera offset angle (the axis going from right to left of your avatar --commonly called TILT or PITCH)

      So, in the Full Frontal example above (currently implemented in the URL way above), I am setting the camera 2.5 meters away from my avatar, 180 degrees from behind (which puts me in front), and 20 degrees looking down (to get a nice over the shoulder feel).

      Oh, and if you are wondering WHY MILLIMETERS? Only because Java 1.1 doesn't parse floating points very well from text. I parse the integers and then convert to floats by dividing by 1000.

    Scene Viewpoint Settings

    • "viewpointName1" value="Tea Table" viewpoint in the scene, in this case, next to a "tea table". These viewpoints can be used as targets for teleporters or warpers or initial entry. An interface may exist to roll the user through these viewpoints to "tour" the scene.
    • "viewpointCoords1" value="0,0,0,45,0" the actual coordinates and orientation of the viewpoint


    Entry Viewpoint (and definition of coordinates)

    "entryCoords" value="0,0,0,45,0" an alternative to using the predefined entryViewpoint, this is the entry position off the 0,0,0 (x, y, z) origin point of the world. Java 1.1 does not parse floats or doubles (like Java 2). So, to give more precision, coordinate values are represented at 1000x scale (so, in one example you are setting the coordinate at x=3.000, z=3.000 (a value of 3124 would be 3.124 meters). The angle, this example would have the avatar "facing" 45 degrees off the normal, rather, in degrees counterclockwise (when looking down from overhead the avatar with the positive Y axis out ahead of you). It should be set between -180 and +180 since all other values are redundant.