如何在 Unity 中从 .fbx 文件创建 .anim 文件?

Posted

技术标签:

【中文标题】如何在 Unity 中从 .fbx 文件创建 .anim 文件?【英文标题】:How to create .anim file from .fbx file in Unity? 【发布时间】:2014-05-04 21:57:29 【问题描述】:

我是使用 Unity 的新手。在我的游戏中,模型和动画从 3DMAX 导出为 .fbx 文件,动画在 Unity 中进行剪辑,但没有生成 .anim 文件,我需要单独的 .anim 文件,因为即使我已剪辑动画,以下代码也无法运行“运行” ":

var clip = animation["run"];

有人可以帮助我吗?提前致谢。

【问题讨论】:

【参考方案1】:

终于找到答案了,在.fbx文件中的动画剪辑上按CTRL+D会创建一个单独的.anim文件,好奇怪的操作!

【讨论】:

有道理,ctrl D 是重复的。我猜它默认复制为一个单独的文件。【参考方案2】:

您必须在导入时设置动画。在 Unity 中选择 .fbx 模型,然后转到 Animations 选项卡。在那里你必须定义剪辑。 .anim 文件将在模型下生成。

如果您在动画选项卡中看不到剪辑,请将 Rig 下的“动画类型”更改为 Legacy

【讨论】:

这很有帮助,谢谢 Esa。我已按照您的说明操作,代码运行正常,但仍然没有生成 .anim 文件,您能解释一下原因或给我一些链接吗? @beyonddoor 您能否添加从 Unity 导入模型的屏幕截图? 附上截图。 @beyonddoor 查看屏幕截图一切正常。连跑步动画都列在动画组件中。【参考方案3】:

我写了一个脚本很容易做到这一点

using System.IO;
using UnityEditor;
using UnityEngine;

public class AnimationExtractor: MonoBehaviour

    [MenuItem("Assets/Extract Animation")]
    private static void ExtractAnimation()
    
        foreach (var obj in Selection.objects)
        
            var fbx = AssetDatabase.GetAssetPath(obj);
            var directory = Path.GetDirectoryName(fbx);
            CreateAnim(fbx, directory);     
        
    

    static void CreateAnim(string fbx, string target)
    
        var fileName = Path.GetFileNameWithoutExtension(fbx);
        var filePath = $"target/fileName.anim";
        AnimationClip src = AssetDatabase.LoadAssetAtPath<AnimationClip>(fbx);
        AnimationClip temp = new AnimationClip();
        EditorUtility.CopySerialized(src, temp);
        AssetDatabase.CreateAsset(temp, filePath);
        AssetDatabase.SaveAssets();
    

【讨论】:

以上是关于如何在 Unity 中从 .fbx 文件创建 .anim 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Unity导入FBX时材质和贴图的处理

unity3D 如何导入3d场景

Unity动态创建FBX模型配置文件的存放路径

unity中对导入的FBX动画进行重新编辑

Unity - 自定义导出和导入 FBX 数据

如何在 Unity 中正确导入 fbx?