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?