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

原文地址-更多自我提升的文章

问题描述

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

解决方案

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

根据原脚本进行了修改,现可正常使用

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(); 
        }
      }
  }
}
  1. 在 Unity 中,选择需要提取动画的 fbx 文件
  2. 点击 Tools/ExtractAnimations 按钮(在Unity窗口最上方哦)
  3. 脚本会自动提取 fbx 文件中的 animationClip 动画切片,并保存到同路径下
Logo

分享最新的 NVIDIA AI Software 资源以及活动/会议信息,精选收录AI相关技术内容,欢迎大家加入社区并参与讨论。

更多推荐