简单的碰撞几何体对于优化游戏中的碰撞检测是很重要的。虚幻引擎4在 静态网格物体编辑器 中提供了创建碰撞几何体的基本工具。但是,某些时候,最好还是通过在您的3D建模应用程序中创建自定义的碰撞几何体然后再将其随同渲染网格物体导出来进行处理。一般,这适用于任何不需要和具有开放区域或凹陷区域的网格物体进行碰撞的对象。
比如:
-
Doorway(门口)网格物体
-
具有窗框的墙壁。
-
形状奇怪的网格物体。
导入器基于碰撞网格物体的名称识别碰撞网格物体。碰撞命名语法应该是:
网格物体前缀和名称 | 描述 |
---|---|
UBX_[RenderMeshName]_## | 在Max中使用 Box(盒子) 对象来创建盒式碰撞,或者在Maya 中使用 Cube(立方体) 多边形图元来创建盒式碰撞。您不能以任何方式移动顶点或 者使其发生变形来使它成为不是正规图元的其它形状,否则它将不能正常工作。 |
USP_[RenderMeshName]_## | 球体可以使用 Sphere(球体) 对象类型进行创建。球体根本不需要有太多的分段(分为 8 段比较合适),它将会为碰撞转换为真正的球体。就像 盒子一样,您不能到处移动单独的顶点。 |
UCX_[RenderMeshName]_## | 凸面体可以是任何完全闭合的凸面 3D 图形。比如,一个盒子可以是一个凸面物体。下面的图表解释了什么是凸面体及什么不是凸面体: ![]() |
警告和注意事项
-
RenderMeshName
名称必须同3D应用程序中和碰撞网格物体相关联的渲染网格物体的名称一样。所以,如果您在3D应用程序中渲染网格物体命名为Tree_01
,那么在场景中和那个网格物体相关的碰撞网格物体一样,命名为UCX_Tree_01
** ,然后将其随同渲染网格物体导入到FBX文件中。如果您需要为一个网格物体设置多个碰撞对象,那么您可以使用额外的修饰符扩展它们的名称,比如:UCX_Tree_01_00
、UCX_Tree_01_01
、UCX_Tree_01_02
, ** 等...所有这些碰撞对象都会和那个网格物体相关联。
-
目前球体仅应用于钢体碰撞、虚幻的零粗细踪迹(比如武器),而不应用于非零粗细踪迹(比如玩家运动)。同事,如果 网格物体 不是均匀缩放的,则球体和盒体碰撞则不能正常工作。一般来说,您或许想创建 UCX 图元。
-
一旦您设立了碰撞对象,您便可以把图形及碰撞网格物体导入到同一个.FBX文件中。当您把 .FBX 文件导入到虚幻编辑器时,它将会找到碰撞网格物体,把它从渲染网格物体上移除,并将其转换为碰撞模型。
-
把一个非凸面网格物体分解为凸面图元是一个非常复杂的操作,并且可能会产生不可预测的效果。另一个方法是在 3D MAX 或 Maya 中把碰撞模型分解为凸面块。
-
当一个物体的碰撞是由多个凸面的外壳定义时,这些外壳彼此之间没有相互交叉时会获得最好的效果。比如,如果一个棒棒糖的碰撞是通过两个凸面外壳来定义的,一个用于糖果另一个用于手棒,那么在两者之间应该留有空隙,如下所示:
-
UCX_Candy
-
碰撞表面间的小间隙
-
UCX_Stick