Blast 1.1.9
简介
Blast 是一个新的 NVIDIA GameWorks 破坏库。它由三层组成:底层 (NvBlast)、高层"工具包"封装 (NvBlastTk) 和扩展 (前缀为 NvBlastExt)。这种分层 API 设计旨在通过 Ext 和 Tk API 让初次使用者能够快速上手,同时也允许有经验的用户通过底层 API 进行定制和优化。
该库旨在替代 APEX Destruction。它的开发目标是解决 APEX Destruction 模块在性能、稳定性和可定制性方面的不足。
NvBlast 的一些显著特点:
- C 风格的 API,由无状态函数组成,没有全局框架或上下文。
- 函数不会生成任务,不分配或释放内存。
- 可以定义一个支持结构,包含来自不同层级深度的块。
- 单个资产中可以存在多个块层级结构。
- 损伤行为完全由用户提供的"着色器"函数定义。
- 对资产和演员族具有可移植的内存布局,允许内存复制克隆和直接二进制序列化(在具有相同字节序的平台上)。
NvBlastTk 的特点:
- C++ API,包含全局框架。
- 使用用户提供的回调管理对象,进行分配和释放。
- 生成"工作器"对象来处理损伤,用户可以从多个线程调用。
- 使用事件系统通知用户演员分裂和块破碎。
- 引入了关节表示,使用事件系统允许用户更新演员之间的物理关节。
NvBlast 和 NvBlastTk 中明显缺失的内容:
- 没有物理或碰撞表示。
- 没有图形表示。
Blast 在底层和工具包层面上是与物理和图形无关的。完全由用户在创建 blast 对象时创建此类表示。对这些对象的更新(如演员分裂)在底层 API 中作为分裂函数的输出传递给用户,或在工具包 API 中通过分裂事件传递。这允许 Blast 与任何物理 SDK 和任何渲染库一起使用。
然而,为了帮助用户快速入门,有一个特定于 PhysX 的 Blast 扩展,它使用 BlastTk 并管理 PhysX 演员和关节。这个扩展的源代码,像所有 Blast 扩展一样,旨在作为参考实现。
当前的 blast 扩展:
- ExtAssetUtils - NvBlastAsset 实用函数。添加世界连接、合并资产和转换几何数据。
- ExtAuthoring - 一组几何工具,可以层级化地分割网格并创建 Blast 资产,同时在单独的文件中创建碰撞几何体和块图形网格。
- ExtImport - 提供函数以导入 APEX Destructible Asset 来创建 Blast 资产。
- ExtExporter - 标准网格和碰撞写入工具,支持 fbx、obj 和 json 格式。
- ExtPhysX - 使用 PhysX 的物理管理器,在用户提供的 PxScene 中保持 PxActors 和 PxJoints 更新。它处理冲击损伤(通过接触回调),包括应力求解器封装,并提供一个监听器,使多个客户端能够保持其状态同步。
- ExtSerialization、ExtTkSerialization、ExtPxSerialization - 用于底层、Tk 和 Px 层的序列化扩展。使用 Cap'n Proto 提供跨不同平台的稳健序列化。
- ExtShaders - 示例损伤着色器,可传递给底层和 Tk 演员损伤函数。
- ExtStress - 用于对底层 Blast 演员执行应力计算的工具包,使用最小 API 分配质量和施加力。不使用任何外部物理库。
文档
API 文档请参见 docs/api_docs/index.html。
完整源代码 doxygen 页面请参见 docs/source_docs/index.html。
更改说明请参见 docs/release_notes.txt。
编译
Windows (VS2017):
- 运行
generate_projects_vc15win64.bat
。 这一步将下载所有尚未下载到硬盘根目录NVIDIA/packman-repo
文件夹中的必要依赖项,因此首次运行这些脚本时(或依赖项版本更改时)可能需要一些时间。 - 打开
compiler/vc15winBB-cmake/BlastAll.sln
。这包含所有 Blast Windows 项目,包括底层、工具包、扩展、工具、测试和示例。 - 如果要运行示例,应首先运行
download_sample_resources.bat
。这将加载具有非平凡图形网格的复杂资产文件。没有这些资产,示例中只有程序生成的盒子资产可用。
Linux:
- 运行
generate_projects_linux.sh
。这一步将下载所有尚未下载到硬盘根目录NVIDIA/packman-repo
文件夹中的必要依赖项,因此首次运行脚本时(或依赖项版本更改时)可能需要一些时间。 - Makefile 将生成在
compiler/linux64-CONFIG-gcc
中,其中 CONFIG = debug 或 release。 这些将构建所有 Blast Linux 项目,包括底层、工具包、扩展和测试。
PS4 和 XBoxOne:
- 请访问 https://developer.nvidia.com 以联系 NVIDIA 获取更多信息。
工具和示例二进制文件(仅限 Windows)
Blast 工具和示例可执行文件,以及所有必要的支持库,都打包在 blast_tools_and_samples-windows.zip 文件中。这允许没有开发环境的人也能使用这些应用程序。
虚幻引擎 4 插件
UE4.19.2:https://github.com/NvPhysX/UnrealEngine/tree/Blast-4.19
UE4.20.3:https://github.com/NvPhysX/UnrealEngine/tree/Blast-4.20
需要 UE4 github 访问权限才能访问此仓库,更多信息:https://developer.nvidia.com/nvidia-gameworks-and-ue4
包括 UnrealEd 中的创作和示例地图。