Qt Quick 3D 物理“烹饪”
当将网格用作碰撞形状时,需要对其进行处理并转换为适合高效碰撞检测的数据格式。这一过程被称为“预处理”。有三种形状类型在使用前需要进行预处理,分别是ConvexMeshShape 、TriangleMeshShape 和HeightFieldShape 。使用上述任何一种形状时,预处理会在模拟的第一帧自动进行。 由于该预处理过程可能带来明显的性能开销,因此为了加快加载速度,可以预先处理网格并直接加载。实现方法有两种:使用缓存目录或使用预处理器工具。
缓存目录
要使用缓存目录,请将环境变量 `QT_PHYSICS_CACHE_PATH ` 设置为任意目录。应用程序首次运行时,所有使用的网格都会被预处理并存储在此目录中。后续运行时,系统将直接从磁盘读取预处理好的网格,而不再进行预处理。
警告: 缓存目录 中的文件在加载前不会经过验证。加载格式错误或不可信的缓存文件可能会引发安全问题。应用程序开发人员在将QT_PHYSICS_CACHE_PATH 指向其他用户或进程可写入的目录之前,应仔细考虑这些风险。
Cooker 工具
另一种方法是使用cooker 工具。编译该工具后,只需将其作为输入参数,并传入网格或高度场图像即可:
cooker input.mesh或
cooker input.png如果输入是网格,它将生成两个文件:
input.cooked.triinput.cooked.cvx
一个文件是经过“烹饪”处理的三角面片网格,另一个是经过“烹饪”处理的凸面网格。随后只需将它们作为TriangleMeshShape::source 和ConvexMeshShape::source 的源文件使用,网格即可被加载,无需进行任何“烹饪”处理。同样地,如果输入是图像文件,则会生成一个名为input.cooked.hf 的高度场,随后可通过在HeightFieldShape::source 属性中引用该文件来加载它。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.