I see. A follow-up, then: How do you, Raft, do area-specific collision-detection. Because the way I was going about it was to add primitives to specific joints and collide them with my collision objects.

a Joint is just a part of Skeleton. It doesnt know anything about which Animated3D it's related to. furthermore more it does not even have a location in Skeleton. that data is stored in SkeletonPose class.

just use the code below for WS of a joint. (not tested but it should work)

1. jPCT possibly copies matrix values at setTranslationMatrix(..) not holds a reference to it. (beeing open source really helps on these kinds of things)2. More importantly, the joint transformations retrieved by SkeletonPose.getGlobal(..) are in object space. they have no relation to translation applied to AnimatedGroup or Animated3D.

I assume Animated3D.getRoot().translate(...) is the way to move everything, including its Skeleton. Am I wrong?

no, it just moves the model, AnimatedGroup and Animated3D. Skeleton does not move anywhere. indeed, Skeleton is not even something that can be moved around. it's just a definition of joint hierarchies, not a physical thing if that is the correct expression.