test_mesh_gen.py 2.3 KB

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