Unity提取模型动画

mac2024-04-20  6

如图,导入包含动画的fbx模型并设置动画类型为Legacy,模型自带动画是不能用Unity自带的Animation工具编辑的,因为它是只读的。

要想编辑动画就需要新建一个AnimationClip文件,并把模型动画的数据拷贝到新建文件里。

步骤非常简单:

1.获取模型自带的动画clip:

var fbx = AssetDatabase.LoadAssetAtPath<GameObject>(fbxName); var animClip = fbx.GetComponent<Animation>().clip;

2.创建新的AnimationClip,并把模型动画clip数据拷贝到新建clip:

AnimationClip newClip = new AnimationClip(); EditorUtility.CopySerialized(animClip, newClip);

3.保存新的动画文件:

string animFile = string.Format("{0}/{1}.anim", savePath, animClip.name); AssetDatabase.CreateAsset(newClip, animFile);

使用提取出的动画Clip就可以编辑了

完整代码:

public static void ModifyModels() { EditorUtility.DisplayProgressBar("Progress", "Create Anim...", 0); string[] dirs = { "Assets/Toon Character Pack/Models/Anim" }; var asstIds = AssetDatabase.FindAssets("t:Model", dirs); int count = 0; for (int i = 0; i < asstIds.Length; i++) { string path = AssetDatabase.GUIDToAssetPath(asstIds[i]); var fbx = AssetDatabase.LoadAssetAtPath<GameObject>(path); var animClip = fbx.GetComponent<Animation>().clip; string animFile = string.Format("{0}/{1}.anim", dirs[0], animClip.name); AnimationClip newClip = new AnimationClip(); EditorUtility.CopySerialized(animClip, newClip); AssetDatabase.CreateAsset(newClip, animFile); count++; EditorUtility.DisplayProgressBar("Create Anim", fbx.name, count / (float)asstIds.Length); } EditorUtility.ClearProgressBar(); }

 

最新回复(0)