By Nicole Yankelovich (nicole@openwonderland.org)

Capabilities are features or actions that can be applied to any Open Wonderland object. The Capabilities video provides a good overview of what capabilities are and how they can be used. A set of common capabilities comes bundled with each Wonderland server installation, but others are available to add to your server from the Wonderland Module Warehouse.

Default Capabilities#

Three capabilities, Basic, Position, and Performance, are automatically added to every Wonderland object. Also, all 3D objects have a default Model Component capability, and all 2D objects have a default Best View capability (Best View is also described in the Optional Capabilities section since it can optionally be added to 3D objects).

To access the property sheets for these default capabilities, right click on an object and select "Properties..." from the context menu.

Basic#

When "Properties..." is selected from the context menu, an Object Editor window opens and shows the Basic capabilities property sheet.

Object Name

In this sheet, you can change the name of the selected object to make it easier to find in the Object Editor's Object Hierarchy list.

Interactions

You can also use this property sheet to modify two types of object interactions. Uncheck "Avatar can collide with this object" if you would like avatars to be able to walk through an object. This is often helpful for new users who are still learning to navigate. It prevents them from getting stuck when then bump into an object, but it also decreases realism since avatars can walk through objects rather than collide with them.

If you uncheck "This object can be selected," it will not be possible for a user to right-click on the object and get a context menu. It is a good idea to disable selection on large terrain or building models. This prevents users from accidentally moving or deleting these important models, and makes it much easier for users to select smaller objects in the scene. You can also protect models with security, but disabling selection is an easier way to prevent problems and also helps people with security permission from accidentally moving or deleting objects. Once selection is disabled, the only way to move or delete the object is to open the Object Editor window (Tools --> Object Editor), find the object by name in the Object Hierarchy list, and select it. Once selected, you can use the Position capability to move or resize it, or you can click on the Minus (-) sign under the Object Hierarchy list to delete it.

Position#

The Position capability property sheet allows you to modify the location of an object in the world.

The first set of X, Y, Z fields allows you to move an object along the X, Y, and Z axes. The second set of X,Y, Z fields govern rotation. The Scale field allows you to change the size of an object. You can either click on the spinners (small up and down arrows) to change the field values or you can replace the current values by typing new values in the fields.

Although you will see the changes immediately reflected in-world, the changes will not be maintained unless you click "Apply" to save them.

Performance#

The Performance capability provides an informational display giving you the performance characteristics of the selected object.

Even for those of you not versed in 3D graphics, it is instructive to look the first number (Cell load time) and the last five numbers (Triangle count, Texture count, Geometry size, Texture size, and Render time). If you are experiencing performance problems in your world, you can compare these numbers across objects in your scene. This will help you to figure out which of your objects are causing performance problems. Performance issues can be caused by objects that are very complex (contain lots of triangles or textures) or that use large textures (texture size).

Model Component#

This capability, which is automatically associated with all 3D objects, allows you change several parameters of the 3D object.

Picking Enabled

You will generally want to leave this setting checked. The ability to "pick" a 3D object is used by the avatar system and other parts of the system. If you turn picking off of a terrain object, for example, avatars will appear to sink into the floor since avatars rely on picking to implement floor following.

Lighting Enabled

This is the only setting you are likely to want to change with any frequency. Since Wonderland and some 3D modeling tools like Google SketchUp use different lighting models, unchecking this setting will "turn off" Wonderland lighting on an object and instead use the lighting scheme from the 3D modeling tool.

Lighting Enabled checked
Lighting Enabled unchecked

If you have imported a SketchUp model with any transparent surfaces, you will need to uncheck this setting in order to see the transparency effect in Wonderland.

Backface culling Enabled

This is an advanced setting that has an impact on transparency. If your object has some transparency and it is not rendering correctly in the world after you uncheck Lighting Enabled, unchecking this setting may help.

Graph Optimization Enabled

??

Print Scene Graph

This feature is for advanced users debugging graphics rendering issues. Clicking on the button will print the scene graph in the Java Console window. The output will look something like this:

CellRoot_50 (com.jme.scene.Node)  com.jme.math.Quaternion: [x=0.0 y=-0.70710677 z=0.0 w=0.70710677]
 untitled.dae.gz (com.jme.scene.Node)  com.jme.math.Quaternion: [x=-0.70710677 y=0.0 z=0.0 w=0.7071068]
  ID1 (com.jme.scene.Node)  com.jme.math.Quaternion: [x=0.0 y=0.0 z=0.0 w=1.0]
   SketchUp (com.jme.scene.Node)  com.jme.math.Quaternion: [x=0.0 y=0.0 z=0.0 w=1.0]
    ID2 (com.jme.scene.Node)  com.jme.math.Quaternion: [x=0.0 y=0.0 z=0.0 w=1.0]
     ID3 (com.jme.scene.SharedNode)  com.jme.math.Quaternion: [x=0.0 y=0.0 z=0.0 w=1.0]
      ID3-Material2 (com.jme.scene.SharedMesh)  com.jme.math.Quaternion: [x=0.0 y=0.0 z=0.0 w=1.0]
     ID16 (com.jme.scene.SharedNode)  com.jme.math.Quaternion: [x=0.0 y=0.0 z=0.0 w=1.0]
      ID16-Material2 (com.jme.scene.SharedMesh)  com.jme.math.Quaternion: [x=0.0 y=0.0 z=0.0 w=1.0]

Best View#

All 2D applications, including images, PDFs, whiteboards, sticky notes, and X11 shared apps, automatically have the Best View capability applied. This capability does not have a property sheet, but rather adds a Best View item to the object's context menu.

Selecting "Best View" from the menu fills your screen with the selected object.

You can use the scroll wheel on your mouse or other scrolling mechanism to zoom in and out, keeping the 2D application squarely in your view.

Use the "Esc" key to return to the default 3rd person camera. Using the arrow keys to navigate your avatar also return you to your previous camera view.

Tip: If you plan to take control of a 2D application, use Best View first to center the application in your view and then select "Take Control."

Adding Optional Capabilities#

In addition to the default capabilities, there is a growing collection of optional capabilities you can add to any object. To add an optional capability to an object, right click on the object and select "Properties..." from the context menu.

To add a new capability, click on the Plus (+) sign in the bottom left corner of the Object Editor window.

This will bring up the Add Capability dialog:

The list in this dialog reflects all the capabilities currently installed on your Wonderland server. Select the one you wish to add and click OK. You will now see the capability you added listed in the object's "Capabilities" list. Click on the new capability name to access and edit the property sheet associated with that capability.

Optional Capabilities#

These are some of the most commonly used capabilities that you can optionally add to any object.

Audio#

Audio Capabilities allow you to add either recorded or streaming audio to any in-world object.

Audio Source

Audio can come from three different places: an audio File on your computer; an audio file already stored on the Wonderland server in the Content Repository; or an audio source accessible on the Internet via a URL.

With "File" selected, click on the Browse button to find an audio file on your computer. When you Apply the changes, your audio file will get uploaded to the server so that everyone can hear this audio. This is a good choice to use if you wish to record dialog for virtual characters or have an object play music. Use any audio recording program on your computer to record, and then save your recording in either .au or .mpg format.

Once you have used the File mechanism to upload an audio file, it will be stored indefinitely on the Wonderland server. To see the storage location of your audio file, click back on the "Audio Capabilities" item in the Capabilities list of an object for which you previously uploaded an audio file. The "Content Repository" radio button will now be active and the corresponding field will contain a path such as:

wlcontent://users/Nicole/audio/Buzzing-sound.au

You can copy and save this path to apply to a different object by selecting the "Content Repository" Audio Source and then pasting in the path to where an audio file is stored on the server.

The third audio source is a URL. The URL field allows you to specify an audio stream from the web. Keep in mind that this must be a link to the actual audio stream, not to a web page that plays audio. Typically, on Internet radio web sites, the web pages embed the actual URLs in scripts, so it takes some digging to find the source URLs. Here is a Mozart streaming radio station you can experiment with:

http://listen.radionomy.com/radio-mozart

Volume

The volume slider allows you to set the default audio volume. Users, however, can change the volume by right-clicking on the object and selecting the "Volume" option from the context menu.

Play

This set of choices governs when the audio will play. By default, "Always" is selected. If you rather the audio did not always play, you have two other options. The "When first avatar is in range" option causes the audio to trigger when an avatar walks near the object. It will continue to play until all avatars are completely out of audio range, at which point the audio still stop. The "Manually" option allows users to right click on the radio and select "Play" from the context menu to turn the radio on, and "Stop" to turn the radio off.

In the second two cases, if an audio file is chosen as the source, you also have the option of having the audio only play through once rather than continuously looping. Just check the "Play Once" checkbox if you want to enable this option.

Extent

The extent of the audio refers to the area in which an avatar can hear the audio. That is, it defines when the avatar is "in range." The default audio extent is circular so that the audio can be heard from all directions. The diagram in the Audio Capabilities property sheet shows the audio source in the middle of the circle. The outer ring represents the full extent. You can increase or decrease the overall extent by adjusting the radius of the circle. If you increase the radius, you will be able to hear the radio from farther away. The units specify meters in the virtual world.

You can also opt to have the audio extent correspond to the bounds of the object. This only makes sense for large objects like rooms or vehicles.

To temporarily see the audio extent, click the "Show Bounds" check box. This will place a wireframe around the object to show you exactly where the audio can be heard.

Full Volume Area

In Wonderland, most sounds gradually increase when you approach the sound source. This feature is known as distance attenuation. When you are fairly close by to the source, you hear the audio at full volume. The "Full Volume Area," represented by the dotted circle in the diagram, can be changed to increase or decrease the point at which the audio is heard at full volume. This area is expressed as a percentage of the overall extent.

Characteristics

If you would like the audio to always play at full volume throughout the entire extent, you can change the characteristic to "Ambient." This works well if you want to fill an entire room with audio that is at equal volume no matter where you are in the room. If you select this option, be sure that the extent is set such that an entire space is filled with audio, or perhaps even your whole world. For example, if you want to have the faint sound of birds chirping throughout the world, you could add a bird recording and set the extent to be very large. If your extent is too small, the effect will be jarring because the audio will suddenly start to play at full volume as soon as an avatar is in range.

You will want to keep the "Distance attenuated" option for most audio sources. This provides the realistic effect of audio gradually getting louder as an avatar approaches the audio source and gradually getting softer as the avatar moves away. The fall-off, represented by the outer ring in the diagram, is the area between the full-volume area and the overall extent. You can adjust the fall-off, making it either slower (more gradual), or faster (more abrupt). If you make it slower, you may also need to increase the overall extent to get the effect you want.

Audio Group

The "Audio Group" field allows you to group objects together so that the audio playback can be synchronized. For example, let's say you add a non-player character (NPC) and a music box, and you want the music box to start playing and the NPC to start speaking at the same time. When you add the Audio Capability to each of these two objects, you can specify the same Audio Group name for each, for example, "WelcomeGreeting." All objects with the WelcomeGreeting group name will play at the same time.

Best View#

The Best View capability adds a "Best View" context menu option, and when selected, changes your camera so that the object you are looking at is centered squarely in your view.

You can use your mouse wheel or other scrolling mechanism to zoom in and out on the object, keeping it square. Best View is automatically added to all 2D objects, but you can optionally add it to any 3D object.

Clickable Link is a simple capability that allows you to add a URL to any object.

When a user clicks on an object with the Clickable Link capability applied, a dialog will open allowing them to navigate to the specified URL in an external web browser.

Cone Of Silence#

A Cone of Silence is a sound-proof area. The name is a take-off on the old comedy show, Get Smart. When you apply the Cone of Silence capability, avatars within the bounds of the "cone" cannot be heard outside the bounds. You have the option to allow sound into the cone or make the cone entirely sound-proof. Unlike the Get Smart Cone of Silence, the Wonderland Cone of Silence actually works!

When setting up a Cone of Silence, it is helpful to begin by checking the "Show Bounds" option. This will display a wireframe showing you the exact area that will be sound proof.

You have the option of making the soundproof area the same as the bounds of the object. Alternately, you can specify a radius or a box if the object bounds do not create the effect you have in mind. You can also adjust the Outside Audio Volume slider to allow in some amount of audio from outside the cone.

When avatars move into a Cone of Silence, the names above their heads change from white to gray, providing a visual indication of who is inside the bounds of the cone.

If you wish to add a Cone of Silence to a portion of a larger model, one trick is to add a transparent floor tile that is the approximate size you want for your sound proof area.

In this example, a transparent floor tile has been placed inside the four pillars of a pavilion that is part of a larger model.

Showing the bounds reveals the exact location of the cone.

Container#

Containers are a way to group objects. This is useful if you wish to move a set of objects at the same time. The Container capability does not have a property sheet. When you add this capability to an object, any other objects you add to the world while your avatar is within the bounds of the container object will become associated with that object. In the Object Hierarchy list of the Object Editor window, you will see these child objects nested under the container object.

In this example, the Meeting Complex is a container with lots of items including "BrainstormingPad.kmz," "LandingField," "LandingMeeting Room," etc. "BrainstormingPad.kmz" is also a container. It includes "MIRTLE.png," "Post-it note," and "Whiteboard." As this example illustrates, containers can be nested in other containers.

You can also make an object a container by dragging one object in the Object Hierarchy on top of another. As illustrated in this example, you could drag "LandingField" onto "BrainstormingPad.kmz" to add it to the container.

If the target object is not already a container, it will become a container when you drag another item onto it. This type of container allows you to move the objects as a unit. However, unless you explicitly add the Container capability using the Plus (+) sign, you will not be able to add objects to the container by standing on the object and dropping objects in. You will only be able to add them by using the Object Hierarchy method.

Note that if you move a child object, the parent will not move. For example, if you have a model of a room and make it a container, you can move all the child objects (furniture, documents, etc.) around to re-arrange the room layout. If you want to move the entire room with all the contents, then you will need to move the room itself.

Microphone#

The Microphone capability allows you to turn any object into a microphone that amplifies the voices of avatars in the talk area to any avatars in the listen area.

After applying the capability to an object, you can control the size, shape, and position of the talk and listen areas. Before making any adjustments, it's advisable to click on "Show Listen Area" or "Show Talk Area" to show the bounds of these areas. In the image below, the talk area for the microphone model is displayed.

Name

Use this to re-name the microphone.

Volume

This setting governs how much the voices in the talk area are amplified.

Listen Area

This is the larger of the two areas. It is the space where the audio from the talk area will be amplified.

Talk Area

This area, which typically surrounds the microphone object, is the "pickup area" for the microphone. Any sounds made within the bounds of the talk area will be amplified in the listen area.

Note that the talk area and listen area do not need to overlap.

Listen and Talk Area Settings

By adjusting the Origin of either area, you can move the position of the bounds by the specified offset. For the bounds themselves, you have three choices. You can either use the object bounds, specify a radius (in meters), or specify a box. If the object you have applied the microphone capability to is a model of a microphone, using the object bounds is probably not too useful. If, however, the object is a room, this might be a good choice. Typically, however, you will want to specify either a radius or a box. As mentioned above, the best way to make these adjustments is to display the bounds of the areas so you can see the impact of the changes as you make them.

Placemark#

To facilitate navigation, the Placemarks capability may be added to any object.

Once added, the name that you enter into the Placemark Name field will show up on the Placemarks menu.

All users on the same server will see this menu item. Once selected, a user's avatar will be teleported to the location of the object.

If you move an object that has the Placemarks capability applied, the placemark will move along with it. For example, if you decide to move the entry way to the other side of the room, avatars using the placemark will now appear in the new location.

Portal#

Like Placemarks, Portals are a mechanism to teleport avatars from one location to another.

Once an object has the Portal capability applied, an avatar that collides with the object will be teleported to the location specified in the Portal property sheet:

Server URL

Typically this is the same URL as the server you are currently on. If the field is blank, it will default to the current server. You can, however, specify a portal to a different Wonderland server.

Location

This is the X, Y, Z location where you wish to transport the avatar. To determine the values to enter into these fields, it is often helpful to manually navigate your avatar to the location you wish to use for the far side of the portal. Then select "Add Placemark..." from the Placemarks menu. This dialog box will give you your exact coordinates. Note them down so you can add them to the portal property sheet and then cancel out of the dialog.

Instead of an absolute location, you can click on "Set from placemark..." to have a portal take the avatar to one of your already-defined Placemarks.

Look Direction

When an avatar lands in a location, the avatar is always facing in a particular direction. You can change this direction if the default direction is not suitable. The units for this field are in degrees of rotation.

One trick to figuring out a good value for this field is to record the value from the "Add Placemarks..." dialog as described above. This dialog box will give you your exact coordinates as well as your look direction. Make a note of the look direction value and then go back and re-edit the portal properties to enter this value.

Audio Source

If you want to associate a sound with your portal, a whooshing noise for example, you can specify either an audio file from your computer in .au or .mpg format, an audio file already loaded on the server, or a link to audio file on the Internet. The volume slider allows you to specify how loud to play this audio.

Security#

Wonderland provides the capability of adding security to any object.

Once you add the Security capability, you can specify a list of users and or groups and then specify what permissions each of those people or groups has. For example, you could click on the "Add" button and add the group "Admin."

Admin is now added to the security Permissions table:

When you click on the "Edit..." button you can select the "Modify" rights and then select "Granted" from the pull down menu:

Note that the Modify permissions are hierarchical. You can grant all Modify rights, or you can selectively grant only certain modify permissions.

You can then go back to the Permissions table and select "Everybody" to deny modify rights to everyone else.

Adding Groups

Security is generally easier to manage once you have defined user groups. There are two ways to create groups. From inside of Wonderland, you can select "Groups..." from the Edit menu

When the Edit Groups dialog opens, click on "New Group..." to create a new group.

The New Group dialog allows you to name a group and add individuals to a group.

The other mechanism for adding groups is to use the Manage Group page in the Wonderland Server Admin console.

This works in the same way as the in-world UI.

Sittable#

To enable an object for sitting involves adding the Sittable capability to that object. After you drop a chair into your world, add the Sittable capability. The sitting position can be adjusted using the property sheet for the Sittable capability.

There are two sitting adjustments, Heading and Sit Offset.

Heading

The Heading adjustment is for setting the rotation of the avatar in relation to the chair. The heading value is in degrees and is in relation to the sittable object. This means it will remain consistent even if you rotate the chair.

Sit Offset

The Sit Offset is an amount the avatar sits forward or backward in relation to the sittable object. This value is in meters and is relative to the center of the object. It is a value along the heading line and will remain consistent when the object is rotated. A setting of about 0.5 works well for most chairs, although the chair in this example is rather deep, so a setting of 1 works best.

Making the Avatar Sit

There are two possible ways to make the avatar sit. One is through the object’s context menu and the other is by mouse click. The context menu is displayed by clicking on the object with the right mouse button. After sitting has been enabled on an object, you will see a “Sit Here” command appear in the context menu.

The other way to have the avatar sit is by using a mouse click. Click the “Enable Mouse” button in the Sittable property sheet.

Next, select which mouse command you wish to map to sitting. If you select “Middle Mouse,” for example, clicking on the chair with the middle mouse button will cause your avatar to navigate to the chair and sit.

For fun, walk a short distance away from your chair and select the “Chase Camera” from the View menu before you sit. There’s no special path following implemented yet, so be sure there are no obstacles in your avatar’s way before issuing a sit command.

Tooltip#

You can add a tooltip to any object using the Tooltip capability.

The text can either be plain text or html markup.

If you use HTML markup, you can even include images in your tooltips.

If you would like your tooltips to disappear either faster or slower than the default 2,000 milliseconds, you can check the box and change the value.

EZScript#

You can allow javascript-style programming and rigging of an object with the EZScript capability. This capability allows one to handle and react to events such as mouse clicking, key pressing, and avatar proximity. Among the many commands are playing collada baked animations, animating simple transforms such as translation, rotation, and scaling, as well as playing sounds and highlighting objects just to name a few. The most up-to-date information on the EZScript API can be found here (under the 'cell scripting' tab) : Developer Resources


This material is distributed under the GNU General Public License Version 2

Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
png
BestView-PDF.png 293.9 kB 1 06-Mar-2011 23:57 Nicole Yankelovich
png
BestViewMenu-PDF.png 385.6 kB 1 06-Mar-2011 23:57 Nicole Yankelovich
png
BestViewMenu.png 127.1 kB 1 06-Mar-2011 04:29 Nicole Yankelovich
png
ClickableLinkDialog.png 12.6 kB 1 06-Mar-2011 23:57 Nicole Yankelovich
png
ConeBounds.png 319.8 kB 1 06-Mar-2011 23:58 Nicole Yankelovich
png
ConeBoundsGrayName.png 169.1 kB 1 06-Mar-2011 23:58 Nicole Yankelovich
png
ConeBoundsSoundProofPav.png 521.2 kB 1 06-Mar-2011 23:57 Nicole Yankelovich
png
ContainerHierarchy-manual-add.... 58.8 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
ContainerHierarchy.png 62.2 kB 1 06-Mar-2011 23:57 Nicole Yankelovich
png
EditGroupsDialog-NewGrp.png 17.9 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
EditGroupsDialog.png 17.6 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
EditGroupsMenu.png 17.2 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
ManageGroups-ServerAdmin.png 89.0 kB 1 06-Mar-2011 23:55 Nicole Yankelovich
png
MicTalkBounds-2.png 250.3 kB 1 06-Mar-2011 04:28 Nicole Yankelovich
png
Placemarks-menu.png 40.7 kB 1 06-Mar-2011 23:57 Nicole Yankelovich
png
PortalWalkThrough.png 466.3 kB 1 06-Mar-2011 04:28 Nicole Yankelovich
png
PropertiesClickableLink.png 47.7 kB 1 06-Mar-2011 04:29 Nicole Yankelovich
png
PropertiesCone-trans-sq.png 63.7 kB 1 06-Mar-2011 23:57 Nicole Yankelovich
png
PropertiesConeOfSilence.png 62.4 kB 1 06-Mar-2011 23:58 Nicole Yankelovich
png
PropertiesJapVaseBasic.png 59.4 kB 1 06-Mar-2011 04:27 Nicole Yankelovich
png
PropertiesMenu.png 162.9 kB 1 05-Mar-2011 23:34 Nicole Yankelovich
png
PropertiesMenu2.png 164.0 kB 1 06-Mar-2011 02:50 Nicole Yankelovich
png
PropertiesMic.png 75.7 kB 1 06-Mar-2011 04:28 Nicole Yankelovich
png
PropertiesModelComp.png 58.3 kB 1 06-Mar-2011 04:29 Nicole Yankelovich
png
PropertiesPerformance.png 66.0 kB 1 06-Mar-2011 04:29 Nicole Yankelovich
png
PropertiesPlacemark.png 46.8 kB 1 06-Mar-2011 04:28 Nicole Yankelovich
png
PropertiesPortal.png 66.4 kB 1 06-Mar-2011 04:29 Nicole Yankelovich
png
PropertiesPosition.png 60.1 kB 1 06-Mar-2011 04:30 Nicole Yankelovich
png
PropertiesSecurity.png 71.7 kB 1 06-Mar-2011 04:28 Nicole Yankelovich
png
PropertiesTooltip.png 55.0 kB 1 06-Mar-2011 04:27 Nicole Yankelovich
png
RadioPlay.png 44.9 kB 1 07-Mar-2011 03:36 Nicole Yankelovich
png
Security-AddGroup-Edit-Grant-o... 18.6 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
Security-AddGroup-Edit-Grant.p... 19.1 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
Security-AddGroup-Edit.png 60.9 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
Security-AddGroup.png 9.7 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
Security-Users-Edit-Denied-ok.... 18.3 kB 1 06-Mar-2011 23:56 Nicole Yankelovich
png
TooltipOnRadio.png 182.9 kB 1 06-Mar-2011 04:27 Nicole Yankelovich
png
sit-default-props.png 55.5 kB 1 07-Mar-2011 04:04 Nicole Yankelovich
« This page (revision-20) was last changed on 21-Sep-2015 12:28 by Abhishek Upadhyay