I just noticed an anomaly with rotation axii when rendering meshes. Or well, it probably isn't an anomaly but rather me making incorrect assumptions.
Anyway, I have been able to reproduce the issue with this simple transform matrix:
XMMATRIX matOverride = XMMatrixIdentity(); matOverride *= XMMatrixScaling(1.0f, 1.0f, 1.0f); matOverride *= XMMatrixRotationRollPitchYaw(0.0f, (float)D3DXToRadian(testAngle), 0.0f); matOverride *= XMMatrixTranslation(0.0f, 0.0f, 0.0f);
testAngle is a float that is set to the fmod of itself increased by 90 degrees each second and 360 (to keep it in valid degree range, because that's just simpler to read in numeric print-outs than radians).
The scaling and translation parts are set just to ensure those didn't cause the offset by the way.
A mesh rendered with the above as its world matrix will rotate around it's translation. It is hard to describe but the whole thing swirls around as if being attached to a pole by its side. The effect I expected to see is that it would rotate in-place without seemingly moving as it currently does.
So for the question, is it supposed to work like this so that I would have to first offset the mesh half its negative size before applying the rotation to get it to just rotate "in place"? Or am I missing something?
Edit: actually, offsetting doesn't seem to work either... odd.
Thanks in advance,
Edited by Husbjörn, 29 January 2014 - 03:26 PM.