使用Bullet物理引擎,实例化MeshCollider非常耗时

  • Creator 版本: 3.5.2

  • 目标平台:网页

  • 重现方式:实例化一个使用MesshCollider的各种物件模型,耗时50~500毫秒,使用PhysX则很快,但是使用PhysX又有其他问题。麻烦官方给予解决方案,目前项目已经做了大半,被这个问题卡住。

  • 重现概率: 必现

  • 附件中含测试DEMOtest.zip (2.2 MB)

  • 问题描述:
    目前项目使用bullet物理引擎开发,发现创建带MeshCollider的模型非常慢,然后和PhysX物理对比如下:

使用bullet物理引擎:
Cocos Creator v3.5.2
physics-selector.ts:124 [PHYSICS]: register bullet.
physics-selector.ts:185 [PHYSICS]: using bullet.
player.ts:15 第一次创建 Time: 407.72802734375 ms
player.ts:20 第二次创建 Time: 274.330078125 ms
player.ts:25第三次创建 Time: 225.02587890625 ms

使用PhysX物理引擎:
Cocos Creator v3.5.2
[PHYSICS]: register physx.
physx-adapter.ts:65 [PHYSICS]: Use PhysX js or wasm Libs.
physx-adapter.ts:75 [PHYSICS]: Internal PhysX libs loaded.
physics-selector.ts:185 [PHYSICS]: using physx.
player.ts:15 第一次创建 Time: 772.7509765625 ms
player.ts:20 第二次创建 Time: 1.360107421875 ms
player.ts:25第三次创建 Time: 1.955078125 ms

如何让使用bullet创建模型的消耗也能达到像使用PhysX 一样的效率,只是第一次创建的时候耗时,后面则很快。本来想使用PhysX避开问题,但是使用PhysX发现,控制物体移动、跳跃的线性力都不一样,不知道为啥,还有就是使用PhysX,角色移动会和建筑物穿模,不知道为啥,希望得到社区帮助,目前项目处于搁置状态

我也是遇到这种情况了,给meshcolider设mesh的时候特别耗时

有解决方案吗,或者官方有说要处理

我这边暂时是延迟帧处理,尽量不在同一帧实例多个meshcollider

目前项目使用bullet物理引擎开发,发现创建带MeshCollider的模型非常慢,然后和PhysX物理对比如下:

使用bullet物理引擎:
Cocos Creator v3.5.2
physics-selector.ts:124 [PHYSICS]: register bullet.
physics-selector.ts:185 [PHYSICS]: using bullet.
player.ts:15 第一次创建 Time: 407.72802734375 ms
player.ts:20 第二次创建 Time: 274.330078125 ms

使用PhysX物理引擎:
Cocos Creator v3.5.2
[PHYSICS]: register physx.
physx-adapter.ts:65 [PHYSICS]: Use PhysX js or wasm Libs.
physx-adapter.ts:75 [PHYSICS]: Internal PhysX libs loaded.
physics-selector.ts:185 [PHYSICS]: using physx.
player.ts:15 第一次创建 Time: 772.7509765625 ms
player.ts:20 第二次创建 Time: 1.360107421875 ms[test.zip|attachment]

如何让使用bullet创建模型的消耗也能达到像使用PhysX 一样的效率,只是第一次创建的时候耗时,后面则很快。本来想使用PhysX避开问题,但是使用PhysX发现,控制物体移动、跳跃的线性力都不一样,不知道为啥,还有就是使用PhysX,角色移动会和建筑物穿模,不知道为啥,希望得到社区帮助,目前项目处于搁置状态

能不能给一个 PhysX 的错误表现 Demo?

目前的性能瓶颈是每次创建模型时都会new btBvhTriangleMeshShape,默认会重新构建该Mesh的bvh,重新构建该Mesh的bvh非常耗时。

那是肯定的,BVH建树本来就慢

Creator3.7的版本会有一个大的性能优化。

不错,加了个全局缓存