mirror of
https://github.com/hanetzer/sdraw_mods_cvr.git
synced 2025-09-03 10:29:22 +00:00
Update to Ultraleap Unity Plugin 6.12.0
This commit is contained in:
parent
3713253375
commit
0fccd9e892
2 changed files with 64 additions and 23 deletions
65
ml_lme/vendor/LeapCSharp/Device.cs
vendored
65
ml_lme/vendor/LeapCSharp/Device.cs
vendored
|
@ -263,33 +263,52 @@ namespace Leap
|
||||||
return devicePose;
|
return devicePose;
|
||||||
}
|
}
|
||||||
|
|
||||||
//float[] data = new float[16];
|
float[] data = new float[16];
|
||||||
//eLeapRS result = LeapC.GetDeviceTransform(Handle, data);
|
eLeapRS result = LeapC.GetDeviceTransform(Handle, data);
|
||||||
|
|
||||||
//if (result != eLeapRS.eLeapRS_Success || data == null)
|
if (result != eLeapRS.eLeapRS_Success || data == null)
|
||||||
//{
|
{
|
||||||
// devicePose = Pose.identity;
|
devicePose = Pose.identity;
|
||||||
// return devicePose;
|
poseSet = true;
|
||||||
//}
|
return Pose.identity;
|
||||||
|
}
|
||||||
|
|
||||||
//// Get transform matrix and convert to unity space by inverting Z.
|
// Using the LEAP->OPENXR device transform matrix
|
||||||
//Matrix4x4 transformMatrix = new Matrix4x4(
|
// Unitys matrices are generated as 4 columns:
|
||||||
// new Vector4(data[0], data[1], data[2], data[3]),
|
Matrix4x4 deviceTransform = new Matrix4x4(
|
||||||
// new Vector4(data[4], data[5], data[6], data[7]),
|
new Vector4(data[0], data[1], data[2], data[3]),
|
||||||
// new Vector4(data[8], data[9], data[10], data[11]),
|
new Vector4(data[4], data[5], data[6], data[7]),
|
||||||
// new Vector4(data[12], data[13], data[14], data[15]));
|
new Vector4(data[8], data[9], data[10], data[11]),
|
||||||
//Matrix4x4 toUnity = Matrix4x4.Scale(new Vector3(1, 1, -1));
|
new Vector4(data[12], data[13], data[14], data[15]));
|
||||||
//transformMatrix = toUnity * transformMatrix;
|
|
||||||
|
|
||||||
//// Identity matrix here means we have no device transform, also check validity.
|
|
||||||
//if (transformMatrix.isIdentity || !transformMatrix.ValidTRS())
|
|
||||||
//{
|
|
||||||
// devicePose = Pose.identity;
|
|
||||||
// return devicePose;
|
|
||||||
//}
|
|
||||||
|
|
||||||
//// Return the valid pose
|
// An example of the expected matrix if it were 8cm forward from the head origin
|
||||||
//devicePose = new Pose(transformMatrix.GetColumn(3), transformMatrix.rotation);
|
// Unitys matrices are generated as 4 columns:
|
||||||
|
//Matrix4x4 deviceTransform = new Matrix4x4(
|
||||||
|
// new Vector4(-0.001f, 0, 0, 0),
|
||||||
|
// new Vector4(0, 0, -0.001f, 0),
|
||||||
|
// new Vector4(0, -0.001f, 0, 0),
|
||||||
|
// new Vector4(0, 0, -0.08f, 1));
|
||||||
|
|
||||||
|
if (deviceTransform == Matrix4x4.identity)
|
||||||
|
{
|
||||||
|
devicePose = Pose.identity;
|
||||||
|
poseSet = true;
|
||||||
|
return Pose.identity;
|
||||||
|
}
|
||||||
|
|
||||||
|
Matrix4x4 openXRToUnity = new Matrix4x4(
|
||||||
|
new Vector4(1f, 0, 0, 0),
|
||||||
|
new Vector4(0, 1f, 0, 0),
|
||||||
|
new Vector4(0, 0, -1f, 0),
|
||||||
|
new Vector4(0, 0, 0, 1));
|
||||||
|
|
||||||
|
deviceTransform = openXRToUnity * deviceTransform;
|
||||||
|
|
||||||
|
Vector3 outputPos = deviceTransform.GetPosition();
|
||||||
|
//Quaternion outputRot = deviceTransform.rotation; // Note: the matrices we receive are not rotatrion matrices. This produces unexpected results
|
||||||
|
|
||||||
|
devicePose = new Pose(outputPos, Quaternion.identity);
|
||||||
|
|
||||||
poseSet = true;
|
poseSet = true;
|
||||||
return devicePose;
|
return devicePose;
|
||||||
|
|
22
ml_lme/vendor/LeapCSharp/TransformExtensions.cs
vendored
22
ml_lme/vendor/LeapCSharp/TransformExtensions.cs
vendored
|
@ -41,6 +41,17 @@ namespace Leap
|
||||||
return new Frame().CopyFrom(frame).Transform(transform);
|
return new Frame().CopyFrom(frame).Transform(transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new frame that is a copy of a frame, with an additional rigid
|
||||||
|
* transformation applied to it.
|
||||||
|
*
|
||||||
|
* @param transform The transformation to be applied to the copied frame.
|
||||||
|
*/
|
||||||
|
public static Frame TransformedCopy(this Frame frame, Vector3 position, Quaternion rotation)
|
||||||
|
{
|
||||||
|
return new Frame().CopyFrom(frame).Transform(new LeapTransform(position, rotation));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does an in-place rigid transformation of a Hand.
|
* Does an in-place rigid transformation of a Hand.
|
||||||
*
|
*
|
||||||
|
@ -79,6 +90,17 @@ namespace Leap
|
||||||
return new Hand().CopyFrom(hand).Transform(transform);
|
return new Hand().CopyFrom(hand).Transform(transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new hand that is a copy of a hand, with an additional rigid
|
||||||
|
* transformation applied to it.
|
||||||
|
*
|
||||||
|
* @param transform The transformation to be applied to the copied hand.
|
||||||
|
*/
|
||||||
|
public static Hand TransformedCopy(this Hand hand, Vector3 position, Quaternion rotation)
|
||||||
|
{
|
||||||
|
return new Hand().CopyFrom(hand).Transform(new LeapTransform(position, rotation));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does an in-place rigid transformation of a Finger.
|
* Does an in-place rigid transformation of a Finger.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue