文章目录
虚幻物理系统
1、物理引擎
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映。
游戏引擎中的物理引擎的主要目的是为了解决物体在空间的状态信息。
常规的物理引擎遵循物理定律,按照给定的算法,进行模拟物理运动。所以在没有多元因素影响的情况下,物理引擎的计算结果是一致的。这和现实世界基本一致。
虚幻使用的是PhysX3.3的物理引擎驱动物理仿真以及碰撞计算。
2、物理交互
碰撞相应和**追踪响应(射线)**构成了虚幻引擎4在运行时处理碰撞和光线投射的基础。
虚幻中的碰撞交互方式分为三种:忽视,重叠,阻挡
忽视:物体和物体之间不产生任何物理结果,这使得物理引擎将这两种物体不作为检查范本。
重叠:物体和物体本身可以相互穿透,并产生事件通知。物理引擎时刻会关注物体之间的位置关系。
阻挡:物体和物体之间不可以相互穿透,将产生阻挡效果。
产生物理交互的必备条件
在虚幻引擎中,能够被物理引擎计算的物体必须具备刚体(包裹外壳)。如果希望加入物理引擎运动,还需要开启去物理模拟。
3、物理碰撞
在虚幻引擎中,物理碰撞添加的途径有两种,第一种是静态网格编辑器中,第二种是物理资源编辑器中(为骨骼Mesh使用)
静态网格编辑器
静态网格的添加的碰撞形式分为两种,简单碰撞和复杂碰撞。
简单碰撞是基础,如方块、球体、胶囊体和凸包。复杂碰撞是给定对象的三角网格图。虚幻引擎4默认在Physx中创建简单和复杂两种形态,然后再基于用户需要(复杂查询vs简单查询)使用相应形态。
LOD(Levels of Detail):多层次细节,LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
例如游戏中,背后和远处的物体为非重要物体,细节度低,眼前近处的物体的细节度高。
简单碰撞
添加简单形状碰撞
打开静态网格编辑器,在碰撞下拉菜单中找到形状添加,虚幻提供三种简单的形状碰撞器:球体、胶囊体、盒体。
虚幻允许一个物体具备多个碰撞器
添加K-DOP简单凸包碰撞
K-DOP是包围体的一种,是K离散导向多面体(K discrete oriented polytope)的缩写(K是轴对齐平面的数字)。它抓取轴对齐的平面,将其尽力推向离网格体最近的位置。
10-方块有4条边形成斜角-可选择X、Y或Z轴对齐的边
18-方块中所有边均形成斜角
26-方块中所有边和角均形成斜角
添加自动凸包碰撞
自动凸包包裹也属于简单碰撞包裹,通过程序进行计算获得包裹数据信息。需要调整凸包顶点最大数量。
凸包数量:决定了包裹物体需要使用的凸包个数,越多越精确,消耗也越大
最大外壳定点数:每个凸包最大允许使用多少个顶点
凸包精准度:使用多少模型面做计算参考,数量越大精度越大
遇到特别复杂的物体,建议先提升凸包数量,其次是凸包精准度。
添加复杂碰撞
虚幻中规定,若一个物体开启了复杂(精准)碰撞,就不能再开启物理模拟了。
例如,开启了复杂碰撞的椅子不能再被一个球击倒。
开启复杂碰撞后,需要在细节面板中将碰撞复杂度改成“将复杂碰撞用作简单碰撞”,物体才能与其他物体进行物理交互。