cameras.tests.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. import { ObjectLoader } from '../../../src/loaders/ObjectLoader.js';
  2. export default QUnit.module( 'JSON4 Format', () => {
  3. QUnit.module( 'Cameras', () => {
  4. QUnit.test( 'PerspectiveCamera - fov, aspect, near, far', ( assert ) => {
  5. const json = {
  6. metadata: { version: 4.7, type: 'Object', generator: 'Object3D.toJSON' },
  7. object: {
  8. uuid: 'cam-1',
  9. type: 'PerspectiveCamera',
  10. fov: 75,
  11. aspect: 1.5,
  12. near: 0.1,
  13. far: 1000,
  14. matrix: [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 5, 1 ],
  15. layers: 1
  16. }
  17. };
  18. const loader = new ObjectLoader();
  19. const camera = loader.parse( json );
  20. assert.ok( camera.isPerspectiveCamera, 'Is PerspectiveCamera' );
  21. assert.strictEqual( camera.fov, 75, 'FOV is 75' );
  22. assert.strictEqual( camera.aspect, 1.5, 'Aspect is 1.5' );
  23. assert.strictEqual( camera.near, 0.1, 'Near is 0.1' );
  24. assert.strictEqual( camera.far, 1000, 'Far is 1000' );
  25. } );
  26. QUnit.test( 'PerspectiveCamera - zoom', ( assert ) => {
  27. const json = {
  28. metadata: { version: 4.7, type: 'Object', generator: 'Object3D.toJSON' },
  29. object: {
  30. uuid: 'cam-1',
  31. type: 'PerspectiveCamera',
  32. fov: 50,
  33. aspect: 1,
  34. near: 0.1,
  35. far: 100,
  36. zoom: 2,
  37. matrix: [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],
  38. layers: 1
  39. }
  40. };
  41. const loader = new ObjectLoader();
  42. const camera = loader.parse( json );
  43. assert.strictEqual( camera.zoom, 2, 'Zoom is 2' );
  44. } );
  45. QUnit.test( 'PerspectiveCamera - focus, filmGauge, filmOffset', ( assert ) => {
  46. const json = {
  47. metadata: { version: 4.7, type: 'Object', generator: 'Object3D.toJSON' },
  48. object: {
  49. uuid: 'cam-1',
  50. type: 'PerspectiveCamera',
  51. fov: 50,
  52. aspect: 1,
  53. near: 0.1,
  54. far: 100,
  55. focus: 15,
  56. filmGauge: 35,
  57. filmOffset: 5,
  58. matrix: [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],
  59. layers: 1
  60. }
  61. };
  62. const loader = new ObjectLoader();
  63. const camera = loader.parse( json );
  64. assert.strictEqual( camera.focus, 15, 'Focus is 15' );
  65. assert.strictEqual( camera.filmGauge, 35, 'FilmGauge is 35' );
  66. assert.strictEqual( camera.filmOffset, 5, 'FilmOffset is 5' );
  67. } );
  68. QUnit.test( 'OrthographicCamera - left, right, top, bottom, near, far', ( assert ) => {
  69. const json = {
  70. metadata: { version: 4.7, type: 'Object', generator: 'Object3D.toJSON' },
  71. object: {
  72. uuid: 'cam-1',
  73. type: 'OrthographicCamera',
  74. left: - 10,
  75. right: 10,
  76. top: 10,
  77. bottom: - 10,
  78. near: 0.1,
  79. far: 100,
  80. matrix: [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 1 ],
  81. layers: 1
  82. }
  83. };
  84. const loader = new ObjectLoader();
  85. const camera = loader.parse( json );
  86. assert.ok( camera.isOrthographicCamera, 'Is OrthographicCamera' );
  87. assert.strictEqual( camera.left, - 10, 'Left is -10' );
  88. assert.strictEqual( camera.right, 10, 'Right is 10' );
  89. assert.strictEqual( camera.top, 10, 'Top is 10' );
  90. assert.strictEqual( camera.bottom, - 10, 'Bottom is -10' );
  91. assert.strictEqual( camera.near, 0.1, 'Near is 0.1' );
  92. assert.strictEqual( camera.far, 100, 'Far is 100' );
  93. } );
  94. QUnit.test( 'OrthographicCamera - zoom', ( assert ) => {
  95. const json = {
  96. metadata: { version: 4.7, type: 'Object', generator: 'Object3D.toJSON' },
  97. object: {
  98. uuid: 'cam-1',
  99. type: 'OrthographicCamera',
  100. left: - 5,
  101. right: 5,
  102. top: 5,
  103. bottom: - 5,
  104. near: 1,
  105. far: 50,
  106. zoom: 0.5,
  107. matrix: [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],
  108. layers: 1
  109. }
  110. };
  111. const loader = new ObjectLoader();
  112. const camera = loader.parse( json );
  113. assert.strictEqual( camera.zoom, 0.5, 'Zoom is 0.5' );
  114. } );
  115. QUnit.test( 'Camera in scene hierarchy', ( assert ) => {
  116. const json = {
  117. metadata: { version: 4.7, type: 'Object', generator: 'Object3D.toJSON' },
  118. object: {
  119. uuid: 'scene-1',
  120. type: 'Scene',
  121. children: [
  122. {
  123. uuid: 'cam-1',
  124. type: 'PerspectiveCamera',
  125. name: 'MainCamera',
  126. fov: 60,
  127. aspect: 16 / 9,
  128. near: 0.5,
  129. far: 500,
  130. matrix: [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2, 10, 1 ],
  131. layers: 1
  132. }
  133. ]
  134. }
  135. };
  136. const loader = new ObjectLoader();
  137. const scene = loader.parse( json );
  138. const camera = scene.children[ 0 ];
  139. assert.ok( scene.isScene, 'Root is Scene' );
  140. assert.ok( camera.isPerspectiveCamera, 'Child is PerspectiveCamera' );
  141. assert.strictEqual( camera.name, 'MainCamera', 'Camera name' );
  142. assert.strictEqual( camera.position.z, 10, 'Camera position.z' );
  143. } );
  144. } );
  145. } );
粤ICP备19079148号