Ejemplo n.º 1
0
        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);
        }
    }
Ejemplo n.º 3
0
        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);
        }