碰撞过滤器

发布于:2024-10-18


更新时间

更新内容

对应SDK版本

定位

2024-05-10

  • 服装碰撞体性能优化与设置位置修改

V2.2.0

  • 支持碰撞过滤

视频教程

功能释义

动画中出现肢体穿插或距离太近时,会导致服装的穿模或粘连

碰撞过滤器可以设置服装版片与人体之间的碰撞关系,设置穿插部分的人体区域不与版片碰撞,可规避穿模或粘连问题

流程

步骤1. 绘制人体碰撞分区

方法一:UE中绘制

使用UE的Mesh paint mode模式,可以在UE中直接给角色顶点绘制颜色分区。

1.绘制准备

角色正面朝前:

卸载动画和服装:

2.绘制碰撞分区

选择UE的网格体绘制模式:

颜色视图模式RGB,笔刷(强度为1、衰减为0),给四肢区域绘制颜色:

绘制完毕,点击保存:

方法二:用Maya绘制

maya中绘制相比UE中绘制有更高的控制精度,非metahuman类角色在maya中绘制可以得到更好的绘制结果。

1.将角色FBX导入maya

没有FBX的情况下,可以从UE资源浏览器中使用导出功能,导出角色FBX

2.使用maya绘制顶点颜色工具,给角色身体绘制颜色

选中网格,设置笔刷后绘制

3.绘制完成后,导出FBX回UE

FBX导回UE设置

FBX导回UE后,可以用UE网格绘制模式查看顶点颜色

【🌈重要】人体碰撞分区规范

1.普通角色规范

Maya中绘制时,人体分区颜色与maya内置的颜色预设相同,可直接选取预设值,不需手输色号

2.Metahuman角色规范

注意Metahuman角色本身很复杂,不适合导出,应直接在UE中绘制分区

Metahuman角色本身在RGB通道默认有颜色绘制,如下图。因此Metahuman角色的碰撞分区差别在Alpha通道

Metahuman角色按照普通角色的规范进行分组绘制,碰撞过滤依然生效,并且绘制更简单

潜在风险是RGB通道颜色的修改可能会影响metahuman身形调整等隐藏功能,已验证对角色动画播放无影响

颜色视图模式透明度通道,笔刷(强度为1、衰减为0),给四肢区域绘制颜色

颜色设置 RGB为0 1 0,A通道数值为 0.1 0.3 0.5 0.7 0.6 0.8

3.检查绘制结果

绘制完特别注意切换视角检查。角色背面、底部等位置易出现漏刷情况。

项目

截图

检查背面

检查脚底

检查指甲

检查鞋子等佩戴物

组件中配置分区信息(2.2以下版本)

V2.2版本组件中已默认添加

V2.2以下版本中,需手动添加Left Arm 1、Right Arm 1分组定义

Collision Group中新增两个分组:

普通角色的Left Arm 1、Right Arm 1分组信息配置如下:

Metahuman角色的Left Arm 1、Right Arm 1分组信息:

步骤2. 服装碰撞分组

自动服装分组

绘制完人体碰撞分区后,服装版片可以实现自动分组

1.服装分组准备

卸载角色动画:

注意不能给角色添加动作,添加动作后影响自动分组准确性

Style3D组件中添加服装:

注意添加完服装后,在场景窗口中验证服装与角色是否匹配,要确保服装匹配角色后再进行后面的操作

2.服装版片自动分组

点击Group自动分组按钮,点击Save保存

根据临近原则,服装版片自动分碰撞分组,如左手的版片分为Left Arm Cloth。

服装分组规范

规范说明

截图

裙摆外层的飘带,设置为body Colth

裙子版片需要与左右腿都碰撞,分组同时勾选Left Leg Cloth、Right Leg Cloth

跨人体分区的版片,在资产制作时可以切割版片,版片尽量不要跨多个人体分区

步骤3. 调整碰撞过滤器

1.检查碰撞关系

双击服装资产,进入服装界面:

服装界面中 属性栏

Collision Filter是全局的碰撞规则,规定了Body Cloth、 Left Arm Cloth、Right Arm Cloth、Left Leg Cloth、Right Leg Cloth 5个版片分组的碰撞关系

点击版片,查看单个版片的碰撞分组和碰撞关系

Collision Group 版片的所属的碰撞分组

下拉列表中

  • 不带Cloth后缀的选项是人体碰撞分区,

  • 以Cloth后缀结尾的选项为服装版片分组,

  • 多出的body1、Left Arm 2等带数字的选项是备用分组,需要时可扩展使用

Collision Mask碰撞关系,勾选代表模拟时版片与该分组产生碰撞

2.模拟,验证碰撞过滤器

点击bind:

给角色挂载动作,在编辑器中运行(添加动画录缓存):

添加动画后,bind蒙皮的适配效果需在组件中取消开启预览,再勾选一下

评估碰撞过滤器效果:

模拟时不出现肢体穿插或过近导致的 服装穿模 或 粘连,即自动设置碰撞过滤器没问题

未添加碰撞过滤器

裤腿相互粘连、手勾衣服

添加碰撞过滤器

裤腿没有粘连、手部不勾衣服

3.修改碰撞关系

场景中添加动画后,模拟时出现粘连问题的版片,需要修改碰撞过滤关系

服装面板,3D视口中点击产生粘连的版片,右侧Cloth Pieces碰撞过滤器中修改该版片的碰撞关系

常见问题

1.手动调整碰撞过滤器

当自动碰撞过滤器没有完全解决肢体穿插导致的问题,或者有特殊的碰撞设置需求时,可以手动设置。

1.为版片设置分组

点击选中版片,在Cloth Pieces 中设置Collison Group分组

  • 对于像裙子等跨多个人体区域的版片,可多选对应的版片分组,如裙子同时勾选Left Leg Cloth 和 Right Leg Cloth

2.设置碰撞过滤器

Collision Filter中显示了版片分组、与之碰撞的人体分区和版片分组

勾选Isolate Collsion,可单独显示该分组的所有版片

一个版片同时归属多个分组时,每个分组对应的碰撞过滤器都对该版片生效

3.点击保存

设置完毕,点击保存,回到场景中模拟验证效果

2.刷完人体碰撞区域后Morgh失效问题

刷完人体碰撞后保存,骨骼网格体的BS变形控制会失效,需要手动在UE中重新生成

重新构建骨骼网格体后,修改变形控制器可验证是否生效

3.Metahuman人体碰撞绘制

metahuman角色自身使用了RGB通道,因此碰撞过滤器需在Alpha通道绘制

3.1 修改预设中mask颜色值
  • 切换Colliosn Group预设

颜色值中RGB通道与普通角色绘制时一致,alpha通道值梯度变化区分

3.2 绘制角色mask

输入上表中的颜色值,依次绘制完四肢后保存

4.人体分组边界区穿模问题

肩膀处是人体分组的边界区域,在以下情况下会出现服装穿模问题:

  • 如果动作中手与身体穿插,就需要手动修改碰撞过滤器,设置手臂版片不与Body碰撞。

  • 此时手臂版片不与Body碰撞;Body版片不与手臂碰撞,运动中一旦版片运动超过边界区就会出现穿模。

可在边界新增过渡区,规避边界处穿模的问题:

1.Collision Group新增分组

  • Collision Group选Body1

  • 设置Color,需其他分组颜色不同

2.使用上面的颜色,绘制边界处过渡Mask

5.Group自动分组,版片只能分到BodyCloth问题

人体绘制完后,Group、Save自动分组,手臂等部位的版片总是分到BodyCloth组

  • 先确定版片覆盖的人体区域是否绘制到位

版片分组是按照覆盖人体区域的占比来分的,手臂区域占比不够时则可能分为BodyCloth

  • 覆盖占比足够依然分错,再检查alpha通道是否匹配

自动分组要求人体RGBA通道数值与组件中定义的完全一致,定义的颜色之外的其他颜色区域,覆盖的服装在分组时都会被分到BodyCloth

Alpha通道数值有绘制时容易被遗漏,Style3D组件分组Alpha通道默认是1

注意RGB模式下绘制人体时,把影响范围中透明度通道也勾选上

6.关卡中绘制完人体碰撞分区后,在其他关卡中还需要重新绘制吗

角色碰撞分区数据保存在Asset中,其他关卡中的角色实例不需要重新绘制分区。

资产迁移、导出等操作,同样不需要重新绘制人体碰撞分区


提交反馈