PhysX

Vite 集成了 NVIDIA PhysX 3.4,用于刚体模拟、碰撞查询、约束、车辆和骨骼物理。 Vite 通过现代编译器支持、固定时间步长模拟、NVIDIA Blast 和高计数实例物理子系统扩展了后端。

PhysX 通过虚幻引擎的标准物理框架公开。现有的引擎类型(例如主体实例、物理材质、物理资产、碰撞轮廓和约束组件)使用下面的 PhysX 场景。

核心模拟功能

刚体

  • 静态、动态和运动参与者;
  • 盒子、球体、胶囊、凸面和三角网格碰撞几何体;
  • 具有摩擦力、恢复力和密度的物理材料;
  • 重力、阻尼、力、脉冲和扭矩;
  • 睡眠、清醒和主动身体跟踪;
  • 快速移动物体的连续碰撞检测;
  • 碰撞过滤和模拟/查询形状标志;
  • 接触、重叠和唤醒/睡眠通知。

场景查询

PhysX 提供了整个引擎使用的碰撞查询路径:

  • 光线投射;
  • 形状扫描;
  • 重叠;
  • 单次命中和多次命中查询;
  • 对象通道、跟踪通道和配置文件过滤;
  • 运动、武器、导航和游戏系统使用的同步场景查询.

查询成本取决于冲突复杂性、宽相填充、过滤器回调和结果计数。对重复的游戏查询使用简单碰撞,并避免在仅需要第一次阻止命中时请求多次命中结果。

约束

该集成通过 Unreal 的约束框架支持固定、距离、铰链、球形和 D6 式约束。可用的控件包括:

  • 线性和角度限制;
  • 运动和驱动;
  • 断裂力和断裂扭矩;
  • 约束投影;
  • 受约束物体之间的碰撞启用;
  • 质量和惯性标度;
  • 在 Physics Assets 中创作的骨骼约束链.

角色和骨骼物理

PhysX 提供角色运动的碰撞查询和物理资源的刚体模拟。这包括布娃娃、物理动画、命中反应、身体焊接和每个身体的碰撞配置。

载具

Vite 保留了 UE4.27 PhysX 车辆堆栈,包括车轮模拟、悬架、轮胎摩擦、发动机、传动装置、差速器和传动系统配置。车辆行为是通过 UE4 项目使用的标准车辆和轮胎数据资产编写的。

破坏(Destruction)、布料(cloth)和爆炸(Blast)

Vite 物理堆栈包括以下 NVIDIA 系统:

特性 功能
APEX Destruction(破坏) 编写可破坏网格、支撑块、损坏和断裂事件
APEX Cloth(布料) 顶点绘制的布料约束和骨架网格物体布料模拟
NVIDIA Blast(爆炸) 破坏资产和断裂工作流程与 PhysX 后端集成

请参阅破坏和布料以获取创作和运行时指南。

Vite 扩展

现代工具链支持

Vite 的 PhysX 库和构建文件已针对较新的 MSVC 和 Clang 工具链进行了更新,包括当前 Vite 构建使用的 Android NDK Clang 路径。工具链更改在发布前通过物理测试和压力工作负载进行验证。

固定时间步长模拟

可选的固定时间步长路径将模拟节奏与可变渲染帧解耦,并添加渲染插值。它适用于需要稳定的模拟增量或可重复捕获的项目。有关编译时设置和集成要求,请参阅固定时间步长

实例物理子系统

实例化子系统通过实例化网格表示大型同质刚体集,而不是每个主体一个 Actor 和组件层次结构。它适用于碎片、炮弹、环境物体和其他高计数模拟。请参阅实例物理子系统

原生 actor 路径

已经拥有紧凑模拟状态的引擎级系统可以更接近本机 PhysX Actor 运行,并避免不必要的高级 Actor/组件工作。这是一个专门的集成路径:所有权、生命周期、转换同步、冲突过滤和拆卸仍然是调用者的责任。

配置

物理设置位于项目设置 > 引擎 > 物理下。

设置 功能
默认重力 Z 世界重力; -980.0 对应 1 uu = 1 cm
子步进 将长帧分成更小的模拟步骤
最大子步增量时间 一个子步处理的最大增量
最大子步数 一帧执行的模拟步骤的上限
在专用服务器上模拟骨架网格体 在服务器目标上启用骨骼刚体模拟
默认自由度 限制平面或有限轴游戏的运动

子步进

如果不进行子步进,物理场景会随着帧增量而前进。大的或可变的增量会降低接触和约束稳定性。需要时,子步执行多个较小的前进;它的 CPU 成本随着执行的子步骤数量的增加而增加。

从必须保持稳定的最快交互中选择“最大子步增量时间”,然后设置“最大子步”以限制最坏情况的工作。上限可防止慢速帧产生无限制的模拟积压。

对于固定模拟节奏而不是帧触发子步,请使用固定时间步路径

PhysX 可视化调试器

PhysX Visual Debugger(PVD)可以检查连接的场景,包括参与者、形状、接触、约束和模拟状态。使用支持 PVD ​​的开发版本,在重现问题之前进行连接,并在场景包含许多尸体时限制捕获持续时间。

视口碰撞可视化对于在完整 PVD ​​捕获之前确认创作的几何体和过滤仍然有用。

分析

命令 显示
stat physics 物理时序除以引擎相位
stat game 游戏线程工作背景下的物理成本
p.NumPhysScenes 激活的物理场景数
show Collision 视窗中的碰撞几何体

具有代表性碰撞几何形状、刚体计数、睡眠行为和事件生成的分析。每次比较时记录物理毫秒、刚体/形状计数、激活刚体计数、求解器设置、子步骤和工作配置。

对于高刚体数,请使用相同的形状和求解器设置将基于 Actor 的标准模拟与实例子系统进行比较。

参见