MultiGen Model Flags

This document describes the different kinds of model flags one can place in the comment field of MultiGen group beads. The general format for a model flag is:

<egg>{ <FLAGNAME> {value} }

The most up-to-date version of this document can be found in:

$PANDA/src/doc/howto.MultiGenModelFlags

Quick reference

FLAG

DESCRIPTION

<egg>{ <Model>      {1} }

Handle to show/hide, color, etc. a chunk

<egg>{ <DCS>        {1} }

Handle to move, rotate, scale a chunk

<egg>{ <ObjectType> {barrier} }

Invisible collision surface

<egg>{ <ObjectType> {trigger} }

Invisible trigger polygon

<egg>{ <ObjectType> {floor} }

Collides with vertical ray (used to specify avatar height and zone)

<egg>{ <ObjectType> {sphere} }

Invisible sphere collision surface

<egg>{ <ObjectType> {trigger-sphere} }

Invisible sphere collision surface

<egg>{ <ObjectType> {camera-collide} }

Invisible collision surface for camera

<egg>{ <ObjectType> {camera-collide-sphere} }

Invisible collision surface for camera

<egg>{ <ObjectType> {camera-barrier} }

Invisible collision surface for camera and colliders

<egg>{ <ObjectType> {camera-barrier-sphere} }

Invisible sphere collision surface for camera and colliders

<egg>{ <ObjectType> {backstage} }

Modeling reference object

<egg>{ <Decal>      {1} }

Decal the node below to me (like a window on a wall)

<egg>{ <Scalar> fps { # } }

Set rate of animation for a pfSequence


Details

The player uses several different types of model flags: HANDLES, BEHAVIORS, and PROPERTIES. The following sections give examples of some of the most common flag/value pairs and describes what they are used for.

Handles

These flags give the programmers handles which they can use to show/hide, move around, control the texture, etc. of selected segments (chunks) of the model. The handle is the name of the object bead in which one places the flag (so names like red-hut are more useful than names like o34).

<egg>{ <Model> {1} }

Used to show/hide, change the color, or change the collision properties of a chunk.

<egg>{ <DCS> {1} }

Used to move, rotate, or scale a chunk of the model. Also can be used (like the <Model> flag) to show/hide, change the color, and change the collision properties of a chunk.

Behaviors

These flags are used to control collision properties, visibility and behavior of selected chunks. An “X” in the associated column means:

  • VISIBLE — the object can be seen (see NOTE below for invisible objects)

  • SOLID — avatars can not pass through the object

  • EVENT — an event is thrown whenever an avatar collides with the object

FLAG

VISIBLE

SOLID

EVENT

<egg>{ <ObjectType> {barrier} }

X

X

<egg>{ <ObjectType> {trigger} }

X

<egg>{ <ObjectType> {backstage} }

Descriptions

  • BARRIERS are invisible objects that block the avatars. Use these to funnel avatars through doorways, keep them from falling off bridges, and so on.

  • TRIGGERS can be used to signal when avatars have entered a certain area of the model. One could place a trigger polygon in front of a door, for example, so the player can tell when the avatar has moved through the door.

  • BACKSTAGE objects are not translated over to the player. Modelers should use this flag on reference objects that they include to help in the modeling task (such as scale references).

Important note

It is not necessary, and in fact in some cases it will actually cause problems if you set the transparency value for the invisible objects above (barrier, trigger, eye-trigger) to 0.0. These objects will automatically be invisible in the player if they have been flagged as one of these three invisible types. If you wish to make it clear in MultiGen that these objects are invisible objects, set the transparency value to some intermediate level (0.5). Again, do not set the transparency value to 0.0.

Properties

These are used to control properties of selected chunks.

<egg>{ <Scalar> fps { frame-rate } }

This specifies the rate of animation for a pfSequence node.


Notes

1) Combinations

Multiple flag/value pairs can be combined within a single <egg> field. For example:

<egg>{ <Model> {1}
       <ObjectType> {barrier} }

Generally, the <Model> flag can be combined with most other flags (except <DCS>). Each bead, however, can only have one <ObjectType> flag.

2) Newlines, spaces, and case (usually) do not matter. The above entry could also be written as:

<egg>{<model>{1}<objecttype>{barrier}}

3) Where to place the flags

All model flags except <Normal> flags are generally placed in the topmost group bead of the geometry to which the flag applies.

GROUP  <- place flags here, except <Normal>
  |
  ---------------------------
  |           |            |
OBJECT1     OBJECT2      OBJECT3 .....
  |           |            |
polygons    polygons     polygons  <- place <Normal> flag here

Flags can also be placed in object beads, though for consistency sake it is better to place them in the group beads.

4) Flags at different levels in the model

Flags in lower level beads generally override flags in upper level beads.

5) For more detailed information see $PANDA/src/doc/eggSyntax.txt.