test_lenses.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. from panda3d.core import PerspectiveLens, Point3, Point2, CS_zup_right
  2. def test_perspectivelens_extrude():
  3. lens = PerspectiveLens()
  4. lens.set_fov(90, 90)
  5. lens.set_near_far(0.5, 100)
  6. near = Point3()
  7. far = Point3()
  8. assert lens.extrude((0, 0), near, far)
  9. assert near.almost_equal((0, 0.5, 0), 0.001)
  10. assert far.almost_equal((0, 100, 0), 0.1)
  11. assert lens.extrude((-1, -1), near, far)
  12. assert near.almost_equal((-0.5, 0.5, -0.5), 0.001)
  13. assert far.almost_equal((-100, 100, -100), 0.1)
  14. assert lens.extrude((1, 0), near, far)
  15. assert near.almost_equal((0.5, 0.5, 0), 0.001)
  16. assert far.almost_equal((100, 100, 0), 0.1)
  17. def test_perspectivelens_extrude_depth():
  18. lens = PerspectiveLens()
  19. lens.set_fov(90, 90)
  20. lens.set_near_far(0.5, 100)
  21. point = Point3()
  22. assert lens.extrude_depth((0, 0, -1), point)
  23. assert point.almost_equal((0, 0.5, 0), 0.001)
  24. assert lens.extrude_depth((0, 0, 1), point)
  25. assert point.almost_equal((0, 100, 0), 0.001)
  26. assert lens.extrude_depth((-1, -1, -1), point)
  27. assert point.almost_equal((-0.5, 0.5, -0.5), 0.001)
  28. assert lens.extrude_depth((-1, -1, 1), point)
  29. assert point.almost_equal((-100, 100, -100), 0.1)
  30. assert lens.extrude_depth((1, 0, -1), point)
  31. assert point.almost_equal((0.5, 0.5, 0), 0.001)
  32. assert lens.extrude_depth((1, 0, 1), point)
  33. assert point.almost_equal((100, 100, 0), 0.1)
  34. def test_perspectivelens_project():
  35. lens = PerspectiveLens()
  36. lens.set_fov(90, 90)
  37. lens.set_near_far(0.5, 100)
  38. point = Point2()
  39. assert not lens.project((0, 0, 0), point)
  40. assert not lens.project((-1, 0.5, 0), point)
  41. assert lens.project((0, 0.5, 0), point)
  42. assert point.almost_equal((0, 0), 0.001)
  43. assert lens.project((0, 100, 0), point)
  44. assert point.almost_equal((0, 0), 0.001)
  45. assert lens.project((-0.5, 0.5, -0.5), point)
  46. assert point.almost_equal((-1, -1), 0.001)
  47. assert lens.project((-100, 100, -100), point)
  48. assert point.almost_equal((-1, -1), 0.001)
  49. assert lens.project((0.5, 0.5, 0), point)
  50. assert point.almost_equal((1, 0), 0.001)
  51. assert lens.project((100, 100, 0), point)
  52. assert point.almost_equal((1, 0), 0.001)
  53. def test_perspectivelens_far_inf():
  54. lens = PerspectiveLens()
  55. lens.set_fov(90, 90)
  56. lens.set_near_far(2, float("inf"))
  57. lens.coordinate_system = CS_zup_right
  58. mat = lens.get_projection_mat()
  59. assert mat[1][2] == 1
  60. assert mat[3][2] == -4
  61. def test_perspectivelens_near_inf():
  62. lens = PerspectiveLens()
  63. lens.set_fov(90, 90)
  64. lens.set_near_far(float("inf"), 2)
  65. lens.coordinate_system = CS_zup_right
  66. mat = lens.get_projection_mat()
  67. assert mat[1][2] == -1
  68. assert mat[3][2] == 4