version 2.4.0
This commit is contained in:
@@ -15,7 +15,7 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
public class HumanoidTracking : MonoBehaviour
|
||||
{
|
||||
#region Log
|
||||
const string LOG_TAG = "VIVE.OpenXR.Toolkits.BodyTracking.HumanoidTracking";
|
||||
const string LOG_TAG = "VIVE.OpenXR.Toolkits.BodyTracking.HumanoidTracking ";
|
||||
StringBuilder m_sb = null;
|
||||
StringBuilder sb {
|
||||
get {
|
||||
@@ -23,11 +23,11 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
return m_sb;
|
||||
}
|
||||
}
|
||||
void DEBUG(StringBuilder msg) { Debug.Log(LOG_TAG + " " + msg); }
|
||||
void DEBUG(StringBuilder msg) { Debug.Log(msg); }
|
||||
int logFrame = -1;
|
||||
bool printIntervalLog = false;
|
||||
void WARNING(StringBuilder msg) { Debug.LogWarning(LOG_TAG + " " + msg); }
|
||||
void ERROR(StringBuilder msg) { Debug.LogError(LOG_TAG + msg); }
|
||||
void WARNING(StringBuilder msg) { Debug.LogWarning(msg); }
|
||||
void ERROR(StringBuilder msg) { Debug.LogError(msg); }
|
||||
#endregion
|
||||
|
||||
public enum TrackingMode : Int32
|
||||
@@ -148,109 +148,109 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
m_Humanoid = GetComponent<UniHumanoid.Humanoid>();
|
||||
if (m_Humanoid == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 0.hip
|
||||
if (m_Humanoid.Hips == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid Hips."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid Hips."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid Hips -> Body root."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid Hips -> Body root."); DEBUG(sb);
|
||||
body.root = m_Humanoid.Hips;
|
||||
}
|
||||
|
||||
// 1.leftThigh
|
||||
if (m_Humanoid.LeftUpperLeg == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid LeftUpperLeg."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid LeftUpperLeg."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid LeftUpperLeg -> Body leftThigh."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid LeftUpperLeg -> Body leftThigh."); DEBUG(sb);
|
||||
body.leftThigh = m_Humanoid.LeftUpperLeg;
|
||||
}
|
||||
// 2.leftLeg
|
||||
if (m_Humanoid.LeftLowerLeg == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid LeftLowerLeg."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid LeftLowerLeg."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid LeftLowerLeg -> Body leftLeg."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid LeftLowerLeg -> Body leftLeg."); DEBUG(sb);
|
||||
body.leftLeg = m_Humanoid.LeftLowerLeg;
|
||||
}
|
||||
// 3.leftAnkle
|
||||
if (m_Humanoid.LeftFoot == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid LeftFoot."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid LeftFoot."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid LeftFoot -> Body leftAnkle."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid LeftFoot -> Body leftAnkle."); DEBUG(sb);
|
||||
body.leftAnkle = m_Humanoid.LeftFoot;
|
||||
}
|
||||
// 4.leftFoot
|
||||
if (m_Humanoid.LeftToes == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid LeftToes."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid LeftToes."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid LeftToes -> Body leftFoot."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid LeftToes -> Body leftFoot."); DEBUG(sb);
|
||||
body.leftFoot = m_Humanoid.LeftToes;
|
||||
}
|
||||
|
||||
// 5.rightThigh
|
||||
if (m_Humanoid.RightUpperLeg == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid RightUpperLeg."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid RightUpperLeg."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid RightUpperLeg -> Body rightThigh."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid RightUpperLeg -> Body rightThigh."); DEBUG(sb);
|
||||
body.rightThigh = m_Humanoid.RightUpperLeg;
|
||||
}
|
||||
// 6.rightLeg
|
||||
if (m_Humanoid.RightLowerLeg == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid RightLowerLeg."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid RightLowerLeg."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid RightLowerLeg -> Body rightLeg."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid RightLowerLeg -> Body rightLeg."); DEBUG(sb);
|
||||
body.rightLeg = m_Humanoid.RightLowerLeg;
|
||||
}
|
||||
// 7.rightAnkle
|
||||
if (m_Humanoid.RightFoot == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid RightFoot."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid RightFoot."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid RightFoot -> Body rightAnkle."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid RightFoot -> Body rightAnkle."); DEBUG(sb);
|
||||
body.rightAnkle = m_Humanoid.RightFoot;
|
||||
}
|
||||
// 8.rightFoot
|
||||
if (m_Humanoid.RightToes == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid RightToes."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid RightToes."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid RightToes -> Body rightFoot."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid RightToes -> Body rightFoot."); DEBUG(sb);
|
||||
body.rightFoot = m_Humanoid.RightToes;
|
||||
}
|
||||
|
||||
@@ -259,135 +259,135 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
// 9.chest
|
||||
if (m_Humanoid.UpperChest == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid UpperChest."); WARNING(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid UpperChest."); WARNING(sb);
|
||||
if (m_Humanoid.Chest == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid Chest."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid Chest."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid Chest -> Body chest."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid Chest -> Body chest."); DEBUG(sb);
|
||||
body.chest = m_Humanoid.Chest;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid UpperChest -> Body chest."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid UpperChest -> Body chest."); DEBUG(sb);
|
||||
body.chest = m_Humanoid.UpperChest;
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid Chest -> Body spineHigh."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid Chest -> Body spineHigh."); DEBUG(sb);
|
||||
body.spineHigh = m_Humanoid.Chest;
|
||||
}
|
||||
// 10.neck
|
||||
if (m_Humanoid.Neck == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid Neck."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid Neck."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid Neck -> Body neck."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid Neck -> Body neck."); DEBUG(sb);
|
||||
body.neck = m_Humanoid.Neck;
|
||||
}
|
||||
// 11.head
|
||||
if (m_Humanoid.Head == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid Head."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid Head."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid Head -> Body head."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid Head -> Body head."); DEBUG(sb);
|
||||
body.head = m_Humanoid.Head;
|
||||
}
|
||||
|
||||
// 12.leftClavicle
|
||||
if (m_Humanoid.LeftShoulder == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid LeftShoulder."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid LeftShoulder."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid LeftShoulder -> Body leftClavicle."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid LeftShoulder -> Body leftClavicle."); DEBUG(sb);
|
||||
body.leftClavicle = m_Humanoid.LeftShoulder;
|
||||
}
|
||||
// 13.leftUpperarm
|
||||
if (m_Humanoid.LeftUpperArm == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid LeftUpperArm."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid LeftUpperArm."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid LeftUpperArm -> Body leftUpperarm."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid LeftUpperArm -> Body leftUpperarm."); DEBUG(sb);
|
||||
body.leftUpperarm = m_Humanoid.LeftUpperArm;
|
||||
}
|
||||
// 14.leftForearm
|
||||
if (m_Humanoid.LeftLowerArm == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid LeftLowerArm."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid LeftLowerArm."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid LeftLowerArm -> Body leftForearm."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid LeftLowerArm -> Body leftForearm."); DEBUG(sb);
|
||||
body.leftForearm = m_Humanoid.LeftLowerArm;
|
||||
}
|
||||
// 15.leftHand
|
||||
if (m_Humanoid.LeftHand == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid LeftHand."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid LeftHand."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid LeftHand -> Body leftHand."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid LeftHand -> Body leftHand."); DEBUG(sb);
|
||||
body.leftHand = m_Humanoid.LeftHand;
|
||||
}
|
||||
|
||||
// 16.rightClavicle
|
||||
if (m_Humanoid.RightShoulder == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid RightShoulder."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid RightShoulder."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid RightShoulder -> Body rightClavicle."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid RightShoulder -> Body rightClavicle."); DEBUG(sb);
|
||||
body.rightClavicle = m_Humanoid.RightShoulder;
|
||||
}
|
||||
// 17.rightUpperarm
|
||||
if (m_Humanoid.RightUpperArm == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid RightUpperArm."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid RightUpperArm."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid RightUpperArm -> Body rightUpperarm."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid RightUpperArm -> Body rightUpperarm."); DEBUG(sb);
|
||||
body.rightUpperarm = m_Humanoid.RightUpperArm;
|
||||
}
|
||||
// 18.rightForearm
|
||||
if (m_Humanoid.RightLowerArm == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid RightLowerArm."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid RightLowerArm."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid RightLowerArm -> Body rightForearm."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid RightLowerArm -> Body rightForearm."); DEBUG(sb);
|
||||
body.rightForearm = m_Humanoid.RightLowerArm;
|
||||
}
|
||||
// 19.rightHand
|
||||
if (m_Humanoid.RightHand == null)
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() no Humanoid RightHand."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() no Humanoid RightHand."); ERROR(sb);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("AssignHumanoidToBody() Humanoid RightHand -> Body rightHand."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Humanoid RightHand -> Body rightHand."); DEBUG(sb);
|
||||
body.rightHand = m_Humanoid.RightHand;
|
||||
}
|
||||
|
||||
@@ -395,7 +395,7 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
{
|
||||
body.height = m_AvatarHeight;
|
||||
|
||||
sb.Clear().Append("AssignHumanoidToBody() height: ").Append(body.height);
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() height: ").Append(body.height);
|
||||
DEBUG(sb);
|
||||
}
|
||||
else
|
||||
@@ -403,7 +403,7 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
float floor = Mathf.Min(m_Humanoid.LeftToes.position.y, m_Humanoid.RightToes.position.y);
|
||||
body.height = m_Humanoid.Head.position.y - floor;
|
||||
|
||||
sb.Clear().Append("AssignHumanoidToBody() Calculates height:")
|
||||
sb.Clear().Append(LOG_TAG).Append("AssignHumanoidToBody() Calculates height:")
|
||||
.Append(" LeftToes (").Append(m_Humanoid.LeftToes.position.y).Append(")")
|
||||
.Append(", RightToes(").Append(m_Humanoid.RightToes.position.y).Append(")")
|
||||
.Append(", Head(").Append(m_Humanoid.Head.position.y).Append(")")
|
||||
@@ -421,7 +421,7 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
{
|
||||
if (m_CustomizeExtrinsics)
|
||||
{
|
||||
sb.Clear().Append("Awake() Customize device extrinsics."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("Awake() Customize device extrinsics."); DEBUG(sb);
|
||||
m_CustomExts.Update(TrackedDeviceRole.ROLE_HEAD, m_Head);
|
||||
|
||||
m_CustomExts.Update(TrackedDeviceRole.ROLE_LEFTWRIST, m_LeftWrist);
|
||||
@@ -442,7 +442,7 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
m_CustomExts.Update(TrackedDeviceRole.ROLE_LEFTFOOT, m_LeftToes);
|
||||
m_CustomExts.Update(TrackedDeviceRole.ROLE_RIGHTFOOT, m_RightToes);
|
||||
}
|
||||
sb.Clear().Append("Awake() Records the initial body position and scale."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("Awake() Records the initial body position and scale."); DEBUG(sb);
|
||||
m_InitialTransform = new TransformData(transform);
|
||||
}
|
||||
private void Update()
|
||||
@@ -459,22 +459,22 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
bool updateTrackingData = false;
|
||||
public void BeginTracking()
|
||||
{
|
||||
sb.Clear().Append("BeginTracking() tracking mode: ").Append(m_Tracking); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("BeginTracking() tracking mode: ").Append(m_Tracking); DEBUG(sb);
|
||||
|
||||
if (m_Body == null)
|
||||
{
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() Configures Humanoid avatar."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() Configures Humanoid avatar."); DEBUG(sb);
|
||||
m_Body = new Body();
|
||||
if (!AssignHumanoidToBody(ref m_Body))
|
||||
{
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() AssignHumanoidToBody failed."); ERROR(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() AssignHumanoidToBody failed."); ERROR(sb);
|
||||
m_Body = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (m_InitialBody == null)
|
||||
{
|
||||
sb.Clear().Append("BeginTracking() Records the initial standard pose."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("BeginTracking() Records the initial standard pose."); DEBUG(sb);
|
||||
m_InitialBody = new Body();
|
||||
m_InitialBody.UpdateData(m_Body);
|
||||
}
|
||||
@@ -485,7 +485,7 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
public void StopTracking()
|
||||
{
|
||||
updateTrackingData = false;
|
||||
sb.Clear().Append("StopTracking() Recovers the initial standard pose, body position and scale."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StopTracking() Recovers the initial standard pose, body position and scale."); DEBUG(sb);
|
||||
if (m_Body != null && m_InitialBody != null) { m_InitialBody.UpdateBody(ref m_Body); }
|
||||
RecoverBodyScale();
|
||||
RecoverBodyOffset();
|
||||
@@ -518,36 +518,36 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
{
|
||||
if (BodyManager.Instance == null) { yield return null; }
|
||||
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking()"); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking()"); DEBUG(sb);
|
||||
yield return new WaitForSeconds(3f);
|
||||
|
||||
BodyTrackingResult result;
|
||||
if (m_ContentCalibration)
|
||||
{
|
||||
result = BodyManager.Instance.SetStandardPose((BodyTrackingMode)m_Tracking);
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() SetStandardPose result ").Append(result.Name()); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() SetStandardPose result ").Append(result.Name()); DEBUG(sb);
|
||||
if (result != BodyTrackingResult.SUCCESS) { yield break; }
|
||||
}
|
||||
|
||||
if (!m_CustomizeExtrinsics)
|
||||
{
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() CreateBodyTracking with custom avatar + standard extrinsics."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() CreateBodyTracking with custom avatar + standard extrinsics."); DEBUG(sb);
|
||||
result = BodyManager.Instance.CreateBodyTracking(ref m_AvatarID, m_Body, (BodyTrackingMode)m_Tracking);
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() CreateBodyTracking with custom avatar + custom extrinsics."); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() CreateBodyTracking with custom avatar + custom extrinsics."); DEBUG(sb);
|
||||
result = BodyManager.Instance.CreateBodyTracking(ref m_AvatarID, m_Body, m_CustomExts, (BodyTrackingMode)m_Tracking);
|
||||
}
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() CreateBodyTracking result ").Append(result.Name()).Append(", id: ").Append(m_AvatarID); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() CreateBodyTracking result ").Append(result.Name()).Append(", id: ").Append(m_AvatarID); DEBUG(sb);
|
||||
if (result != BodyTrackingResult.SUCCESS) { yield break; }
|
||||
|
||||
result = BodyManager.Instance.GetBodyTrackingInfo(m_AvatarID, out float avatarHeight, out float avatarScale);
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() GetBodyTrackingInfo result ").Append(result.Name()); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() GetBodyTrackingInfo result ").Append(result.Name()); DEBUG(sb);
|
||||
if (result != BodyTrackingResult.SUCCESS) { yield break; }
|
||||
|
||||
// Due to the pose from GetBodyTrackingPoseOnce is "scaled pose", we need to change the avatar mesh size first.
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() Apply avatar scale with ").Append(avatarScale); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() Apply avatar scale with ").Append(avatarScale); DEBUG(sb);
|
||||
ApplyBodyScale(avatarScale * m_AvatarScale);
|
||||
|
||||
while (updateTrackingData)
|
||||
@@ -563,7 +563,7 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
}
|
||||
|
||||
result = BodyManager.Instance.DestroyBodyTracking(m_AvatarID);
|
||||
sb.Clear().Append("StartFixUpdateBodyTracking() DestroyBodyTracking result ").Append(result.Name()).Append(", id: ").Append(m_AvatarID); DEBUG(sb);
|
||||
sb.Clear().Append(LOG_TAG).Append("StartFixUpdateBodyTracking() DestroyBodyTracking result ").Append(result.Name()).Append(", id: ").Append(m_AvatarID); DEBUG(sb);
|
||||
yield return null;
|
||||
}
|
||||
|
||||
@@ -577,7 +577,7 @@ namespace VIVE.OpenXR.Toolkits.BodyTracking
|
||||
if (m_Body == null || avatarBody == null) { return; }
|
||||
if (printIntervalLog)
|
||||
{
|
||||
sb.Clear().Append("UpdateBodyPosesInOrder() new avatar height ").Append(avatarBody.height)
|
||||
sb.Clear().Append(LOG_TAG).Append("UpdateBodyPosesInOrder() new avatar height ").Append(avatarBody.height)
|
||||
.Append(", original avatar height ").Append(m_InitialBody.height)
|
||||
.Append(", scale: ").Append(avatarBody.scale);
|
||||
DEBUG(sb);
|
||||
|
||||
@@ -2913,7 +2913,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "0f50c9ba-a618-4fdc-b522-d1c01bbd0c31",
|
||||
"path": "<ViveXRTracker>{Tracker 0}/devicePose",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 0}/devicePose",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -2924,18 +2924,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "67becf2b-1f5a-402c-a75a-cc59352742cc",
|
||||
"path": "<ViveXRTracker>{Tracker 0}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerIsTracked",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "2b232246-e1b8-4997-b966-ac5332d43827",
|
||||
"path": "<ViveXRTracker>{Waist}/isTracked",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 0}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -2946,18 +2935,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "e83761d0-5c4d-402f-81e3-ef82a95370bc",
|
||||
"path": "<ViveXRTracker>{Tracker 0}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerTrackingState",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "198fe503-d901-4373-92c7-3c5e125d2a96",
|
||||
"path": "<ViveXRTracker>{Waist}/trackingState",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 0}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -2968,18 +2946,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "05e3670d-0c49-4d78-84c5-9dafefaa7c73",
|
||||
"path": "<ViveXRTracker>{Tracker 0}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerPosition",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "7e527edb-8dc9-498d-8e94-0779ff25b1ca",
|
||||
"path": "<ViveXRTracker>{Waist}/devicePosition",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 0}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -2990,18 +2957,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "3368f3fd-9e24-4ff0-81e6-50827a733cd0",
|
||||
"path": "<ViveXRTracker>{Tracker 0}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerRotation",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "372d3e78-99ad-4bda-8dd1-dea317048ad6",
|
||||
"path": "<ViveXRTracker>{Waist}/deviceRotation",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 0}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3065,7 +3021,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "39ea908b-c94a-4c28-8dd4-8e7cc27eecef",
|
||||
"path": "<ViveXRTracker>{Tracker 1}/devicePose",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 1}/devicePose",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3076,18 +3032,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "55e50e02-1e66-41f3-af19-88bba887ffe1",
|
||||
"path": "<ViveXRTracker>{Tracker 1}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerIsTracked",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "108c54bf-df99-410a-9f68-db64bb407f4f",
|
||||
"path": "<ViveXRTracker>{Left Wrist}/isTracked",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 1}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3098,18 +3043,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "a6c559f6-3a9d-4c94-bd87-edc3b496fd4a",
|
||||
"path": "<ViveXRTracker>{Tracker 1}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerTrackingState",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "26996720-eaa0-49ae-aae3-7b8ef9461bcb",
|
||||
"path": "<ViveXRTracker>{Left Wrist}/trackingState",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 1}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3120,18 +3054,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "f78b6b65-0000-4a1f-af7c-77b8994c4889",
|
||||
"path": "<ViveXRTracker>{Tracker 1}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerPosition",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "80fe7f0a-aa93-4c99-85a3-3722a7ae3b83",
|
||||
"path": "<ViveXRTracker>{Left Wrist}/devicePosition",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 1}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3142,18 +3065,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "d8831e2d-298d-45d9-b83b-95326d8b81ae",
|
||||
"path": "<ViveXRTracker>{Tracker 1}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerRotation",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "d1d218e4-f1c2-4de0-861d-c3d8e9967f10",
|
||||
"path": "<ViveXRTracker>{Left Wrist}/deviceRotation",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 1}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3217,7 +3129,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "58c0769d-c0fb-4ca0-9083-b72092b4330b",
|
||||
"path": "<ViveXRTracker>{Tracker 2}/devicePose",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 2}/devicePose",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3228,18 +3140,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "b7c3b872-6aab-4a17-a47d-00f8a6342ea2",
|
||||
"path": "<ViveXRTracker>{Tracker 2}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerIsTracked",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "e08d5ff0-3d73-48cf-aab6-c5f042e28544",
|
||||
"path": "<ViveXRTracker>{Right Wrist}/isTracked",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 2}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3250,18 +3151,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "2cf01c6a-01ad-4c36-95be-7a094250b958",
|
||||
"path": "<ViveXRTracker>{Tracker 2}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerTrackingState",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "bad0b111-c575-433f-bdb2-726b72dcd0a6",
|
||||
"path": "<ViveXRTracker>{Right Wrist}/trackingState",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 2}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3272,18 +3162,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "6a7ab0ce-76b8-4788-86e7-72d5979c2f46",
|
||||
"path": "<ViveXRTracker>{Tracker 2}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerPosition",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "199bde55-e74f-4125-9f05-27b64b02fac8",
|
||||
"path": "<ViveXRTracker>{Right Wrist}/devicePosition",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 2}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3294,18 +3173,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "0294379a-3671-48d9-aed8-0a85bd83ff0a",
|
||||
"path": "<ViveXRTracker>{Tracker 2}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerRotation",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "ed4d0bab-fb6f-4bbf-9f82-c9db5432eaf5",
|
||||
"path": "<ViveXRTracker>{Right Wrist}/deviceRotation",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 2}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3369,7 +3237,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "00370ac3-a248-496c-952c-6b9f579bc489",
|
||||
"path": "<ViveXRTracker>{Tracker 3}/devicePose",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 3}/devicePose",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3380,18 +3248,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "94c99d30-8f5d-433d-aaf6-a91a9842843e",
|
||||
"path": "<ViveXRTracker>{Tracker 3}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerIsTracked",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "f6b86ba5-ce0c-48fd-80ae-a303922a41fe",
|
||||
"path": "<ViveXRTracker>{Left Ankle}/isTracked",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 3}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3402,18 +3259,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "6b6423e3-7fb8-4818-b860-8a582f9d9bc7",
|
||||
"path": "<ViveXRTracker>{Tracker 3}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerTrackingState",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "eaf2677b-df67-4683-91a2-1d17697633f0",
|
||||
"path": "<ViveXRTracker>{Left Ankle}/trackingState",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 3}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3424,18 +3270,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "96719b23-34cf-44f3-9e99-9168e34ae34b",
|
||||
"path": "<ViveXRTracker>{Tracker 3}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerPosition",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "aa50f776-a836-4cf2-bcb4-bf296aeab86b",
|
||||
"path": "<ViveXRTracker>{Left Ankle}/devicePosition",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 3}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3446,18 +3281,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "74dcb8d9-1fec-4d6a-be76-0e229a4d88a9",
|
||||
"path": "<ViveXRTracker>{Tracker 3}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerRotation",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "0c7a94f3-a057-4df3-bf01-f42255f9dcd1",
|
||||
"path": "<ViveXRTracker>{Left Ankle}/deviceRotation",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 3}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3521,7 +3345,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "15a15762-4360-4196-bf18-a8cfb14d890d",
|
||||
"path": "<ViveXRTracker>{Tracker 4}/devicePose",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 4}/devicePose",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3532,18 +3356,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "1724a28e-3cd4-4f59-80f6-aee9363bea78",
|
||||
"path": "<ViveXRTracker>{Tracker 4}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerIsTracked",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "b29e8363-237f-4fc9-a9e0-99a35aadbd22",
|
||||
"path": "<ViveXRTracker>{Right Ankle}/isTracked",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 4}/isTracked",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3554,18 +3367,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "f95ec1dc-96c2-4b48-8764-ec20c0b22dde",
|
||||
"path": "<ViveXRTracker>{Tracker 4}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerTrackingState",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "2c33229b-8c55-4580-8f4d-322ae8bbb158",
|
||||
"path": "<ViveXRTracker>{Right Ankle}/trackingState",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 4}/trackingState",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3576,18 +3378,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "9f2e30c1-8e40-4d6c-b842-a70f5434249c",
|
||||
"path": "<ViveXRTracker>{Tracker 4}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerPosition",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "133fc9cf-fecc-4c33-90b7-076a0238c88f",
|
||||
"path": "<ViveXRTracker>{Right Ankle}/devicePosition",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 4}/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
@@ -3598,18 +3389,7 @@
|
||||
{
|
||||
"name": "",
|
||||
"id": "69510ec4-ffd2-42bf-955c-32859c2ff083",
|
||||
"path": "<ViveXRTracker>{Tracker 4}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "TrackerRotation",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "035621c7-7291-4ac3-a96c-f3e6026b7cdd",
|
||||
"path": "<ViveXRTracker>{Right Ankle}/deviceRotation",
|
||||
"path": "<ViveXRTracker>{Ultimate Tracker 4}/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
|
||||
Reference in New Issue
Block a user