@dubois I engaged in the discourse about this issue a few years ago…
Initially I needed it for importing a kind of skinnedmesh that mirrored half of the model to create the other side of the model as an optimization.
The discussion convinced me that while it is a legitimate operation in some contexts, it’s actually pretty ill defined for reasons similar to what you’re referencing.
If you mirror one axis, its pretty trivial to figure out how to flip the winding to be correct, but what happens when you flip 2 axes.. or 3?
Is there a “correct” way to handle it?
Then there is also what happens with zero scales.. which is a similar kettle of fish.
I think i need to draw a sketch, but my hunch is telling me that these cancel out? Eg at some point, you could achieve the same with just rotation? Half of the skinned human, has to be mirrored once. But if you mirror it along another axis, you could just rotate it and get the same result. Then if you flip the last axis, you again end up with a mirror.
Each mirroring toggles the coordinate system left-handed ↔ right-handed. So even number of toggles (whatever the axes are) keeps the handiness the same, odd number – toggles it.
Two coordinate systems with the same handiness can always turn into each other by a mere rotation; for systems with different handiness this is impossible.
Ah, thats a much better way of putting it. Yeah, if you flip two, you end up in the same handedness, thus, you can just rotate. One, turns it from right handed to left handed, you cant rotate into that position, it is a mirror.