Physx 三角网烹饪仅在一侧发生碰撞
Posted
技术标签:
【中文标题】Physx 三角网烹饪仅在一侧发生碰撞【英文标题】:Physx triangle mesh cooking colliding only in one side 【发布时间】:2022-01-17 03:04:06 【问题描述】:我正在为 uni 进行一个项目,该项目是关于使用我们自己的引擎并使用 Physx 制作一个简单的 3d 游戏。 现在我成功地从高度图创建了一个 3D 地形并对其进行了烹饪,这样我就可以在上面放置一个对撞机。
您可以在下图中看到它的外观,但我有一个问题。在地形的这一侧时,我实际上可以通过
但是当我在这边时(所以在下面):
我不能,因为碰撞很好。现在我想把它倒过来,我想在地形的顶部而不是从下面发生碰撞。
这是我的代码:
meshDesc.points.count = static_cast<PxU32>(vertexes.size());
meshDesc.points.data = vertices;
meshDesc.points.stride = sizeof(PxVec3);
meshDesc.triangles.count = static_cast<PxU32>(faces.size())/3;
meshDesc.triangles.data = indices;
meshDesc.triangles.stride = 3 * sizeof(PxU32);
PxTolerancesScale scale1;
PxCookingParams params(scale1);
// disable mesh cleaning - perform mesh validation on development configurations
params.meshPreprocessParams |= PxMeshPreprocessingFlag::eDISABLE_CLEAN_MESH;
// disable edge precompute, edges are set for each triangle, slows contact generation
params.meshPreprocessParams |= PxMeshPreprocessingFlag::eDISABLE_ACTIVE_EDGES_PRECOMPUTE;
// lower hierarchy for internal mesh
params.midphaseDesc.mBVH33Desc.meshCookingHint = PxMeshCookingHint::eCOOKING_PERFORMANCE;
PhysXManager::get().getPxCooking()->setParams(params);
PxTriangleMesh* triMesh = NULL;
triMesh = PhysXManager::get().getPxCooking()->createTriangleMesh(meshDesc,
PhysXManager::get().getgPhysx()->getPhysicsInsertionCallback());
PxMeshScale geomScale = PxMeshScale((PxVec3(scale)));
PxTriangleMeshGeometry geom = physx::PxTriangleMeshGeometry(triMesh, geomScale);
body = PhysXManager::get().createTerrain(PxTransform(pos), geom,scene);
在 createTerrain() 中:
PxRigidStatic* PhysXManager::createTerrain(const PxTransform& t, PxTriangleMeshGeometry& geom, int scene)
PxShape* shape = PhysXManager::get().getgPhysx()->createShape(geom, *gMaterial, true);
shape->setName("Terrain");
PxRigidStatic* body = gPhysics->createRigidStatic(t);
body->attachShape(*shape);
addToScene(body, scene);
return body;
你能帮我弄清楚该怎么做吗?
谢谢!
【问题讨论】:
【参考方案1】:在做了一些测试之后,我只是愚蠢!另一方面,Physx 被渲染为参考,在将其提供给烹饪之前反转列表解决了我的问题。关闭这个。
【讨论】:
以上是关于Physx 三角网烹饪仅在一侧发生碰撞的主要内容,如果未能解决你的问题,请参考以下文章