Unity:Animation 三 Playable、ImportModel

news2025/3/10 22:25:20

目录​​​​​​​

1. Playables API

1.1 Playable vs Animation

1.2 Advantages of using the Playables API

1.3 PlayableGraph Visualizer

2. Creating models outside of Unity

2.1 Preparing your model files for export

2.1.1 Scaling factors

2.1.2 优化模型文件

3. Importing models into Unity

3.1 Importing a model

3.2 Importing a model with humanoid animations

3.2.1 Set up the Avatar

3.2.1.1 Creating an Avatar Mask

3.3 Importing a model with non-humanoid (generic) animations

3.4 Model Import Settings window

3.4.1 Rig tab 

3.4.1.1 Saving and reusing Avatar data (Human Template files)

3.5 Animation tab

Setting error tolerance for key reduction on position and scale curves

Setting error tolerance for key reduction on position and scale curves

Clip selection list

3.5.1 Euler curve resampling

3.5.2 Extracting animation clips

3.5.3 Loop optimization on Animation clips

3.5.4 Curves

3.5.5 Events

3.5.6 Motion

3.6 Materials Tab


1. Playables API

Playables 提供了一组创建、混合、修改多种数据的api 和图表,支持 animation,audio,scripts.

1.1 Playable vs Animation

animation system 仅限于编辑animation, Playables API 被设计得更加灵活并支持其他系统。 

1.2 Advantages of using the Playables API

  • 1. The Playables API 允许动态的混合动画,在运行时可以修改动画,即在运行时可以创建,混合动画.

  • 2. The Playables API 在轻量化播放动画,兼顾了animation clip 和 animator

  • 3. The Playables API 可以动态的控制混合的权重

  • 4. PlayableGraph 适合大量的,复杂的动画,其它的animator就可以满足需要

1.3 PlayableGraph Visualizer

PlayableGraph Visualizer 插件地址:

  1. github: GitHub repository

  2. 选择: Window > PlayableGraph Visualizer  打开

2. Creating models outside of Unity

2.1 Preparing your model files for export

2.1.1 Scaling factors

Unity’s physics 和 lighting systems 是每个单位1米,也就是1unit/m
不同模型软件里导出的模型单位:

  • .fbx, .max, .jas = 0.01
  • .3ds = 0.1
  • .mb, .ma, .lxo, .dxf, .blend, .dae = 1

导入时打开 Convert Units 选项,进行单位转换。

2.1.2 优化模型文件

  • Minimize the polygon count
  • Use as few Materials as possible
  • Use a single skinned Mesh Renderer
  • Use as few bones as possible
  • Keep forward and inverse kinematics separate

最小化模型的面片数量,3D模型中显示的面片顶点数量,往往比在unity里面显示的少,如果一个顶点有多个法线、UV坐标或顶点颜色,那么它必须被分割多个顶点。

对于使用蒙皮网格渲染器的动画角色模型,每个角色应该只使用一个这个组件。Unity的动画系统使用可见性剔除和边界体积来优化动画更新。只有当使用一个Animation组件和一个Skin Mesh Render时,才会有效。使用两个蒙皮网格代替单个蒙皮网格可以使模型的渲染时间增加一倍。

骨骼数量越少,性能越高,骨骼消耗性能,是因为每个顶点都需要计算骨骼对顶点位置的影响,如果没有动画,有骨骼也没事

如果反向运动学不需要,就把该节点删掉

3. Importing models into Unity

3.1 Importing a model

模型包含了很多信息,包括动画,网格,材质球,贴图

Unity 支持FBX类型的模型,如果是其它格式的,比如.blend、.max、.mb、.ma等,原理是:Unity会在后台启动三方建模软件,然后把它转成FBX格式,前提是本机安装了三方建模软件

Unity 导入贴图的时候,会自动搜索该模型层级和其父层级下名字叫Texture的文件夹,来匹配贴图,但是如果项目中有多个Texture文件夹,有可能匹配的不正确,所以要把模型用到的贴图,放到模型的同层级下面

3.2 Importing a model with humanoid animations

当Unity导入包含 Humanoid Rigs and Animation的模型文件时,它需要调节模型的骨骼和动画, 通过将文件中的每个骨骼映射到Avatar来实现这一点,这样就可以正确地播放动画. 

  1. Define the Rig type and create the Avatar.
  2. Correct or verify the Avatar’s mapping.
  3. 完成骨骼映射后,可以点击 Muscles & Settings 页 to tweak the Avatar’s muscle configuration.
  4. 可以保存 the mapping of your skeleton’s bones to the Avatar 到 Human Template (.ht)文件
  5. 可以通过defining an Avatar Mask.细化管理骨骼映射
  6. 可以定义define specific action ranges as Animation Clips.
  7. 对于 Animation Clip:
    • Change the pose and root transform
    • Optimize looping
    • Mirror the animation on both sides of the Humanoid skeleton.
    • Add curves to the clip in order to animate the timings of other items
    • Add events to the clip in order to trigger certain actions in time with the animation
    • Discard part of the animation similar to using a runtime Avatar Mask but applied at import time
    • Select a different Root Motion Node to drive the action from
    • Read any messages from Unity about importing the clip
    • Watch a preview of the animation clip

3.2.1 Set up the Avatar

设置Animation Type为Humanoid,默认Avatar Definition设置为Create From This Model.

  • Create From This Model:从模型中创建avtar,Unity 会把骨骼映射的信息,保存到Humanoid Avatar中。
  • Copy From Other Avatar :使用其它模型定义好的Avatar,比如一个mesh,有多个animation,导出了多个Avatar,则mesh和animation可以通用一个Avatar

Humanoid Rig

如果Avatar映射没成功,就会有报错信息,这时,需要检查Avatar的映射关系,点击configure,手动映射

 手动映射骨骼,T-Pose是最好的姿态

3.2.1.1 Creating an Avatar Mask

Avatar Mask 给动画添加遮罩,节省性能,因为这部分动画给屏蔽掉了,动画数据不会加载。

3.3 Importing a model with non-humanoid (generic) animations

非人形动画,也有Avatar,它和人形Avatar不同,非人形需要选择一个RootNode,并且只有节点映射,不能手动映射

3.4 Model Import Settings window

(A) Scene-level 属性,比如是否导入 Lights and Cameras, scale factor 是多少.

(B) Meshes属性

(C) Geometry-related 属性,比如 topology, UVs, normals.

Scale Factor设置模型的缩放因子,因为模型在3D软件里的,和unity里面的不一样,进行缩放模型
Convert Units开启后,将模型的单位和unity的单位进行转换,只是转化单位
Preserve Hierarchy是否保留原有的层级,unity 会默认剔除模型中的空节点
Sort Hierarchy By Name是否开启模型按透明度排序,不开启,则保留模型的原层级

3.4.1 Rig tab 

3.4.1.1 Saving and reusing Avatar data (Human Template files)

可以把Avatar映射关系,保存成 Human Template file (extention *.ht)文件,其它的模型也可以使用同一份文件

3.5 Animation tab

  • Setting error tolerance for key reduction on position and scale curves

Anim. Compression压缩方式
Off表示Unity不会减少keyframe的数量,增加运行时性能和内存大小,如果需要高精度的动画,可以开启keyframe reduction,同时降低Animation Compression Error的值.
Keyframe Reduction减少导入时的冗余关键帧. 影响文件大小(运行时内存),也影响曲线的计算方式
Applies to LegacyGeneric, and Humanoid Animation Type rigs.
Keyframe Reduction and Compression在导入时减少关键帧,同时在文件中存储动画时压缩关键帧。运行时内存和Keyframe Reduction 一样,只是存储是压缩,运行时还得解压缩,和原大小一致
Only for Legacy Animation Type rigs.
Optimal让unity决定,使用以上两种方法中的哪种
Animation Compression Errors当 Keyframe Reduction or Optimal 打开时,才有
Rotation Error设置旋转曲线压缩的误差容差(以角度为单位)。Unity使用这个来决定它是否可以移除旋转曲线上的一个键。

Angle(value, reduced) < RotationError
Position Error see Setting error tolerance for key reduction on position and scale curves.
Scale Error see Setting error tolerance for key reduction on position and scale curves.
  • Setting error tolerance for key reduction on position and scale curves

对于position 和 scale,使用下面的方法,如果小于OriginalValue*percentageOfError的就会被踢出,position error 是 设置的是percentageOfError,reduce的value就是移除掉这个关键帧之后,该帧的值。比如两个key,一个为11.2,一个为11.1,position error=10,这二个帧被移除后,它的值变成了10,则根据11.2-10>11.2*10%,11.1-10<11.1*10%,则第二个帧被移除

  • Clip selection list

模型中包含的clip列表,选择后,可以在下面的窗口查看属性,如果修改了clip的属性,是在原clip上的修改,不会新创建clip

Loop Time是否循环播放
Loop Pose无缝衔接
Cycle Offset循环开始的时候加一个偏移
Root Transform Rotation
Bake into Pose骨骼随着动画旋转。 关闭之后,动画不影响骨骼旋转,只影响根节点旋转
Based Upon根节点旋转的依据:
Original保持模型源文件的旋转
Root Node Rotation使用根节点的旋转,作为当前模型的旋转

Only available for the Generic Animation Type.
Body Orientation保持上半身向前,也就是不应用旋转,根据代码控制旋转

Only available for the Humanoid Animation Type.
Offset根节点旋转的偏移角度
Root Transform Position (Y)
Bake into Pose骨骼随着动画移动,关闭之后,只影响根节点运动,跳跃运动一般开启
Based Upon (at Start)Basis of vertical root position.
OriginalKeep the vertical position from the source file.
Root Node PositionUse the vertical root position.

Only available for the Generic Animation Type.
Center of MassKeep center of mass aligned with the root transform position.
Only available for the Humanoid Animation Type.
Feet保持脚与根节点位置对齐。也就是模型的位置,和脚保持一致
Only available for the Humanoid Animation Type.
OffsetOffset to the vertical root position.

3.5.1 Euler curve resampling

3D模型软件里面的动画,一般是用四元数或者欧拉角表示旋转,unity 在导入动画的时候,一般会重采样成四元数表示。如果重采样后效果不好,则可以取消勾选。即使不勾选,unity在运行的时候,也是把欧拉角转换成四元数,应用到旋转上,但是节省了内存。因为没有存储额外的动画曲线。

unity中默认的旋转顺序,是ZXY,如果动画中和unity的旋转方向不一致,会有提示。

3.5.2 Extracting animation clips

如果导入的模型,只有一段很长的动画,可以在unity中进行切分。

点击这里的+号,根据长动画,进行切分,重命名 

3.5.3 Loop optimization on Animation clips

unity 提供了循环动画的视图,在动画的开始条上按住鼠标左键,就会出现loop的图表

然后拖动动画的时间线,让灯变绿

3.5.4 Curves

播放动画的时候,额外的动画曲线,它是一个参数,如果animator 中有相同名字的参数,则获取的就是该曲线的值,如果多个clip,都有相同名字的curve,则获取到的值是混合后的。

3.5.5 Events

可以为每个clip,添加event事件,就和在animation窗口一样

调用机制:动画物体上挂载脚本,脚本中包含和动画事件名字一样的方法。

3.5.6 Motion

 

为动画重新定义Root,也就是角色的根节点

3.6 Materials Tab

A:导出内嵌的材质球

B:如果有需要,重新映射材质球

C:内嵌的材质球,也可以重新赋值

通过指定AssetPostProcessor.OnPreprocessMaterialDescription 预处理材质球

Unity - Scripting API: AssetPostprocessor 是所有预处理,后处理的类,也可以自定义Importer,Script Importer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯云2核2G3M轻量应用服务器优惠价格61元一年

腾讯云2核2G3M轻量应用服务器优惠价格61元一年&#xff0c;200GB月流量、40GB SSD云硬盘。 一张表看懂腾讯云服务器租用优惠价格表&#xff0c;一目了然&#xff0c;腾讯云服务器分为轻量应用服务器和云服务器CVM&#xff0c;CPU内存配置从2核2G、2核4G、4核8G、8核16G、4核16…

网络编程:数据库实现增删改

1.数据库实现增删改 程序代码&#xff1a; 1 #include<myhead.h>2 //定义添加数据函数3 int do_add(sqlite3*ppDb)4 {5 //准备sql语句6 int add_numb;//工号7 char add_name[20];//姓名8 double add_salary;9 printf("请输入要添加的工号:&quo…

网康科技 NS-ASG 应用安全网关 SQL注入漏洞复现(CVE-2024-2022)

0x01 产品简介 网康科技的NS-ASG应用安全网关是一款软硬件一体化的产品,集成了SSL和IPSec,旨在保障业务访问的安全性,适配所有移动终端,提供多种链路均衡和选择技术,支持多种认证方式灵活组合,以及内置短信认证、LDAP令牌、USB KEY等多达13种认证方式。 0x02 漏洞概述 …

ArmSoM规划开发基于RK3576的开发套件

ArmSoM正计划推出一款新的产品&#xff0c;这款产品将采用强大的RK3576芯片。 本文将为您介绍我们的新产品搭载的RK3576性能参数&#xff0c;以及它如何为您提供卓越的性能和功能。 RK3576处理器 RK3576处理器是一款强大的处理器&#xff0c;具备出色的性能和多样化的功能&a…

机器学习的边界与实际应用

目录 前言1 机器学习的广泛适用性1.1. 利用输入输出映射1.2. 大量的可用数据 2 机器学习能做的事情举例2.1 自动驾驶2.2 用户请求处理2.3 有大量数据的医学影像诊断 3 机器学习不能做的事情举例3.1 市场分析报告3.2 感同身受的邮件回复3.3 手势意图判断3.4 少量数据的医学影像诊…

NotePad++下载

notepad官网地址是https://notepad-plus-plus.org/。提供了许多强大的功能和工具&#xff0c;使其成为许多程序员和开发人员的首选工具。 Notepad 是一款广受欢迎的开源文本编辑器&#xff0c;它提供了许多强大的功能和工具&#xff0c;使其成为许多程序员和开发人员的首选工具…

Hadoop配置日志的聚集——jobhistory不显示任务问题

问题&#xff1a; 一开始job history是正常的&#xff0c;配置了日志的聚集以后不管做什么任务都不显示任务&#xff0c;hdfs是正常运行&#xff0c;而且根据配置步骤都重启过了。 下面先po出日志聚集的操作步骤&#xff0c;再讲问题 1.配置yarn-site.xml cd $HADOOP_HOME/e…

URL?后参数有特殊字符问题

前端对于URL的参数不做处理 不处理、用URLDecoder.decode()处理、用URLEncoder.encode()处理、用URLEncoder.encode()处理后再用URLDecoder.decode()处理 结果 前端对于URL的参数用encodeURIComponent(‘XF-OPPZZD-26*316’)处理 结果 前端不处理有&字符时 结果会把后…

阿里云轻量应用服务器2核4G5M优惠价格165元一年,252元15个月、756元3年

阿里云轻量应用服务器2核4G5M优惠价格165元一年&#xff0c;252元15个月、756元3年&#xff0c;500GB月流量&#xff0c;60GB SSD云硬盘。 一张表看懂腾讯云服务器租用优惠价格表&#xff0c;一目了然&#xff0c;腾讯云服务器分为轻量应用服务器和云服务器CVM&#xff0c;CPU…

借助 Terraform 功能协调部署 CI/CD 流水线-Part 1

在当今快节奏的开发环境中&#xff0c;实现无缝、稳健的 CI/CD 流水线对于交付高质量软件至关重要。在本文中&#xff0c;我们将向您介绍使用 Bitbucket Pipeline、ArgoCD GitOps 和 AWS EKS 设置部署的步骤&#xff0c;所有步骤都将利用 Terraform 的强大功能进行编排。在Part…

互联网智慧工地源码,“互联网+建筑大数据”SaaS微服务架构,支持PC端、手机端、数据大屏端

智慧工地源码&#xff0c;支持多端展示&#xff08;PC端、手机端、平板端&#xff09;SaaS微服务架构&#xff0c;项目监管端&#xff0c;工地管理端源码 智能时代的风暴已经融入了我们生活的每个方面&#xff0c;智能手机、iPad等移动终端智能设备已经成为我们生活的必需品。智…

[C语言]——分支和循环(3)

目录 一.while循环 1.if 和 while的对比 2.while语句的执行流程&#xff1a; 3.while循环的实践 4.练习 二.for循环 1.语法形式 2.for循环的执行流程 3.for循环的实践 4.while循环和for循环的对比 5.练习 三.do-while循环 1.语法形式 2.do while循环的执行流程 3…

ES单节点部署

ES 拉取镜像 docker pull elasticsearch:7.10.1启动容器 docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e "ES_JAVA_OPTS-Xms1g -Xmx1g" -v /es_data:/usr/share/elasticsearch/data --name es 558380375f1a注&#xff1a…

覆盖element-ui的el-menu样式记录:背景图片、菜单图标、菜单高亮与鼠标悬浮高亮、调整子菜单等样式

页面中修改el-menu 设置background-color"transparent"&#xff0c;menu菜单下的背景图片则能正常显示了 <el-menuclass"el-menu-demo"mode"horizontal"background-color"transparent"><el-menu-item index"1">…

Java基于微信小程序的校园失物招领小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

app逆向-ratel框架-AES,DES,MD5,SHA1加密算法java hook程序

一、前言 AES&#xff08;高级加密标准&#xff09;、DES&#xff08;数据加密标准&#xff09;、MD5&#xff08;消息摘要算法5&#xff09;和SHA-1&#xff08;安全哈希算法1&#xff09;都是常见的加密算法&#xff0c;用于数据加密和哈希计算。 二、加密算法实现 1、创建…

基于单片机的火灾报警系统设计

目 录 摘 要 I Abstract II 引 言 1 第1章 系统整体方案设计 3 1.1 系统方案的选择 3 1.2 系统方案设计 3 1.2.1 系统概述 3 1.2.2 系统框图 4 第2章 系统硬件设计 5 2.1单片机STC89C52 5 2.1.1 最小系统电路 6 2.2 显示电路 7 2.2.1 显示方案的选择 7 2.2.2 1602液晶显示 7 2…

gan, pixel2pixel, cyclegan, srgan图像超分辨率

文章目录 1.gan2.DCgan3.cgan4.pixel2pixel&#xff08;Image-to-Image Translation with Conditional Adversarial Networks&#xff09;5.CycleGAN6.Deep learning for in vivo near-infrared imaging11..Photo-Realistic Single Image Super-Resolution Using a Generative …

【AI视野·今日NLP 自然语言处理论文速览 第八十二期】Tue, 5 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 5 Mar 2024 (showing first 100 of 175 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Key-Point-Driven Data Synthesis with its Enhancement on Mathematica…

论文研读_多目标部署优化:无人机在能源高效无线覆盖中的应用(ImMOGWO)精简版

此篇文章为Multi-objective Deployment Optimization of UAVs for Energy-Efficient Wireless Coverage的论文学习笔记&#xff0c;只供学习使用&#xff0c;不作商业用途&#xff0c;侵权删除。并且本人学术功底有限如果有思路不正确的地方欢迎批评指正! 创新点 RD算法 混合…