Polygons - Winding Order

Does the Collada spec indicate which order the vertices on a single-sided polygon should be listed (eg. clockwise when viewed from visible side)?

Or is this a configurable in same way as Y_UP, Z_UP etc?

It is counter-clockwise and yes, it should be in the spec. Thank you for pointing this out.

Similarly… I’d like to ask a clarification. I didn’t see an overarching statement for the right/left handedness of matrices, vertices, etc. It specifies right-handed in the <asset> reference… does that imply that all coordinates are right handed for everything (even if not governed by an <asset> elem.)? (I hope so…)


COLLADA standardizes on a right-handed coordinate system. The <asset> element allows for up axis orientations within a right-handed frame. This design choice gives enough flexibility to the video gaming markets, and can be implemented with swizzling logic and not multiplication (that could loose precision).

Thanks for pointing out that ommision in the specification.

Is it safe to swizzle the y and z matrix columns as well as the y and z translation to transform from one up axis to another?

Yes, that is the design intention of the <up_axis> element.

While we’re on the topic of up axes, I have a question. I’m adding in support for <up_axis> now, and I notice everyone talks about implementing it via swizzling. Why couldn’t I just add a rotation to the root node that rotates the given orientation into the orientation I use? It seems that’d be both easier to code and more efficient. Does it have something to do with the comment marcus made above about losing precision?