从FBX提取其中的多个动画

为什么要写这个工具?

在这里插入图片描述

像上图这样,项目组中美术从3Dmax中导出动画时,只能导出fbx文件,如果我们只需要用到动画资源时,可以看到里面包含了其它我们不需要包含的资源;可以使用Ctrl+D来提取单个动画文件,但是如果想要批量从一个文件夹下提取所有的资源文件,就需要一个工具了。

翔翔跟其他人不一样的思路在哪里?

如果你现在正在为寻找标题这样一个工具而焦头烂额,那么这次的这个工具不会让你失望,本片文章的工具满足了以下需求:
1.右键Project -> AnimationTool -> GetAnimation打开配置菜单,很方便。
2.右键如果是FBX文件,则提取这个文件的动画,如果是文件夹则递归提取文件夹下的所有FBX文件的动画。
3.提取动画时,提取FBX文件下的所有动画,而不是一个。
4.自定义输出目录,不存在就创建目录。
5.如果已经有了这个文件,那么就删除之前的,用新的代替。
而网上大部分的动画提取工具能满足以上需求的少之又少

具体思路

具体的思路难度不是很大,按照以下流程走就可以了
1.点击按钮时,获取选中的所有objects。

UnityEngine.Object[] objects = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.DeepAssets);//获取所有选中的物体

2.遍历这些物体,物体若不包含"@"则继续寻找下一个。
3.找到了获取其所有的Assets。

 Object[] clips = AssetDatabase.LoadAllAssetsAtPath(fbxPath);

4.遍历这些Assets,如果能找到可以转换为AnimationClip就转换过去。

if (clips[r] is AnimationClip)
{
   AnimationClip fbxClip = clips[r] as AnimationClip;
}

5.当然还有一些无效的动画,我们需要过滤掉。

  if (fbxClip.name.Contains("__preview__"))
     continue;

6.创建一个新的AnimationClip,将这个AnimationClip复制过去。

  AnimationClip fbxClip = clips[r] as AnimationClip;
  EditorUtility.CopySerialized(fbxClip, clip);    //复制

7.创建一个新的Assets。

 AssetDatabase.CreateAsset(clip, path + outPath + aniName + ".anim");    //生成文件

代码以及使用方法

当然,这次的工具也是免费提供给大家的,技术交流请加QQ:504937430。使用方法:
将脚本拷贝到项目的Editor文件夹中,从Project面板中右键AnimationTool -> GetAnimation,然后配置好输出路径即可

链接:https://pan.baidu.com/s/1W4gmBmzhVN0UoqeanPUtIQ
提取码:zgbl
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V4的分享

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值