Okay so if I have:
if I have a BranchGroup containing TransformGroup A, that performs a translation and has TransformGroup B as a child. And B performs a rotation and has Shape3D children.
I should get:
no translation on B children and only rotation?
?? not sure. B has no translation with respect to A, but very well in the world. The shape is first translated, then rotated in the new position.
It seems that would make it very difficult to create a complicated object.
?? No, it is constructed that way to make complicated object simple! Having a spinning radar on a big ship e.g. - just spin the TransformGroup of the radar that is a child of the ship. The radar will travel anywhere the ship goes....
I currently have it so the transform applies to everything under it in the graph. In the above example I'm getting a weird effect, the rotation works but the translation looks like it is causing a shear instead of a translate any idea what is causing that? I use the bottom row of the matrix for the translation which I think is correct. So it does a glMultMatrix for the translation and then another glMultMatrix for the rotation.
A 4x4 matrix can express a shear, so I assume you matrix construction has bugs.