Пример #1
0
    /*--------------------------------------------------------------------------------*/

    public Vector2 GetVAInterPolated(float radialRatio, float angularRatio,
                                     Character2D.Mood innerface_1, Character2D.Mood innerface_2,
                                     Character2D.Mood outerface_1, Character2D.Mood outerface_2)
    {
        float innerValence, innerArousal, outerValence, outerArousal, valence, arousal;

        if (innerface_1 == 0 && innerface_2 == 0)
        {
            innerValence = Character2D.getValence(Character2D.Mood.NEUTRAL);

            innerArousal = Character2D.getArousal(Character2D.Mood.NEUTRAL);
        }
        else
        {
            innerValence  = angularRatio * Character2D.getValence(innerface_1);
            innerValence += (1 - angularRatio) * Character2D.getValence(innerface_2);

            innerArousal  = angularRatio * Character2D.getArousal(innerface_1);
            innerArousal += (1 - angularRatio) * Character2D.getArousal(innerface_2);
        }
        outerValence  = angularRatio * Character2D.getValence(outerface_1);
        outerValence += (1 - angularRatio) * Character2D.getValence(outerface_2);
        valence       = (1 - radialRatio) * innerValence + radialRatio * outerValence;

        outerArousal  = angularRatio * Character2D.getArousal(outerface_1);
        outerArousal += (1 - angularRatio) * Character2D.getArousal(outerface_2);
        arousal       = (1 - radialRatio) * innerArousal + radialRatio * outerArousal;

        return(new Vector2(valence, arousal));
    }
Пример #2
0
    /*--------------------------------------------------------------------------------*/

    public void SetMoodInterPolated(float radialRatio, float angularRatio,
                                    Character2D.Mood innerface_1, Character2D.Mood innerface_2,
                                    Character2D.Mood outerface_1, Character2D.Mood outerface_2)
    {
        float value, innerValue, outerValue;

        for (int key = 0; key < Character2D.MAX_FACE_KEYS; key++)
        {
            innerValue  = angularRatio * Character2D.getKeyShapeVal(Character2D.Part.FACE, innerface_1, key);
            innerValue += (1 - angularRatio) * Character2D.getKeyShapeVal(Character2D.Part.FACE, innerface_2, key);
            outerValue  = angularRatio * Character2D.getKeyShapeVal(Character2D.Part.FACE, outerface_1, key);
            outerValue += (1 - angularRatio) * Character2D.getKeyShapeVal(Character2D.Part.FACE, outerface_2, key);
            value       = (1 - radialRatio) * innerValue + radialRatio * outerValue;
            meshRendererFace.SetBlendShapeWeight(key, value);
        }

        for (int key = 0; key < Character2D.MAX_EYE_KEYS; key++)
        {
            innerValue  = angularRatio * Character2D.getKeyShapeVal(Character2D.Part.EYES, innerface_1, key);
            innerValue += (1 - angularRatio) * Character2D.getKeyShapeVal(Character2D.Part.EYES, innerface_2, key);
            outerValue  = angularRatio * Character2D.getKeyShapeVal(Character2D.Part.EYES, outerface_1, key);
            outerValue += (1 - angularRatio) * Character2D.getKeyShapeVal(Character2D.Part.EYES, outerface_2, key);
            value       = (1 - radialRatio) * innerValue + radialRatio * outerValue;
            meshRendererEyes.SetBlendShapeWeight(key, value);
        }
    }
Пример #3
0
    /*--------------------------------------------------------------------------------*/

    public void SetMood(Character2D.Mood newMood)
    {
        mood = newMood;
        for (int key = 0; key < Character2D.MAX_FACE_KEYS; key++)
        {
            meshRendererFace.SetBlendShapeWeight(key, Character2D.getKeyShapeVal(Character2D.Part.FACE, mood, key));
        }

        for (int key = 0; key < Character2D.MAX_EYE_KEYS; key++)
        {
            meshRendererEyes.SetBlendShapeWeight(key, Character2D.getKeyShapeVal(Character2D.Part.EYES, mood, key));
        }
    }
Пример #4
0
    /*--------------------------------------------------------------------------------*/


    public void SetMoodInterPolated(float intensity, Character2D.Mood face_1, Character2D.Mood face_2, float ratio)
    {
        float value;

        for (int key = 0; key < Character2D.MAX_FACE_KEYS; key++)
        {
            value  = ratio * Character2D.getKeyShapeVal(Character2D.Part.FACE, face_1, key);
            value += (1 - ratio) * Character2D.getKeyShapeVal(Character2D.Part.FACE, face_2, key);
            value *= intensity;
            meshRendererFace.SetBlendShapeWeight(key, value);
        }

        for (int key = 0; key < Character2D.MAX_EYE_KEYS; key++)
        {
            value  = ratio * Character2D.getKeyShapeVal(Character2D.Part.EYES, face_1, key);
            value += (1 - ratio) * Character2D.getKeyShapeVal(Character2D.Part.EYES, face_2, key);
            value *= intensity;
            meshRendererEyes.SetBlendShapeWeight(key, value);
        }
    }