add menu & term menu frames add term menu frame remove all frames (also use these if stuck in another frame) term list frame only add term list & menu frames
Introduction Introduction | News/Updates News/Updates | Files Files | Measurement Measurement | Terms Terminology/Script Commands
RWXing RenderWare Scripting (RWX) | Avatars Avatars | Links Links | Site Index Site Index | Search Search

Terms Terminology

Knowing the terminology (terms) and language of something makes understanding it easier—usually, anyway. I have included references to Criterion's RenderWare API Reference in the definitions, along with my interpretations. If the definitions do not make sense, explore the links within them. I've tried to explain things to a certain degree, but I can only do so much explaining before it gets ridiculous. If you're having trouble, search for more information on the Net. Good sites I've found are:

Another thing you can do is access the Active Worlds worldbuilders newsgroup and ask questions there. Lastly, you can email me and ask to explain something further--but only email me after you've exhausted the contents of this site and its links.

Note: please don't override this page's colors with your web browser's colors, as this page's colors are used to aid in illustration of terms.

Terms/script commands format/syntax:

term/script command: [(alternate name(s)—if any)]

  1. definition(s)/description

The command syntax/argument(s) is/are how the command is actually written (syntax) in the script. Some terms/commands will have subterms/subcommands, some terms are the commands, and some terms are just terms. It may be confusing at first but just keep exploring the links and it should sink in eventually.

Roland has added the complete "RWX Command Reference" (no direct link) to AW3+'s help, so be sure to read it as well in case there are discrepancies (which I've tried to mention on the site but there may be some I missed).

3D Terms & RenderWare Script Commands

model [3D "object"/"script"/RenderWare script (RWX) file]: A collection of clumps.

subatomic particle (quark) > atom > molecule = energy/matter
vertex > polygon > primitive > clump/model = object/script


clump

  1. A collection of Polygons and Vertices. Clump objects allow applications to handle large numbers of related polygons and vertices as a single, atomic entity. This greatly simplifies application construction.
  2. occupies volume in world space

    clumpbegin: Begins clump; used after a modelbegin statement.
    clumpend: Ends clump; used before a modelend statement.

    Note: Nested clumps can be used to make part of an object non-solid.

# ("pound" sign, "number" symbol):

  1. a whole number (1, 2, 3, etc) or with decimals (1.5, 3.145, etc)
  2. Used to make comments, label vertices, or other information (creator, date, copyright, etc).
  3. RenderWare ignores # and anything after it on that line.

    Note

    1. Using # before a texture command, or any text with "texture" as the first word, will cause Active Worlds to still either download the texture (and mask, if specified) or a texture file with the name of the first word after "texture" (adding a ".jpg" to the end). This is an AW bug.
    2. AW3+ will not ignore "#!" (but AW 2.2- will) so be sure to use it before prelight, collision, and textureaddressmode so objects still work for AW 2.2 users and for older RWX programs. However, if a single "#" appears anywhere before "#!", AW3 will ignore the "#!" so if you want to make a comment on a vert with "#!", put it after the RWX command extension.


Cartesian Graphing System (x,y,z) coordinate

  1. In RenderWare, a coordinate is a location/point in three-dimensional (3D) Cartesian space. These dimensions are represented by three axes (lines) from a single, central, relative location/point (origin):

      x-axis/coordinate: horizontal/width/left-to-right
      y-axis/coordinate: vertical/height/up-and-down
      z-axis/coordinate: depth/front-to-back

  2. RenderWare uses a right-handed world coordinate system. This has the same orientation as that given by taking the thumb, first and second fingers of your right hand as the x, y and z axes, respectively. The positive x axis points to the right, the positive y axis points up, whilst the positive z axis points forwards (out of the screen).


vertex ("vert", vertices/"verts"):

  1. point/dot/corner
  2. defined in any order to form a polygon

    vertex # # # uv # # prelight # # #: where the first # is the x-coordinate, the second # is the y-coordinate, and the third # is the z-coordinate. uv and prelight coordinates are optional.


    UV

    1. Grover: "'UV' originates in vector calculus and represents transpositions and vector functions that are almost always taken from the Cartesian system to the u,v,w system".
    2. Used after vertex coordinates; defines texture repetitions across vertices.
    3. Texture coordinates, conventionally called (u, v). These coordinates are each in the range [0.0 - 32.0] and measure how far to the right and below the upper left corner of the image (respectively) to take the texel color. Each vertex in a clump may be assigned a pair of texture coordinates. A textured image is "wrapped" over a polygon by interpolating texture coordinates defined at the vertices over the polygon's projection.
        Note: Even though it says the range of the UV coordinates is from 0 to 32, I have used 180 on a ground object and more than 32 on chainlink fences. Some viewers (RWXMod and RWXLook, specifically) won't render an object if the UV coordinates are more than 32, but once inside Active Worlds, objects render fine. I think the limit is around 360 in Active Worlds, though, but I'm not sure. If anyone finds out, email me. kf: "I have made grounds with UV values up to 600, which work very well. Such high values are needed when, for example, you have a non-repeating formed ground in a large world to prevent the ground ending before the maximum sight (1200m) ends."
    4. see texture mapping and textureaddressmode
    5. To get a random and unpredictable pattern similar to that of AW3-3.1, use randomuvs.

    vertex # # # uv # #: Where the first # after uv is the horizontal distance across the texture and the second # after uv is the vertical distance across the texture.


    prelight: Light (currently the world's ambient light color) is calculated starting from this color.

      vertex # # # uv # # # prelight # # #: Where the #s after prelight are from zero (0) to one (1) in the RGB (red-green-blue) color system:

        0 0 0 = black (default): same as world ambient color
        1 0 0 = red
        0 1 0 = green
        0 0 1 = blue
        .5 .5 .5 = grey
        1 1 1 = white
        etc.

        See editors/viewers for programs to make color selection easier.

      Note:

      1. Roland: "Unspecified prelight colors on vertices now default to the previously specified prelight color (if any) in the same clump, instead of to black. This allows multiple vertices to be initialized to the same prelight value without having to individually specify a prelight color for each one."
      2. AW3+ wireframe polygons are always prelit white.
      3. See prelighting for more tips and tricks.


polygon ("poly"/face/facet/side): More than one vertex (usually more than 4 when used in a RenderWare script file) connected together to form a polygon.


primitives: Simple ("primitive") premade shapes used to make modelling a little easier.


material

  1. Each polygon has an associated material object, which defines the appearance of the polygon. Each material object may be shared by many polygons. Material objects encapsulate the following surface properties: geometrysampling type, lightsampling type, RGB color; ambient, diffuse and specular coefficients of reflection, opacity, texture, and texturemodes.
  2. See geometrysampling, lightsampling, color, surface (which contains ambient, diffuse, and specular), opacity, texture, and texturemodes.


geometrysampling: How polygons are rendered.

geometrysampling wireframe
geometrysampling solid
geometrysampling solid
Geometry/Light Sampling Example
no lightsampling
or
lightsampling facet or vertex
lightsampling facet
lightsampling vertex

lightsampling: how light is displayed across polygons


color: specifies colors of polygons


surface

  1. how polygons reflect light from light source(s)
  2. Used to specify ambient, diffuse, and specular commands (coefficients) in a single command.


opacity (visibility/invisibility, transparency/see-throughness):


texture

  1. A texture is an image that covers a polygon to give it a "texture".
  2. RenderWare uses Windows bitmap (BMP) or Sun Rasterfile (RAS) format images, but Active Worlds uses JPG format for textures, which the RW 2.1 DLL drivers will reduce (depending on the DLL file) to a size of either 128 pixels wide x 128 pixels high or 256 pixels wide x 256 pixels high (if single frame), or 128 x n or 256 x n (with n being the amount of pixels in either 128- or 256-pixel increments—again, depending on the DLL) for multi-framed/animated textures) resolution automatically. Having the JPG/BMP 128x128, 256x256, 128 x n, or 256 x n textures/masks prevents RW from having to resize them once downloaded, if the texture(s)/mask(s) was/were higher than these resolutions). Note: RW3 and AW3 have different texture resolutions and requirements you should become aware of. Also, from Roland: "It's worth mentioning that the largest possible texture size you can use in AW is actually a function of your video card; not all video cards support textures as large as 512 x 512, while others can do 1024 x 1024 or even larger. However, the 3.0 browser *should* automatically scale any JPEG down to the largest possible supported texture dimension on your card; in other words, you'll still see the texture, just not with as high a resolution."
  3. Textures are applied by assigning a texel color to each pixel within a projected polygon from an associated position within that image. This position is specified by a pair of texture coordinates, conventionally called (u, v) (see uv).

    texture <texture>: Where <texture> is the name of the texture, with or without the extension (".bmp", ".jpg",".ras").


    mask

    1. An image used to make parts of a texture invisible/opaque/see-through/transparent.
    2. In RW 2.1, a mask is a black-and-white 1-bit resolution depth image the same size as the texture it is masking. The black part will be what is invisible/not shown, while the white part will be what is visible/shown.
    3. In RW3 and AW3, masks can either be 1-bit or up to 8-bit greyscale. Note: All masks will now reduce a texture's color bit depth from 16- to 12-bit because AW3 does not support 32-bit color.
    4. AW and RW use BMP format images for masks, which will be handled, resolutionwise, as textures are as explained above.
    5. more generic definition

      texture <texture> mask <texture>: Same as texture command above except with mask <texture>, where <texture> is the name of the mask, with or without the extension (".bmp").

    Note:

    • The texture doesn't need to have a black area around what is shown in the original image (tree3.jpg for this example). The black and white colors are only for the mask.
    • If a texture and mask are declared for texturemapped polygons before the same texture (minus the mask) is declared for non-texturemapped polygons, the non-texturemapped polygons won't be textured in AW (will be polygon color) and will appear invisible in RWXMod. If the polygons are primitives, they still won't appear untextured in AW, and won't load (and will give errors) in RWXMod and possibly other modellers).
Texture/Mask Example
(128x128 resolution tree3m)

texture

mask

texture+mask combined

Because web browsers can't create masked images the same way AW/RW do, and to reduce file size, I use some GIFs for the above example.


texture mapping: Applying UV coordinates to vertices in order to place textures on an object.


texturemode/texturemodes/addtexturemode/removetexturemode

  1. Sets lit, foreshorten, and filter settings for textures.
  2. Permits fine grain control over the rendering of textures.


clamped/smeared (2x2, UV 0-2) wrapped/unclamped (2x2, UV 0-to-2) normal (1x1, UV 0-to-1)


textureaddressmode wrap, mirror, or clamp


texturemipmapstate on or off: turn mipmapping on or off


prototype

  1. A way to minimize clump repetition by separation and modularity.
  2. From section 19.3 of Ferraro's book: "Modeling prototypes are very similar to software prototypes. They are organizational constructs that allow objects to be built modularly. Prototypes are defined with the ProtoBegin and ProtoEnd brackets. Prototypes do not necessarily generate clumps. They are simply groups of commands that can be included into a structure using the ProtoInstance comand."
  3. See tree shadow and Grover's Renderware Walk-Through: Transforms for more info and examples.


transform (transformation):

  1. A shortcut for applying the translate, rotate, and scale commands in a single command; only use this if you understand matrix algebra (finite math).
  2. primarily used in avatars
  3. Take[s] a 4 x 4 transformation matrix as an argument, e.g., Transform, require[s] the matrix to be specified by a sequence of sixteen real numbers (separated by spaces) representing its elements. The Transform and TransformJoint scripting keywords expect the matrix elements to be specified in row-major order, i.e., the first four elements specify the first row of the matrix, and so on.
  4. RenderWare uses 4 x 4 homogeneous matrices to represent 3D transformations. Rotation and scaling are encoded in the top-left 3 x 3 sub-matrix, and translation in the final row.

    transform # # # # # # # # # # # # # # # #:


      transform <scale x> <rotate #> <rotate #> 0 <rotate #> <scale y> <rotate #> 0 <rotate #> <rotate #> <scale z> 0 <translate x> <translate y> <translate z> 1

      Note: I am not 100% certain of the placement of transform commands, but I think everything is correct except the specifics of the rotate commands. Andras explains transformation better, and Just In has some images (transform, rotate) that illustrate it. Note how the rotations aren't really rotations at all but skews! So much for doing transform "rotations" using the rotate command. Oh well...

    Table 1: Transform 4x4 Scaling/Rotation Matrix

    Transform 4x4 Scaling/Rotation Matrix
    scale x rotate rotate 0
    rotate scale y rotate 0
    rotate rotate scale z 0
    translate x translate y translate z 1

    transformbegin: begins transform
    transformend: ends transform

    transformjoint: Allows limb/joint movement, specifically in avatars, but can also be used to pivot polygons or clumps of polygons (doors, handles, knobs, buttons). In Active Worlds, SEQs are used in avatars (although hopefully one day in non-avatars too) to take advantage of limb/joint movement, or transformjoint commands.

      transformjoint # # # # # # # # # # # # # # # #:

        transformjoint <scale x> <rotate #> <rotate #> 0 <rotate #> <scale y> <rotate #> 0 <rotate #> <rotate #> <scale z> 0 <translate x> <translate y> <translate z> 1

      Note: So much for non-avatar object pivoting support. Transformjoint is unsupported in AW3+.

      translate (translation): Moves/offsets/shifts polygon(s)/clump(s) linearally along an axis/axes.

        translate # # #: Where the first # is the x-coordinate (horizontal/width/left-to-right) distance to be translated, the second # is the y-coordinate (vertical/height/up-and-down) distance to be translated, and the third # is the z-coordinate (depth/front-to-back) distance to be translated

      rotate (rotation): Moves polygon(s)/clump(s) around (an) axis/axes.

        rotate # # # #: Where the first # is the x-coordinate (horizontal/width/left-to-right), the second # is the y-coordinate (vertical/height/up-and-down), and the third # is the z-coordinate (depth/front-to-back); the last # is the degree of the rotation.

      scale (scaling): Enlarges or shrinks polygon(s)/clump(s).

        scale # # #: Where the first # is the x-coordinate (horizontal/width/left-to-right) amount to be scaled, the second # is the y-coordinate (vertical/height/up-and-down) amount to be scaled, and the third # is the z-coordinate (depth/front-to-back) amount to be scaled


tag

  1. Mainly useful for identifying parts of a hierarchical model so that they may be located and manipulated in an application program. A RenderWare application can then locate a particular clump within a clump hierarchy.
  2. Placed before polygons or after a single quad, triangle, or polygon declaration.


axisalignment (sprite/facer/decal):

  1. Keeps clump in-line with certain axes relative to camera (your perspective, depending on if in 1st- or 3rd-person view perspective mode).
  2. Clumps may have their axes aligned with the "Look At", "Look Right" and "Look Up" vectors of the camera used to render that clump. This is mainly useful for creating sprites or decals (2D bitmaps aligned with the viewplane of the viewing camera). However, a clump's axis alignment type may be used to constrain the motion of any clump.


collision: Enables/disables collision detection (solidity).


hints: Enable RenderWare to render a scene containing that clump more efficiently; hint arguments can be linked together.


includes: Reference (link to) another model into the current model without having to have the other entire model's code in the current model.


z-buffer(ing): See nVidia's, Webopedia's, and Wikipedia's z-buffer(ing) definitions.

Script Command Defaults

default: Automatically assumed without declaring/stating/specifying otherwise; command does not need to be included in script.
null: nothing/void; no value

CommandValue
ambient0
diffuse0
specular0
lightsamplingfacet
geometrysamplingsolid
color0 0 0 (black)
opacity1
tag0
texturenull
texturemipmapstateon*
texturemodelit, filter*, foreshorten*
materialmodenull
* AW3+ only (but include for AW 2.2 backwards compatibility)


Introduction Introduction | News/Updates News/Updates | Files Files | Measurement Measurement | Terms Terminology/Script Commands
RWXing RenderWare Scripting (RWX) | Avatars Avatars | Links Links | Site Index Site Index | Search Search