【Unity】模型导入和动画

模型下载和格式转换

在模之屋下载了我推()
https://www.aplaybox.com/

  • 获得tex纹理文件和.pmx文件
    在这里插入图片描述

  • 需要转换为Unity可以使用的.fbx文件
    下载Blender2.93和CATS插件
    Blender2.93下载页面:https://www.blender.org/download/lts/
    CATS插件下载页面:https://github.com/absolute-quantum/cats-blender-plugin
    打开Blender-编辑-偏好设置-插件-安装-选中.zip插件-勾选后选择右侧CATS-Import导入.pmx文件-Fix Model-Export
    获得.fbx文件
    在这里插入图片描述

二次元渲染:

在这里插入图片描述
将人物fbx文件,纹理文件导入,提取材质放入材质文件夹
在这里插入图片描述将大佬的文件下载下来导入
选择全部材质,更改Shader为SimpleURPT
面部材质勾选Is Face
在这里插入图片描述

在这里插入图片描述
simple urp下载页面:https://github.com/ColinLeung-NiloCat/UnityURPToonLitShaderExample

骨骼重定向:

选中fbx文件,Rig处更改为人形,Apply

头发和衣服的物理模拟

Unity Chan的商城页面:https://assetstore.unity.com/publishers/7659
animation rigging

  • 导入二者到项目
    在这里插入图片描述选择如下,可以看到该脚本绘制出的人物骨骼
    在这里插入图片描述
    在这里插入图片描述

脚本或者说继承了MonoBehavier的脚本就是一个自定义的组件component

利用Unity-Chan中提供的这三个组件可以制作出不错的骨骼物理模拟效果
在这里插入图片描述
将这三个组件所构成的系统称为“弹性骨骼”或“动态骨骼”。
SpringBone:需要把它绑定到所有需要进行物理模拟的骨骼节点上,需要当前骨骼有一根子骨骼
SpringManager:绑定完后要把所有的springbone交给其管理,可以管理多个骨骼链,springmanager必须放在springbone的同级节点或者父节点上
SpringCollider:在一定程度上防止穿模,比如绑定到头上和大腿上

  • 在根骨骼节点上添加Springbone组件,将其下一级骨骼拖动到child,以此类推

在这里插入图片描述

在这里插入图片描述

修改旋转轴bone axis 为(0,1,0)
以上过程也可以在SpringManager进行一个程序的写:
在这里插入图片描述
为角色添加一个SpringManager脚本,将绑定了的骨骼拖到Springbone数组中
stiffness是坚硬度的意思,越大越硬越小越软
stiffnesscurve调整骨骼链上每一个骨骼的坚硬程度
dargforce是阻力,越大骨骼复原速度越慢

  • 设置碰撞体
    在需要设置的位置例如腿部添加空物体,增加Spring Collider组件
    在这里插入图片描述拖动至需要与之产生碰撞的骨骼Collider
    在这里插入图片描述

可以移动角色或者添加Random Wind组件查看效果

动画系统

在mixamo网站上可以下载免费模型和动画。
https://www.mixamo.com/

这里下载动画,Format选择FBX for Unity
在这里插入图片描述
导入动画文件到人物fbx同级目录下,选中动画fbx文件,Rig处更改为人形
可以选择是否勾选animation下的循环时间设置循环播放,将fbx文件下的Clip复制出来并移动到动画文件夹
在这里插入图片描述

创建Animation Controllor,挂载到人物Animation组件上
在这里插入图片描述
在这里插入图片描述
设置状态机:
在这里插入图片描述

知识点

  • Controller:使用的Animator Controller文件
  • Avatar:使用的骨骼文件
  • Apply Root lotion:绑定该组件的Gamebject的位置是否可以由动画进行改变(如果存在改变位移的动画)。

Apply Rootlotion 让角色动画驱动角色运动,提高了动画的使用效率
这就有两种情况,比如跑步动画
1、当我们的动画是原地跑的时候,这时候使用Apply Rootmotion的时候,人物还是在原地跑,就不需要用了,需要代码手动控制人
2.如果是可以一直往前跑的动画时,就可以使用Apply Roothotion使用动画驱动人物移动
人为控制用 move *= Time.deltaTime * moveSpeed;
动画控制用move = animatordeltaPosition; 其它地方都一样
不开启rootmotion,如果动画本身是一个带位移的动作的话,人物会脱离胶囊体,进而没有碰撞,会产生穿墙的效果,并且动画播完后,人物会回到胶囊体的位置
不带位移(原地)就不用勾选rootmotion。

  • Update Mode:更新模式,Normal表示使用update进行更新,Animate Physics表示使用FixUpdate进行更新(一般用在和物体有交的情况下),Unscale Time表示无视timeScale进行更新(一般用在UI动画中)。
  • Culling Mode:剔除模式:Almays Animate表示即使摄像机看不见也要进行动画播放的更新,Cull Update Transform表示摄像机看不见时停止动画播放但是位置会继续更新,Cull Completely表示摄像机看不见时停止动画的所有更新。

参考资源

【1】https://www.bilibili.com/video/BV1G34y127e6/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=fd6555f02904e7fa85526a2ff4b8b66e
【2】https://www.bilibili.com/video/BV1gB4y1B7tj/?spm_id_from=333.788&vd_source=fd6555f02904e7fa85526a2ff4b8b66e

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款强大的游戏引擎,可以用于创建各种类型的游戏。其中,人物模型动画Unity中常见的一种开发需求。 首先,我们需要一个人物模型。可以通过购买或者下载免费的人物模型资源,也可以自己进行建模。Unity支持多种3D模型格式,常见的有FBX、OBJ等。将人物模型导入Unity项目中。 接下来,我们需要为人物模型添加动画Unity内置了Animator组件,用于管理和播放动画。在编辑界面中,我们可以创建动画控制器,并将其和人物模型关联起来。动画控制器是一个状态机,可以根据不同的输入切换不同的动画状态。 在动画控制器中,我们可以创建不同的动画状态,并为每个状态指定对应的动画剪辑。动画剪辑是一个包含动画数据的资源,可以使用Unity内置的动画编辑器或第三方工具进行创建。常见的动画剪辑包括行走、跑步、跳跃、攻击等。 除了使用动画剪辑播放动画外,我们还可以通过代码控制人物模型动画。通过Animator组件提供的API,我们可以在脚本中设置动画的各种参数,如播放速度、过渡时间等。这样,我们可以根据游戏逻辑动态地改变人物的动画状态。 最后,在游戏运行时,我们可以通过控制人物模型的移动、跳跃、攻击等操作,来触发对应的动画状态,并播放相应的动画剪辑。这样就实现了Unity人物模型的带动画效果。 总之,Unity提供了丰富的功能来支持人物模型动画开发,包括导入模型、创建动画控制器、编辑动画剪辑、通过脚本控制动画等。开发者可以根据自己的需求和创意,灵活运用这些功能,打造出丰富多样的游戏角色动画

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值