Matrix multiplication - Scene Graphs
- by bgarate
I wrote a MatrixStack class in C# to use in a SceneGraph. So, to get the world matrix for an object I am suposed to use:
WorldMatrix = ParentWorld * LocalTransform
But, in fact, it only works as expected when I do the other way:
WorldMatrix = LocalTransform * ParentWorld
Mi code is:
public class MatrixStack
{
Stack<Matrix> stack = new Stack<Matrix>();
Matrix result = Matrix.Identity;
public void PushMatrix(Matrix matrix)
{
stack.Push(matrix);
result = matrix * result;
}
public Matrix PopMatrix()
{
result = Matrix.Invert(stack.Peek()) * result;
return stack.Pop();
}
public Matrix Result
{
get { return result; }
}
public void Clear()
{
stack.Clear();
result = Matrix.Identity;
}
}
Why it works this way and not the other? Thanks!