Worlds.com

     |  Development Kit Table of Contents  |

Gamma Shaper Procedures


1. Getting Started


2. Objects


3. Textures, Text and Colors


4. New Rooms and Connecting Rooms


5. Libraries


Gamma Procedures - Advanced
Includes how to package a world, use 3D Studio Max files, and procedures for creating various cool things in a 3D world.


Creating a New World

To create a new world, follow these steps:

  1. From the File menu, choose New to open a new world.
  2. A new world opens with a limited view of the yellow and red walls, plus a portion of the green floor and blue ceiling. Click Drive to move around in the room.
  3. The world is called World1 until you save it with another name. Any subsequent new worlds you open will be numbered consecutively (World2, World3, etc).

Top of Page


Naming a World

World names must be unique to be correctly identified by the Server. To name a world, follow these steps:

  1. Scroll up the Hierarchy Tree to the very top. The default world name is listed there (e.g. World1)
    IMPORTANT NOTE: If you change worlds while your working, the Hierarchy Tree does not automatically change to the current world you're in. You must right-click anywhere in the world and then click Edit Properties to make sure the Hierarchy Tree updates.
  2. Click on the world name at the top of the Hierarchy Tree to bring up the World Properties in the Properties Box.
  3. Double-click the Name property.
  4. In the Edit Name box, enter a unique name to identify the world. You can use the same name here as for the .WORLD file you'll save, but this isn't required.
  5. Click OK.
  6. Save your world.

Top of Page


Saving a World File

NOTE: Before saving a world file to disk, you should name the world in its World Properties as detailed in the first section of this document. You will be prompted to save a world before quitting Gamma, with a separate prompt for each world you've made changes in. As with all programs, save early and save often.

To save a World file, follow these steps:

  1. From the File menu, choose Save. The Save World box opens.
  2. World files should be saved in a project subdirectory within the \InternalWorldsPlayer directory.
  3. Enter a filename with the extension .WORLD.
  4. World names must be unique to be correctly identified by the Server.
  5. Click Save.

Top of Page


Making Your World Multiuser

You most likely will want to make your world Multiuser so that people can see each other when they're online in your world. To make your world multiuser, follow these steps:

  1. Scroll up to the very top of the Hierarchy Tree for your world.
  2. Click on the world name at the top to bring up the World Properties in the Properties Box.
  3. Double-click Multiuser under World Properties.
  4. Select "yes" in the Edit Multiuser box and click OK.
  5. Save your world.

Top of Page


Naming an Object

To name an object, follow these steps:

  1. Right-click an object in the 3D window to select it. The object's Properties list appears in the Properties Box.
  2. Double-click the Name property. The Edit Name box opens.
  3. Enter a descriptive name to identify the object.
  4. Click OK.

The name you have entered appears in the object's Name property and will also appear in the Hierarchy Tree.

Top of Page


Deleting an Object

To delete an object, follow these steps:

  1. Right-click an object in the 3D window to select it. The object's Properties list appears in the Properties Box. Make sure that the object is selected in the Hierarchy Tree (it should have a yellow rectangle around it). Alternatively, if you want to delete an object like an Action that can't be selected by right-clicking, navigate the Hierarchy Tree and select the object you want to delete.
  2. Click Delete (the Delete button is to the right of the Properties Box.

Top of Page


Adding a Wall, Floor, or Ceiling

To add a wall, floor, or ceiling, follow these steps:

  1. Move up or down the Hierarchy Tree to reach the Contents list of the Room Environment properties.
  2. Click on the Objects tab in the Libraries section.
  3. Click on the object in the library you wish to add and drag it to the Room Environment Contents in the Hierarchy Tree. A new object will be listed under the Room Environment Contents.

Top of Page


Adding a Shape

You can import shapes built in a 3D modeling program into Gamma. The shape must first be converted to the appropriate .RWX or .RWG file format.

To add a shape, follow these steps:

  1. Move up or down the Hierarchy Tree to reach the Contents list of the Room properties.
  2. Click on the Objects tab in the Libraries section.
  3. Click on Shape (empty) in the library and drag and drop it into the Room Contents in the Hierarchy Tree. A new shape will be listed under the Room Contents, and a semi-transparent cube will appear in your room at 0,0,0.
  4. Click the new Shape item in the list. The Shape Properties appear in the Properties Box.
  5. Double-click the File property listed under Shape Properties.
  6. Enter the appropriate relative path and filenname (e.g. tex/table.rwg) and click OK. The filename is added to the File property in the Shape Properties list, and the cube changes into your object. Depending on the method used to convert the file, it may be too small (or too big) to see.

Scaling and Moving a Shape

To scale and move your object, follow these steps:

  1. In the Shape Properties list, double-click Transform. The Edit Transform box opens.
  2. Type a number in the [N]: field and click Scale by [N] (N=2 will double the objects size each time the Scale by [N] button is clicked). The 3D shape should now be visible in the room at 0,0,0. You can use the Transform box again, or the Scale and Move buttons above the Properties Box, to scale further or move the shape to a new location.

Top of Page


Moving Objects

The Shaper offers three different methods for moving objects in 3D space, each with different advantages:

  • Use the Move buttons above the Properties Box for speed and intuitive visual movement.
  • In the Rect Properties, edit the From and To properties to move a wall, floor, or ceiling with precision if you know the exact final location. These properties do not apply to 3D shapes.
  • Edit the Transform property to move any type of object incrementally and precisely.

To move objects to a different level of the Hierarchy Tree, or a different room, use the cut and paste commands.

Starting with GDK 1826, there is also a Snap Tool which will allow you to set a snap increment for objects. This feature will place objects such that their origins are at some multiple of that increment. For example, if you set an increment of 50 for x and y, you could place objects at (150, 250) but not at (229, 510). The tool will snap the object to the nearest point that matches the criteria. To activate or change the snap increments, go to the Edit Menu, Snap Tool Settings.

Using the Move Buttons

  1. Right-click an object in the 3D window to select it.
  2. Click one of the buttons above the Properties Box: hold the mouse button down and drag. As you drag, the selected object moves in the 3D window.

The Move Horizontal button equates mouse movement with x=left/right and y=forward/back.

The Move Vertical button equates mouse movement with x=left/right and z=forward/back.

The Pitch button equates mouse movement with pitch=left/right and ignores forward/back input. Pitch revolves the object around the x axis.

The Roll button equates mouse movement with roll=left/right and ignores forward/back input. Roll revolves the object around the y axis.

The Yaw button equates mouse movement with yaw=left/right and ignores forward/back input. Yaw revolves the object around the z axis.

The Scale button takes any mouse movement from the initial point and sizes the object smaller on left or back, larger on right or forward.

Editing the From and To Properties

This method is most useful when you need to fit an object into a specific position. The From property identifies the x,y,z coordinates of the bottom left corner of an object. The To property identifies the coordinates of its top right corner. Changing the positions moves an object.

(If you also change the relationship between the positions, the object will be resized as well as moved. Check the Extent property to see whether the width or height has changed as a result of changes to the From and To properties. Click the Undo button above the Properties Box if you have changed the object in ways you did not intend.)

To edit the From and To properties, follow these steps:

  1. Right-click an object in the 3D window to select it and bring up the Rect Properties.
  2. In the Rect Properties list, double-click the From property.
  3. Enter new x,y,z coordinates in the Edit From box, and click OK. You can either place commas or single spaces between numbers for x, y and z.
  4. In the Rect Properties list, double-click the To property.
  5. Enter new x,y,z coordinates in the Edit To box, and click OK.

Editing the Transform Property

  1. Right-click an object in the 3D window to select it and bring up the Rect Properties.
  2. Double-click the Transform property on the right side of the Properties box. The Edit Transform box opens. This offers a matrix of possible transformations that Gamma applies to the object, using the coordinates or amounts that you specify in the [X,Y,Z] and [N] fields at the top of the box.
  3. Enter values for [N] and/or for [X,Y,Z]. The meaning of these values depends on the option you choose next.
  4. Click one of the following options:

Moving to an exact location or moving in increments

In the following cases, N is the distance in units to move the object. A negative number is acceptable if you wish to move the object down the x, y, or z axis.

  • Move x by [N] moves the object N units along the x axis.
  • Move y by [N] moves the object N units along the y axis.
  • Move z by [N] moves the object N units along the z axis.
  • Move by [X,Y,Z] moves the object on all three axes simultaneously, with the values for x, y, and z representing distance in units to be moved from the object's current position.
  • Move to [X,Y,Z] moves the object on all three axes simultaneously, with the values for x, y, and z representing the destination coordinates.

Pitch, roll and yaw: changing an object's orientation

In the following cases, N is the angle in degrees to revolve the object. A negative number revolves in the opposite direction.

  • Pitch [N] revolves the object N degrees around the x axis.
  • Roll [N] revolves the object N degrees around the y axis.
  • Yaw [N] revolves the object N degrees around the z axis.

Mixed rotations

In the following cases, N is the angle in degrees to revolve the object, and x, y, and z indicate the axis of spin. For example, [0,0,1] spins on the vertical z axis. A negative number for either value, such as [0,0,-1] (for x, y, and z) or -1 (for N), revolves in the opposite direction.

  • Spin by [X,Y,Z,N] revolves the object N degrees beyond its current position around the specified axes.
  • Spin to [X,Y,Z,N] revolves the object N degrees beyond its original position around the specified axes.

Scaling to exact measurement

  • Scale to [X,Y,Z] scales the object to those exact measurements along each of the axes.

Scaling by a factor

  • Scale X by [N] takes the existing X measurement and multiplies it by N. If N is greater than one, the object will stretch on the x axis away from the object's registration point (where the red dot shows up when the object is selected). If N is less than one, the object will contract towards ther registration point.
  • Scale Y by [N] takes the existing Y measurement and multiplies it by N. If N is greater than one, the object will stretch on the y axis away from the object's registration point (where the red dot shows up when the object is selected). If N is less than one, the object will contract towards the registration point.
  • Scale Z by [N] takes the existing Z  measurement and multiplies it by N. If N is greater than one, the object will stretch on the z axis away from the object's registration point (where the red dot shows up when the object is selected). If N is less than one, the object will contract towards the registration point.
  • Scale X, Y, Z by [N] applies an N proportional scaling to all axes of the object at once, again with N values larger than one making the object larger, values less than one making the object smaller.

When you're finished in the Edit Transform box, click OK.

Top of Page


Scaling an Object

The Shaper offers three different methods for scaling objects, each with different advantages:

  • Use the Scale button above the Properties Box for speed and intuitive visual movement.
  • Edit the From, To, or Extent properties to scale a wall, floor, or ceiling with precision if you know the exact final position or size. These properties do not apply to 3D shapes.
  • Edit the Transform property to Scale any type of object incrementally and/or precisely.

Top of Page


Cutting and Pasting Objects

Use the Cut and Paste commands to move objects from one room to another, or to a different level of the hierarchy. For example, you can cut objects from the Room Contents and paste them into the Room Environment Contents. To cut and paste an object, follow these steps:

  1. Right-click an object in the 3D window to select it. Make sure that the object is selected in the Hierarchy Tree (has a yellow rectangle around it). If not, click on the object listed in the Hierarchy Tree to select it.
  2. Click the Cut button above the Properties Box. The object disappears from the 3D window.
  3. Move up or down the Hierarchy Tree and select the Contents list where you want to insert the object.
  4. Click the Paste button above the Properties Box.

The object is pasted at the same location in the 3D window, and appears at the new location in the Hierarchy Tree.

Top of Page


Copying Objects

To copy an object, follow these steps:

  1. Right-click an object in the 3D window to select it. Make sure that the object is selected in the Hierarchy Tree (has a yellow rectangle around it). If not, click on the object listed in the Hierarchy Tree to select it.
  2. Click the Copy button above the Properties Box.
  3. Click the Paste button above the Properties Box.

The copy is pasted on top of the original at the same location in the 3D window. The copy is listed below the original in the Hierarchy Tree and is now selected. You can now move it to a new location using the Transform property or one of the Move buttons above the Properties Box. If you wanted the copy to be in a different position in the hierarchy, select the intended location in the Hierarchy Tree, then Paste there.

Top of Page


Grouping Objects (WObjects)

To group objects together (make a WObject), follow these steps:

  1. In the Objects Library, you'll see Grouper. Click on the Grouper and drag and drop it to the level of the Hierarchy Tree where you want your grouped objects to be (e.g. Room Contents, Room Environment Contents or Infinite Background Contents). A WObject gets added to the Hierarchy list, and a red dot appears at 0,0,0 to mark the default position of the new WObject.
  2. In the Hierarchy Tree, click on the triangle to the left of the new WObject to display its deeper properties.
  3. Now you can click and drag objects from the Objects Library to add them to the Contents of the WObject.
  4. Once all of the objects have been added to the WObject, any scale and/or move operations performed on the WObject will affect all the grouped objects together.
  5. NOTE: Currently the Visible property of a WObject does not work. If you wanted the WObject invisible, you would have to set the Visible property of each individual object within the WObject.

Top of Page


Infinite Backgrounds

To add objects to the Infinite Background:

  1. In the Hierarchy Tree, one of the deeper properties of your Room is Infinite Background. Scroll through the Hierarchy to locate your Room's Infinite Background.
  2. From the Objects Library, drag and drop a Grouper to the Infinite Background listed in the Hierarchy. A new WObject is added to the contents of the Infinite Background.
  3. Click the triangle to the left of the newly added WObject to reveal its deeper properties.
  4. From the Objects Library, click and drag whatever objects you need (walls, floor, ceiling) to the Contents listed beneath the new WObject.

Use only as many objects as you need in the Infinite Background for a particular room. For instance, if you have a room with only one window opening to the east, you may need only one west-facing wall in the Infinite Background to show a scene through that window. If you have a skylight, perhaps a single ceiling will suffice for an Infinite Background. For an outdoor scene, you may well need many walls and ceilings and perhaps even a floor. Drawing Infiinte Backgrounds will slow down the rendering speed of a room at least slightly.

  1. In the Hierarchy Tree, click on the WObject to bring up the WObject Properties in the Properties Box.
  2. Double-click Transform listed under WObject Properties.
  3. Enter the numbers -500,-500,-120 in the [X, Y, Z] field.
  4. Click the Move by [X, Y, Z] button, then click OK.

These last three steps needed to be performed because the Infinite Background is viewed from a Camera at 0,0,0. As a result, the Infinite Background floor and some walls would not be visible if you hadn't moved the WObject so that 0,0,0 became the center of the Infinite Background room.

  1. Texture or size the walls as you desire.

One reason to group your Infinite Background objects within a WObject is so that you can easily take this entire WObject, Copy it, and Paste it into any other rooms where you want an Infinite Background. You can build all of your walls individually in the Infinite Background's Contents, rather than embedding them in a WObject, but then all of the walls will have to be moved individually.

Top of Page


Holograms

A hologram is a multisided flat texture, which is created by supplying a set of images, one for each side. There are several ways to specify a Hologram's image file(s).

First, you can specify a single .cmp file. This makes a one-sided Hologram, colloquially known as a facer. This is useful for radially symmetric objects, that look the same from any angle. It's the cheapest, quickest way to make a 3d-looking object. This .cmp name can be a high-res name using the "file2v*.cmp"-type naming system mentioned in the section above, which then uses multiple .cmp files as the parts of the single image.

Second, you can specify a set of .cmp files, one for each side of the image. To do this, make a name like "file2s*.cmp". The digit specifies the number of sides. The files actually loaded are file1.cmp, file2.cmp, etc. This may be used in conjunction with the high-res naming system; for instance, the name "file2s*2v*.cmp" causes the files file111.cmp and file121.cmp to be used for the two parts of the first side, and file211.cmp and file221.cmp to be used as the two parts of the second side. That is, the first of the three ending digits is the side number, and the last two digits are the vertical and horizontal segment numbers for the high-res feature.

Third, the most commonly useful method is to make a .mov file that contains one image per side, or if hi-resolution, multiple images per side. The easy way to do this is to use the hiresmov.bat program. To use this, you'll have to be sure to first add your gdk\bin directory to your PATH in c:\autoexec.bat, and reboot your machine, if it isn't already there. Then, name your images starting with name1.bmp, such as name2.bmp, etc. Then run:

    hiresmov name1.bmp

This produces a file name.mov; the last line printed by the command shows you the proper syntax to use in Gamma when using this mov in a hologram. For instance, it might say:

    Use name.mov in a Hologram as name5s*2h*2v*.mov.

The mov is made with a default lossiness value of -l7,5. This is a good compromise value for most purposes, but if you'd like a higher quality image at the expense of file size, add a different value to the line, in double quotes, like this:

    hiresmov name1.bmp "-l5,3"

Fourth, you can make a .mov file "by hand", by using compimg directly rather than having hiresmov.bat do it for you. Use a command like:

    compimg -c255 -r0 -f0 -l7,5 -t -ow -emov -Mavname +avname.lst

This uses a text file called avname.lst that lists the .bmp files that will be converted into cmps within the .mov, to produce the file avname.mov. Here's an example avname.lst file:

   avname1.bmp
   avname2.bmp
   avname3.bmp
   avname4.bmp

To use a high-res mov file, you must supply cropping information, with numbers appropriate to the -C compimg option on each line. You must also duplicate lines in the avname.lst file to match. For instance, to split each 128x256 bmp into two vertical pieces, you could use this crop.lst file:

   0,0,0,128
   0,128,0,0
   0,0,0,128
   0,128,0,0
   0,0,0,128
   0,128,0,0
   0,0,0,128
   0,128,0,0

and this avname.lst file:

   avname1.bmp
   avname1.bmp
   avname2.bmp
   avname2.bmp
   avname3.bmp
   avname3.bmp
   avname4.bmp
   avname4.bmp

Add the option -CLcrop.lst to the command line to compimg use this crop.lst.

Top of Page


Applying Textures to an Object

A texture must be saved in an appropriate file format (.cmp or .bmp) before you can apply it to an object. Also, place all your textures in a subdirectory within your project folder (e.g. C:\InternalWorldsPlayer\MyWorld\textures). To apply a texture, follow these steps:

  1. Right-click the object in the 3D window to select it. The Rect Properties for the object appear in the Properties Box.
  2. In the Hierarchy Tree, click on the triangle to the left of the selected rect to display the deeper properties like Material.
  3. Click the triangle to the left of Material. The Material Properties list appears in the Properties Box.
  4. Click on Texture listed beneath Material. The MaterialTexture Properties list appears in the Properties Box.
  5. Double-click File. The Edit File box opens
  6. Type in the relative texture path and a filename (e.g. textures/floor1.cmp) and click OK.

The texture appears on the object in the 3D window, scaled to fit the object with a single image. You can change the tile size of the rect to repeat the image at a different scale.

Top of Page


Changing the Tile Size

To change the tile size, follow these steps:

NOTE: Tile Size is a property of the wall itself, rather than one of the material properties of the wall.

  1. Right-click the textured rect in the 3D window to select it and bring up the Rect Properties in the Properties Box.
  2. Double-click Tile Size listed under Rect Properties. The Edit Tile Size box opens.
  3. Type in the desired width in units of a single tile, followed by the height in units. You can use 0 for either the x or y to indicate that you want the selected texture to stretch the full width or height of the object, or 0,0 to stretch the texture to fit on the object exactly once. Note that this may introduce distortion.
  4. Click OK.

Top of Page


Changing the Color of an Object

To change the color of an object, follow these steps:

  1. Right-click the object in the 3D window to select it. The Properties list for the object appears in the Properties Box.
  2. In the Hierarchy Tree, click on the triangle to the left of the selected rect to display the deeper properties like Material. The Material Properties list appears in the Properties Box.
  3. Double-click Color listed under Material Properties. The Edit Color box opens, showing current values for red, green, and blue.
  4. Type in new values for each color in the mix, in the range 0- 255.
  5. Click OK.

Top of Page


Adding Text to a Wall

To add text to a wall, follow these steps:

  1. Right-click the wall in the 3D window to select it.
  2. In the Hierarchy Tree, click on the triangle next to the selected wall to display the deeper properties like Material.
  3. Click the triangle to the left of Material. The Material Properties list appears in the Properties Box.
  4. Click on Texture listed beneath Material. The MaterialTexture Properties list appears in the Properties Box.
  5. Double-click Texture Type listed in the MaterialTexture Properties.
  6. In the Edit Texture Type box, select "Texture created from a text string" and click OK.
    Note: If you later decide to remove the text and use a texture file instead, this property must be reset first.
  7. In the Material Texture Properties, double-click Text.
  8. In the Edit Text box, type in the text that will appear on the wall, and click OK.

The text string appears on the wall. Click the Drive button and move around the room to check the appearance of the text. If necessary, you can adjust it by editing the following properties in the Material Texture Properties list:

  • Font lets you enter the name of a font. You must check this against a list of the fonts present on your (or the end-user's) system.
  • Size controls the font size of the text, and should be set to one of the available font sizes for your system, but not greater than 48. Because the text is scaled to 128x128 pixels, the font size will affect resolution rather than the actual text size. Choose the smallest size that is effective.
  • Foreground Color sets the color of the text itself, based on values for red, green, and blue.
  • Background Color sets the color of the wall behind the text, based on values for red, green, and blue.

Top of Page


Compressing Textures

While creating a world, it's most convenient to use .rwx files for models, and .bmp files for textures. These formats are too large for final use; instead use rwx2rwg.exe to convert models to .rwg files, and use compit and its variants to convert textures to .cmp files or .mov files.

To produce a .cmp from a .bmp file like file.bmp, use the command:

compit file

The result is a file.cmp that Gamma can load in place of the original .bmp. Gamma will always scale the image to 128x128 internally, so any higher resolution you use for the input .bmp will just be wasted.

"compit" is a .bat file in the bin directory, you can look at it to see which options it uses with compimg. You may run compimg by hand to change these; for instance, you could run it with the -l0,0 option instead of the default, in order to use less compression and get a higher-quality final image. Note however that the default is chosen as the usual best compromise of quality and file size.

If your image has transparency, use:

compit file -t

This uses the color of the image's upper-left pixel as the transparent color; any matching pixels are flagged in the cmp as transparent. The resulting cmp can take the place of a .bmp texture with a .bmp mask, in an rwx file; in fact, when producing an rwg from an rwx, you must convert any texture+masks to single cmps-with-transparency.

To convert high-res images (images that have 256 pixels in one or both dimensions) into Gamma-approved 128x128 pieces, use one of the following .bat files:

    comp2h file    <-- Splits 256-wide x 128-tall into side-by-side pieces.
    comp2v file    <-- Split 128-wide x 256-tall into top-and-bottom pieces
    comp2h2v file  <-- Split 256x256 into four pieces in a 2x2 arrangement.

If your .bmp is odd sized (i.e. not an even multiple of 128), you'll need to use a hand-crafted compimg call instead of one of these .bat files, since the different size will throw off the crop amounts that these use.

Each of these produces a single file called file.mov containing all the pieces. Load the image into the Texture of a Rect in Gamma as follows: add 2h*2v* to the basename. For instance, use the texture name "file2h*2v*.mov" to cause the output of comp2h2v above to be loaded into a Rect. Or use file2v*.mov to use the output file.mov from comp2h above. You may use these names when animating Rects, too.

If your image has transparency, you can add the -t option to the above. For instance, "comp2h file -t". This uses the color of the pixel in the upper-left corner of the image as defining tranparent color.

In rwx files, one can refer to textures without an extension, in which case the .bmp of that name is used. Or one can specify an extension, in which case any of bmp, cmp, jpg, or gif can be used. However, mask textures in rwx files must always specify a .bmp extension.

Top of Page


Creating a New Room

To create a new room, follow these steps:

  1. Scroll up in the Hierarchy Tree until you can see Rooms listed near the top.
  2. From the Objects Library, click and drag a Square Room into the Rooms section of the Hierarchy Tree.
  3. A new Room has been added to the Rooms list. You can now edit the properties of the new room (it is selected in the Hierarchy Tree), but the 3D window still displays the previous room. Until you have connected the two rooms with portals, the only way to view and navigate in the new room is to use the Change Location option under WorldsMarks (described in the next steps).
  4. Click on the WorldsMarks button on the left side of the 3D viewer, and choose Change Location.
  5. In the Change Location edit box, you'll see the current room listed within the URL. Change that to the room you would like to go to. For example, if you are in Room1 and you want to go to Room2, change the "Room1" part of the URL to "Room2" and click OK.

Top of Page


Creating Portals

The simplest way to open a portal in an existing wall is to delete the wall and replace it with another wall containing a portal.

  1. Right-click a wall in the 3D window to select it. If the wall is not selected in the Hierarchy Tree (a yellow rectangle around it), click on its name listed in the Hierarchy Tree to select it.
  2. Click Delete (to the right of the Properties Box). The selected wall disappears.
  3. From the Objects Library, click and drag a wall/portal object to the Room Environment Contents of the Hierarchy Tree. For example, if you've deleted a Cyan wall, you'll want to drag and drop an East Wall/Portal object into the Room Environment Contents listed in the Hierarchy Tree.

Top of Page


Connecting Portals

Note: You must create both Portals first before trying to connect them, referring to each portal by name. Note that you can create the second room (and its corresponding portal) while still in the first room -- see Tutorial 1: Lesson2 for detailed instructions.

To connect one portal to another portal, follow these steps:

  1. Right-click on a room's portal to bring up its Portal Properties in the Properties Box.
  2. In the Portal Properties, double-click on Destination Portal Name.
  3. Type in the name of the destination room's portal and click OK.
  4. Double-click on Destination Room Name.
  5. Enter the name of the room whose portal you're connecting to and click OK.

To connect the destination portal back to the current room, walk into the newly connected room through the portal you just connected, turn around and select the destination portal. Follow the steps above, connecting the destination portal and name to the current room.

NOTE:If you ever see this type of message:

Portal Portal331 specifies a connection to null#Room#SomePortal which isn't a portal!

you've most likely misspelled either the Destination Room Name or the Destination Portal Name. Make sure that you have typed in the names exactly - upper and lower case letters, blank spaces, etc.

Top of Page


Connecting Worlds

To connect two worlds, you will need to add a RemotePortal action to the portals that are going to be connecting the two worlds.

NOTE: Currently there are Remote Portals listed in the Objects Library. These are obsolete and will be removed in a future version of the shaper.

To connect two worlds via portals, follow these steps:

  1. Follow the instructions above for creating and connecting portals. You'll notice that in this case the portals don't automatically connect. In addition to entering the Destination Room Name and Destination Portal Name, you also need to enter the Destination World URL.
  2. Under the Portal Properties, double-click on Destination World URL.
  3. In the Edit box, either select the destination world from the list, or type in:
    rel:home:subdirectory/worldfile
    filling in "subdirectory" and "worldfile" with the relevant information for the destination world. For example:
    rel:home:Tutorial/MyWorld.world
    The portals will now appear to work, but don't walk through the portal yet. It's easier to finish the process on this portal first before walking through to the other world.
  4. From the Actions Library, drag and drop a RemotePortal action to the portal you're working with listed in the Hierarchy Tree. An RPAction should now be listed under the portal's Actions list. (See Adding an Action for further information)
  5. You now need a trigger for the RPAction. From the Behaviors Library, drag and drop a SameRoom sensor to the portal you're working with listed in the Hierarchy Tree. A SameRoomSensor should now be listed under the portal's Event Handlers list. (See Adding a Behavior for further information)
  6. Click the triangle to the left of the new SameRoomSensor listed in the Hierarchy Tree.
  7. Beneath SameRoom sensor, click on Targets.
  8. To the right of the Properties Box, click on the Add button.
  9. In the Add to Targets box that comes up, select the RPAction you just added to the portal and click OK. Now the next time you load this world and enter this room, the other world you have connected to will load.
  10. Save your world.
  11. Walk through the portal and repeat the above steps with the connecting portal in the other world.

If a world you are connecting to takes awhile to load, you will see a default solid color where the portal is until the world has finished loading. To avoid this, you must add a texture to the portal itself. You will only see the texture when the world on the other side is loading. To add a texture to a portal, follow these steps:

  1. In the Hierarchy Tree, find the portal you want to add a texture to.
  2. Click on the triangle to next to it to reveal further properties.
  3. Click on the triangle next to Material listed beneath the portal.
  4. Click on Texture to bring up the MaterialTexture Properties in the Properties Box.
  5. Double-click File listed under the MaterialTexture Properties.
  6. In the Edit File box, type the relative path of the texture. For example:
    tex/wall1.cmp
    and click OK.
  7. You won't see the texture if the world on the other side has already loaded.

Top of Page


Adding an Item from a Library

The libraries can be viewed with icons or just with text. Under the Libraries menu at the top of the Shaper, click on Icons On/Off to toggle between the icons and text.

All of the libraries use the same "drag and drop" method to add a library item to an object. To add an item from a library, follow these steps:

  1. Scroll up or down the Hierarchy Tree to find the object or property to which you want to add a library item.
  2. Click on the appropriate Library tab (Objects, Actions, Behaviors) in the Shaper to view a library catalog.
  3. In the library, click on the item you want, holding down the mouse button, then drag it to the Hierarchy Tree and drop it (release the mouse button) in the appropriate section of the Hierarchy. The following four sections will help you with the specifics for adding Objects, Textures, Actions and Behaviors.

Top of Page


Adding an Object

To add an item from the Objects Library, follow these steps:

  1. Items in the Objects Library can be added to three places in the Hierarchy:
    • Room Contents
    • Room Environment Contents
    • Infinite Background

Most objects can also be added to the contents of WObjects. Scroll through the Hierarchy Tree until you can see the place where you want to add the object.

  1. Click the Objects tab in the libraries section of the Shaper to see the catalog of Objects.
  2. In the library, click on the object you want, holding down the mouse button, and drag it to the spot in the Hierarchy where you want the object. Release the mouse button. The object you selected is added to the Hierarchy tree with a default name, and the object's properties appear in the Properties Box.
  3. If you would like to give your object a distinctive name, double-click on Name in the Properties Box and enter a new name in the Edit Name box. Click OK.

If you have chosen a Shape from the Object Library, the Shape is added at location 0,0,0. Edit its Transform property to move it to a new location and/or scale it to the correct size.

Top of Page


Objects Catalog

·  Parameters common to all objects

·  Objects:


Parameters common to all objects

There are seven parameters that all Objects share in common. These are:

  • Name
    This is simply the name you choose to give the Object. The Name you give an object appears in the Hierarchy Tree.
  • Transform
    Transform is the position, scale and rotation of an object. The Edit Transform box allows you to move, rotate and scale walls, floors, and ceilings.
  • Bumpable
    Turns on and off the wall's bumpability. When turned off (set to false) a user can move right through the wall.
  • Visible
    Turns on and off the wall's visibility. When turned off (set to false) the wall is invisible.
  • Sharing Mode
    For sharing an object's state between users. However, shared state is currently disabled.
  • Tool Tip Text
    Used in conjunction with the Mouse Change property. When a user passes the mouse over an object that has Mouse Change property set to true (so that the mouse turns into a "hand") you can also set it so that a little yellow tag appears with some explanatory text inside. In the Tool Tip Text box, type in whatever text you want to be displayed. To add a line break to a tool tip, use the '|' character to denote the line break.
  • Mouse Change
    If set to true, the cursor will turn into a "hand" when passed over the object, indicating to the user that it can be clicked on.

Walls, Floor and Ceiling

You can choose from four walls as objects: North facing (Cyan), South facing (Yellow), East facing (Magenta) and West (Red). The default size of each wall is 1000 Gamma units wide by 240 Gamma units high. The Cyan wall's lower left corner comes in at the coordinates 0,0,0, the Yellow wall at 0,1000,0, the Red wall at 1000,1000,0, and the Magenta wall at 1000,0,0. A Ceiling and Floor are both 1000x1000 Gamma Units.

Specific properties of Walls, Floor and Ceiling

  • From
    The coordinates of the rect's position. When selected, each wall, floor or ceiling has a red dot that designates the position of that object. Changing the From parameter moves this point to the new coordinates.
  • To
    The coordinates of the corner opposite the From coordinates. For example, a wall's From coordinate is located at the lower left corner of the wall. A wall's To coordinate is at the upper right corner of the wall. You can change the To coordinate to scale a wall, floor or ceiling.
  • Extent
    This is the size of the wall, floor or ceiling in Gamma units (width and height)
  • Tile Size
    Tile Size designates how many times a texture will tile on the surface. The default is 0,0 which stretches the texture to fit the rect (tile once).
  • Tile Origin
    You can change how much of a texture is seen and/or where on the texture the tiling begins by changing the Tile Origin.
  • Flip Alternate U
    In conjunction with the Tile Origin, Flip Alternate U flips a texture along its x axis (mirrors it horizontally). For example, to mirror(flip) a 240x300 texture horizontally (left/right) you would set "Flip Alternate U" to true and enter a value of 240 for the "u" or X coordinate of the Tile Origin, Tile Origin = (240,0).
  • Flip Alternate V
    In conjunction with the Tile Origin, Flip Alternate V flips a texture along its y axis (mirrors it vertically). For example, to mirror(flip) a 240x300 texture vertically (up/down) you would set "Flip Alternate V" to true and enter a value of 300 for the "v" or y coordinate of the Tile Origin, Tile Origin = (0,300).

Shape (empty)

A shape is any .rwx or .rwg file you want to add to a room, such as a table.

Specific properties of Shape

  • File
    When a shape is first added to a world, it comes in as a default cube. You must attach an .rwx or .rwg file to the empty shape. Double-click File and type in the relative URL for your shape file. Most of the current worlds have the shape files in a "tex" directory within the project directory, so in that case you would type in
    tex/shape.rwx
    and then click OK.
  • Prepare Room
    Used when importing 3D Max files as rooms. See
    Creating a World in 3D Max for details.

2 Walls Grouped with a Portal

These are pre-built WObjects that contain two small walls with a portal inbetween them, their total width = 1000 Gamma units. They are listed in the Objects Library as South Wall/Portal, West Wall/Portal, etc., and have the same properties as a normal WObject (see Grouper).

NOTE: Currently there is a bug with portals grouped in a WObject. They will not connect with other portals. You will have to delete the Portal from the WObject contents (listed as "east facing", "west facing" etc.), and then add a single Portal to the Room Environment Contents to replace it.


Grouper (WObject)

WObjects allow you to group objects together. Moving and scaling the WObject affects all of its contents as a group. NOTE: The Visible parameter of a WObject does not work. To make a WObject invisible/visible, you would have to change the Visible parameter of each of the WObjects contents individually.


Hologram (empty)

A Hologram is a "fake" 3D object. It is actually a .mov file that contains 1 or more 2D views of an object. To add a Hologram to a room, drag a Hologram (empty) object to the Room's Contents in the Hierarchy Tree. You then double-click File under Hologram Properties and add a .mov file to the empty Hologram. For instructions on creating .mov files, see the Hologram section of this document.

Specific properties of Hologram

  • Extent
    This is the size of your Hologram (width and height)
  • File
    in the Edit File box, type in the filename of the .mov you want to use for the Hologram.
  • Viewplane Aligned
    Undocumented.
  • Rough Cut Alignment
    Undocumented.
  • Scale Distance
    If you add a Scale Distance, when a user gets that distance away from the Hologram, the Hologram will appear to maintain its size - it will not appear to get smaller the farther away the user gets. The same effect is used with the avatar name tags - the name tags above the avatars appear to remain a certain size no matter how far away you get from them.
  • Autosize
    Undocumented.

Default Room

The Default Room object is just that, a default square room (1000x1000) with four walls, a floor and a ceiling. You add a Default Room to the Rooms section of the Hierarchy Tree (near the top of the tree). When you drag and drop a Default Room into the Hierarchy Tree, a new room will be listed there, but you won't be able to see it in the 3D viewer. To get to the new room, go to WorldsMarks and choose the Change Location option. Change the room name within the URL to the new room's name and click OK. You will be teleported to the new room.

Specific properties of Default Room

  • Sky Color
    Enter different RGB values, 0 - 255, to change the color of the default sky. To delete the sky (make it null) select it in the Room Properties and click the Delete button.
  • Ground Color
    Enter different RGB values, 0 - 255, to change the color of the default ground. To delete the ground (make it null) select it in the Room Properties and click the Delete button.
  • Default Position, Default Orientation Axis, Default Orientation Angle
    These are the default coordinates used when a user is teleported to this room. They will enter at these coordinates. If you want users to "land" in a different spot, change these properties accordingly.
  • VIP Only
    If designated as true, only VIP users will be able to enter this room.
  • Visible to VIP Only
    Undocumented.
  • Light Source Direction
    Change the direction of the room's light source by entering values for each axis between -1 and 1.
  • Light Color
    Enter an RGB value to change the color of the room's light source.
  • Time To Auto-Teleport
    If you have an Auto-Teleport destination (see next property), set the amount of time, in seconds, the users will remain in this world before being automatically teleported.
  • Auto-Teleport destination
    You can create a world where the users are automatically teleported to another destination after they have been in the world a certain amount of time. Set the new destination here.
  • Allow Teleporting
    If you do not want users to be able to bookmark your world in order to teleport to it later, set this to false.

Portal (North, South, East and West)

Portals are basically doorways that connect rooms and worlds together. A Portal's default size is 250 wide by 240 high. You can alter a portal's size, but it's a good idea to keep connecting portals the same size. Portals are generally added to a Room's Environment Contents. To connect two worlds together, you will need to add a RPAction (Remote Portal Loading) to the portal.

Specific properties of Portals

    • From
      The coordinates of the Portal's position (lower left corner). Changing the From property moves this point to the new coordinates.
    • To
      The coordinates of the upper right corner of the Portal. You can change the To coordinate to scale the Portal.
    • Extent
      This is the size of the Portal in Gamma units (width and height)
    • Destination World URL
      This property is used only if you're connecting to another world and a Remote Portal Action has been added to the portal. The destination world URL is usually typed in as
      rel:home:worlddirectory/worldfile.world assuming that the world you are connecting to is in the same "home" directory.
    • Destination Room Name
      Type in the Name of the Room you are connecting to.
    • Connect to a portal
      The default for this property is true. You can however connect to any part of another room by specifying this property as false (choose "Use location and orientation" in the edit box) and designating a Destination Position and Destination Orientation (see these properties below).
    • Download if world not present
      Normally if a user does not have the world that the portal is connecting to, a dialogue box comes up offering them a download (unless the world has been designated as private - see
      Universe Map section). If you don't want the user to automatically get this download message (in other words, if they don't have the connecting world, they won't get it), then set this property to false (select "Never Download" in the edit box).
    • Destination Portal Name
      Enter the name of the destination portal. Be sure to type it exactly (capitals, spaces, etc.)
    • Destination Position
      Enter a x,y,z postion only if Connect to a portal property has been set to false.
    • Destination Orientation
      Enter an orientation (degrees, clockwise from North) only if Connect to a portal property has been set to false.
    • Mirrored
      To make a mirror, set this to true and assign Destination Portal and Destination Room Name to be the same as the Room containing the portal, so that the portal is basically connecting to itself.

You can add a texture to a portal just like you would a rect. The texture will only appear if the room or world that it's connecting to hasn't loaded yet. This is useful when a portal is connecting to another, larger world that takes awhile to download. If you didn't assign a texture to your portal, the user would see the default solid color of the portal. If you add a texture to your portal, use the properties below to change the tiling.

    • Tile Size
      Tile Size designates how many times a texture will tile on the surface. The default is 0,0 which stretches the texture to fit the Portal (tile once).
    • Tile Origin
      You can change how much of a texture is seen and/or where on the texture the tiling begins by changing the Tile Origin.
    • Flip Alternate U
      In conjunction with the Tile Origin, Flip Alternate U flips a texture along its x axis (mirrors it horizontally). For example, to mirror(flip) a 240x300 texture horizontally (left/right) you would set "Flip Alternate U" to true and enter a value of 240 for the "u" or X coordinate of the Tile Origin, Tile Origin = (240,0).
    • Flip Alternate V
      In conjunction with the Tile Origin, Flip Alternate V flips a texture along its y axis (mirrors it vertically). For example, to mirror(flip) a 240x300 texture vertically (up/down) you would set "Flip Alternate V" to true and enter a value of 300 for the "v" or y coordinate of the Tile Origin, Tile Origin = (0,300).

Nametag Drone

Undocumented.


Floor Patch

A Floor Patch is used when you want a floor that's not level. With a Floor Patch, you can create hills and/or valleys. Avatars will walk up or down these patches accordingly. For the Floor Patch to work, it must be added to the Room Contents, not the Environment Contents. As a whole, you can move a Floor Patch horizontally and you can scale it, however you can't move it up or down the z axis. To change the location of a Floor Patch along the z axis, each corner must be raised separately (see parameters below).

You can add a texture to the Floor Patch, or you can add regular floor rects over the patch, texture them, and make the Floor Patch invisible. To add a texture to the Floor Patch itself is just like adding a texture to a normal rect. Find Texture listed under the Floor Patch Material in the Hierarchy Tree and select it to bring up the MaterialTexture Properties in the Properties Box. Double-click File and then enter the relative URL for the texture you want to apply. When you click OK, you'll notice that nothing happens. You have to select the Patch in the Hierarchy Tree to bring up the RectPatch Properties. Double-click on # tiles (x) or # tiles (y). You don't have to enter any numbers into the box, just click OK and the texture will appear.

Specific properties of Floor Patch

    • Length (y)
      Specifies the length of the Floor Patch. Default is 1000.
    • Width (x)
      Specifies the width of the Floor Patch. Default is 1000.
    • 0,0 corner
      Enter z axis coordinate to raise this corner.
    • 0,y corner
      Enter z axis coordinate to raise this corner.
    • x,y corner
      Enter z axis coordinate to raise this corner.
    • x,0 corner
      Enter z axis coordinate to raise this corner.
    • # Tiles (x)
      Enter the number of times the texture should tile along the x axis.
    • # Tiles (y)
      Enter the number of times the texture should tile along the y axis.
    • Tile Offset (x) and Tile Offset (y)
      Currently their are bugs with this property. Entering too high a number will crash Gamma.

Articulated (PosableShape)

The Articulated object (a.k.a. PosableShape) is used when you want an avatar or "bot" in your world. To add an avatar to your world, drag and drop an Articulated object to the Contents of the Room you want the avatar to be in. A red dot appears at 0,0,0. To see the default avatar, double-click on File under PosableShape Properties and change avatar:aura.OPG.rwg to avatar:aura.rwg, or replace "aura" with any avatar name listed in the VIP/Change Avatar list. Use the horizontal move button or Transform property to move the avatar to the location you want. To make your avatar walk when triggered, add a Move action to the PosableShape (the avatar will automatically walk when moved). To make your bot perform an action other than walking, add a Posable action to it.

Specific properties of Articulated (PosableShape)

    • Center of Gravity
      Most of the "human" avatars have their pivot point in the center of their shape. However, some of the animal avatars, such as the dinosaur, have their pivot point somewhere other than their center of gravity. If you want to move the pivot point of the avatar to the center of gravity for that avatar, designate this property as true.
    • File
      Enter
      avatar:name.rwg to designate which avatar appears, where "name" is the name of the avatar as listed in the VIP/Change Avatar listing.
    • Prepare Room
      Used when importing 3D Max files. Not used with Posable Shapes.

 


Double Doorway

A Double Doorway object is a portal with two doors, a door jamb and a built-in move action and sensor so that the doors open as a user approaches. When you add a Double Doorway, add it to the Room Environment Contents. In the Hierarchy Tree it will be listed as DoorwayPortal, and it will come in to the room located at 0,0,0 and be facing south. Use the DoorwayPortal's Transform property to move the DoorwayPortal to its final location. The door jamb is 25 Gamma units deep, and when you get the door oriented the way you want it, you will need to move the DoorwayPortal back into the surrounding wall 25 Gamma units (otherwise the door jamb will be sticking out into the room).

The doors and door jamb are part of the DoorwayPortal's Contents. Texture each one of these rects as desired.

The specific properties of Double Doorway (DoorwayPortal) are the same as the specific properties of a Portal.


Shaped Room

A Shaped Room and SlowShaped Room (see below) are used when importing rooms that have been built in a 3D modelling program such as 3D Studio Max. You add a Shaped Room to your world just as you would a default Square Room. Drag and drop the Shaped Room into the Rooms section of the Hierarchy Tree. A Shaped Room's properties are the same as for a Square Room. The difference lies in the presence of a RoomShape within the ShapedRoom's Environment Contents. In the RoomShape Properties, you use the File property to designate the 3D Model file you are importing (an .rwx or .rwg file).

See the Utilizing 3D Studio Max Files section for more information on building rooms in 3D Studio and importing them into Gamma.


SlowShapedRoom

A SlowShaped Room is almost the same as the Shaped Room above. The only difference is that the RoomShape is located in the Room Contents instead of the Environment Contents - hence the "Slow" part of this object's name - it will slow down the rendering of the room to have the RoomShape in the Contents vs. the Environment Contents.

See the Utilizing 3D Studio Max Files section for more information on building rooms in 3D Studio and importing them into Gamma.


TwoWayPortal

A TwoWay Portal was designed to automatically create its counterpart (the portal it's connecting to) in the connecting room. However, it currently has some problems, and it's probably easier to simply create the two portals yourself.


MontyDoor

A MontyDoor (named after Monty Hall from the show "Let's Make a Deal") is a portal for viewing avatars (as in the Avatar Gallery) or 3D merchandise (as in the 3D WorldsStore). When a user clicks on a Monty Door, it gives them the option of changing their avatar (SelectAvatar action) or in the case of the store, they can get more information on the selected merchandise (SendURL action).

To see how this works, go to the Avatar Gallery and right click on any of the avatar posters, or go to the 3D store and right-click on any of the merchandise.


WearWall

The WearWall is used when creating the Gallery of Metamorphics. See the Wear Wall section of Advanced Development Topics.


AnimatingDoor

Animating Doors use a frame list of 2D images to simulate the opening and closing of a door. Rather than have a rect or rects physically open with a Move action, the Animating Door plays an animation as you approach the door, and the animation in reverse as you walk away from it. You can also add opening and closing sounds, and an Animating Door also includes the portal needed to connect to another room. Examples of this type of door are found in the old Worlds Center (Worlds Chat space station). If you go to the Hub of the space station and look at the doors there, you'll see that they use Animating Doors.

Currently there's a bug where the AnimatingDoor comes in only 1x1 in size, located at 0,0,0. Use the Extent and Transform properties to size and move the door into position.

Specific properties of AnimatingDoor

    • From
      The x,y,z coordinates of the lower left corner of the door.
    • To
      The x,y,z coordinates of the upper right corner of the door.
    • Extent
      The width and height of the door.
    • Frame List
      List the relative URLs for the texture files to be used in your animation, just like you would for an Animate Action. Leave a space between each file. For example:
      tex/door1.cmp tex/door2.cmp tex/door3.cmp
    • Start
      This is the location, relative to the door, of the "start" point that triggers the "opening" (the animation) of the door.
    • End
      This is the location, relative to the door, of the point that triggers the closing of the door (the animation in reverse).
    • Time Per Frame
      The lower this number, the faster the animation will run.
    • Open Sound URL
      Enter the URL for the opening door sound. For example:
      rel:home:MyWorld/sounds/opendoor.wav
    • Close Sound URL
      Enter the URL for the closing door sound. For example:
      rel:home:MyWorld/sounds/closedoor.wav

The rest of the properties of AnimatingDoor are Portal Properties. Change these properties as you would for a normal portal.

 


Ad Banner

Two new objects introduced in GDK 1844, the Ad Banner and Web Page object replace the Billboard attribute. An Ad Banner object comes in the size of a default ad banner, 468 x 60, while a Web Page object by default comes in at 640 x 480. Both objects display web pages on a 2D rect, allowing for web-based content to be integrated into a 3D world.

Specific properties of Ad Banner

    • From
      The x,y,z coordinates of the lower left corner of the ad banner.
    • To
      The x,y,z coordinates of the upper right corner of the ad banner.
    • Extent
      The width and height of the ad banner.
    • Wall's URL
      This is the URL that will be displayed as a texture map on the Ad Banner wall. Important Note! Make sure this web page does NOT USE FRAMES. There is a bug beyond our control in the Internet Explorer 5 control that will not draw frames properly on pages higher than 150 pixels.
    • Wall Page Width
      The default width is 468. Change as appropriate.
    • Wall Page Height
      The default height is 60. Change as appropriate.
    • Wall's Refresh Rate
      This controls how often the web-based texture is updated from Internet Explorer. A value of –1 would mean that the texture would be updated only when the page is initially loaded. A value of 1 would update the texture every frame of animation, and a value of 5 updates the texture every five frames. In general, a page that features a lot of animation should use low numbers and pages that do not animate much or animate infrequently should use high numbers or –1. Updating a web-based texture frequently can noticably affect performance, so you will need to find a good compromise between performance and fluid animations.
    • Use Scrollbars
      If set to true, scrollbars will appear on top of the 2D ad banner.
    • Pass Clicks
      If set to Yes, the ad banner will pass any clicks on it through to Internet Explorer, where they may do such things as activate hyperlinks or interact with games. If set to No, a click on the ad banner will launch the 2D web page specified by Target URL within the UI of WorldsPlayer.
    • Target URL for click
      If you have specified that clicks are not passed through this ad banner, a click on the ad banner is intercepted by the WorldsPlayer and will cause a 2D web page to appear over the 3D window, set to the URL specified in this property. This is NOT the URL displayed on the Ad Banner Wall itself. If the ad banner is set to pass clicks through to Internet Explorer, this property will be ignored.
    • Target Page Size Units
      This controls whether the x and y dimensions of the target page are interpreted as a percentage or as pixels.
    • Target Page X overlay %
      If “Pass Clicks” is set to No, and a click on the ad banner will launch a 2D web page specified  by “Target URL”, this property specifies how wide the 2D web page will appear on-screen.  The 2D web page appears as an overlay on top of the 3D window, so you may choose to obscure only a portion of the 3D window with the web page if you wish.
    • Target Page Y overlay %
      This property represents the percentage of the height of the 3D window you wish to overlay with this web page. If “Pass Clicks” is set to “No”, this property is ignored.
    • Target Page has Toolbar
      This field also applies to the 2D web page displayed if “Pass Clicks” is set to No, specified by “Target URL.” If this property is set to “yes”, a simple navigation toolbar will appear on top of the 2D web page. This toolbar will allow the user to go home, back, forward, and to close the 2D web page, thereby unobscuring the 3D window. Without a toolbar, the user will have no means of dismissing the 2D web page (desirable for advertising, perhaps.)
    • Tile Size
      Tile Size designates how many times the ad banner will tile on the surface. The default is 0,0 which stretches the ad banner over the object (tile once).
    • Tile Origin
      You can change how much of the ad banner is seen and/or where on the ad banner the tiling begins by changing the Tile Origin.
    • Flip Alternate U
      In conjunction with the Tile Origin, Flip Alternate U flips an ad banner along its x axis (mirrors it horizontally). For example, to mirror(flip) a 468x60 ad banner horizontally (left/right) you would set "Flip Alternate U" to true and enter a value of 468 for the "u" or X coordinate of the Tile Origin, Tile Origin = (468,0).
    • Flip Alternate V
      In conjunction with the Tile Origin, Flip Alternate V flips an ad banner along its y axis (mirrors it vertically). For example, to mirror(flip) a 468x60 ad banner vertically (up/down) you would set "Flip Alternate V" to true and enter a value of 60 for the "v" or y coordinate of the Tile Origin, Tile Origin = (0,60).

Web Page Wall

Two new objects introduced in GDK 1844, the Ad Banner and Web Page object replace the Billboard attribute. An Ad Banner object comes in the size of a default ad banner, 468 x 60, while a Web Page object by default comes in at 640 x 480. Both objects display web pages on a 2D rect, allowing for web-based content to be integrated into a 3D world.

Specific properties of a Web Page Wall

      • From
        The x,y,z coordinates of the lower left corner of the WebPageWall.
      • To
        The x,y,z coordinates of the upper right corner of the WebPageWall.
      • Extent
        The width and height of the WebPageWall.
      • Wall's URL
        This is the URL that will be displayed as a texture map on the WebPageWall. Important Note! Make sure this web page does NOT USE FRAMES. There is a bug beyond our control in the Internet Explorer 5 control that will not draw frames properly on pages higher than 150 pixels.
      • Wall Page Width
        The default width of the wall is 640. Change as appropriate.
      • Wall Page Height
        The default height of the wall is 480. Change as appropriate.
      • Wall's Refresh Rate
        This controls how often the web-based texture is updated from Internet Explorer. A value of –1 would mean that the texture would be updated only when the page is initially loaded. A value of 1 would update the texture every frame of animation, and a value of 5 updates the texture every five frames. In general, a page that features a lot of animation should use low numbers and pages that do not animate much or animate infrequently should use high numbers or –1. Updating a web-based texture frequently can noticably affect performance, so you will need to find a good compromise between performance and fluid animations.
      • Use Scrollbars
        If set to true, scrollbars will appear on top of the 2D WebPageWall.
      • Pass Clicks
        If set to Yes, the Web Page will pass any clicks on it through to Internet Explorer, where they may do such things as activate hyperlinks or interact with games. If set to No, a click on the Web Page will launch the 2D web page specified by Target URL within the UI of WorldsPlayer.
      • Target URL for click
        If you have specified that clicks are not passed through this Web Page, a click on the Web Page is intercepted by the WorldsPlayer and will cause a 2D web page to appear over the 3D window, set to the URL specified in this property. This is NOT the URL displayed on the WebPageWall itself. If the WebPageWall is set to pass clicks through to Internet Explorer, this property will be ignored.
      • Target Page Size Units
        This controls whether the x and y dimensions of the target page are interpreted as a percentage or as pixels.
      • Target Page X overlay %
        If “Pass Clicks” is set to No, and a click on the Web Page will launch a 2D web page specified by “Target URL”, this property specifies how wide the 2D web page will appear on-screen. The 2D web page appears as an overlay on top of the 3D window, so you may choose to obscure only a portion of the 3D window with the web page if you wish.
      • Target Page Y overlay %
        This property represents the percentage of the height of the 3D window you wish to overlay with this web page. If “Pass Clicks” is set to “No”, this property is ignored.
      • Target Page has Toolbar
        This field also applies to the 2D web page displayed if “Pass Clicks” is set to No, specified by “Target URL.” If this property is set to “yes”, a simple navigation toolbar will appear on top of the 2D web page. This toolbar will allow the user to go home, back, forward, and to close the 2D web page, thereby unobscuring the 3D window. Without a toolbar, the user will have no means of dismissing the 2D web page (desirable for advertising, perhaps.)
      • Tile Size
        Tile Size designates how many times the web page will tile on the surface. The default is 0,0 which stretches the web page over the object (tiles once).
      • Tile Origin
        You can change how much of the web page is seen and/or where on the web page the tiling begins by changing the Tile Origin.
      • Flip Alternate U
        In conjunction with the Tile Origin, Flip Alternate U flips a web page along its x axis (mirrors it horizontally). For example, to mirror(flip) a 640x480 web page horizontally (left/right) you would set "Flip Alternate U" to true and enter a value of 640 for the "u" or X coordinate of the Tile Origin, Tile Origin = (640,0).
      • Flip Alternate V
        In conjunction with the Tile Origin, Flip Alternate V flips a web page along its y axis (mirrors it vertically). For example, to mirror(flip) a 640x480 web page vertically (up/down) you would set "Flip Alternate V" to true and enter a value of 480 for the "v" or y coordinate of the Tile Origin, Tile Origin = (0,480).

Video Wall

A Video Wall, introduced in GDK 1844, replaces the Video Texture attribute. It is a rect with the URL of a video attached to it, allowing for a video to be played on the rect within a 3D space. It can be used in conjunction with the VideoControl action which allows the user to control the playback of the video. NOTE: When you add a Video Wall it may take a while for it to appear in the room and in the Hierarchy Tree. This is because a default video is attached to the wall with Auto-play turned on. The Video Wall will appear and the default video will start to play.

Specific properties of a Video Wall

        • From
          The x,y,z coordinates of the lower left corner of the VideoWall.
        • To
          The x,y,z coordinates of the upper right corner of the VideoWall.
        • Extent
          The width and height of the VideoWall. The default is 128x128.
        • Video URL
          This is the URL that will be displayed as a texture map on the VideoWall. The default video will begin playing when you add the Video Wall to a room.
        • Video Width
          The default width of the wall is 128. Change as appropriate.
        • Video Height
          The default height of the wall is 128. Change as appropriate.
        • Auto-play?
          When set to true, the video auto-plays as soon as the VideoWall object is loaded from the .world file, which is generally well before you ever see the first frame rendered in the world you are entering. Finer control could be achieved through the use of world scripts.
        • Repeats for Autoplay
          If Auto-play is set to true, you can set the video to repeat forever (-1) or for a set number of times.
        • Tile Size
          Tile Size designates how many times the video will tile on the surface. The default is 0,0 which stretches the video over the object (tiles once).
        • Tile Origin
          You can change how much of the video is seen and/or where on the video the tiling begins by changing the Tile Origin.
        • Flip Alternate U
          In conjunction with the Tile Origin, Flip Alternate U flips a video along its x axis (mirrors it horizontally).
        • Flip Alternate V
          In conjunction with the Tile Origin, Flip Alternate V flips a video along its y axis (mirrors it vertically).

Top of Page


Adding an Action

To add an item from the Actions Library, follow these steps:

  1. You can apply actions to the Actions property of objects within your 3D world. There are quite a few actions in the Actions Library - check the description of individual actions in the Actions Catalog to see what types of objects to apply them to.
  2. Click the Actions tab in the libraries section of the Shaper to see the catalog of Actions.
  3. In the library, click on the action you want, holding down the mouse button, and drag it to the Actions property listed under the object that you want to hold the action. Release the mouse button. The action you selected is now attached to the object.
  4. If you would like to give your action a distinctive name (and this is a good idea if you intend to have several actions throughout your world), double-click on Name in the Properties Box and enter a new name in the Edit Name box. Click OK.
  5. Check the description of individual actions in the Actions Catalog to see how to set a particular Action's properties.

Top of Page


Actions Catalog

o                                Wait

o                                Stdout

o                                Sequence

o                                Animate

o                                Gravity

o                                Move

o                                Print

o                                Pickup

o                                RemotePortal Loading

o                                Parallel

o                                Sound

o                                SetVisibleBumpable

o                                Teleport

o                                URL

o                                Talk

o                                Dispenser

o                                PlaybackRecording

o                                StopRecording

o                                The SET Actions

§                                 SetInteger

§                                 SetFloat

§                                 SetBoolean

§                                 SetString

§                                 SetColor

§                                 Set2DPoint

§                                 Set3DPoint

§                                 SetURL

o                                SelectAvatar

o                                Wear

o                                Posable

o                                Trade

o                                MoveCamera

o                                OpenURL

o                                VideoControl

o                                NotifyScript

o                                CameraHeight


Parameters common to all actions

There are two parameters that all Actions share in common. These are:

    • Name
      This is simply the name you choose to give the Action. Note that naming Actions with something distinctive is very important! When you have to target Sensors to Actions, you'll be presented with a long list of every Action present in that
      .WORLD file, potentially a very long list for a bigger project. This name also shows up in the Actions list when you double-click and edit the object.
    • Trigger Now
      Trigger Now enables you to test an Action without having to go through the hassle of creating a dummy trigger and jumping back and forth between Action and Sensor, or having to move around in Properties at all. Just double-click on Trigger Now and set the Edit box to True. Your Action should fire off right then, and Trigger Now will revert to False again.

Wait

Wait is a pretty straightforward action. You set a WaitAction property that specifies how many seconds the action should wait. When triggered, all the action does is start, wait that number of seconds, and then it's done. Wait is generally used as part of a Sequence.

Specific properties of Wait

    • Duration (s)
      Type any integer or decimal value of seconds. Note that duration values smaller than .2 might be impacted by frame rate considerations and won't reliably give the same length wait each time.

Stdout

This action writes text to the "standard output", which means that if the user has a log file going, the text will appear there. Useful for debugging.


Sequence

Sequence is an ordered list in which you can put other actions, actually "pointers" to actions located in any object.

Specific properties of Sequence

    • Components: Listed beneath a SequenceAction in the Hierarchy Tree, this is a container where you put the list of actions that will be part of this sequence.
    • Loop count: how many times you want this sequence to run once it's triggered.
    • Loop Infinite: set to true if you want the sequence to loop indefinitely.

Adding a Sequence

42.  To make a sequence, right-click on the object you want to add a sequence to (or click it in the Hierarchy Tree). The sequence can be just about anywhere, because it will be calling actions that may or may not be contained in the same object, and the actions will be taking place in the objects they're owned by.

43.  Click the triangle next to your selected object in the Hierarchy Tree to reveal the deeper properties.

44.  From the Actions Library, click and drag a Sequence action over to Actions listed beneath your object. A new SequenceAction is now listed beneath the Actions of the selected object.

45.  Double-click Name under SequenceAction Properties listed in the Properties Box. Change the name of your sequence so that you will remember what this particular sequence does.

Adding actions

To add actions to a sequence, find the sequence in the Hierarchy Tree and click on its Components. This List will initially be empty. Click the Add button and add previously created actions into your sequence, one at a time (when the Add to Components box comes up, click on the downward-pointing triangle to the right of the first listed action. This will reveal a list of all the actions you have previously created). Note that you should try to add items to the sequence in the exact order they will run. When you Add another action to the list, it will always add to the last position, there is no insertion point! However, you can Delete from any point in the List. You can overcome the no-insertion-point problem slightly by careful use of Cut and Undo, because you can Cut from anywhere in the list but Undo will always place the action last in the list.

Synchronization issues: Multithreading

Another problem you might run into with sequences is that each item in the sequence's Components needs to finish executing before the next item can begin. This has the following unfortunate consequences:

    • You shouldn't put an infinitely looping action into a sequence, because that action will never complete itself. In theory you could put an infinitely looping action as the LAST thing that happens in a sequence, but then Gamma has to deal with the overhead of two things running constantly: the looping action and a sequence that it can't close.
    • You can't use a single sequence to synchronize two things to happen at exactly the same time. For instance, if your sequence had a Move action that made a door open and then a Sound action that played the sound of a door opening, the door would open all the way, stop, and only then would the sound be played. The way around this particular problem is to have one sensor trigger two different sequences, one containing all the Sounds and one containing all the Moves. You would also have to factor in the times that the sounds and moves themselves take to figure out the ultimate timing of each sequence, especially when trying to synchronize the sequences to each other. Sometimes you won't need a sequence at all, you just need to have one sensor trigger multiple actions, in which case the actions will start as close to simultaneously as is possible.

Wait

Because of the multithreading issues and also for general utility, you will frequently be placing Wait actions into your sequences. Wait actions are another case of an action that can be owned by just about anything. A good practice is to have all the wait actions for your world placed inside some easy-to-find object like the first room's Actions list. Remember that you can share the same wait action for several different sequences but if you change the timing by double-clicking the Wait in any given sequence you'll be changing the "master", not a copy. You might create a library of several commonly used units of time in progressively larger steps, for example .2 seconds, 1 second, 5 seconds, 30 seconds. Then you can always insert 2 1-second waits to substitute for having to make a whole new 2-second-long wait action from scratch someplace, and you can avoid clutter in the list whenever you add an Action.

Editing actions from within a sequence

You can click on any action within a sequence to make changes to its properties listed in the Properties Box if you'd like. But again, remember that you are really just taking a "shortcut" to where that action really exists, and if you edit an action in a sequence, the changes you make will show up in every other sequence that uses that action, as well as in the action's "master" back in whatever object it's owned by. However, if you Delete an item from a sequence, you won't be deleting the "master", just a copy, and clicking the Owner button after double-clicking an action in a sequence will take you back up to the sequence, not to the action's real owner.

Sequences within sequences

Since a sequence is itself an action, there's no reason why you can't nest other sequences inside a larger sequence. Just keep in mind that the entirety of the nested sequence needs to be executed before the next item in the larger sequence's list can be started. And don't make the mistake of putting a sequence inside itself! We make no guarantees about what will happen in this case.


Animate

Animate places bitmaps on an object and cycles through them in a specified linear sequence. You can apply an animation to objects like walls that take a Materials property for textures, but you won't be able to "animate" a Shape in this way, because a Shape's textures are stored internally. If you just want to move a Shape through space (or a wall for that matter), you'll want to use the Move action instead.

Tiling is the same as the Material that existed on the wall before you start the animation. For instance, if you have tiled a wall to repeat its texture four times horizontally (250,0 tiling on a 1000-wide wall) any animation you attach to the wall will also tile four across. For this reason you might want to attach animations to separate rects rather than to architectural walls of a room.

Specific properties of Animate

    • Cycle time
      Type the total time the animation should take, in milliseconds (default is "1000" or 1 second). The display time for each frame becomes this number divided by the number of frames.
    • Cycles
      Type the number of times the animation should run once triggered.
    • Infinite Loop
      Set to true if you want the animation to loop continuously.
    • Frame list
      Type a list of all the frames that make up your animation. List the relative URL of each image file (including the extension) in order with a single space between each file name. See the screenshot below for an example. You can animate .gifs (but not animated gifs), .bmps., or .cmps


Gravity

When the Gravity action is triggered, it will pull users (their camera) to a specified point in the room. There is no escaping a Gravity action - no matter where you are in a room, if you trigger it, you will move to the designated point. When a Gravity action is applied to a wall, the user's camera will be pulled to the lower left corner of the wall (where the red dot is when the wall is selected). Since the camera height for avatars is set at 150, the user would sink into the floor until its "eye height" was at the lower left corner. Since this probably isn't the desired effect, what you need to do is create a copy of the wall to attach the gravity action to. For example, if you wanted the Gravity action to carry you to the center of a room, you would first make a copy of a wall. Attach the Gravity Action to the copied wall. Make the copied wall 1 pixel high and one pixel wide, and position it at 500,500,150 (assuming a default 1000x1000 room). Now when the Gravity action is triggered, the user will be pulled to the center of the room.

Specific properties of Gravity:

Force - This number is how "fast" the user gets pulled toward the target of the gravity action. The higher the number, the more of a "tug" the user receives. The default is set at 300.


Move

Move replaces the old-style behaviors that don't have sensors, like Spin and Post-spin, and also allows you to dynamically move objects through space. For instance, you can use the Move action to spin a door rectangle on its z axis to make it look like it is swinging closed, or to make a ball appear to roll across the floor instead of just spinning in place.

All Move actions take place around or from a point on any given object that usually its bottom left corner for rects or an approximate center for a Shape. But some objects that you've added, particularly default walls and floors/ceilings, may already have a transform applied to them. For instance, a floor is really just a wall pitched over 90 degrees, and a West wall is really an East wall with a 180 degree rotation , so the initial position may not be what you expect in an absolute coordinate sense. As a result, it can often take some experimenting to get the Move action to do what you want. You may have to flip objects upside down or turn them around to get the origin in the right place for your particular move action. Look for the red dot in any given object: that dot will be the origin around which move actions will take place.

There are essentially two ways to establish a Move action: a playback/record metaphor and a by-the-numbers metaphor. You can use either, but follow the instructions given here carefully.

The playback-record method

    1. Right-click the object you want to move, or find it in the Hierarchy Tree.
    2. In the Hierarchy Tree, click the triangle to the left of the object to reveal its deeper properties.
    3. In the Actions Library, click on Move and drag it to Actions listed beneath your object in the Hierarchy Tree.
    4. If it's not there already, move the object to its intended beginning position, size, rotation etc. You can do this by:
      • Using the horizontal move, vertical move, scale and various spin buttons above the Properties box.
      • Or select the object and double-click Transform listed in the Properties Box, and use the various transform boxes to move your object to its final parameters. Click OK to close the Edit Transform box.
    5. In the Hierarchy Tree, click the new Move action to bring up its MoveAction Properties in the Properties Box.
    6. Double-click the Copy Start/End property under the MoveAction Properties.

This Property is actually a crude utility that allows you to view start and end parameters of an object's move, or save the present parameters as either the start or end of a move:

1: Snaps the object to the Move's start parameters.
2: Snaps the object to the Move's end parameters.
3: Records the object's current parameters as the 
   Move's new start parameters.
4: Records the object's current parameters as the 
   Move's new end parameters.
    1.  
    2. Since the object is now in its starting position, type 3 into the Edit Copy Start/End box. Click OK.
    3. Now move the object to its intended final position, size, rotation etc.
    4. In the Hierarchy Tree, click your Move action again.
    5. Double-click the Copy Start/End property.
    6. Enter 4 in the Edit box and click OK. Now you've saved the current parameters of the object as the final parameters for the Move.
    7. Adjust the Cycles and Cycle Time properties as necessary. Click here for more information on these properties.
    8. Add a sensor that triggers your action and see if your Move behaves like you expected. If not, return to your Move action and tweak as needed.

The by-the-numbers method

    1. Right-click the object you want to move, or find it in the Hierarchy Tree.
    2. In the Hierarchy Tree, click the triangle to the left of the object to reveal its deeper properties.
    3. In the Actions Library, click on Move and drag it to Actions listed beneath your object in the Hierarchy Tree.
    4. Enter values for the objects intended beginning position, size, rotation etc. by doing the following:
      • Double-click the Start Point property. In the Edit Start Point box, enter the X, Y, Z position you'd like the object to start at.
      • Double-click the Start Scale property. In the Edit Start Scale box, enter the X, Y, Z values you'd like the object to begin with.
      • Double-click the Start Spin property. In the Edit Start Spin box, enter values for one or more axes you want the object to spin around.
      • Double-click the Start Rotation property. Enter the facing for the desired beginning rotation.
    5. Enter values for the objects ending position, size, rotation, etc. by doing the following:
      • Double-click the Translation Extent property. In the Edit Translation Extent box, enter the X, Y, Z position you'd like the object to end at.
      • Double-click the Scale Extent property. In the Edit Scale Extent box, enter the X, Y, Z values you'd like the object to scale during the move.
      • Double-click the Spin Axis for Extent property. In the Edit Scale Extent box, enter values for one or more axes you want the object to spin around.
      • Double-click the Extent Rotation Amount property. Enter the facing for the desired final rotation.
    6. Adjust the Cycles and Cycle Time properties as necessary. Click here for more information on these properties.
    7. Add a sensor that triggers your action and see if your Move behaves like you expected. If not, return to your Move action and tweak as needed.

Specific properties of Move

    • Cycle time (in seconds)
      Specifies how long the entire move should take from beginning to end, in seconds. Gamma will interpolate frames between the start and end, so slower moves will tend to look smoother, whereas quick radical moves might look a little choppy depending on your frame rate.
    • Cycles
      Specifies how many times the Move will repeat when triggered. If you want it to loop infinitely, set the Loop Infinite property to true (see below).
    • Copy Start/End 1/2:->Action->Owner 3/4: Owner->Action

This Property is actually a crude utility that allows you to view start and end parameters of an object's move, or save the present parameters as either the start or end of a move:

1: Snaps the object to the Move's start parameters.
2: Snaps the object to the Move's end parameters.
3: Records the object's current parameters as the 
   Move's new start parameters.
4: Records the object's current parameters as the 
   Move's new end parameters.
    •  
    • Translation Extent
      The final point position of an object's Move.
    • Scale Extent
      The final scale along each axis for an object's Move.
    • Spin Axis for Extent
      The axes about which any spin takes place. Any value between 0 and 1 for any axis "makes sense" though other values are accepted.
    • Extent Rotation Amount
      The final rotation for an object's Move.
    • Start Point
      The start point position of an object's Move.
    • Start Scale
      The start scale along each axis for an object.
    • Start Spin
      The start spin position along each axis for an object.
    • Start Rotation
      The initial rotation for an object's Move.
    • Loop Infinite
      Set to true if you want the Move action to loop infinitely once triggered.

Move tips and tricks

    • Note that if you want the object to move back to its start point instead of jumping back there, you will have to write a whole separate Move. Moves are point-to-point, and to reproduce a complicated series of Moves you'll need to create a Sequence.
    • Use the "1" and "2" options in Copy Start/End 1/2:->Action->Owner 3/4: Owner->Action to view start and end positions while you're editing the Move action. That way you can avoid having to re-trigger all the time to see what it does.

Print

Print outputs text to Gamma's text window, the same area where chat messages show up if you're hooked up to a multiuser server. A practical use for this is to combine Print with a Startup sensor to give your user a welcoming message when they enter the world. The Print action can be attached to any object within a room or within a room's Actions list.

Specific properties of Print

    • Text Out
      Type any text you want output to the message window. Text will all appear on one line; you cannot force a line break. Use separate Print commands in a Sequence to simulate line breaks if needed.

Pickup

This action is currently under development and does not work.

Pickup is primarily an Action for use with shared objects. It allows you to take a dynamically shared object and remove it from the current room, by placing it in your Inventory. The Inventory is a box that will pop open whenever you Pickup something and will contain that object until it is dropped in some physical location of the world. To use a Pickup action, add it to an object that you intend to be dynamic, and usually you'll want it to be triggered by a Click sensor.


RemotePortal Loading (RPAction)

A RemotePortal action is adding to portals that will be connecting worlds. To create a new RPAction, you must place it in the Actions List of the portal itself, not in the room or other objects in the room. Most often a SameRoom sensor is used to trigger the RemotePortal action. You could however use a Startup or other sensor to change the point in time where the user will "take the hit" of having to stop and load a .WORLD file into memory, potentially as a download. Or you could put the SameRoom Sensor in a different room, for instance to have the world behind the RemotePortal start loading while you're still two or three rooms away, rather than when you're already in the room.

Note: The major modifiable characteristics of a RemotePortal Loading action are which portal it's placed in and what type of sensor triggers it.


Parallel

This action is currently under development and does not work.

Activating a Parallel action will activate all of its targets simultaneously, allowing you to set several sequences into motion at once.


Sound

In a Sound action, you may specify a sound in any number of formats.

If you enter a URL to a Sound ending with .wav or .mid, then that WAV or MIDI file will be played. These types of files may point to files on the user's local hard drive bundled with the world.

For URL's ending with any other extension, the URL will be passed as-is to Windows Media Player, which will attempt to play the URL given. You could in this manner point to streaming audio for example. Unfortunately, since Windows Media Player can't interpret Worlds' home:/ URL's, you can't specify local files in a sound action other than wav or midi files, since Windows Media Player doesn't know where the world was installed on the user's hard drive. This is a known limitation that we hope to resolve, in order to allow things like playing MP3 files and other new audio formats that come along.

The Music Manager (in the Options menu of the WorldsPlayer Interface), used primarily for room-based background music, works similarly. .WAV and .MID files are processed by Worlds through Windows' Media Control Interface. Any other file extensions are passed to Windows Media Player, which will play the sound if it can.

Note that only the Windows Media Player "engine" is utilized by Worlds; specifying a URL to be handled by WMP will not result in the Windows Media Player application being launched or displayed; it will simply play whatever audio you have sent it in the background.

Specific properties of Sound

    • Sound File URL: Type the file location of your sound here, relative to the Gamma root. You can also give absolute paths like C:\sounds\loudsound.wav.
    • Max Volume: This is set to a default of 1. You can think of 1 being about 100%, but since sound volumes are always variable depending on speakers, volume of the source sound and other intangibles, you should experiment with different levels here to get the desired effect. You can set Max Volume very high, to numbers like 500 or more, but you are risking blowing out your speakers if this sound gets triggered while you are close by, or at least you'll get a nasty surprise! Ideally this should be set below 1.0, otherwise thre is the potential for distortion. If your sound is still too low-level try raising the level in the soundfile itself by editing the .WAV file. If you don't have a good .WAV editor, check out this site.
    • Stop Distance: Defines the range in which the sound can be heard. If Attenuate With Distance is set to True (the default), the sound will be maximum volume when you are standing next to it, and the sound will fall off gradually as you move away. At the Stop Distance, the sound level will finally be zero. The attenuation is linear relative to distance from the object.
    • Times to Repeat:Equivalent to the Loop property of many other actions. Once triggered, this sound will play that many times in a row. Setting to -1 will make the sound loop endlessly until you exit the World.
    • Attenuate with Distance: Can be set to True or False. If you set it to False, the sound won't fall off as you move away but will cut off abruptly at the Stop Distance.
    • Do panning: If Do Panning is set to True, the sound will be louder through the right speaker if it's off to your right, louder in the left if it's left of you, and that sound will generally behave "in stereo". If Do Panning is set to False, that sound will be "mono" and won't change relatively left or right, but will diminish with distance to the same degree in both speakers if you set Attenuate with Distance to True.
    • Room Hops til sound dies
      Room Hops let you "carry" a sound with you from room to room as you pass through portals. Each number above one carries the sound through that many rooms; if you set it to 2, you can hear the sound in two rooms, after having passed through one portal. If you go through a second portal, into a third room, the sound stops. The volume falls off with distance from the original sound in each case, by two different algorithms (see below). Also make sure to read about
      limitations of using room hopping.
    • Door based audibility
      Can be set to True or False. Sounds heard via room hopping can either be handled as if they had to go the "long way" through the door in order to be heard (Door Based Audibility = True), or if they went the "short way", as if whatever walls the rooms might have had in between don't block out sound (Door Based Audibility = False). This affects the volume you will hear the sound at because the two distances will typically result in two different proximity-based volume levels. See the diagram below:
      The red line indicates a distance path for Door Based Audibility = True, the blue line is a distance path for Door Based Audibility = False. Note: for Door Based Audibility = False, the two rooms are lined up against each other so that the geographies make relative sense, based on which portal you entered from. A side effect is if you have multiple room hops between two rooms connected to each other by more than one portal things can get a littlke strange.

Allowed sound types

    • .WAV files: The .WAV format is a versatile PCM format that can accept a variety of sample rates and is a pure representation of the sound that does not suffer from compression glitches. The actual samplerate and bitdepth that can be played ultimately depends on the sound card that each user has in their machine, but there are safe choices that you can make which almost all modern sound cards can successfully play back:
o                     44.1 kHz 16 bit
o                     44.1 kHz 8 bit
o                     22.05 kHz 16 bit
o                     22.05 kHz 8 bit
o                     11.025 kHz 16 bit
o                     11.025 kHz 8 bit
    •  
    • MIDI: General MIDI is a blanket term for a .MID file that stores a MIDI sequence intended for playback on the built-in synthesizers of a computer's soundcards. Voicing, quality, and the individual sounds of each MIDI instrument are determined entirely locally by the soundcard, so a typical General MIDI sequence needs to be finessed for a variety of common soundcards and tested on different cards and platforms. You must use the .MID extension for MIDI file URL's.

SetVisibleBumpable

Modifies the Visible and Bumpable property of an object "on the fly" in response to a sensor. After you trigger a SetVisibleBumpable action and then look at the object's Visible and Bumpable properties, you'll see that they've been switched in response to the action and will remain that way until you edit them by hand or set off another action that changes them back.

Specific properties of SetVisibleBumpable

    • Target Bumpable
      Set to No (false) to be able to pass through the object and disable any Bump sensors it contains.
    • Target Visible
      Set to No (false) to make the object invisible.

Teleport

When triggered, the Teleport action causes the user to be teleported to a designated room or world. After adding a Teleport action to an object, go to the room or world where you want the user to be teleported. Find the spot where you want them to land and stand there. Use the WorldsMark/Change Location option to see the URL of your current position (See image below). Copy the full URL and return to the object that has your teleport action attached to it. Use the various parts of the copied URL to set the Teleport properties (see examples next to each property listed below).

Specific properties of Teleport

    • X,Y,Z
      Specifies where in a room the user will land. (In the Change Location URL, the xyz coordinates come after the "@" symbol, in the above example:
      3127.0, 134.0, 150.0)
    • Dir
      Enter 0 - 360 to specify the direction the user will face. (In the Change Location URL, the direction number comes after the xyz coordinates, in the above example:
      322.0)
    • Room Name
      Specifies the Room the user will land in. (In the Change Location URL, the Room Name comes after the "#" symbol, in the above example:
      Reception)
    • World URL
      Specifies the World the user will land in. (In the Change Location URL, the World URL is the part of the URL before the "#", in the above example:
      home:GroundZero/GroundZero.world)
    • Use Default Coordinates
      If true, the user will land in the default "landing spot" in a room. All other "position" properties (X,Y,Z etc.) will be overridden if this is set to true.
    • Dimension Name
      Not currently used. A dimension is basically a copy of a room that occupies the same "space" but is physically a different room. Currently dimensions are created when the capacity of the original room reaches a maximum.
    • Show dialog
      The default for this is "true". When a user is teleported to another world, a small dialog box comes up that says, "Hang On! Teleporting..." with the option to cancel the process. If you do not want this dialogue box to pop up when your Teleport action is triggered, set this property to false.

URL (SendURL)

URL allows you to launch web pages in response to the triggering event. The default browser used by WorldsPlayer is Internet Explorer.

Specific properties of URL

    • Destination
      Type the URL of the desired web page location here. Will accept all the common protocols like http, ftp, mailto etc.
    • Description
      A default property of SendURL is that a dialogue box is displayed when a SendURL action is triggered. It's a small pop-up box titled "Browse?" that says "Would you like more information?". The user is given options to click "Yes" or "No". If you want the dialogue box to say something else, in the Description property type whatever text you would like. When a description is entered into this property, the options in the pop-up window will change to "OK" and "Cancel".
    • Destination Override
      This property is not generally used. It currently is in use only with the world called Hang. Destination Override is used when an Override World has been designated.
    • Override World
      This property is not generally used. It currently is in use only with the world called Hang. An Override World property might be used if a world exists on two servers and certain properties of the world change depending on which server a user is logged in to.
    • Send User Info (auto-login)
      If set to true, this will log the user in to the requested page using their Worlds user information. If set to true, another property appears below this one:
    • CGI uses GET instead of POST
      This property appears only if Send User Info is set to true. This property designates whether the Send User Info is sent using the cgi command GET or POST.
    • Display Dialogue Box
      Change this to false if you do not want a dialogue box to pop-up before launching the URL.
    • Cancel only
      Cancels the dialog allowing nothing to happen. Not generally used.

Talk

Talk is another way that you can attach triggerable text messages to an object. But this time the talk will appear to be coming from the username who created the action in the object rather than just appearing in the interface, and it requires that anyone receiving a Talk action be online (Print does not).


Dispenser

Currently under development. This action does not work at this time.

Dispenser is another shared state object property. It creates an Action that can call up a local .wob file on disk and add that .wob at a specific location in the Room where the Dispenser action is.

Specific properties of Dispenser

    • Wob file name
      The name of the local or remote .wob file that will be added to the world. A
      .wob file is much like a very small .WORLD file without all the overhead, that can contain objects and actions, so something as simple as one shared object fits easily in a .wob file. The advantage of sharing dispensed objects this way is that you're not risking modifying a client's .WORLD file, you're just adding the .wob to all the stuff they already see.
    • Center position for drop
      Specifies the room-relative position where the dispenser will drop the
      .wob when triggered.
    • Drop-position radius
      When you dispense an object, it will drop in a random position on a circle centered around the dispenser object; this parameter specifies how wide that circle will be. The reason that objects dispense this way is so that they don't all dispense at the same place. Otherwise you'd get stuck with objects stacked on top of each other that would be hard to do anything with. Make the radius wide enough to help keep dispensed objects apart but not so wide that dispensed objects get lost.

Playback Recording

New actions have been added to the Shaper as of revision 1830 to control the new Recorder feature. With these actions, you could record "3D cutscenes" and play them back in response to some trigger in the world... for example, a cheat button in a puzzle could play back a recording of a user solving the puzzle. Also see the Recorder Feature section of this document for information on using the Recorder files for sales and marketing demos.

The only property of the Playback Recording action is the "FileName", which should be a URL to the recording file you wish to play back.


Stop Recording

This action, which has no properties, will stop any currently playing recording (See Playback Recording above).


The SET Actions

These actions alter the properties of another object. As an example, if you wanted to let the user select the force on a Gravity Action, you could set up 2 buttons that have a SetInteger Action (since Force is an Integer) on them with different settings and with the Gravity Action as a target. Click one and you go fast, click the other and you go slow.

Specific properties of the SET actions

    • Set To
      Set To tells the action what you want to set the target to. For example, if you want to set an Integer value to 3, put a 3 here.
    • Duration
      The Duration property will change the value you set over time. For example, if an integer starts at 10 and goes to 100, you could give it a duration of 9 seconds so that it goes smoothly. SetString and SetBoolean don't have this property because you can't scale them over time.
    • Target, Target Room, Target Name, Property Name, Use Parameter, Parameter Name
      These are all used to select the target attribute to be changed by the SetXXXAction. The target is chosen through the shaper either by room and object name, or by selecting the target object from a list of objects. If the name is present, then the object is searched for using the name (room defaults to the action's room). If the name is not present, or if the object was not found, then the selection from the list of objects is used. If the object hasn't been chosen in any way, return the object that this action is attached to.

SetInteger

This action alters any property of an object that is an integer.

SetFloat

This action alters any property of an object that is a floating-point number (one that can have a decimal value).

SetBoolean

This action alters any property of an object that can be set to true or false.

SetString

This action alters any property of an object that is a string (of text).

SetColor

This action alters any property of an object that is an RGB value.

Set2DPoint

This action alters any property of an object that is a 2-dimensional point in space.

Set3DPoint

This action alters any property of an object that is a 3-dimensional point in space.

SetURL

Under development.


SelectAvatar

When a Select Avatar action is applied to an object and then triggered, the user is presented with a dialogue box that asks "Change avatar to (specified avatar)?". If the user selects "yes", their avatar changes to the specified avatar.

Specific properties of Select Avatar

    • Avatar URL
      You'll need to specify which avatar you want the user to select. Check the list of avatars available in the VIP/Change Avatar menu. In the Avatar URL edit box, type:
      avatar:avatarname.rwg
      where "avatarname" is the name of the avatar you want. All the articulated avatars are .rwg files.
    • Display Dialogue Box
      The default for this property is "true" - when the user triggers a Select Avatar action, a dialogue box comes up which asks "Change avatar to (avatar name)?" with the option to click yes or no. If you don't want the user to see the dialogue box (and therefore to change their avatar without asking them) then in the Display Dialogue Box edit box, select "Don't ask". Change the property back to "Ask user to ok choice" if you want the dialogue box to appear.
    • Cancel only
      Cancels the dialog allowing nothing to happen. Not generally used.

Wear

This action is used in the creation of a "Wear Wall" in the Gallery of Metamorphics. To learn how to create a Wear Wall, see the Wear Wall section of the Advanced Development document.


Posable

The Posable action allows you to assign triggerable actions to a "bot" or avatar that you have placed within a world. You can only use the actions that a particular avatar already possesses - see the Actions list of each avatar. For example, if you have the avatar Charlie in your world, you can assign the following Posable actions to him: Wave, Yes, No, Happy, Upset, GetLost, Look, Flip, Dance, Rocknroll, Macarena, Pirouette, Twirl, Achoo, Bow, and Sleep. If you assign a Move action (make it move from point A to point B) to an avatar you have placed in a world, the avatar will automatically use a walking action while in motion.

To assign a Posable action, you will first need to add an avatar (Articulated object) to your world. See Articulated under Object Catalog. You then add the Posable action to the avatar (listed as PosableShape in the Hierarchy Tree) and some kind of sensor to trigger the Posable action.

NOTE: At this time, Posable actions will only run through the specified action once (you cannot loop them) and they also cannot be added to a Sequence action.

Specific properties of Posable

    • Action
      The default for the Action property is "wave". If you want the avatar to do any other action when triggered, type in the name of an action (see your particular avatars actions list) into the Edit Action box.

Trade

This action is currently under development. To learn how to create a Trading Game, see the Trading Game section of the Advanced Development document.


MoveCamera

This is a new action that is still under development. It is an action that would affect whatever camera triggers it. Designed for events like "fly-throughs" of a world.


OpenURL

The OpenURL action opens a 2D browser window within the 3D chat window, not as a separate window. This 2D browser has a simple toolbar (back, forward, stop, refresh, home and back to 3D). The 2D window is anchored at the lower right corner of the 3D viewing window, so if you specify the width and height of the OpenURL action to be smaller than the 3D window, the resulting 2D browser window sits in the lower right corner of the 3D viewer.

Specific properties of OpenURL

    • Target URL
      The URL of the page you would like to display
    • X Overlay % or width
      Default is 100, or 100% of the width of the 3D viewer window. You can change this percentage, however don't make it bigger than 100 or make it too small - if you can't see the "back to 3D" button on the 2D browser window when it's open, you can't close the window! If you want to use pixels to measure the width (instead of a percentage), enter the width in pixels and change the Fixed Size property to "Yes - pixels specified".
    • Y Overlay % or height
      Default is 100, or 100% of the height of the 3D viewer window. You can change this percentage, however don't make it bigger than 100 or make it too small - if you can't see the "back to 3D" button on the 2D browser window when it's open, you can't close the window! If you want to use pixels to measure the width (instead of a percentage), enter the height in pixels and change the Fixed Size property to "Yes - pixels specified".
    • Has Toolbar
      Set this to false if you don't want a toolbar to appear on the 2D browser window. If you do this however, the user can't close the 2D window.
    • Fixed Size
      The default is false, which means that whatever numbers you enter in the X Overlay and Y Overlay properties are percentages of the 3D viewing window.

If you want to specify pixels for the width and height of the 2D browser window, set this property to true (choose "Yes - pixels specified") and use number of pixels for the width (X Overlay) and height (Y Overlay).


VideoControl

These controls are used with a VideoWall that will play an .asf (video) file on a rect. The VideoControl actions (one for on, one for off) must be attached to the rect that will have the video on it. For an example, see the TV above the counter in the Burkittsville Diner (BlairWitch World).

Specific properties of VideoControl

    • 1=Play, 2=Stop
      For a control that starts the video, set this property to 1. For a control that stops the video, set this property to 2.
    • Repeat count
      Used when the VideoControl is set to "Play". Set the Repeat count to -1 for an infinite loop or an integer to designate the number of times the video repeats.

NotifyScript

Version 1804 and newer of the WorldsPlayer supports a "client-side scripting language," whereby Java code may be associated with a specific world. Scripts can perform any logic that Java can perform, and perform any tasks that Java can perform on its own, such as reading and writing data to the disk or the network, telling time, displaying dialog boxes, etc. The only limitation is that we must restrict ourselves to version 1.1 of Java to remain compatible with small-download users running the outdated Microsoft VM.

The client-side scripting language can automatically perform tasks whenever a world or room is entered or exited, and perform periodic tasks with no special action in the World design.

However, if you want the scripting language to perform a task in response to a specific event in the world, the world must notify the scripting system explicitly. This is done via the "NotifyScriptAction."

A NotifyScriptAction is very simple - it consists only of a "message" that is passed on to the world's script, if a script exists for that world. This message can be any piece of text that uniquely identifies the action to the script. Make sure the programmer writing the script is aware of the messages you create.

For example, a NotifyScriptAction could be triggered off of a click on a certain object in a room. Clicking on the Elf in the Holiday version of GroundZero triggers a NotifyScriptAction which sends the message "elf" to the GroundZero script. The script responds to this event by placing text in the chat box to simulate conversation from the elf.

The scripts have certain hooks into the WorldsPlayer engine. The script is called by the engine once per frame of animation, and upon entering and exiting any world or room. It may perform functions at any of these times. The script can currently tie into Worlds in the following ways:

    • It can retrieve the synchronized "Worlds Time"
    • It can retrieve the version number of the user's client
    • It can find the current position and orientation of the user's avatar
    • It can walk the user's avatar to a given position.
    • It can get and set the amount of friction in the world, thereby increasing or decreasing the walk speed.
    • It can display a web page, either externally or built into the WorldsPlayer UI.
    • It can play, stop, and loop sounds, including streaming sounds.
    • It can insert the user's serial number, script server, upgrade server, world server, username, room name, or world name into a URL to a cgi script.
    • It can get and set entries in the user's worlds.ini file.
    • It can display a message box to the user.
    • It can display a simple yes/no question to the user via a dialog box (or anything with two choices) and respond to the user's choice.
    • It can print text in the general chat area.
    • It can retrieve a handle to any object in the world by its name.
    • It can "walk" or smoothly move any object to a given location, for example, a "bot".
    • It can move any object to a given position instantly.
    • It can trigger a "bot" to do an action.
    • It can specify an object to watch visibility on, and receive notifications when the object goes in and out of the screen.
    • It can receive "NotifyScriptActions" to respond to specific Shaper-defined situations.
    • It can play, stop, or change the URL for a VideoWall object.
    • It can receive notification of a streaming sound or video ending, and potentially start a new one in response.
    • It can change the URL that describes any object in the world. The idea is that you could use it to change the textures on a 'bot's clothing in response to some sort of event, but it gives the more general ability to transmute any object in the world into anything.
    • It can intercept a mouse click on any given object in the world, and then display a pop-up menu over the object containing any choices you want to display, and then react to a selection on that menu.

CameraHeight

When triggered, the Camera Height action causes the camera of the user to change to the specified height. If the user is in a third person mode (shoulder, overhead, etc.) the camera changes relative to it's current height and angle.

Specific properties of CameraHeight

    • New Eye Height
      When the Camera Height action is triggered, this will be the new height of the camera (the avatar's eye height).

Top of Page


Adding a Behavior

To add an item from the Behaviors Library, follow these steps:

  1. Currently most the Behaviors are actually sensors that you use to trigger actions (see steps below). There are a few Behaviors that actually effect an object - check the description of individual behaviors in the Behaviors Catalog to see what types of objects to apply them to.
  2. Click the Behaviors tab in the libraries section of the Shaper to see the catalog of Behaviors.
  3. In the library, click on the behavior you want, holding down the mouse button, and drag it to the Event Handler property listed under the object that you want to hold the behavior. Release the mouse button. The behavior you selected is now attached to the object.
  4. If you would like to give your behavior a distinctive name (and this is a good idea if you intend to have several behaviors throughout your world), double-click on Name in the Properties Box and enter a new name in the Edit Name box. Click OK.
  5. Check the description of individual behaviors in the Behaviors Catalog to see how to set a particular behavior's properties.

Adding a Sensor

Anytime you add an Action to a room, you will need a Sensor (trigger) to initiate the Action. Below are the steps for adding a Sensor.

    1. Click the Behaviors tab in the libraries section of the Shaper to see which sensor you want to add.
    2. In the Behaviors Library, click on the sensor you want, holding down the mouse button, and drag it to the Event Handler property listed under the object that you want to hold the sensor. Release the mouse button. The sensor you selected is now attached to the object.
    3. If you would like to give your sensor a distinctive name (and this is a good idea if you intend to have several sensors throughout your world), double-click on Name in the Properties Box and enter a new name in the Edit Name box. Click OK.
    4. In the Hierarchy Tree, click on the triangle to the left of the Sensor to reveal the Targets property.
    5. Click on Targets to select it.
    6. Click the Add button to the right of the Properties Box. A window comes up with a list of all the actions you have in your world.
    7. Select which action you would like this sensor to trigger, and click OK. The action is now listed beneath the Sensor's Targets in the Hierarchy Tree.

Top of Page


Behaviors Catalog

 

·  Using a Portal as an invisible but bumpable trigger


Click Sensor

A Click Sensor triggers its target whenever the user clicks anywhere on the object's bounding box. There are several parameters you can adjust in addition to the name: Left Button, Right Button, Center Button and Wait for Upclick. Setting any of the first three to True enables that type of mouse-click to trigger the target action. If you set multiple buttons to True, the relationship is an OR relationship, as in either the left or right button could trigger the action, does not require both to be pressed together. Wait for Upclick won't perform the target action until the depressed mouse button is released (applies to any enabled mouse button).

Click sensor limitations and considerations

  • If an object has been declared to be Invisible, you cannot click it, so an invisible object 's click sensor will be inactive until that object becomes visible again.
  • Note that a lot of mouse-handling information is affected by an individual's Windows setup. If there's too much time between downclick and upclick, Gamma won't even register the upclick, so use Wait for Upclick=True with caution.
  • If you're actively building a world, right-clicking an object will always bring up the properties box, in addition to whatever click sensor activity you may have assigned. This limits the usefulness of right-click triggering until you have disabled the shaper functionality.
  • You can left-click through portals, but you can't right-click through them, because you will be selecting the portal and opening its Properties box.
  • Many objects have bounding boxes that are shaped differently than you might expect, and it is the bounding box that detects being clicked. The bounding box can be viewed when you right-click an object; it's the thin white rectangle that appears around the object. In particular, Shapes have bounding boxes that can extend well out from the visible portion of the object.

Bump

Bump triggers its target action whenever the user bumps into that object. The definition of what it means to be bumped for each object is handled by its bump calculator. For a Rect like a wall, that pretty much corresponds to how the bounding box appears when you right-click it. For a Shape, it's an approximate and slightly larger box that goes completely around the Shape and always faces your avatar as a perpendicular vertical plane.

For almost all objects except a Portal, the bump calculator also performs collision detection, meaning that you can bump into that object but you cannot penetrate it. Bump calculation only affects the relationship between your avatar and objects, not objects and other objects. You can superimpose two objects when you're building them and neither one will care. You can turn off all collision detection and bumpability in an object, and that will enable you to walk right through it, but it will also disable any Bump sensor that object may contain.

Portals do bump calculation, but in a different way. If you bump (pass through) a portal, all sorts of things go on in the background where Gamma removes your avatar from the room you came from and adds it to the new room. This happens by default, and you don't even see a Bump trigger inside a portal that's involved in making this happen. But a portal is unique in that it registers a Bump event yet still allows an avatar to walk through it. You can use this feature to your advantage by adding a Bump sensor to the portal and using portals as invisible "trip-wire" triggers. See the section on using a Portal as an invisible but bumpable trigger.

Bump limitations and considerations

  • Note that if you pass through a Rect from its non-drawing side, you will not produce a Bump event.
  • If you bash into a wall, there is no built-in rebound. If your avatar is stuck to a wall that has a Bump trigger, that wall will continue to send Bump events each frame until you back away from the wall.
  • As with the Click sensor, the area that produces a Bump event from a Shape can often be much larger than the Shape appears to be.
  • Bump events are actually caused by the intersection of your avatar's bump calculator with any other object's bump calculator. Your own avatar has a box-shaped bump calculator much like a Shape does. In the vertical (z) direction, with a default avatar and the default camera height of 120, your avatar will produce Bump events in objects above z=30 and below z=140. Objects less than 30 in height don't register bump events because otherwise you couldn't properly use stairs. Objects whose bottoms are above z = 140 are considered to be "on the ceiling" and don't impede your forward progress. Your default avatar is considered to be approximately 70 Gamma units wide and deep, though you can sometimes squeeze through gaps as small as 60 wide depending on your facing relative to blocking objects.
  • The above does not hold true for portals. You do not trigger a portal Bump event or make it swap you from one room to the next, until your avatar's center intersects the portal plane.

Using a portal as an invisible but bumpable trigger

The Bump trigger only works when the object is bumpable, and when you make something unbumpable such that you can pass right through it, the Bump sensor no longer registers a BumpEvent and the trigger does nothing!

There's a way around this, particularly for triggering doors so that they open while still in your viewpoint instead of slamming in your face. The only objects that will register a Bump event and still allow people to pass through are Portals. Portals have two other important advantages as trigger objects. They are unidirectional, so you can set up pairs of portals to trigger different actions on the way in or out of a room. They can also be set to invisible, so until you select them you'll never know they are there.

The portals you use as trigger objects don't need to be hooked up to other portals or allow viewpoints into other rooms. In fact, you'll want to leave all these properties empty in most cases, or you'll slow down the framerate trying to reproduce the viewpoint. You're probably going to want an invisible portal in most cases anyway.

Instructions for setting up a trigger portal

For this example, let's assume you've already created a Rectangle doorway object that swings aside when triggered, and reveals a Portal to another room behind it. The swinging motion can be accomplished with a Move action.

  1. Right-click somewhere to bring up the Properties box, and navigate on the left (Hierarchy) side of the Properties box until you're either in the Contents List or Environments Contents List of a Room. In most cases you should use Environment because the trigger portal will end up being invisible and won't affect draw order.
  2. Click the Add button on the right side, and scroll down the list until you find the properly-facing Portal object. You want it to be facing the direction you want people to be able to trigger the door. Assuming you're facing the door you want to trigger, pick the Portal that's 180 degrees opposite of your camera's viewpoint. Click OK. Don't close the Properties box yet.
  3. The portal will add to the end of the list. Note that you don't have to delete the leftover side walls, because you can now Add just a lone portal.
  4. Double-click your new Portal in the left-side hierarchy. Move the portal to the desired location, either by using the Properties Box buttons or by using the Transform property.
  5. Double-click on Event Handlers in the left-side hierarchy.
  6. Click the Add button on the right side and scroll down the list to select Bump. Click OK.
  7. Double-click the newly created BumpSensor in the left-side hierarchy.
  8. Double-click Targets( ) in the left-side hierarchy.
  9. Click the Add button, and find and select your door's MoveAction on the list. Click OK.
  10. Double-click your portal in the left-side hierarchy (or right-click the portal in the viewscape again).
  11. Double-click Visible on the right-side list, and in the Edit box, set to No (False, or Invisible).
  12. Make sure you're in Drive mode, and try your new trigger out. Hint: it's actually better to not Close the Properties box until you've tested your portal. The selection outline lets you see where your portal actually is so you can make sure and crash right into it.

Remember that if you want the door to close properly, you have to put a portal coming the opposite direction or put a sequence together that closes the door after a certain time. For a fully working door that opens and closes from both sides, you'll need 2 pairs of portals, one on each side. One of the pair controls a door's opening action, the other faces 180 degrees opposite in the same spot and controls the door's separately defined closing action. If your door has sound, you can use the same trigger portal to trigger the sound or a sequence containing sounds.


SameRoom

SameRoom will trigger the action as soon as your avatar walks into that room. It will trigger again if you walk out of the room and then back into it. This can be a problem if your SameRoom sensor is setting off something like a Sound or Animate action that are set to loop several times. Nevertheless, SameRoom is a pretty handy sensor.


DifferentRoom

DifferentRoom sends an event whenever your avatar is outside the room that the DifferentRoom sensor is in. Unfortunately, it will check back almost every frame to see if you're in a different room, and if you are in a different room that's still connected by portal to that room then it will send another DifferentRoom event every frame. Not only is this detrimental to performance, it's also not very useful. Ignore this sensor for now until we refine it, unless you can come up with some use we haven't thought of.


Startup

Startup sends an event whenever the .world file is first loaded. Unlike the SameRoom sensor, this means it will trigger once and never again, until you quit the program entirely and reload. It's an ideal trigger for things that you will want to be infinitely looping anyways, for example if you have an animation of a fountain that you want to be running for the duration of a user's stay in the world.


Proximity

Proximity sends an event whenever the user gets within a certain distance from the object. The Double Doorway and Animating Door objects have Proximity sensors attached to them that trigger the doors to open when a user gets a certain distance from them, and to close when a user walks away from them. Unfortunately, their seem to be some problems when adding a Proximity sensor to any other object, and this sensor is under development.


Spin

Adding a Spin behavior to an object immediately sets the object to spinning (you don't need a sensor to trigger it). NOTE: If you decide to stop the spin, the object will stop wherever it is in the cycle, so it's very difficult if not impossible to return the object to its beginning position. You can alter the Cycle Time (the higher the number, the slower the spin) and the Axis on which the object will spin. If you change Enabled to false, the object will stop spinning wherever it is in the cycle.


Post-Spin

Adding a Post-Spin behavior to an object immediately sets the object to spinning (you don't need a sensor to trigger it). NOTE: If you decide to stop the spin, the object will stop wherever it is in the cycle, so it's very difficult if not impossible to return the object to its beginning position. You can alter the Cycle Time (the higher the number, the slower the spin), the Center, and the Axis on which the object will spin. If you change Enabled to false, the object will stop spinning wherever it is in the cycle.


Velocity

Undocumented.


BuildStairs

A BuildStairs behavior is a onetime behavior that you attach to a portal in order to build a set of stairs. Once the stairs are built, the BuildStairs behavior disappears.

NOTE: There's currently a bug with BuildStairs that only allows you to build stairs in the UP direction (see Total Rise below). Also, if you build the stairs too steep, or build the risers too high, when the stairs are built you won't be able to climb the stairs.

Texturing the Stairs

You can specify textures for your stairs before they are even built. The good thing about this is that you don't have to add textures to all the risers and treads individually once the stairs are built. The bad thing is that you can't specify the tiling - the tiling is "built in". You can change the tiling once the stairs are built, but you're still stuck changing each riser and tread individually.

If you click on the triangle to the left of the BuildStairs behavior that you just added to a portal (under Event Handlers), you'll notice several Material listings: Ceiling, Door Post, Left Wall, Right Wall, Lintel, Riser, and Tread. Add textures as you would for normal rects. The stairs will be built with the textures you designated. Once the stairs are built (a stair "room" is added to the Rooms list), you'll be able to change any texture or tiling on the rects in that room.

Specific properties of BuildStairs

  • Build Now?
    Set this to true when all the other properties have been set, you've designated the textures (see above), and you want the stairs to be built. Once you've set this to true and clicked OK, there's no going back! Your staircase will be built.
  • Staircase Name
    The BuildStairs behavior actually builds a room that has a portal at each end and stairs in the middle. The new staircase will be listed under Rooms in the Hierarchy Tree. Give it a distinct name if you want to.
  • Number of Steps
    Specify the number of steps your staircase will have. The default is 10.
  • Portal-to-Portal Distance
    Specify the distance from the bottom of the stairs to the top of the stairs. The default is 1000.
  • Stairwell Width
    How wide do you want the stairwell. If you specify a width that is greater than the width of the portals, BuildStairs will add walls on flanking the portals on either side.
  • Portal Width
    Since BuildStairs creates a room, the room will have portals on either end of the stairs. Specify a Width for the portals. It should be the same width as the portal that has the BuildStairs behavior attached to it.
  • Portal Height
    Specify a Height for the portals. It should be the same width as the portal that has the BuildStairs behavior attached to it.
  • Total Rise
    Specify the rise or "steepness" of the stairs.
  • Lintel Height
    Specify the Lintel Height (the height of the rect above the bottom portal. This will determine the height of the stairwell ceiling).

BuildRamp

The BuildRamp behavior is just like the BuildStairs behavior except you get a ramp instead of stairs.

NOTE: There's currently a bug with BuildRamp (different than the BuildStairs bug). Once the Ramp is built, you'll notice you can't get through the portal to get to the ramp. You'll have to look for the new Ramp room that has been added to the Rooms in the Hierarchy Tree. Go to the Ramp room's Environment Contents and look for the 2 Polygons listed there. Click on each one individually and change their Bumpable property to false. Now you can enter the Ramp room and go up (or down) the ramp.

Specific properties of BuildRamp

Most of the properties for BuildRamp are the same as BuildStairs (see above). However with the BuildRamp, you are able to designate the tiling for the textures before the ramp gets built. If you want to add textures to the ramp prior to building it (see Texturing the Stairs above), you can specify Ceiling Tile Size, Floor Tile Size, Right Wall Tile Size, and Left Wall Tile Size in the BuildRamp properties.


Move & Roll

Undocumented.

Top of Page


Adding a Texture

Currently the Textures Library has just a few simple textures and is not generally used when building new worlds.

To add an item from the Textures Library, follow these steps:

  1. Items in the Textures Library can be added to two places in the Hierarchy:
    • Rect Material Texture property (walls, floors and ceilings)
    • Portal Material Texture property (walls, floors and ceilings)
  2. Click the Textures tab in the libraries section of the Shaper to see the catalog of Textures.
  3. In the library, click on the texture you want, holding down the mouse button, and drag it to the rect or portal that you want. Release the mouse button. The texture you selected is applied to the object. The default tiling is 0,0 which stretches the texture once over the object. To change the tile size, go the the Material Properties of the rect/portal and change Tile Size.

Top of Page


Attributes Catalog

Most of the shared state Attributes are currently not working or are under development and shared state has been disabled.

  • String
  • Number
  • Visibility
  • Transform
  • Bumpable
  • Whiteboard

Video Texture

The following information is for backwards compatibility only. Use the Video Wall object to place videos in a world.

Video Textures are just that - video mapped onto a 3D texture. It is useful for effects such as a 3D television set displaying streaming video over the Internet. There are also actions that may be used to trigger the playback of video textures, so you can have a 3D button on the 3D television that turns it on.

Video Textures are implemented as "attributes", much like billboard attributes are used to map web pages onto 3D Rects. As with any attribute, it is important to create and save them while logged into a server so it may get valid server ID's. NOTE: if you aren't logged into a server when you save a world that contains a shared state attribute, you won't be able to open the world again! A VideoTexture attribute must be attached to a Gamma Rect object, under its Shared Attributes. Once applied to a Rect, the texture may be manipulated by the properties of the Rect to stretch, compress, or tile the video (think a wall of video monitors, for example)

Specific properties of Video Texture

  • Texture URL
    Specify a URL to a streaming video file that is playable by Windows Media Player. An important limitation is that .asx files are not supported; you should point directly to the .asf file you want.
  • Texture Width
    Here you must specify the width of the source video, in pixels.
  • Texture Height
    Here you must specify the height of the source video, in pixels.
  • Auto-play?
    If set to true, the video will start playing as soon as the user enters the room. Otherwise, it must be triggered with a VideoControl Action.
  • The other properties listed are for use with shared state which has been disabled.

You can set up triggers for the VideoTexture Attribute to start and stop them in response to events within the 3D world. See VideoControl Action for details.

Top of Page


Updated 02/17/01  GDK1848        All Content © Worlds.com, 2004