How to find relative translation...

My question is about the math involved in scene graphs and how they determine relative translations..

Say I have a node in my tree that is the terrain, positioned at 0, 0, 0.

What mathematical equation do I use to find the transformation variables for a dwarf which is located relatively to the above node...

I know you have to take the terrains transformation matrix, which should read out 0, 0, 0 to gltranslate... but do I add the dwarf's transformation matrix to find his relative location, or multiply it?

I havn't taken any math classes in over 2 years and I admit I'm a bit rusty with my algebra.

I'll show you the code I have...

Code:

`class CDOFNode : public CSceneNode`

{

public:

CDOFNode()

{

}

~CDOFNode() { }

void Update()

{

glPushMatrix();

this->FinalMatrix = LocalMatrix * ParentNode->FinalMatrix;

glMultMatrixf(this->FinalMatrix.readArray());

CSceneNode::Update();

glPopMatrix();

}

void Initialize( Vector4 translation) // Updates local matrix

{

LocalMatrix.Translation(translation);

}

private:

Matrix4 LocalMatrix;

};

This doesn't work at all, seeing as how when my program runs I get polygons all over the screen, kinda like a kaleidoscope. I ran the debug and it's obvious that my FinalMatrix is not what it should be.

Any help?