more refinements and clarifications

This commit is contained in:
David Rose 2004-12-13 02:08:23 +00:00
parent b6ee351bf2
commit 27aae87379
1 changed files with 85 additions and 52 deletions

View File

@ -135,19 +135,29 @@ appear before they are referenced.
This defines the load format of the image file. The
format-definition is one of:
RGBA, RGBA12, RGBA8, RGBA4,
RGBA, RGBM, RGBA12, RGBA8, RGBA4,
RGB, RGB12, RGB8, RGB5, RGB332,
LUMINANCE_ALPHA,
RED, GREEN, BLUE, ALPHA, LUMINANCE
RGB12 and RGBA12 specify 48-bit texels with or without alpha;
RGB8 and RGBA8 specify 32-bit texels, and RGB5 and RGBA4 specify
16-bit texels. Otherwise, the size of the texels is determined by
the width of the components in the image file.
The formats whose names end in digits specifically request a
particular texel width. RGB12 and RGBA12 specify 48-bit texels
with or without alpha; RGB8 and RGBA8 specify 32-bit texels, and
RGB5 and RGBA4 specify 16-bit texels. RGB332 specifies 8-bit
texels.
The number of components of the image file must match the format
specified; otherwise, it is an error and the format specification
is ignored.
The remaining formats are generic and specify only the semantic
meaning of the channels. The size of the texels is determined by
the width of the components in the image file. RGBA is the most
general; RGB is the same, but without any alpha channel. RGBM is
like RGBA, except that it requests only one bit of alpha, if the
graphics card can provide that, to leave more room for the RGB
components, which is especially important for older 16-bit
graphics cards (the "M" stands for "mask", as in a cutout).
The number of components of the image file should match the format
specified; if it does not, the egg loader will attempt to provide
the closest match that does.
<Scalar> wrap { repeat-definition }
<Scalar> wrapu { repeat-definition }
@ -191,6 +201,12 @@ appear before they are referenced.
REPLACE
ADD
The default environment type is MODULATE, which means the texture
color is multiplied with the base polygon (or vertex) color. This
is the most common texture environment by far. Other environment
types are more esoteric and are especially useful in the presence
of multitexture.
<Scalar> combine-rgb { combine-mode }
<Scalar> combine-alpha { combine-mode }
<Scalar> combine-rgb-source0 { combine-source }
@ -310,11 +326,11 @@ appear before they are referenced.
MS_MASK
If alpha-type is OFF, it means not to enable transparency, even if
the image filename ends in .rgba or the format is RGBA12. If
the image contains an alpha channel or the format is RGBA12. If
alpha-type is ON, it means to enable the default transparency,
even if the image filename does not end in .rgba. If alpha-type
is any of the other options, it specifies the type of transparency
to be enabled.
even if the image filename does not contain an alpha channel. If
alpha-type is any of the other options, it specifies the type of
transparency to be enabled.
<Scalar> bin { bin-name }
@ -447,7 +463,11 @@ appear before they are referenced.
<DynamicVertexPool>; see below.)
In neither case does it make a difference whether the vertex pool
is itself declared under a transform or an <Instance> node.
is itself declared under a transform or an <Instance> node. The
only deciding factor is whether the geometry that *uses* the
vertex pool appears under an <Instance> node. It is possible for
a single vertex to be interpreted in different coordinate spaces
by different polygons.
While each vertex must at least have a position, it may also have
a color, normal, pair of UV coordinates, and/or a set of morph
@ -481,7 +501,7 @@ appear before they are referenced.
(1 1 1 1). The morph-list is an optional list of <DRGBA> entries.
<UV> name { u v [morph-list] }
<UV> [name] { u v [morph-list] }
This gives the texture coordinates of the vertex. This must be
specified if a texture is to be mapped onto this geometry. As
@ -493,26 +513,13 @@ appear before they are referenced.
the default UV's.
In addition to the above, when the vertex serves as a control
vertex for a parametric curve the following attributes may be
supplied:
<Scalar> continuity-type { type }
This has meaning for a Bezier curve only. It indicates the type
of continuity that should be forced for the given CV: cut, free,
g1, or smooth. This only applies to the end CV's of each curve
segment: every third CV.
<DynamicVertexPool> name { vertices }
A dynamic vertex pool is similar to a vertex pool in most respects,
except that each vertex might be animated by substituting in values
from a <VertexAnim> table. Also, the vertices defined within a
dynamic vertex pool are given in local coordinates, instead of world
coordinates.
dynamic vertex pool are always given in local coordinates, instead
of world coordinates.
The presence of a dynamic vertex pool makes sense only within a
character model, and a single dynamic vertex pool may not span
@ -558,6 +565,10 @@ GEOMETRY ENTRIES
the given texture to the polygon. This requires that all the
polygon's vertices have been assigned texture coordinates.
This attribute may be repeated multiple times to specify
multitexture. In this case, each named texture is applied to the
polygon, in the order specified.
<Texture> { filename }
@ -567,7 +578,7 @@ GEOMETRY ENTRIES
specify texture attributes given this form.
There's no advantage to this syntax for texture mapping. It's
supported only because it's required by some egg files.
supported only because it's required by some older egg files.
<MRef> { material-name }
@ -582,7 +593,11 @@ GEOMETRY ENTRIES
used unless all vertices also have a normal. If no normal is
defined, none will be supplied. The polygon normal, like the
vertex normal, may be morphed by specifying a series of <DNormal>
entries.
entries.
The polygon normal is used only for lighting and environment
mapping calculations, and is not related to the implicit normal
calculated for CollisionPolygons.
<RGBA> { r g b a [morph-list] }
@ -633,8 +648,9 @@ GEOMETRY ENTRIES
fixed order that all geometry in the same will be rendered, from
smaller numbers to larger numbers.
If no bin scalar is specified, the default is a bin named "fixed",
which is a CullBinFixed object that always exists by default.
If the draw_order scalar is specified but no bin scalar is
specified, the default is a bin named "fixed", which is a
CullBinFixed object that always exists by default.
<Scalar> visibility { hidden | normal }
@ -682,9 +698,10 @@ GEOMETRY ENTRIES
A Line is a connected set of line segments. The listed N vertices
define a series of N-1 line segments, drawn between vertex 0 and
vertex 1, vertex 1 and vertex 2, etc. As with a PointLight,
normals, textures, colors, draw_order, and the "thick" attribute are
all valid.
vertex 1, vertex 1 and vertex 2, etc. The line is not implicitly
closed; if you wish to represent a loop, you must repeat vertex 0 at
the end. As with a PointLight, normals, textures, colors,
draw_order, and the "thick" attribute are all valid.
@ -697,12 +714,13 @@ have specific meaning to the application. However, Panda can create
visible representations of these parametrics to aid visualization.
These entries might also have meaning to external tools outside of an
interactive Panda session, such as a smart polygon mesher.
interactive Panda session, such as egg-qtess, which can be used to
convert NURBS surfaces to polygons at different levels of resolution.
In general, dynamic attributes such as morphs and joint assignment are
legal for the control vertices of the following parametrics, but Panda
itself doesn't support them and will always create static curves and
surfaces. External tools, however, may respect them.
surfaces. External tools like egg-qtess, however, may respect them.
<NURBSCurve> {
[attributes]
@ -749,8 +767,8 @@ surfaces. External tools, however, may respect them.
NURBS control vertices may also be given color and/or morph
attributes (though Panda ignores these), but <Normal> and <UV>
entries do not apply to NURBS vertices.
attributes, but <Normal> and <UV> entries do not apply to NURBS
vertices.
@ -840,7 +858,9 @@ surfaces. External tools, however, may respect them.
[ <Loop> { ... } ... ]
}
Although the egg syntax supports trim curves, there are at present
no egg processing tools that respect them. For instance, egg-qtess
ignores trim curves and always tesselates the entire NURBS surface.
MORPH DESCRIPTION ENTRIES
@ -858,14 +878,12 @@ run time, the morph target's value may be animated to any scalar value
offset is added to the attribute each frame.
There is no explicit morph target definition; a morph target exists
solely as the set of all offsets that share the same target name.
Formerly, the target name must have been a nonnegative integer, but
this restriction no longer applies.
solely as the set of all offsets that share the same target name. The
target name may be any arbitrary string; like any name in an egg file,
it should be quoted if it contains special characters.
The following types of morph offsets may be defined, within their
corresponding attribute entries (an older, still supported, syntax
defined the target name after the first curly brace, instead of before
it):
corresponding attribute entries:
<Dxyz> target { x y z }
@ -879,7 +897,8 @@ it):
A normal delta, similar to the position delta, valid within a
<Normal> entry (for vertex or polygon normals). The given offset
vector, scaled by the morph target's value, is added to the normal
vector each frame.
vector each frame. The resulting vector may not be automatically
normalized to unit length.
<DUV> target { u v }
@ -946,11 +965,15 @@ GROUPING ENTRIES
<Dart> { boolean-value }
<Global> { boolean-value }
These two attributes are lexically equivalent, and indicate that
this group begins a character. A Character node will be created
for this group.
This indicates that this group begins an animated character. A
Character node, which is the fundamental animatable object of
Panda's high-level Actor class, will be created for this group.
This flag should always be present within the <Group> entry at the
top of any hierarchy of <Joint>'s and/or geometry with morphed
vertices; joints and morphs appearing outside of a hierarchy
identified with a <Dart> flag are undefined.
<Switch> { boolean-value }
@ -1002,6 +1025,16 @@ GROUPING ENTRIES
the Z-fighting artifacts one might expect without the use of the
decal flag.
<Scalar> decalbase { boolean-value }
This can optionally be used with the "decal" scalar, above. If
present, it should be applied to a sibling of one or more nodes
with the "decal" scalar on. It indicates which of the sibling
nodes should be treated as the base of the decal. In the absence
of this scalar, the parent of all decal nodes is used as the decal
base. This scalar is useful when the modeling package is unable
to parent geometry nodes to other geometry nodes.
<Scalar> collide-mask { value }
<Scalar> from-collide-mask { value }
<Scalar> into-collide-mask { value }