Skip to content

Instantly share code, notes, and snippets.

@tarukosu
Last active April 9, 2017 11:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tarukosu/1dd07e7e8e29b9cc4b9461f3276bff77 to your computer and use it in GitHub Desktop.
Save tarukosu/1dd07e7e8e29b9cc4b9461f3276bff77 to your computer and use it in GitHub Desktop.
Calibrate method
public void Calibrate()
{
var headPos = localBody.Joints[Kinect.JointType.Head].Position;
var rarmPos = localBody.Joints[Kinect.JointType.ElbowRight].Position;
var larmPos = localBody.Joints[Kinect.JointType.ElbowLeft].Position;
var cameraOffset = -0.15f * Camera.main.transform.forward;
var cameraPos = Camera.main.transform.position + cameraOffset;
var cameraRotation = Camera.main.transform.rotation;
var cameraRotationY = Quaternion.AngleAxis(cameraRotation.eulerAngles.y, Vector3.up);
var lToR = rarmPos - larmPos;
var angle = -Mathf.Atan2(lToR.z, lToR.x) * Mathf.Rad2Deg;
var headRotation = Quaternion.AngleAxis(angle, Vector3.up);
var kinect2Head = Matrix4x4.TRS(headPos, headRotation, Vector3.one);
var origin2Head = Matrix4x4.TRS(cameraPos, cameraRotationY, Vector3.one);
var origin2Kinect = origin2Head * kinect2Head.inverse;
Vector3 position = origin2Kinect.GetColumn(3);
Quaternion rotation = Quaternion.LookRotation(
origin2Kinect.GetColumn(2),
origin2Kinect.GetColumn(1)
);
bodyObject.transform.position = position;
bodyObject.transform.rotation = rotation;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment