Unity中fbx批量提取animationClip动画(Unity|适用mixamo)

问题描述

  • 在 Unity 中,如何批量提取 fbx 文件(mixamo 下载的 fbx 文件)中的 animationClip 动画切片?

注意!转载自 reddit@VR_Raccoonteur 感谢~

解决方案

  1. 添加以下脚本(放在任何位置都可以)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    using System.Collections;
    using System.Collections.Generic;
    using UnityEditor;
    using UnityEngine;

    public class ExtractAnimations : MonoBehaviour
    {

    [MenuItem("Tools/ExtractAnimations")]
    static void ExtractAnims()
    {
    string s;
    foreach (Object o in Selection.objects)
    {
    // s.Remove(s.Length - n);
    s = AssetDatabase.GetAssetPath(o);
    // Print the path of the created asset
    Debug.Log("Reading " + s);

    AnimationClip orgClip = (AnimationClip)AssetDatabase.LoadAssetAtPath(s, typeof(AnimationClip));
    SerializedObject serializedClip = new SerializedObject(orgClip);
    AnimationClipSettings clipSettings = new AnimationClipSettings(serializedClip.FindProperty("m_AnimationClipSettings"));

    clipSettings.loopTime = true;
    serializedClip.ApplyModifiedProperties();

    //Save the clip
    s = s.Remove(s.Length - 4) + ".anim";
    Debug.Log("Writing " + s);

    if(!Resources.Load(s)){
    AnimationClip placeClip = new AnimationClip();
    EditorUtility.CopySerialized(orgClip,placeClip);
    AssetDatabase.CreateAsset(placeClip, s);
    AssetDatabase.Refresh();
    }

    }
    }
    }
  2. 在 Unity 中,选择需要提取动画的 fbx 文件

  3. 点击 Tools/ExtractAnimations 按钮(在Unity窗口最上方哦)

  4. 脚本会自动提取 fbx 文件中的 animationClip 动画切片,并保存到同路径下