test_mesh_gen.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from panda3d import navmeshgen
  2. from panda3d import core
  3. def test_input_geom():
  4. data = core.GeomVertexData("", core.GeomVertexFormat.get_v3(), core.Geom.UH_static)
  5. vertex = core.GeomVertexWriter(data, "vertex")
  6. vertex.add_data3((0, 0, 0))
  7. vertex.add_data3((100, 1000, 0))
  8. vertex.add_data3((0, 100, 2))
  9. vertex.add_data3((500, 200, 2))
  10. vertex.add_data3((170, 20, 2))
  11. vertex.add_data3((100, 100, 100))
  12. prim = core.GeomTriangles(core.Geom.UH_static)
  13. prim.add_vertices(0, 1, 4)
  14. prim.close_primitive()
  15. geom = core.Geom(data)
  16. geom.add_primitive(prim)
  17. prim.add_vertices(2,3,5)
  18. prim.close_primitive()
  19. geom.add_primitive(prim)
  20. node = core.GeomNode('gnode')
  21. node.addGeom(geom)
  22. scene = core.NodePath(node)
  23. builder = navmeshgen.NavMeshBuilder()
  24. # Extracting geoms from 'scene' and calculating vertices and triangles.
  25. builder.from_node_path(scene)
  26. # Finding number of vertices.
  27. vcount = builder.get_vert_count()
  28. # Finding number of triangles.
  29. tcount = builder.get_tri_count()
  30. assert vcount == 6
  31. assert tcount == 4
  32. def test_poly_mesh():
  33. data = core.GeomVertexData("", core.GeomVertexFormat.get_v3(), core.Geom.UH_static)
  34. vertex = core.GeomVertexWriter(data, "vertex")
  35. vertex.add_data3((0, 0, 0))
  36. vertex.add_data3((100, 1000, 0))
  37. vertex.add_data3((0, 100, 2))
  38. vertex.add_data3((500, 200, 2))
  39. vertex.add_data3((170, 20, 2))
  40. vertex.add_data3((100, 100, 100))
  41. prim = core.GeomTriangles(core.Geom.UH_static)
  42. prim.add_vertices(0, 1, 2)
  43. prim.close_primitive()
  44. geom = core.Geom(data)
  45. geom.add_primitive(prim)
  46. prim.add_vertices(2,3,5)
  47. prim.close_primitive()
  48. geom.add_primitive(prim)
  49. node = core.GeomNode('gnode')
  50. node.add_geom(geom)
  51. scene = core.NodePath(node)
  52. builder = navmeshgen.NavMeshBuilder()
  53. # Extracting geoms from 'scene' and calculating vertices and triangles.
  54. builder.from_node_path(scene)
  55. # Building the navmesh
  56. builder.build()
  57. nverts = builder.get_pmesh_vert_count()
  58. npolys = builder.get_pmesh_poly_count()
  59. maxpolys = builder.get_pmesh_max_poly_count()
  60. assert nverts == 230
  61. assert npolys == 112
  62. assert maxpolys == 226