推荐阅读

  • CSDN主页
  • GitHub开源地址
  • Unity3D插件分享
  • 简书地址
  • 我的个人博客
  • QQ群:1040082875

文章目录

  • 一、前言
  • 二、参考网站及下载
  • 三、正文
    • abc文件导入
    • abc导入Unity之后的格式
    • AlembicStreamPlayer组件
    • AlembicExporter组件

一、前言

今天分享一下Alembic插件的使用教程,这个插件的主要作用就是将.abc文件导入到Unity,然后进行播放。
.abc文件主要是影像业界使用的数据格式,用于存储巨大的顶点缓存数据。
Alembic插件就是转化这些影像资料和动力学等的模拟结果转换为顶点缓存数据为Unity可以使用的文件。

abc文件转化为Unity可以识别的Prefabs文件

二、参考网站及下载

参考网站:
Alembic官方网站
Github地址:
https://github.com/Unity-Technologies/AlembicForUnity
UnityPackge包下载链接:
https://download.csdn.net/download/q764424567/12333549

三、正文

abc文件导入

首先我们要把这个包导入到场景中:

然后我们将.abc动画文件导入到Unity的Assets任意文件夹中,会发现文件导入之后就变成了Unity可识别的prefabs文件:

在StreamingAssets文件夹中会同步生成一个abc格式的文件:

这是因为为了从文件中流传送数据,即使是build后也需要保留abc文件。

abc导入Unity之后的格式

接着我们看一下导入的abc文件格式:

  • Normals :是使用.abc文件的法线,这是根据顶点位置来设定计算。默认的“Compute If Missing”是.abc文件如果有法线就使用,没有的话就计算,大部分情况下这样应该没有问题。
  • Tangents:是计算切线的设定。因为abc文件没有切线,所以是计算还是不计算有两种选择。但是,切线的计算需要法线和UV,如果欠缺这些,“Tangents”和“Compute”也不能进行计算。
    虽然默认是有效的,但是切线的计算是麻烦的过程,不需要的情况下可以设置成Compute可以更加高效
  • Camera Aspect Ratio:设置相机的纵横比。是使用abc文件的相机参数,还是使用Unity侧画面的纵横比。
  • Scale Factor:缩放因子,模型的等比例缩放
  • Swap Handedness:将X方向反转,并且四边形分割成三角形时,三角形的排列也会反转。
  • Interpolate Samples:是进行动画片的插值运算的设定。如果这是有效的,Transform、Camera和顶点不变化(=顶点数和索引不变)的Mesh就会得到动画的插值。

如果Interpolate Samples有效,或者如果abc文件中包含velocity数据,可以将velocity数据传递给着色器。
Alembic/Standard着色器是在普通的Standard着色器的基础上添加基于上述velocity的motion vector生成的着色器。
在需要motion vector的情况下会有帮助,比如后期效果的MotionBlur。

如果你想在自己的整形器中添加motion vector生成功能,可以修改SubShader中usepass " hidden/alembi/c/motionvectors motionvectors "这一行的代码。
内部的想知道详细情况,请参照alembicmotionvectors.cginc。(因为向第4个UV传递velocity数据,以此为基础计算出1帧前的顶点位置)

左边是未加工的,右边是输出motion vector并加上Post Processing Stack的MotionBlur的状态。

AlembicStreamPlayer组件

由插件生成的prefab有一个叫做AlembicStreamPlayer的组件,它负责播放。
移动Time参数可以确认Mesh的移动。
控制Timeline播放动画。
Vertex Motion Scale是计算velocity时的倍率。
越大的velocity越大,在后效果MotionBlur中会出现激烈的模糊。


代码:

using UnityEngine;
using UTJ.Alembic;public class Test_ABC : MonoBehaviour
{public GameObject m_AbcObjcect;AlembicStreamPlayer m_AlembicSP;float m_TempTime = 0;void Start(){m_AlembicSP = m_AbcObjcect.GetComponent<AlembicStreamPlayer>();   }void Update(){m_TempTime += Time.deltaTime;m_AlembicSP.currentTime = m_TempTime;if (m_TempTime>3){m_TempTime = 0;}}
}

AlembicExporter组件

  • Output Path:指定输出路径。
  • Archive Type:指定Archive的格式,一般使用Ogawa就可以
  • Xform Type:选择单独记录对象的位置、旋转、标度(TRS)还是矩阵记录(Matrix)。TRS应该没什么问题。
  • Time Sampling Type:指定捕获的间隔。Alembic一帧间隔总是恒定的(1 / Frame Rate秒)。如果设置为Uniform那么就可以在Fix DeltaTime开始俘获,改写Time. maxdeltatime Unity方面也固定Delta时间。
    在不影像制作的情况下,这应该是可取的行为,但是如果是独自管理Time.maxDeltaTime的话,就需要注意了。在Acyclic的情况下,Unity侧的delta时间就那样变成Alembic侧的帧间间隔。当然间隔不是一定的,但是对游戏进行的影响是最小的。主要是设想游戏的3d录像的模式。Start Time是Alembic一侧的开始时间。Frame Rate是Time Sampling类型为Uniform时的Alembic侧的帧间间隔。
  • Swap Handedness:使之有效的话,夹入右手坐标系/左手坐标系改变的处理。很多DCC工具都是与Unity相反的坐标系,所以大部分都是有效的。
  • Swap Faces:反转面的正反面。
  • Scale Factor:缩放因子,缩放模型的比例
  • Scope:捕捉场景内可捕捉的全部对象。目前的Branch只捕获带有Alembic Exporter组件的GameObject以下的树。

【Unity3D插件】Alembic插件分享《abc动画文件导入Unity》相关推荐

  1. 通过Mixamo生成人物动画并导入Unity实现资源可用的方法

    通过Mixamo生成人物动画并导入Unity实现资源可用的方法: 文章要点: 如何通过Mixamo生成人物动画 在Mixamo中生成的模型及动画导入Unity的设置(保持原有材质) 在Unity中利用 ...

  2. stl格式文件导入Unity

    stl格式文件导入Unity(不用代码) STL文件仅描述三维物体的表面几何形状,没有颜色.材质贴图或其它常见三维模型的属性. STL文件有两种表示方式:文本.二进制.一般会以二进制格式使用,我们也可 ...

  3. 使用Blender的CATS插件把MMD模型转为FBX,导入Unity

    1.下载插件和MMD模型 CATS插件 https://github.com/absolute-quantum/cats-blender-plugin 安装到blender 我使用的是3.0版本 星穹 ...

  4. 将动画角色导入Unity 3D

    寻找免费动画 如果你已经创建了自己的动画,那真是太棒了 - 我们将讨论很快将它们导入Unity.如果您已创建角色或想购买股票角色,那么让我们谈谈我们在哪里可以找到一些角色. Mixamo是一个很好的选 ...

  5. 3dmax顶点动画导入unity_3DMAX点缓存的动画怎么导入unity呀?

    (引自别处,希望有用)用Max导出Unity3D使用的FBX文件流程注解从max导出FBX到Unity,以下环节需要特别注意.1,单位设置很多人在建模,动画的时候,默认的maxsystemunit是设 ...

  6. FBX文件导入Unity导致贴图丢失问题解决,以3ds max,Blender导入导出为例

    一 . 首先把资产文件导入三维软件中 1 . 3ds Max 1.1 导入FBX--[免费或者质量差的资源可能会出现平滑组错误的情况,可以直接镜像一个模型更改法线或者删除面重新封口能解决问题] 1.2 ...

  7. .max文件导入Unity出现异常

    首先,Unity想要使用.max文件,首先需要安装相应版本的3DMax,否则导入Unity会有以下提示: 导致模型不能正常使用; 除了安装程序,还可以将.max文件转化为.fbx文件,因为Unity可 ...

  8. 3dmax动画模型导入unity 帧率问题

    unity 手机移动动画帧率默认应该是30fps,而魔兽模型导入3dmax的动画帧率是300fps,在将魔兽模型导入unity时,动画模型是在一长时间轴上即成了所有的动画片段,如果需要从中选取的话,可 ...

  9. FLASH中利用JSFL制作动画并导入Unity

    通过JSFL绘画扇形,然后放置于关键帧中,形成动画. 按照指定的半径和当前长度生成Symbol,如果在指定的半径线宽下当前长度的Symbol已经存在了,那么就不需要再生成Symbol了.利用已有的进行 ...

  10. max导出fbx动画模型导入unity后播放会出现局部模型扭曲解决办法总结

    **动画模型在max里面播放是好的,看着没问题,但导出fbx到unity里面会出现局部扭曲或部分破面面消失或动画抖动,这个可能是因为unity本身设置问题,也有可能是蒙皮绑定的问题 解决办法 1.模型 ...

最新文章

  1. java png 转jpg_怎么用java将png图片转换成jpg格式的图片
  2. 运行NER/formal_bert_lstm_crf.py“ 报错ModuleNotFoundError: No module named ‘keras_contrib‘
  3. 变量值为NAN的什么意思
  4. 三极管共射、共集、共基分析及比较
  5. 网络流 增广路 回退
  6. lombok null字段不显示 继承_Lombok 要知道的 8 个点
  7. 知识图谱需要解决的问题
  8. java string 加密_java字符串加密解密
  9. FileFilter接口 java
  10. js学习总结----iscroll
  11. 入门命令23-更换CMD窗口的颜色:color
  12. 软硬件联合调试步骤_PLC与SCADA或第三方软件的联合仿真调试—NetToPLCSIM
  13. Clover引导简明教程
  14. echarts使用之坑 隐藏显示echarts变形 echarts官网访问不了
  15. Flir Blackfly S USB3 工业相机:白平衡设置方法
  16. 算法:罗马数字转整数
  17. js自执行函数(function(){})()前加个分号是什么意思?
  18. IP地址是什么,618IP代理带你深入了解
  19. c语言省二机考和笔试,计算机二级都是上午考试吗
  20. Android10定制Google开机向导

热门文章

  1. nod32 lic 99用户授权文件可以用到2015年4月的许可证下载
  2. 如何关闭mcafee软件_如何摆脱McAfee的通知和捆绑软件
  3. ExpandableListView购物车
  4. 百度 Echarts 地图-模拟迁徙,实现自动切换地图
  5. 通达OA二次开发手册V12
  6. sns java_JEESNS首页、文档和下载 - Java 开源 SNS 社区系统
  7. C语言实现一个关机程序
  8. Excel工作表保护的密码破解与清除...假装自己破解密码系列?
  9. 计算机组成原理 罗克露 pdf,罗克露计算机组成原理课件(二).pdf
  10. python3 爬虫 爬取美女图片