<Transform> blocks don't work on .egg files?

I’ve tried using the blocks as specified in the egg file specification, but I see no visual effect for them, even though they appear listed when I print the hierarchy with shift-l in pview.

I’m using them like this:

<Group> name {
  <Transform> {
    <Matrix4> {
       ...
    }
  }
  <VertexPool>{...}
  <Polygon> {..}
  ...
}

Do I have to transform the vertices to their world positions anyway? If so, what good is the transform?

The matrix actually stores the transformations (translation, rotation, scale) of that node and all it’s children. It’s normally generated when you need to keep it’s local transforms or it’s local pivot/position.

You’ll see it’s effect when you move & rotate it around.
You didn’t actually hand-edit the .egg, did you ?

No, I didn’t hand edit them, I was generating them with my exporter. But anyway, I think I understand now… you have to transform all vertices to their world positions whether you export the transform or not.

I still have a couple of questions though. In the case of nested groups, what is the transform supposed to represent: the group’s world transform or the local transform relative to its parent?
And in the case of a character, will the transform also affect the joints?

Right. The egg syntax specifies that vertices are always given in world space, regardless of transforms.

From eggSyntax.doc:

  <Transform> { transform-definition }

    This specifies a matrix transform at this group level.  This
    defines a local coordinate space for this group and its
    descendents.  Vertices are still specified in world coordinates
    (in a vertex pool), but any geometry assigned to this group will
    be inverse transformed to move its vertices to the local space.

which should also answer your second question: each represents the local transform of the node relative to its parent. This is also true of characters, whose joint positions are defined by entries, not vertex coordinates.

David