Unity导入FBX自动进行动画切分
手动处理动画分割
在导入FBX模型过程中,若带有动画呢,需要对它进行切分。
当然这个工作可以在Unity中完成。
比如:
这样手动来分割进行。
自动动画切分
- // FbxAnimListPostprocessor.cs : Use an external text file to import a list of
- // splitted animations for FBX 3D models.
- //
- // Put this script in your "Assets/Editor" directory. When Importing or
- // Reimporting a FBX file, the script will search a text file with the
- // same name and the ".txt" extension.
- // File format: one line per animation clip "firstFrame-lastFrame loopFlag animationName"
- // The keyworks "loop" or "noloop" are optional.
- // Example:
- // 0-50 loop Move forward
- // 100-190 die
- using UnityEngine;
- using UnityEditor;
- using System.Collections;
- using System.IO;
- using System.Text.RegularExpressions;
- using System;
- using System.IO;
- public class FbxAnimListPostprocessor : AssetPostprocessor
- {
- public void OnPreprocessModel()
- {
- if (Path.GetExtension(assetPath).ToLower() == ".fbx"
- && !assetPath.Contains("@"))
- {
- try
- {
- string fileAnim;
- if (DragAndDrop.paths.Length <= 0)
- {
- return;
- }
- fileAnim = DragAndDrop.paths[0];
- string ClipText = Path.ChangeExtension(fileAnim, ".txt");
- StreamReader file = new StreamReader(ClipText);
- string sAnimList = file.ReadToEnd();
- file.Close();
- //
- if (EditorUtility.DisplayDialog("FBX Animation Import from file",
- fileAnim, "Import", "Cancel"))
- {
- System.Collections.ArrayList List = new ArrayList();
- ParseAnimFile(sAnimList, ref List);
- ModelImporter modelImporter = assetImporter as ModelImporter;
- //modelImporter.clipAnimations. = true;
- modelImporter.clipAnimations = (ModelImporterClipAnimation[])
- List.ToArray(typeof(ModelImporterClipAnimation));
- EditorUtility.DisplayDialog("Imported animations",
- "Number of imported clips: "
- + modelImporter.clipAnimations.GetLength(0).ToString(), "OK");
- }
- }
- catch { }
- // (Exception e) { EditorUtility.DisplayDialog("Imported animations", e.Message, "OK"); }
- }
- }
- void ParseAnimFile(string sAnimList, ref System.Collections.ArrayList List)
- {
- Regex regexString = new Regex(" *(?<firstFrame>[0-9]+) *- *(?<lastFrame>[0-9]+) *(?<loop>(loop|noloop| )) *(?<name>[^\r^\n]*[^\r^\n^ ])",
- RegexOptions.Compiled | RegexOptions.ExplicitCapture);
- Match match = regexString.Match(sAnimList, 0);
- while (match.Success)
- {
- ModelImporterClipAnimation clip = new ModelImporterClipAnimation();
- if (match.Groups["firstFrame"].Success)
- {
- clip.firstFrame = System.Convert.ToInt32(match.Groups["firstFrame"].Value, 10);
- }
- if (match.Groups["lastFrame"].Success)
- {
- clip.lastFrame = System.Convert.ToInt32(match.Groups["lastFrame"].Value, 10);
- }
- if (match.Groups["loop"].Success)
- {
- clip.loop = match.Groups["loop"].Value == "loop";
- }
- if (match.Groups["name"].Success)
- {
- clip.name = match.Groups["name"].Value;
- }
- List.Add(clip);
- match = regexString.Match(sAnimList, match.Index + match.Length);
- }
- }
- }
- 0-50 loop Move forward
- 100-190 die

Unity导入FBX自动进行动画切分的更多相关文章
- Unity游戏开发——自动为动画剪辑添加事件 之 最后几帧的事件不能被调用的问题
最近在做一个根据配置表自动生成动画剪辑clip以及controller的功能.做法是根据配置表配置的动作以及每个动作的关键帧,自动为每个clip添加事件.这样做可以把动画的事件处理在游戏运行之前就计算 ...
- Unity导入fbx格式的模型
1. 在Model文件夹右击,选择 import new Asset,然后选择要导入的模型 2. 将纹理图片导入Pictures中 3. 在Materials中创建一个Material,然后点击属性中 ...
- Unity自动切割动画
最近在开发项目时,需要处理大量的动画,于是就网上查找资料,然后写了这么编辑器工具: 就是在模型导入时,根据配置文件自动切割动画. 首先我们需要封装两个类:一个模型类和一个动画类 public clas ...
- Unity3d修改FBX文件的动画名方法
问题描述:FBX文件导入Unity3d后的动画名字一般都是 “Take 001”并且无法修改!如何修改它呢? 解决方法:解决方法其实很简单,只要你按照Unity3d的FBX文件命名规则,压根就不会存在 ...
- [转载]一个高效简洁的Aseprite to Unity导入工具
原文链接 https://zhuanlan.zhihu.com/p/28644268 期待原作者上传至AssetStore. 今天,我的第一个 Unity 插件 MetaSprite 正式发布了它的 ...
- FBX BlendShape/Morph动画解析
目前fbx 2015.1中支持三种变形器:skinDeformer,blendShapeDeformer,vertexCacheDeformer.定义在fbxdeformer.h中: enum EDe ...
- unity导入3dsMax源文件.max
https://blog.csdn.net/qq_28002559/article/details/53693621 首先unity导入3dsMax文件为什么要使用.max而不用.fbx,因为我不是做 ...
- Unity2D研究院之自动生成动画、AnimationController、Prefab(一)
http://www.xuanyusong.com/archives/3243 国庆了,回家了.时刻还是要吃一颗学习的心,在家了也要抽出时间好好学习一下.之前MOMO一直没研究过Unity2D,今天研 ...
- GJM:Unity导入百度地图SDK [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
随机推荐
- python traceback捕获并打印异常
异常处理是日常操作了,但是有时候不能只能打印我们处理的结果,还需要将我们的异常打印出来,这样更直观的显示错误 下面来介绍traceback模块来进行处理 try: 1/0 except Excepti ...
- c++构造函数中调用构造函数---匿名对象再探
#include<iostream> #include<string> using namespace std; class Copy_construction { publi ...
- JavaScript高级 面向对象(7)--深拷贝与浅拷贝
说明(2017.3.31): 1. 画图: var car = {name:"法拉利"}; var p = {name: "张三", age: "19 ...
- contiki rpl
Linking target: udp-client-temperature.stk3700arm-none-eabi-gcc -Xlinker -Map=udp-client-temperature ...
- 应用层timer_如何序列化timer
应用层使用timer可以启动多个timer(每个timer管理一个目标时间),也可启用一个timer来管理多个目标时间. 多个timer时每个timer占用一部分空间,且存在多个timer同时到期的先 ...
- 【springmvc笔记】第二课 环境搭建和第一个springmvc例子
1. 开发工具准备 eclipse + jdk1.7 spring-framework-4.3.9.RELEASE 2. 新建Dynamic Web Project项目,命名为springmvc. 3 ...
- phalcon的CLI应用
CLI应用是命令行下执行的程序, 可以应用于定时任务,守护进程, 脚本, 公用命令等等. 最小的目录结构:app/config/config.phpapp/tasks/MainTask.phpapp/ ...
- 记录日志框架:log4net使用
一.log4net简介 Log4net是Apache下一个开放源码的项目,我们可以控制日志信息的输出目的地.Log4net中定义了多种日志信息输出模式.在做项目的时候最头疼的是在程序发布到正式环境之后 ...
- 【转】java基本数据类型vs封装数据类型
1.基本概念 说java是面向对象的语言是正确的,但是她不纯,基本数据类型就不是对象. 基本数据类型可以大致分为三类:数据型:int.short.long.byte.float.double字符型:c ...
- WebForm和MVC的一些知识(转)
转自:http://www.cnblogs.com/liuhf939/p/3417203.html 比较WebForm和Mvc的请求处理方式 首先简单了解一下Asp.Net中怎么对页面进行请求处理的: ...