void LateUpdate() { if (!initialized) { return; } if (umaData == null || umaData.skeleton == null) { return; } if (enableSaccades) { UpdateSaccades(); } if (enableBlinking) { UpdateBlinking(); } float[] values = Values; MecanimJoint mecanimMask = MecanimJoint.None; if (!overrideMecanimNeck) { mecanimMask |= MecanimJoint.Neck; } if (!overrideMecanimHead) { mecanimMask |= MecanimJoint.Head; } if (!overrideMecanimJaw) { mecanimMask |= MecanimJoint.Jaw; } if (!overrideMecanimEyes) { mecanimMask |= MecanimJoint.Eye; } if (overrideMecanimJaw) { umaData.skeleton.Restore(jawHash); } for (int i = 0; i < values.Length; i++) { if ((MecanimAlternate[i] & mecanimMask) != MecanimJoint.None) { continue; } float weight = values[i]; if (weight == 0f) { continue; } UMABonePose pose = null; if (weight > 0) { pose = expressionSet.posePairs[i].primary; } else { weight = -weight; pose = expressionSet.posePairs[i].inverse; } if ((weight > minWeight) && (pose != null)) { pose.ApplyPose(umaData.skeleton, weight); } } }
public void SetValues() { if (expressionSet == null) { return; } if (skeleton == null) { return; } if (!initialized) { return; } float[] values = Values; MecanimJoint mecanimMask = MecanimJoint.None; if (!overrideMecanimNeck) { mecanimMask |= MecanimJoint.Neck; } if (!overrideMecanimHead) { mecanimMask |= MecanimJoint.Head; } if (!overrideMecanimJaw) { mecanimMask |= MecanimJoint.Jaw; } if (!overrideMecanimEyes) { mecanimMask |= MecanimJoint.Eye; } if (overrideMecanimJaw) { skeleton.Restore(jawHash); } for (int i = 0; i < values.Length; i++) { if ((MecanimAlternate[i] & mecanimMask) != MecanimJoint.None) { continue; } float weight = values[i]; UMABonePose pose = null; if (weight > 0) { pose = expressionSet.posePairs[i].primary; } else { weight = -weight; pose = expressionSet.posePairs[i].inverse; } if (pose == null) { continue; } //Debug.Log("SETTING VALUES: "+pose.name); pose.ApplyPose(skeleton, weight); } }
void LateUpdate() { if (!processing) { return; } if (!initialized) { return; } if (umaData == null || umaData.skeleton == null) { return; } if (_mainCameraTransform != null && useDisableDistance && (_mainCameraTransform.position - transform.position).sqrMagnitude > (disableDistance * disableDistance)) { return; } if (enableSaccades) { UpdateSaccades(); } if (enableBlinking) { UpdateBlinking(); } float[] values = Values; MecanimJoint mecanimMask = MecanimJoint.None; if (!overrideMecanimNeck) { mecanimMask |= MecanimJoint.Neck; } if (!overrideMecanimHead) { mecanimMask |= MecanimJoint.Head; } if (!overrideMecanimJaw) { mecanimMask |= MecanimJoint.Jaw; } if (!overrideMecanimEyes) { mecanimMask |= MecanimJoint.Eye; } if (!overrideMecanimHands) { mecanimMask |= MecanimJoint.Hands; } if (overrideMecanimJaw) { umaData.skeleton.Restore(jawHash); } if (LastValues == null || LastValues.Length < values.Length) { LastValues = new float[44]; saveValues(values); } for (int i = 0; i < values.Length; i++) { if (LastValues[i] != values[i]) { if (ExpressionChanged != null) { ExpressionChanged.Invoke(umaData, PoseNames[i], values[i]); } } if ((MecanimAlternate[i] & mecanimMask) != MecanimJoint.None) { continue; } float weight = values[i]; if (weight == 0f) { continue; } UMABonePose pose = null; if (weight > 0) { pose = expressionSet.posePairs[i].primary; } else { weight = -weight; pose = expressionSet.posePairs[i].inverse; } if ((weight > minWeight) && (pose != null)) { pose.ApplyPose(umaData.skeleton, weight); } } saveValues(values); }