c++ 在PhysX中创建三角形网格问题

sqserrrh  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(170)

我构建了一个快速的Python脚本,它读取wavefront .obj文件并将顶点和面输出到文件中。我有另一个C++函数来读取这些文件并创建一个基于-的网格。
我遇到的问题是,这是完美的工作,有时和其他时间没有那么多-与相同的网格。例如,我启动我的PhysX程序,并创建10个相同网格的相同对象,其中一些看起来像这样:

其他的看起来像这样:

下面的C++是加载顶点和三角形的代码:

  1. bool ModelLoader::LoadVertexFile(const std::string& fileLocation)
  2. {
  3. std::ifstream file(fileLocation);
  4. if (!file) {
  5. std::cerr << "Failed to load vertex data\n";
  6. return false;
  7. }
  8. float x, y, z;
  9. vertexArray.clear();
  10. while (file >> x >> y >> z)
  11. {
  12. vertexArray.push_back(PhysicsEngine::PxVec3(x, y, z));
  13. }
  14. return true;
  15. }
  16. bool ModelLoader::LoadTrianglesFile(const std::string& fileLocation)
  17. {
  18. std::ifstream file(fileLocation);
  19. if (!file) {
  20. std::cerr << "Failed to load vertex data\n";
  21. return false;
  22. }
  23. int x;
  24. triangleArray.clear();
  25. while (file >> x)
  26. {
  27. triangleArray.push_back(x);
  28. }
  29. return true;
  30. }

这是创建和构造网格的代码

  1. CustomObject(const PxTransform& pose = PxTransform(PxIdentity), string vertfile = "", string trigfile = "") :
  2. StaticActor(pose)
  3. {
  4. modelLoader = new ModelLoader();
  5. if(!modelLoader->LoadVertexFile(vertfile))
  6. throw new Exception("Failed to load VertexFile.");
  7. if(!modelLoader->LoadTrianglesFile(trigfile))
  8. throw new Exception("Failed to load TrianglesFile.");
  9. PxTriangleMeshDesc mesh_desc;
  10. mesh_desc.points.count = (PxU32)modelLoader->vertexArray.size();
  11. mesh_desc.points.stride = sizeof(PxVec3);
  12. mesh_desc.points.data = &modelLoader->vertexArray.front();
  13. mesh_desc.triangles.count = (PxU32)modelLoader->triangleArray.size();
  14. mesh_desc.triangles.stride = 3 * sizeof(PxU32);
  15. mesh_desc.triangles.data = &modelLoader->triangleArray.front();
  16. CreateShape(PxTriangleMeshGeometry(CookMesh(mesh_desc)));
  17. }

因此,如果有人能帮助我找出出了什么问题,这将是非常感谢

d4so4syb

d4so4syb1#

我想我有一个类似的问题,并通过为顶点和三角形提供contiguous 2D arrays来修复(在PhysX 5.1和文档中查看了这个兔子网格示例)

相关问题