I've started to work on a transformation hierarchy, but I have found that if I attach a camera to a scene node that doesn't have a uniform scale of 1.0, then it throws off my view matrix when I calculate it. I calculate my view matrix from my camera scene node by taking its final transform matrix in world-space, and creating the inverse-transpose of that whenever something changes.
Another issue I keep getting stuck on is how to calculate global position, rotation, and scale. My current Transform class has a pointer to its parent, knows its final transform by the time it has to update, and can get the parent transform's local position, rotation and scale. I thought about just multiplying my Transform's final transform matrix by a vector of zero to get its global position, but any scaling from up the hierarchy would be applied to it too.