PhysX PxScene 深度解析:物理场景的调度模型与多场景架构
引言:多物理世界隔离的刚需关卡 A 的爆炸拖垮性能、小游戏房间需要物理隔离、服务器与客户端需要不同步率——这些诉求的共同答案是"多个相互隔离的物理世界"。PxScene 正是 PhysX 的场景对象:它不是工厂(PxPhysics),也不是实体(PxActor),而是容纳全部 Actor、调度仿真步进、驱动多线程、管理事件与查询的运行时中枢。一、场景的创建与 Actor 归属PxScene 是进程内的 C++ 对象,创建流程固定:配置 PxSceneDesc(重力、CPU 调度器、过滤着色器、行为标志)→ PxPhysics::createScene → addActor 加入实体。未加入场景的 actor 不参与仿真、不产生碰撞。PxScene* CreateGameScene(PxPhysics* physics, PxDefaultCpuDispatcher* dispatcher) { PxSceneDesc desc(physics-getTolerancesScale()); desc.gravity = PxVec3(0.0f, -9.81f, 0.0f); desc.cpuDispatcher = dispatcher; // 必须显式指定 desc.filterShader = PxDefaultSimulationFilterShader; // 必须显式指定 desc.flags |= PxSceneFlag::eENABLE_PCM; desc.flags |= PxSceneFlag::eENABLE_STABIL