The conventional suffix for a TLIST file is .grp ("group")
or .prj ("projective" matrices).
Collection of 4x4 matrices, used in the transforms section of and
INST object.
Syntax:
TLIST # key word
<4x4 matrix (16 floats)>
... # any number of 4x4 matrices
transform { # reference to a transform object
<transform object (can be a handle)>
}
tlist { # nested TLIST
<TLIST OOGL object (can be a handle)>
}
TLISTs are used only within the transforms clause of an
INST object. They cause the INSTs geom object to
be instantiated once under each of the transforms in the TLIST.
The effect is like that of a LIST of INSTs each with a
single transform, and all referring to the same object, but is more
efficient.
TLISTs can be nested: effectively this means that all
transformations in each nested TLIST object are multiplied (from
the left) by the transformations in the outer TLIST object.
Be aware that a TLIST is a kind of geometry object, distinct from a
transform object. Some contexts expect one type of object,
some the other. For example in
INST transform { : myT } geom { ... }
myT must be a transform object, which might have been created with the GCL
(read transform { define myT 1 0 0 1 ... })
while in
INST transforms { : myTs } geom { ... }
or
INST transforms { LIST {: myTs} {< more.prj} } geom { ... }
myTs must be a geometry object, defined e.g. with
(read geometry { define myTs { TLIST 1 0 0 1 ... } })
A TLIST BINARY format is accepted. Binary data begins with a
32-bit integer giving the number of transformations, followed by that
number of 4x4 matrices in 32-bit floating-point format. The order of
matrix elements is the same as in the ASCII format.