2 Star 8 Fork 1

FB/UnityURPUniVrm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mixamo_motion.md 8.13 KB
一键复制 编辑 原始数据 按行查看 历史
----2022.04.09---- 利用新的InputSystem和Cinemachine结合动画状态机实现人物的走、跑、相机环绕。 具体操作见:[使用动作数据实现简单运动](./controller_motion.md) # 背景 在readme文件中我们已经完成了将修改好的VRM模型导入到Unity中,并且调整为URP管线兼容的Shader了。 ![结果图片](./doc/img1.png) 接下来在本篇中,将讲述如何使用[Mixamo](https://www.mixamo.com/)的动作数据到Unity的VRM模型中使用。 > Mixamo为adobe的开源动作数据,可以用于商用等,直接使用这个动作可以解决我这样程序er的动画k帧苦手者 # 具体步骤 ## 1.从MIXAMO中下载动作数据 - 进入[MIXAMO](https://www.mixamo.com/)的页面 - ![](./doc/img12.png) - 选择一个动作,然后点击右边的Download下载 - 可以在右边的预览窗口里面具体的看效果 & 一些动作可以做调整 - 做全套的动作推荐使用左上角的搜索功能搜索:“pack”,然后可以找到一个全套的locomotion - ![](./doc/img13.png) - 但是全套动作的下载下来只有动作数据没有模型数据,所以需要再下载一个Tpose的模型到时候把动作数据放到Tpose的fbx里面到时候导出 - 点击下载 - ![](./doc/img14.png) - <font color="red">注意下载时不能只下载动作数据(要with skin)!纯动作数据在导入Unity后从Generic转为Hunmanoid类型的AnimationType时通过Create From this Model创建avatar会发生Tpose的偏移,导致整体动作都是变形的!</font> - 解压下载的压缩包,可以看到每个动作的独立fbx文件 - ![](./doc/img15.png) 于是动作数据就下载好了。 如果是loco的还需要再下载一个With Skin的Tpose资源。 ## 2.将多个动作数据用Blender调整并导出为一个fbx文件 ### a.不需要调整的情况 如果上面下载的动作数据是With Skin的,可以直接拖拽fbx到Unity里面。 - ![](./doc/img20.png) - 这时候你会发现如果把动作数据的预览模型换为VRM模型的,会发现动作是不正常的 - ![](./doc/img22.png) - 把Rig \-> AnimationType \-> Generic改为Hunmanoid,点击Apply然后就 - ![](./doc/img23.png) - 然后就可以等着在AnimatorController里面用了,把动作数据Ctrl+D复制出来之后其他的部分都可以直接删除了。 - ![](./doc/img24.png) - 改名之后,就能直接在Animator里面使用了 ### b.需要导入Blender中处理的情况 有时我们会希望把动作进行些许的修改,于是就需要导入到一个3D软件中操作。 > 在这里提供Blender的操作方式 - 新开一个Blender窗口 - File \-> Import \-> Fbx - 如果没装FBX插件,需要自己安装一个fbx的导入插件,网址:[链接](https://github.com/absolute-quantum/cats-blender-plugin.git) - 然后跟着教程安装插件,最后重启窗口 - 导入时记得勾选:Automatic Bone Orientation,不然骨骼会不正确 - ![](./doc/img16.png) - 导入,然后就可以调整动画的帧了 - ![](./doc/img17.png) - 这里先导入的是Tpose模型,改下名字 - ![](./doc/img18.png) - 然后开始导入动作数据了,每次新导入一个fbx就马上把animation的命名改了;修改的方法如图 - ![](./doc/img29.png) - 导入和修改的参考视频可以看:[链接](https://www.youtube.com/watch?v=VNbzOjiYJk4) - 全部动作数据导入完改完名字后大概是这样的:可以把Character以外的Armature删除了 - ![](./doc/img30.png) - 这时候把不需要的Armature给隐藏掉,然后可以切换者看看骨骼动画效果和调整骨骼动画 - ![](./doc/img31.png) - 然后如果想要可以在这里先保存一下Blender文件,以后好回来改效果。接下来就可以导出了。 - File \-> Export \-> File,记得勾选Bake Animation和设置Forward为Z轴,然后导出 - ![](./doc/img21.png) - 导出的时候我们会把人物网格一起导出,但是没关系,在Unity里面再做处理把多余东西去掉 ## 3.将导出的fbx动作导入Unity 其实就是上面的 a.不需要调整的情况 的做法。 - 将导出的fbx文件直接拖拽进Unity - 可以看到导入的东西是这样的,会有多余的人物。接下来会进行调整 - ![](./doc/img27.png) - 点击Rig,修改AnimationType为Hunmanoid然后Apply - ![](./doc/img28.png) - 然后将预览窗口的模型替换为我们的VRM模型,就能看到模型在正常执行了 - ![](./doc/img32.png) - 如果左右转向之类的转不动、跳不起来,记得把人物的Animator组件的Apply Root Motion勾选上 - 于是这里的动作就都可以用到Animator里面挂给状态了 - 如果只想留下动作数据那就选出骨骼动画数据,然后Ctrl+D复制出来,把原FBX删除即可 ## 4.踩坑记录 #### a.骨骼偏移,姿势扭曲 数据从Blender导出到Unity导入时,一定要带有一个模型,这个模型推荐是Mixamo的官方模型,这样才能保证将AnimationType从Generic转为Hunmaniod的时候不会发生骨骼偏移的BUG。 是否偏移可以在![](./doc/img33.png)点进去看。 - 不偏移(正常的): - ![](./doc/img34.png) - 偏移的: - ![](./doc/img35.png) 发生偏移原因大概是从Generic->Hunmaniod时使用的是Model来做的变换,而但单纯的动作数据是没有模型的。 ### b.运动方向有偏移 为什么Mixamo的动作方向在Unity里这么怪?在预览中播放人会走着走着发生x或者z轴上的偏移,比如直线向前跑的动作在位移上会往左边或者右边偏移? 这是因为从Mixamo下载到的动作数据都是RootMotion的,而在将骨骼从Generic转变为Hunmaniod的时候预测出来的前方向有问题,不是很贴合。可以通过调整Clip的RootTransformRotation和RootTransformPosition的选项来控制。 - 人直行走歪: - ![](./doc/img52.png) - 如果是不涉及旋转的动作可以勾选Bake Into Pose则当前Clip不会影响人物的旋转 - 将Based Upon设置为Original,即使用动作数据原本的方向 - Offset可以用来设置偏移值,进行抵消微调 - 负值会往人物的右手边偏移,正值会往左边 记录一下Clip窗口的配置意义: - LoopTime:是否循环 - LoopPose:是否将动画的首尾进行混合连接 - CycleOffset:循环的偏移 - RootTransformRotation:旋转的RootTransform - BakeIntoPose:是否使用原地动画,即人物实际的旋转不使用动作的旋转=动作不影响人物实际朝向 - BasedUpon:基于的方向, - Origional:使用动作的方向,如果有偏移可以试试使用它 - Body Origional:使用人物的方向 - Offset:使用的偏移值补正,比如一直往右偏可以给个正值来抵消 - RootTransformPositionY:Y轴位移的RootTransform - BakeIntoPose:是否使用原地动画,即人物实际的旋转不使用动作的位移,依靠CharacterController之类的代码来控制位移=动作不影响人物的实际位移 - 其他都和上面一样 - RootTransformPositionXZ:XZ轴位移的RootTransform - 和上面的一样 ## 5.参考教程或文档 - Mixamo官网:https://www.mixamo.com/#/ - **如何使用Mixamo的骨骼动画做自己的模型动画并且导入到Unity中获得idle walk runing turn等动作的骨骼动画序列**:https://www.youtube.com/watch?v=VNbzOjiYJk4 - 轻松解锁2500个游戏人物动作:https://www.bilibili.com/video/BV1oZ4y1p7ay - 这个视频里面讲了如何把多个Mixamo的骨骼动画合并在一个fbx文件中 - 并且讲了手贱多创建了Action可以怎么删除 - 骨骼动画从一套骨骼迁移到另一个:https://www.bilibili.com/video/BV1Bf4y1q7aQ - blender 2.8 动画入门学习:https://www.bilibili.com/video/BV19a4y1t77B - Blender中做Mixamo的动作融合 : https://www.bilibili.com/video/BV1gV411e7xQ - Blender中做骨骼动画的融合:https://www.bilibili.com/video/BV1mT4y1m7YX - blender角色动画应该怎样导入Unity:https://www.bilibili.com/read/cv9558600 - 通过Mixamo生成人物动画并导入Unity实现资源可用的方法:https://blog.csdn.net/Fly_fish1/article/details/108958053
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/FB-dtalker/unity-urp-univrm.git
git@gitee.com:FB-dtalker/unity-urp-univrm.git
FB-dtalker
unity-urp-univrm
UnityURPUniVrm
master

搜索帮助