// This function ensures that the avatar is on the ground. It will adjust the tracking root vertically private void FootOnGroundCheck(FootTarget footTarget) { if (footSensor.rotationConfidence <= 0.1F) { return; } HipsTarget hipsTarget = footTarget.humanoid.hipsTarget; float upperLegAngle = Quaternion.Angle(hipsTarget.hips.target.transform.rotation, footTarget.upperLeg.target.transform.rotation); float lowerLegAngle = Quaternion.Angle(footTarget.upperLeg.target.transform.rotation, footTarget.lowerLeg.target.transform.rotation); float angle = upperLegAngle + lowerLegAngle; if (angle < 20) // stretched leg { float footY = footTarget.foot.target.transform.position.y - footTarget.soleThicknessFoot; float diff = footY - hipsTarget.humanoid.transform.position.y; neuronTracker.trackerTransform.Translate(0, -diff, 0); } }
private void FusePosition() { HipsTarget hipsTarget = headTarget.humanoid.hipsTarget; hipsTarget.chest.target.length = 0.4F; Vector3 neuronNeckPos = hipsTarget.chest.target.transform.position + hipsTarget.chest.target.transform.rotation * Vector3.up * (hipsTarget.chest.target.length - 0.08F); Vector3 externalNeckPos = headTarget.neck.target.transform.position; if (headTarget.head.target.confidence.position > headTarget.neck.target.confidence.position) { Vector3 externalHeadPos = headTarget.head.target.transform.position; externalNeckPos = externalHeadPos + headTarget.neck.target.transform.rotation * Vector3.down * headTarget.neck.target.length; } Vector3 resultNeckPos = Vector3.Lerp(neuronNeckPos, externalNeckPos, beta * Time.deltaTime); Vector3 deltaPos = resultNeckPos - neuronNeckPos; tracker.trackerTransform.transform.Translate(deltaPos, Space.World); }
public HipsTargetProps(SerializedObject serializedObject, HipsTarget hipsTarget) : base(serializedObject, hipsTarget.astra, hipsTarget, "astra") { }
public HipsTargetProps(SerializedObject serializedObject, HipsTarget hipsTarget) : base(serializedObject, hipsTarget.neuron, hipsTarget, "neuron") { }
public HipsTargetProps(SerializedObject serializedObject, HipsTarget hipsTarget) : base(serializedObject, hipsTarget.kinect1, hipsTarget, "kinect1") { }