使用AdvancedSkeleton给Unity制作动画的一些经验技巧

使用AdvancedSkeleton给Unity制作动画的一些经验技巧,第1张

AdvancedSkeleton(俗称ADV)是大家在Maya中使用得非常多的一个绑定+动画插件,功能强大,简单易学。我们可以使用ADV来绑定角色,key出动画,然后输出成FBX供游戏引擎(比如Unity)来使用。

不过,由于ADV的开发初衷并非针对游戏,所以默认的骨骼设计比较繁琐,与Unity的Humanoid角色设定并不能完美通用。

比如,我们选择DeformationSystem节点(这是ADV放蒙皮骨骼的地方)和Geometry节点(通常将模型放在这里)然后导出的FBX,如果在Unity中以 Rig: Animation Type = Humanoid 的设定导入的话,骨骼的识别匹配是有问题的,通常会表现为明明Maya中脚步没有滑动,但导入Unity以后脚步就出现明显的滑动现象。

这是因为ADV的Deformation Rig的骨骼数量远远超过Humanoild的骨骼数量,转换后必然会丢掉很多骨骼的动画,这样累积起来就会造成动画的明显偏差。

解决的办法有两个:

一个办法是不使用Unity的Humanoid系统,将 Rig: Animation Type 设为 Generic ,这样能够完美保留动画的全部细节,但缺陷也很明显,设为 Generic 之后基本上就只能用自己调的动画了,不能直接套用海量的Unity动作资源库。对于我这种用习惯了资源库的懒人来说简直是不可忍受的。

另一个办法是利用ADV的“游戏骨骼(Game Skeleton)”功能,这个功能可以自动建立一套符合Unreal规范的标准骨骼系统,甚至还可以将原本DeformationSystem的蒙皮转移到这套新骨骼上去。Unreal标准骨骼系统和Unity的Humanoid是完美匹配的,这样我们就可以很愉快的在Unity中利用Humanoid系统同时使用自己制作的动画以及海量动作资源库的素材了。

具体 *** 作步骤如下:

导出带骨骼蒙皮的模型:

首先在Rig文件中点击 Game Skeleton -> Create ,场景中会创建一套以 root 节点开头的骨骼,这套骨骼是完美匹配我们的Rig的,大家在配图中看到多出来的骨骼是原本Rig中就没有的手指结构(是的,原本的Rig中就没有做5根手指,所以这个Game Skeleton就匹配不了),这些多余的结构是可以直接删除的。

然后,点击 Transfer Skinning ,ADV会将蒙皮权重转移给新的游戏骨骼系统。大家要注意Maya底端的提示,如果看到 // Skinning transferred to Unreal Skeleton 字样就说明转换成功了。如果再次点击 Transfer Skinning ,ADV会将蒙皮权重转回给原来的DeformationSystem。

转移权重成功后,就可以选择这个新的 root 节点和原来的 Geometry 节点,导出成FBX,这就是我们的可以在Unity中使用的带骨骼蒙皮的角色资产了。通常我会在Unity的FBX导入设置中设置无动画、无材质、Humanoid类型Rig。

导出动画:

动画的导出更为简单。首先还是点击 Game Skeleton -> Create 来创建Game Skeleton。我个人建议先将模型复原成绑定姿态再创建Game Skeleton,可以到实际动画曲线之外的帧,点击ADV最底下的 Go To Build Pose 按钮。

然后直接选择 root 节点,导出成FBX,这就是纯骨骼动画资产。要注意: root 以及其下的骨骼都是受驱动控制的,并没有关键帧和动画曲线,在导出FBX的设置中不仅需要勾选 动画 ,还需要勾选 烘焙动画 并设置烘焙范围。

动画FBX在Unity中的设置也是无材质+Humanoid Type,不过Rig中的Avatar我会拷贝前面Rig模型所创建的Avatar,不喜欢工程中多出一堆无用的Avatar来。

Animation那里需要修改下动画片段名称,并设置动画片段范围。希望动画片段循环播放的可以勾选 Loop Time 选项。

默认的Animation导入设置会将动画曲线做一些优化,通常情况下就都让它优化吧,但如果发现优化后的动画出现了明显的问题,可以将 Anim Compression 设置为 Off 。

最后不要忘记了点击 Apply 按钮确认修改。

白模是转成Game Skeleton后导出的Humanoid Type,有贴图的是原始动画导出的Generic Type,两者基本看不出差异来。

一般不需要每个动作导出一个fbx文件,当然这样做也是可以的,但到u3d里会麻烦很多;一般采取的方法是,将这种动作做在一个fbx中,比如1-10帧是走,11-20攻击;21-30站,,,这样的;然后将这个fbx导入到u3d中,在u3d中先要对这个fbx文件的动作进行分解,比如定义1-10帧为“zou”;分解完成后,就要用程序对这些动作进行控制;在u3d中的 *** 作就不是几句话能说明白的了,很复杂,自己先全面学习max和u3d吧,要不说了你也 *** 作不来。请采纳。

很抱歉没有导入unity里试就告诉你解决方法。因为很久以前我从maya里烘培导入过一套角色行走,跑步之类的动作进unity完全行的通,所以我也不清楚你的这个情况的问题是出在哪里了
很遗憾我已经不用这个软件了,机器上也没有装。没有办法再导入一遍给你试了。
这里想到几个注意事,不知道你注意了没?
说的导入导出方法都是只针对多边形的,nurbs的无效。
第一个是maya里的帧率最好和unity的统一,要么都是25或者24之类的
第二个是烘培或者导出的时候,只选择模型去烘培或者导出,里面的骨骼,变形,控制器什么的,都不要选,然后再烘培或者导出。最后你还应该把你导出的模型,再导入maya检查下烘培的动画有没有问题,再导入unity里。如果在maya里看导出的动画都有问题,那肯定是你导出的时候设置有问题。
第三个是导入unity的时候似乎会有选项,你注意一下,是不是你有什么没有勾选的
祝你好运

打开unity,新建一个工程文件。
点击菜单栏中的GameObject->Creat Other,从d出的数据框中可以选择Cube、Sphere等简单的几何模型。点击所需的模型后就会在Scene窗口中看到创建好的模型。
可以在Inspector窗口中对其进行 *** 作,加减组件等。
点击菜单栏中的File->Save Scene将场景进行保存。在d出的数据框中选择存放路径、填写Scene名称等。
点击保存后就可以看到建立好的Unity文件了。

前几天导入了一个模型和相关的动作,加上animator 可以正常做动作,但是当我将他Rig换为legacy是却无法使用动作。
使用animation旧状态机却无法使用动作,下面是解决方案:

1、选择相应的动作
2、点击如果所示的地方
3、选择debug页面

4、勾选 legacy  就可以啦。

对了如果想让动作一直继续的话记得在按照步骤2点击normal将wrap mode 改为loop 即可。
这样的话  animation就可以用了,如果想再让animatior使用 将  legacy去掉就可。

完全可以 3d动画的原理无非是存储了每一帧骨骼的位置信息和蒙皮信息 也就是说用3d动画软件制作的骨骼动画模型导入到u3d时 只是导入了模型 蒙皮以及动画信息 所以如果你已经有了一个带有骨骼蒙皮的模型 完全可以用程序控制每一个骨骼的运动 但是为了使骨骼能够比较连贯 您就需要了解骨骼算法并应用到您的程序中,如果你有一个kinect这类的设备 还能录制真实人的动作 绑定到u3d的模型中。从实现上来说 您可以通过transform的查找函数找到模型下的所有骨骼,继而控制他们
ps:无论使用新的还是老的动画系统都是无法完美达到实时自由控制动画的目的


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13375983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存