LibGDX setToRotation canceling out position

I’m working on a 3d project in Libgdx. I’ve got a camera flying around in 3d space, being controlled with touch. Works great, moves forward and backward, strafes, full 360 look around with no gimbal lock.

But, I want my player to be able to see what they’re holding. So I’ve added a "hands" model instance, which I’ll change out depending on what is being held. I’ve positioned the model in front on the camera, which works fine.

But then whenever I try to call a transform.setToRotation, it sets the rotation, but moves the position back to 0,0,0. Does anyone know why this is happening? Here’s my camera update code:

public void updateCamera() {     // left right look     camDir.set(cam.direction);      cam.rotate(cam.up , deltaX);      // up down     tempVec.set(camDir.crs(cam.up), deltaY);     cam.rotate(tempVec);         cam.update();      // move forward      cam.position.add(forwardTemp.set(cam.direction).scl(deltaForward));     cam.update();      // strafe     strafeTemp.set(cam.direction);     strafeTemp.rotate(cam.up, 90);       cam.position.add(strafeTemp.scl(deltaStrafe));     cam.update();          // move tool hands to match     handPos.set(cam.position);     handPos.add(forwardTemp.set(cam.direction).scl(1.5f));     handInst.transform.setToTranslation(handPos);      handInst.transform.setToRotation(cam.direction, Vector3.X);      } // end updateCamera