test_geom_vertex_reader.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from panda3d.core import GeomVertexArrayFormat, GeomVertexFormat, GeomVertexData, Geom, GeomNode
  2. from panda3d.core import GeomVertexReader, GeomVertexWriter
  3. import pytest
  4. @pytest.fixture(scope='module')
  5. def geom_node():
  6. array = GeomVertexArrayFormat()
  7. array.add_column("vertex", 3, Geom.NT_float32, Geom.C_point)
  8. array.add_column("normal", 3, Geom.NT_float32, Geom.C_normal)
  9. array.add_column("color", 3, Geom.NT_float32, Geom.C_color)
  10. array.add_column("texcoord", 3, Geom.NT_float32, Geom.C_texcoord)
  11. format = GeomVertexFormat()
  12. format.add_array(array)
  13. format = GeomVertexFormat.register_format(format)
  14. vdata = GeomVertexData("test", format, Geom.UH_static)
  15. vdata.set_num_rows(4)
  16. vertex = GeomVertexWriter(vdata, 'vertex')
  17. normal = GeomVertexWriter(vdata, 'normal')
  18. color = GeomVertexWriter(vdata, 'color')
  19. texcoord = GeomVertexWriter(vdata, 'texcoord')
  20. vertex.add_data3f(1, 0, 0)
  21. normal.add_data3f(0, 0, 1)
  22. color.add_data4f(0, 0, 1, 1)
  23. texcoord.add_data2f(1, 0)
  24. vertex.add_data3f(1, 1, 0)
  25. normal.add_data3f(0, 1, 1)
  26. color.add_data4f(1, 0, 1, 1)
  27. texcoord.add_data2f(1, 1)
  28. geom = Geom(vdata)
  29. node = GeomNode('gnode')
  30. node.add_geom(geom)
  31. return node
  32. def test_geom_vertex_reader(geom_node):
  33. new_geom = geom_node.get_geom(0)
  34. new_vdata = new_geom.get_vertex_data()
  35. new_vertex = GeomVertexReader(new_vdata, 'vertex')
  36. new_normal = GeomVertexReader(new_vdata, 'normal')
  37. new_color = GeomVertexReader(new_vdata, 'color')
  38. new_texcoord = GeomVertexReader(new_vdata, 'texcoord')
  39. assert new_vertex.get_data3f() == (1, 0, 0)
  40. assert new_vertex.get_data3f() == (1, 1, 0)
  41. assert new_normal.get_data3f() == (0, 0, 1)
  42. assert new_normal.get_data3f() == (0, 1, 1)
  43. assert new_color.get_data4f() == (0, 0, 1, 1)
  44. assert new_color.get_data4f() == (1, 0, 1, 1)
  45. assert new_texcoord.get_data2f() == (1, 0)
  46. assert new_texcoord.get_data2f() == (1, 1)