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(); }
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;*/ }
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); }