void AddKey(int startIndex, Dictionary <string, string> traitPropMap)
    {
        AnimationClip clip = wAnimationWindowHelper.GetAnimationWindowCurrentClip();

        if (clip == null)
        {
            Debug.Log("編集中のアニメーションクリップが存在しません");
            return;
        }

        for (int i = 0; i < halfHandMusclesCount; i++)
        {
            int    rightIndex  = startIndex + i;
            float  muscleValue = handModelPose.muscles[rightIndex];
            string muscleName  = HumanTrait.MuscleName[rightIndex];

            EditorCurveBinding curveBinding = new EditorCurveBinding();
            curveBinding.path         = targetPath;
            curveBinding.propertyName = traitPropMap[muscleName];
            curveBinding.type         = typeof(Animator);
            AnimationCurve curve = AnimationUtility.GetEditorCurve(clip, curveBinding);
            if (curve == null)
            {
                curve = new AnimationCurve();
            }
            AnimationWindowController.SetKey(curve, animationTime, muscleValue);
            AnimationUtility.SetEditorCurve(clip, curveBinding, curve);
        }
    }
    public static void DoInit(AnimationClip clip, Transform rootObjectTransform)
    {
        clip.EnsureQuaternionContinuity();

        AnimationWindowController.SetKeyAllNodes(clip, rootObjectTransform, 0f);

        AssetDatabase.SaveAssets();
    }
Exemplo n.º 3
0
    private void RecordObject()
    {
        AnimationClip clip = wAnimationWindowHelper.GetAnimationWindowCurrentClip();

        if (clip == null)
        {
            return;
        }
        if (PlayManually.IsPlaying() && clip.length < wAnimationWindowHelper.GetCurrentTime())
        {
            return;
        }                                                                                                  //クリップが終了してたら

        Transform rootObjectTransform = wAnimationWindowHelper.GetAnimationWindowCurrentRootGameObject().transform;
        string    path = AnimationRecorderHelper.GetTransformPathName(rootObjectTransform, followTarget.transform);

        //今編集中のアニメーターと無関係なオブジェクトならレコードしない
        if (path == null)
        {
            return;
        }

        float time;

        if (PlayManually.IsPlaying())
        {
            time = PlayManually.nowFrameTime;
        }
        else
        {
            time = wAnimationWindowHelper.GetCurrentTime();
        }

        AnimationWindowController.SetCurve(time, path, followTarget.transform, clip);

        /*
         * if (generateNodes.RecordAllChildObjects)
         * {
         *  generateNodes.RecordAllUngrab();
         * }*/

        //Grabする前のtransformを記録しておく

        /*savedPosition = followTarget.localPosition;
         * savedQuaternion = followTarget.localRotation;
         * savedScale = followTarget.localScale;*/
    }
Exemplo n.º 4
0
    void SetKey(AnimationClip clip, string propertyName, int value)
    {
        EditorCurveBinding curveBinding = new EditorCurveBinding();

        curveBinding.path         = targetPath;
        curveBinding.propertyName = propertyName;
        curveBinding.type         = typeof(TexFacialController);
        AnimationCurve curve = AnimationUtility.GetEditorCurve(clip, curveBinding);

        if (curve == null)
        {
            curve = new AnimationCurve();
        }
        int keyIndex = AnimationWindowController.SetKey(curve, animationTime, value);

        //Constantカーブにする
        AnimationUtility.SetKeyLeftTangentMode(curve, keyIndex, AnimationUtility.TangentMode.Constant);
        AnimationUtility.SetKeyRightTangentMode(curve, keyIndex, AnimationUtility.TangentMode.Constant);

        AnimationUtility.SetEditorCurve(clip, curveBinding, curve);
    }