DirectGeometry.tests.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /* global QUnit */
  2. import { DirectGeometry } from '../../../../src/core/DirectGeometry';
  3. import { Vector2 } from '../../../../src/math/Vector2';
  4. import { Vector3 } from '../../../../src/math/Vector3';
  5. import { Vector4 } from '../../../../src/math/Vector4';
  6. import { Color } from '../../../../src/math/Color';
  7. import { Face3 } from '../../../../src/core/Face3';
  8. import { Geometry } from '../../../../src/core/Geometry';
  9. export default QUnit.module( 'Core', () => {
  10. QUnit.module( 'DirectGeometry', () => {
  11. // INSTANCING
  12. QUnit.todo( "Instancing", ( assert ) => {
  13. assert.ok( false, "everything's gonna be alright" );
  14. } );
  15. // PUBLIC STUFF
  16. QUnit.test( "computeGroups", ( assert ) => {
  17. var a = new DirectGeometry();
  18. var b = new Geometry();
  19. var expected = [
  20. { start: 0, materialIndex: 0, count: 3 },
  21. { start: 3, materialIndex: 1, count: 3 },
  22. { start: 6, materialIndex: 2, count: 6 }
  23. ];
  24. // we only care for materialIndex
  25. b.faces.push(
  26. new Face3( 0, 0, 0, undefined, undefined, 0 ),
  27. new Face3( 0, 0, 0, undefined, undefined, 1 ),
  28. new Face3( 0, 0, 0, undefined, undefined, 2 ),
  29. new Face3( 0, 0, 0, undefined, undefined, 2 )
  30. );
  31. a.computeGroups( b );
  32. assert.deepEqual( a.groups, expected, "Groups are as expected" );
  33. } );
  34. QUnit.test( "fromGeometry", ( assert ) => {
  35. // geometry definition
  36. var geometry = new Geometry();
  37. // vertices
  38. var v1 = new Vector3( 1, - 1, 0 );
  39. var v2 = new Vector3( 1, 1, 0 );
  40. var v3 = new Vector3( - 1, 1, 0 );
  41. var v4 = new Vector3( - 1, - 1, 0 );
  42. // faces, normals and colors
  43. geometry.vertices.push( v1, v2, v3, v4 );
  44. var f1 = new Face3( 0, 1, 2 );
  45. f1.normal.set( 0, 0, 1 );
  46. f1.color.set( 0xff0000 );
  47. var f2 = new Face3( 2, 3, 0 );
  48. f2.normal.set( 0, 0, 1 );
  49. f2.color.set( 0xff0000 );
  50. geometry.faces.push( f1, f2 );
  51. // uvs
  52. var uvs = geometry.faceVertexUvs[ 0 ];
  53. uvs.length = 0;
  54. uvs.push( [
  55. new Vector2( 1, 0 ),
  56. new Vector2( 1, 1 ),
  57. new Vector2( 0, 1 )
  58. ] );
  59. uvs.push( [
  60. new Vector2( 0, 1 ),
  61. new Vector2( 0, 0 ),
  62. new Vector2( 1, 0 )
  63. ] );
  64. // skin weights
  65. var sw1 = new Vector4( 0.8, 0.2, 0, 0 );
  66. var sw2 = new Vector4( 0.7, 0.2, 0.1, 0 );
  67. var sw3 = new Vector4( 0.8, 0.1, 0.1, 0 );
  68. var sw4 = new Vector4( 1, 0, 0, 0 );
  69. geometry.skinWeights.push( sw1, sw2, sw3, sw4 );
  70. // skin indices
  71. var si1 = new Vector4( 0, 1, 2, 3 );
  72. var si2 = new Vector4( 2, 3, 4, 5 );
  73. var si3 = new Vector4( 4, 5, 6, 7 );
  74. var si4 = new Vector4( 6, 7, 8, 9 );
  75. geometry.skinIndices.push( si1, si2, si3, si4 );
  76. // create DirectGeometry
  77. var directGeometry = new DirectGeometry().fromGeometry( geometry );
  78. // expected values
  79. var vertices = [
  80. // first face
  81. new Vector3( 1, - 1, 0 ),
  82. new Vector3( 1, 1, 0 ),
  83. new Vector3( - 1, 1, 0 ),
  84. // second face
  85. new Vector3( - 1, 1, 0 ),
  86. new Vector3( - 1, - 1, 0 ),
  87. new Vector3( 1, - 1, 0 )
  88. ];
  89. var normals = [
  90. // first face
  91. new Vector3( 0, 0, 1 ),
  92. new Vector3( 0, 0, 1 ),
  93. new Vector3( 0, 0, 1 ),
  94. // second face
  95. new Vector3( 0, 0, 1 ),
  96. new Vector3( 0, 0, 1 ),
  97. new Vector3( 0, 0, 1 )
  98. ];
  99. var colors = [
  100. // first face
  101. new Color( 1, 0, 0 ),
  102. new Color( 1, 0, 0 ),
  103. new Color( 1, 0, 0 ),
  104. // second face
  105. new Color( 1, 0, 0 ),
  106. new Color( 1, 0, 0 ),
  107. new Color( 1, 0, 0 )
  108. ];
  109. var uvs = [
  110. // first face
  111. new Vector2( 1, 0 ),
  112. new Vector2( 1, 1 ),
  113. new Vector2( 0, 1 ),
  114. // second face
  115. new Vector2( 0, 1 ),
  116. new Vector2( 0, 0 ),
  117. new Vector2( 1, 0 )
  118. ];
  119. var skinIndices = [
  120. // first face
  121. new Vector4( 0, 1, 2, 3 ),
  122. new Vector4( 2, 3, 4, 5 ),
  123. new Vector4( 4, 5, 6, 7 ),
  124. // second face
  125. new Vector4( 4, 5, 6, 7 ),
  126. new Vector4( 6, 7, 8, 9 ),
  127. new Vector4( 0, 1, 2, 3 )
  128. ];
  129. var skinWeights = [
  130. // first face
  131. new Vector4( 0.8, 0.2, 0, 0 ),
  132. new Vector4( 0.7, 0.2, 0.1, 0 ),
  133. new Vector4( 0.8, 0.1, 0.1, 0 ),
  134. // second face
  135. new Vector4( 0.8, 0.1, 0.1, 0 ),
  136. new Vector4( 1, 0, 0, 0 ),
  137. new Vector4( 0.8, 0.2, 0, 0 )
  138. ];
  139. assert.deepEqual( directGeometry.vertices, vertices, "Vertices are as expected" );
  140. assert.deepEqual( directGeometry.normals, normals, "Normals are as expected" );
  141. assert.deepEqual( directGeometry.colors, colors, "Colors are as expected" );
  142. assert.deepEqual( directGeometry.uvs, uvs, "Texture coordinates are as expected" );
  143. assert.deepEqual( directGeometry.skinIndices, skinIndices, "Skin indices are as expected" );
  144. assert.deepEqual( directGeometry.skinWeights, skinWeights, "Skin weights are as expected" );
  145. } );
  146. } );
  147. } );
粤ICP备19079148号