csyjk 1.2.2 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (322) hide show
  1. package/{dist/app.js → app.js} +0 -0
  2. package/{dist/index.html → index.html} +0 -0
  3. package/package.json +5 -40
  4. package/{dist/style.css → style.css} +0 -0
  5. package/.babelrc +0 -7
  6. package/.idea/modules.xml +0 -8
  7. package/.idea/xx.iml +0 -12
  8. package/public/gltf.js +0 -2241
  9. package/public/index.html +0 -10
  10. package/src/index.js +0 -3
  11. package/src/lib/gltf/assets/check.jpg +0 -0
  12. package/src/lib/gltf/assets/iconfont/iconfont.css +0 -358
  13. package/src/lib/gltf/assets/iconfont/iconfont.eot +0 -0
  14. package/src/lib/gltf/assets/iconfont/iconfont.js +0 -1
  15. package/src/lib/gltf/assets/iconfont/iconfont.json +0 -604
  16. package/src/lib/gltf/assets/iconfont/iconfont.svg +0 -189
  17. package/src/lib/gltf/assets/iconfont/iconfont.ttf +0 -0
  18. package/src/lib/gltf/assets/iconfont/iconfont.woff +0 -0
  19. package/src/lib/gltf/assets/iconfont/iconfont.woff2 +0 -0
  20. package/src/lib/gltf/assets/yjkkit-sdk/index.js +0 -0
  21. package/src/lib/gltf/assets/yjkkit-sdk/package.json +0 -15
  22. package/src/lib/gltf/assets/yjkkit-sdk/src/extras/ContextMenu/ContextMenu.js +0 -863
  23. package/src/lib/gltf/assets/yjkkit-sdk/src/extras/ContextMenu/index.js +0 -1
  24. package/src/lib/gltf/assets/yjkkit-sdk/src/extras/index.js +0 -1
  25. package/src/lib/gltf/assets/yjkkit-sdk/src/index.js +0 -3
  26. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +0 -462
  27. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +0 -279
  28. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +0 -262
  29. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/index.js +0 -1
  30. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/Annotation.js +0 -362
  31. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +0 -575
  32. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/index.js +0 -1
  33. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +0 -333
  34. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AxisGizmoPlugin/index.js +0 -1
  35. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +0 -777
  36. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/BCFViewpointsPlugin/index.js +0 -1
  37. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +0 -525
  38. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +0 -242
  39. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +0 -297
  40. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/index.js +0 -1
  41. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/FastNavPlugin/FastNavPlugin.js +0 -345
  42. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/FastNavPlugin/index.js +0 -1
  43. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +0 -122
  44. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +0 -462
  45. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js +0 -508
  46. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js +0 -922
  47. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/index.js +0 -2
  48. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/CubeTextureCanvas.js +0 -273
  49. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/NavCubePlugin.js +0 -687
  50. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/index.js +0 -1
  51. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +0 -145
  52. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +0 -777
  53. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/index.js +0 -1
  54. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +0 -33
  55. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +0 -273
  56. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +0 -313
  57. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/index.js +0 -2
  58. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Control.js +0 -1328
  59. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Overview.js +0 -249
  60. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Plane.js +0 -169
  61. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +0 -403
  62. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/index.js +0 -1
  63. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +0 -134
  64. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SkyboxesPlugin/index.js +0 -1
  65. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js +0 -77
  66. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/Storey.js +0 -61
  67. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/StoreyMap.js +0 -57
  68. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +0 -822
  69. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/index.js +0 -1
  70. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/ModelTreeView.js +0 -888
  71. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/TreeViewNode.js +0 -88
  72. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/TreeViewPlugin.js +0 -624
  73. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/index.js +0 -1
  74. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/modelValidation.js +0 -87
  75. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/ViewCullPlugin/ViewCullPlugin.js +0 -295
  76. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/ViewCullPlugin/index.js +0 -1
  77. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +0 -78
  78. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +0 -847
  79. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/index.js +0 -2
  80. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +0 -167
  81. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +0 -228
  82. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +0 -220
  83. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +0 -279
  84. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +0 -244
  85. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +0 -301
  86. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +0 -426
  87. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +0 -479
  88. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +0 -6818
  89. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +0 -238
  90. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +0 -1279
  91. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/index.js +0 -1
  92. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +0 -11
  93. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +0 -2060
  94. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +0 -2155
  95. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +0 -1002
  96. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +0 -64
  97. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +0 -153
  98. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +0 -267
  99. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +0 -553
  100. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +0 -991
  101. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +0 -49
  102. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/index.js +0 -17
  103. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/culling/ObjectCullStates.js +0 -205
  104. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Dot.js +0 -78
  105. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Label.js +0 -97
  106. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Wire.js +0 -95
  107. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/Plugin.js +0 -112
  108. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/Viewer.js +0 -372
  109. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/index.js +0 -3
  110. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/IFCObjectDefaultColors.js +0 -162
  111. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/IFCObjectDefaults.js +0 -39
  112. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaModel.js +0 -145
  113. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaObject.js +0 -215
  114. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaScene.js +0 -311
  115. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/CameraControl.js +0 -1669
  116. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/cc.js +0 -0
  117. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/CameraUpdater.js +0 -312
  118. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PanController.js +0 -112
  119. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PickController.js +0 -193
  120. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +0 -289
  121. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/cu.js +0 -0
  122. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +0 -122
  123. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +0 -186
  124. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +0 -68
  125. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +0 -439
  126. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +0 -361
  127. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +0 -258
  128. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +0 -197
  129. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/mouspan.js +0 -498
  130. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/Component.js +0 -908
  131. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/Entity.js +0 -475
  132. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/ImagePlane/ImagePlane.js +0 -570
  133. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/ImagePlane/index.js +0 -1
  134. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/PerformanceModel.js +0 -2623
  135. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/index.js +0 -1
  136. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js +0 -21
  137. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js +0 -262
  138. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/PerformanceNode.js +0 -697
  139. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js +0 -34
  140. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/ScratchMemory.js +0 -63
  141. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/compression.js +0 -183
  142. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js +0 -33
  143. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js +0 -736
  144. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js +0 -68
  145. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js +0 -295
  146. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js +0 -327
  147. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js +0 -698
  148. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js +0 -68
  149. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js +0 -364
  150. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js +0 -356
  151. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js +0 -33
  152. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js +0 -776
  153. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js +0 -113
  154. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js +0 -340
  155. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js +0 -312
  156. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js +0 -343
  157. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js +0 -331
  158. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js +0 -242
  159. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js +0 -348
  160. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js +0 -737
  161. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js +0 -143
  162. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js +0 -373
  163. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js +0 -366
  164. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js +0 -370
  165. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js +0 -386
  166. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js +0 -376
  167. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js +0 -293
  168. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js +0 -382
  169. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js +0 -37
  170. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js +0 -1017
  171. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js +0 -246
  172. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js +0 -809
  173. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js +0 -504
  174. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js +0 -297
  175. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js +0 -300
  176. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js +0 -322
  177. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js +0 -311
  178. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js +0 -291
  179. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js +0 -319
  180. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js +0 -305
  181. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js +0 -300
  182. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js +0 -242
  183. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js +0 -323
  184. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js +0 -969
  185. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js +0 -246
  186. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js +0 -859
  187. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js +0 -557
  188. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js +0 -341
  189. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js +0 -338
  190. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js +0 -356
  191. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js +0 -354
  192. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js +0 -329
  193. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js +0 -358
  194. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js +0 -349
  195. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js +0 -363
  196. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js +0 -284
  197. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js +0 -354
  198. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Camera.js +0 -880
  199. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraFlightAnimation.js +0 -669
  200. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraPath.js +0 -194
  201. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraPathAnimation.js +0 -326
  202. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CustomProjection.js +0 -149
  203. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Frustum.js +0 -316
  204. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Ortho.js +0 -286
  205. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Perspective.js +0 -302
  206. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/index.js +0 -2
  207. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/canvas/Canvas.js +0 -464
  208. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/canvas/Spinner.js +0 -323
  209. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/core.js +0 -234
  210. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/Geometry.js +0 -33
  211. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/ReadableGeometry.js +0 -689
  212. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/VBOGeometry.js +0 -327
  213. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildBoxGeometry.js +0 -238
  214. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +0 -106
  215. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +0 -271
  216. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildGridGeometry.js +0 -102
  217. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +0 -168
  218. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildSphereGeometry.js +0 -161
  219. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildTorusGeometry.js +0 -172
  220. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +0 -1721
  221. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/index.js +0 -8
  222. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/index.js +0 -4
  223. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/index.js +0 -2
  224. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/load3DSGeometry.js +0 -103
  225. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +0 -130
  226. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/index.js +0 -18
  227. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/input/Input.js +0 -1475
  228. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/libs/canvas2image.js +0 -218
  229. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/libs/k3d.js +0 -1032
  230. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/AmbientLight.js +0 -175
  231. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/CubeTexture.js +0 -156
  232. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/DirLight.js +0 -314
  233. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/Light.js +0 -29
  234. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/LightMap.js +0 -77
  235. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/PointLight.js +0 -395
  236. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/ReflectionMap.js +0 -79
  237. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/Shadow.js +0 -138
  238. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/index.js +0 -5
  239. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/marker/Marker.js +0 -382
  240. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/marker/index.js +0 -1
  241. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/EdgeMaterial.js +0 -359
  242. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/EmphasisMaterial.js +0 -577
  243. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Fresnel.js +0 -222
  244. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/LambertMaterial.js +0 -378
  245. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/LinesMaterial.js +0 -169
  246. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Material.js +0 -39
  247. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/MetallicMaterial.js +0 -820
  248. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/PhongMaterial.js +0 -860
  249. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/PointsMaterial.js +0 -320
  250. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/SpecularMaterial.js +0 -807
  251. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Texture.js +0 -522
  252. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/index.js +0 -8
  253. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/Frustum.js +0 -118
  254. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/buildEdgeIndices.js +0 -162
  255. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/geometryCompressionUtils.js +0 -353
  256. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/index.js +0 -1
  257. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/math.js +0 -5302
  258. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/rtcCoords.js +0 -132
  259. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/CameraMemento.js +0 -200
  260. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/ModelMemento.js +0 -272
  261. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/ObjectsMemento.js +0 -259
  262. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/index.js +0 -3
  263. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/Mesh.js +0 -2165
  264. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -978
  265. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/draw/DrawShaderSource.js +0 -1566
  266. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -249
  267. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -163
  268. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -276
  269. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -269
  270. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/index.js +0 -1
  271. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -207
  272. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +0 -156
  273. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -210
  274. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +0 -146
  275. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -186
  276. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +0 -120
  277. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
  278. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +0 -96
  279. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/metriqs/Metriqs.js +0 -259
  280. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/nodes/Node.js +0 -1356
  281. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/nodes/index.js +0 -1
  282. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/CubicBezierCurve.js +0 -194
  283. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/Curve.js +0 -183
  284. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/Path.js +0 -239
  285. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/QuadraticBezierCurve.js +0 -161
  286. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/SplineCurve.js +0 -133
  287. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/index.js +0 -5
  288. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/postfx/SAO.js +0 -547
  289. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/scene/Scene.js +0 -2481
  290. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/sectionPlane/SectionPlane.js +0 -194
  291. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/sectionPlane/index.js +0 -1
  292. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/skybox/Skybox.js +0 -119
  293. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/skybox/index.js +0 -1
  294. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/stats.js +0 -45
  295. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/Map.js +0 -45
  296. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/Queue.js +0 -56
  297. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/index.js +0 -2
  298. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils.js +0 -452
  299. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/viewport/Viewport.js +0 -212
  300. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/ArrayBuf.js +0 -121
  301. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Attribute.js +0 -23
  302. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Drawable.js +0 -270
  303. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/FrameContext.js +0 -259
  304. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/PickResult.js +0 -317
  305. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Pickable.js +0 -69
  306. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Program.js +0 -179
  307. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderBuffer.js +0 -315
  308. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderFlags.js +0 -203
  309. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderState.js +0 -40
  310. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Renderer.js +0 -1300
  311. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Sampler.js +0 -18
  312. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Shader.js +0 -49
  313. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Texture2D.js +0 -217
  314. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +0 -214
  315. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/occlusion/OcclusionTester.js +0 -432
  316. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -326
  317. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -375
  318. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/webglEnums.js +0 -61
  319. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webglInfo.js +0 -48
  320. package/src/lib/gltf/gltf.css +0 -392
  321. package/src/lib/gltf/gltf.js +0 -2241
  322. package/webpack.config.js +0 -70
@@ -1,2165 +0,0 @@
1
- /**
2
- Fired when this Mesh is picked via a call to {@link Scene/pick:method"}}Scene#pick(){{/crossLink}}.
3
-
4
- The event parameters will be the hit result returned by the {@link Scene/pick:method"}}Scene#pick(){{/crossLink}} method.
5
- @event picked
6
- */
7
- import {math} from '../math/math.js';
8
- import {Component} from '../Component.js';
9
- import {RenderState} from '../webgl/RenderState.js';
10
- import {DrawRenderer} from "./draw/DrawRenderer.js";
11
- import {EmphasisFillRenderer} from "./emphasis/EmphasisFillRenderer.js";
12
- import {EmphasisEdgesRenderer} from "./emphasis/EmphasisEdgesRenderer.js";
13
- import {PickMeshRenderer} from "./pick/PickMeshRenderer.js";
14
- import {PickTriangleRenderer} from "./pick/PickTriangleRenderer.js";
15
- import {OcclusionRenderer} from "./occlusion/OcclusionRenderer.js";
16
- import {ShadowRenderer} from "./shadow/ShadowRenderer.js";
17
-
18
- import {geometryCompressionUtils} from '../math/geometryCompressionUtils.js';
19
- import {RenderFlags} from "../webgl/RenderFlags.js";
20
-
21
- const obb = math.OBB3();
22
- const angleAxis = math.vec4();
23
- const q1 = math.vec4();
24
- const q2 = math.vec4();
25
- const xAxis = math.vec3([1, 0, 0]);
26
- const yAxis = math.vec3([0, 1, 0]);
27
- const zAxis = math.vec3([0, 0, 1]);
28
-
29
- const veca = math.vec3(3);
30
- const vecb = math.vec3(3);
31
-
32
- const identityMat = math.identityMat4();
33
-
34
- /**
35
- * @desc An {@link Entity} that is a drawable element, with a {@link Geometry} and a {@link Material}, that can be
36
- * connected into a scene graph using {@link Node}s.
37
- *
38
- * ## Usage
39
- *
40
- * The example below is the same as the one given for {@link Node}, since the two classes work together. In this example,
41
- * we'll create a scene graph in which a root {@link Node} represents a group and the Meshes are leaves.
42
- *
43
- * Since {@link Node} implements {@link Entity}, we can designate the root {@link Node} as a model, causing it to be registered by its
44
- * ID in {@link Scene#models}.
45
- *
46
- * Since Mesh also implements {@link Entity}, we can designate the leaf Meshes as objects, causing them to
47
- * be registered by their IDs in {@link Scene#objects}.
48
- *
49
- * We can then find those {@link Entity} types in {@link Scene#models} and {@link Scene#objects}.
50
- *
51
- * We can also update properties of our object-Meshes via calls to {@link Scene#setObjectsHighlighted} etc.
52
- *
53
- * [[Run this example](http://yjkkit.github.io/yjkkit-sdk/examples/#sceneRepresentation_SceneGraph)]
54
- *
55
- * ````javascript
56
- * import {Viewer, Mesh, Node, PhongMaterial, buildBoxGeometry, ReadableGeometry} from "yjkkit-sdk.es.js";
57
- *
58
- * const viewer = new Viewer({
59
- * canvasId: "myCanvas"
60
- * });
61
- *
62
- * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];
63
- * viewer.scene.camera.look = [0, -5.75, 0];
64
- * viewer.scene.camera.up = [0.37, 0.91, -0.11];
65
- *
66
- * const boxGeometry = new ReadableGeometry(viewer.scene, buildBoxGeometry({
67
- * xSize: 1,
68
- * ySize: 1,
69
- * zSize: 1
70
- * }));
71
- *
72
- * new Node(viewer.scene, {
73
- * id: "table",
74
- * isModel: true, // <---------- Node represents a model, so is registered by ID in viewer.scene.models
75
- * rotation: [0, 50, 0],
76
- * position: [0, 0, 0],
77
- * scale: [1, 1, 1],
78
- *
79
- * children: [
80
- *
81
- * new Mesh(viewer.scene, { // Red table leg
82
- * id: "redLeg",
83
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
84
- * position: [-4, -6, -4],
85
- * scale: [1, 3, 1],
86
- * rotation: [0, 0, 0],
87
- * material: new PhongMaterial(viewer.scene, {
88
- * diffuse: [1, 0.3, 0.3]
89
- * }),
90
- * geometry: boxGeometry
91
- * }),
92
- *
93
- * new Mesh(viewer.scene, { // Green table leg
94
- * id: "greenLeg",
95
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
96
- * position: [4, -6, -4],
97
- * scale: [1, 3, 1],
98
- * rotation: [0, 0, 0],
99
- * material: new PhongMaterial(viewer.scene, {
100
- * diffuse: [0.3, 1.0, 0.3]
101
- * }),
102
- * geometry: boxGeometry
103
- * }),
104
- *
105
- * new Mesh(viewer.scene, {// Blue table leg
106
- * id: "blueLeg",
107
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
108
- * position: [4, -6, 4],
109
- * scale: [1, 3, 1],
110
- * rotation: [0, 0, 0],
111
- * material: new PhongMaterial(viewer.scene, {
112
- * diffuse: [0.3, 0.3, 1.0]
113
- * }),
114
- * geometry: boxGeometry
115
- * }),
116
- *
117
- * new Mesh(viewer.scene, { // Yellow table leg
118
- * id: "yellowLeg",
119
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
120
- * position: [-4, -6, 4],
121
- * scale: [1, 3, 1],
122
- * rotation: [0, 0, 0],
123
- * material: new PhongMaterial(viewer.scene, {
124
- * diffuse: [1.0, 1.0, 0.0]
125
- * }),
126
- * geometry: boxGeometry
127
- * }),
128
- *
129
- * new Mesh(viewer.scene, { // Purple table top
130
- * id: "tableTop",
131
- * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects
132
- * position: [0, -3, 0],
133
- * scale: [6, 0.5, 6],
134
- * rotation: [0, 0, 0],
135
- * material: new PhongMaterial(viewer.scene, {
136
- * diffuse: [1.0, 0.3, 1.0]
137
- * }),
138
- * geometry: boxGeometry
139
- * })
140
- * ]
141
- * });
142
- *
143
- * // Find Nodes and Meshes by their IDs
144
- *
145
- * var table = viewer.scene.models["table"]; // Since table Node has isModel == true
146
- *
147
- * var redLeg = viewer.scene.objects["redLeg"]; // Since the Meshes have isObject == true
148
- * var greenLeg = viewer.scene.objects["greenLeg"];
149
- * var blueLeg = viewer.scene.objects["blueLeg"];
150
- *
151
- * // Highlight one of the table leg Meshes
152
- *
153
- * viewer.scene.setObjectsHighlighted(["redLeg"], true); // Since the Meshes have isObject == true
154
- *
155
- * // Periodically update transforms on our Nodes and Meshes
156
- *
157
- * viewer.scene.on("tick", function () {
158
- *
159
- * // Rotate legs
160
- * redLeg.rotateY(0.5);
161
- * greenLeg.rotateY(0.5);
162
- * blueLeg.rotateY(0.5);
163
- *
164
- * // Rotate table
165
- * table.rotateY(0.5);
166
- * table.rotateX(0.3);
167
- * });
168
- * ````
169
- *
170
- * ## Metadata
171
- *
172
- * As mentioned, we can also associate {@link MetaModel}s and {@link MetaObject}s with our {@link Node}s and Meshes,
173
- * within a {@link MetaScene}. See {@link MetaScene} for an example.
174
- *
175
- * @implements {Entity}
176
- * @implements {Drawable}
177
- */
178
- class Mesh extends Component {
179
-
180
- /**
181
- @private
182
- */
183
- get type() {
184
- return "Mesh";
185
- }
186
-
187
- /**
188
- * @constructor
189
- * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.
190
- * @param {*} [cfg] Configs
191
- * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.
192
- * @param {String} [cfg.originalSystemId] ID of the corresponding object within the originating system, if any.
193
- * @param {Boolean} [cfg.isModel] Specify ````true```` if this Mesh represents a model, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.
194
- * @param {Boolean} [cfg.isObject] Specify ````true```` if this Mesh represents an object, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and may also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.
195
- * @param {Node} [cfg.parent] The parent Node.
196
- * @param {Number[]} [cfg.rtcCenter] Relative-to-center (RTC) coordinate system center for this Mesh. When this is given, then ````matrix````, ````position```` and ````geometry```` are all assumed to be relative to this center.
197
- * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position.
198
- * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.
199
- * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
200
- * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Local modelling transform matrix. Overrides the position, scale and rotation parameters.
201
- * @param {Number[]} [cfg.offset=[0,0,0]] World-space 3D translation offset. Translates the Mesh in World space, after modelling transforms.
202
- * @param {Boolean} [cfg.visible=true] Indicates if the Mesh is initially visible.
203
- * @param {Boolean} [cfg.culled=false] Indicates if the Mesh is initially culled from view.
204
- * @param {Boolean} [cfg.pickable=true] Indicates if the Mesh is initially pickable.
205
- * @param {Boolean} [cfg.clippable=true] Indicates if the Mesh is initially clippable.
206
- * @param {Boolean} [cfg.collidable=true] Indicates if the Mesh is initially included in boundary calculations.
207
- * @param {Boolean} [cfg.castsShadow=true] Indicates if the Mesh initially casts shadows.
208
- * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Mesh initially receives shadows.
209
- * @param {Boolean} [cfg.xrayed=false] Indicates if the Mesh is initially xrayed.
210
- * @param {Boolean} [cfg.highlighted=false] Indicates if the Mesh is initially highlighted.
211
- * @param {Boolean} [cfg.selected=false] Indicates if the Mesh is initially selected.
212
- * @param {Boolean} [cfg.edges=false] Indicates if the Mesh's edges are initially emphasized.
213
- * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] Mesh's initial RGB colorize color, multiplies by the rendered fragment colors.
214
- * @param {Number} [cfg.opacity=1.0] Mesh's initial opacity factor, multiplies by the rendered fragment alpha.
215
- * @param {String} [cfg.billboard="none"] Mesh's billboarding behaviour. Options are "none" for no billboarding, "spherical" to always directly face {@link Camera.eye}, rotating both vertically and horizontally, or "cylindrical" to face the {@link Camera#eye} while rotating only about its vertically axis (use that mode for things like trees on a landscape).
216
- * @param {Geometry} [cfg.geometry] {@link Geometry} to define the shape of this Mesh. Inherits {@link Scene#geometry} by default.
217
- * @param {Material} [cfg.material] {@link Material} to define the normal rendered appearance for this Mesh. Inherits {@link Scene#material} by default.
218
- * @param {EmphasisMaterial} [cfg.xrayMaterial] {@link EmphasisMaterial} to define the xrayed appearance for this Mesh. Inherits {@link Scene#xrayMaterial} by default.
219
- * @param {EmphasisMaterial} [cfg.highlightMaterial] {@link EmphasisMaterial} to define the xrayed appearance for this Mesh. Inherits {@link Scene#highlightMaterial} by default.
220
- * @param {EmphasisMaterial} [cfg.selectedMaterial] {@link EmphasisMaterial} to define the selected appearance for this Mesh. Inherits {@link Scene#selectedMaterial} by default.
221
- * @param {EmphasisMaterial} [cfg.edgeMaterial] {@link EdgeMaterial} to define the appearance of enhanced edges for this Mesh. Inherits {@link Scene#edgeMaterial} by default.
222
- */
223
- constructor(owner, cfg = {}) {
224
-
225
- super(owner, cfg);
226
-
227
- /**
228
- * ID of the corresponding object within the originating system, if any.
229
- *
230
- * @type {String}
231
- * @abstract
232
- */
233
- this.originalSystemId = (cfg.originalSystemId || this.id);
234
-
235
- /** @private **/
236
- this.renderFlags = new RenderFlags();
237
-
238
- this._state = new RenderState({ // NOTE: Renderer gets modeling and normal matrices from Mesh#matrix and Mesh.#normalWorldMatrix
239
- visible: true,
240
- culled: false,
241
- pickable: null,
242
- clippable: null,
243
- collidable: null,
244
- castsShadow: null,
245
- receivesShadow: null,
246
- xrayed: false,
247
- highlighted: false,
248
- selected: false,
249
- edges: false,
250
- stationary: !!cfg.stationary,
251
- billboard: this._checkBillboard(cfg.billboard),
252
- layer: null,
253
- colorize: null,
254
- pickID: this.scene._renderer.getPickID(this),
255
- drawHash: "",
256
- pickHash: "",
257
- offset: math.vec3(),
258
- rtcCenter: null,
259
- rtcCenterHash: null
260
- });
261
-
262
- this._drawRenderer = null;
263
- this._shadowRenderer = null;
264
- this._emphasisFillRenderer = null;
265
- this._emphasisEdgesRenderer = null;
266
- this._pickMeshRenderer = null;
267
- this._pickTriangleRenderer = null;
268
- this._occlusionRenderer = null;
269
-
270
- this._geometry = cfg.geometry ? this._checkComponent2(["ReadableGeometry", "VBOGeometry"], cfg.geometry) : this.scene.geometry;
271
- this._material = cfg.material ? this._checkComponent2(["PhongMaterial", "MetallicMaterial", "SpecularMaterial", "LambertMaterial"], cfg.material) : this.scene.material;
272
- this._xrayMaterial = cfg.xrayMaterial ? this._checkComponent("EmphasisMaterial", cfg.xrayMaterial) : this.scene.xrayMaterial;
273
- this._highlightMaterial = cfg.highlightMaterial ? this._checkComponent("EmphasisMaterial", cfg.highlightMaterial) : this.scene.highlightMaterial;
274
- this._selectedMaterial = cfg.selectedMaterial ? this._checkComponent("EmphasisMaterial", cfg.selectedMaterial) : this.scene.selectedMaterial;
275
- this._edgeMaterial = cfg.edgeMaterial ? this._checkComponent("EdgeMaterial", cfg.edgeMaterial) : this.scene.edgeMaterial;
276
-
277
- this._parentNode = null;
278
-
279
- this._aabb = null;
280
- this._aabbDirty = true;
281
-
282
- this._numTriangles = (this._geometry ? this._geometry.numTriangles : 0);
283
-
284
- this.scene._aabbDirty = true;
285
-
286
- this._scale = math.vec3();
287
- this._quaternion = math.identityQuaternion();
288
- this._rotation = math.vec3();
289
- this._position = math.vec3();
290
-
291
- this._worldMatrix = math.identityMat4();
292
- this._worldNormalMatrix = math.identityMat4();
293
-
294
- this._localMatrixDirty = true;
295
- this._worldMatrixDirty = true;
296
- this._worldNormalMatrixDirty = true;
297
-
298
- if (cfg.rtcCenter) {
299
- this._state.rtcCenter = math.vec3(cfg.rtcCenter);
300
- this._state.rtcCenterHash = cfg.rtcCenter.join();
301
- }
302
-
303
- if (cfg.matrix) {
304
- this.matrix = cfg.matrix;
305
- } else {
306
- this.scale = cfg.scale;
307
- this.position = cfg.position;
308
- if (cfg.quaternion) {
309
- } else {
310
- this.rotation = cfg.rotation;
311
- }
312
- }
313
-
314
- this._isObject = cfg.isObject;
315
- if (this._isObject) {
316
- this.scene._registerObject(this);
317
- }
318
-
319
- this._isModel = cfg.isModel;
320
- if (this._isModel) {
321
- this.scene._registerModel(this);
322
- }
323
-
324
- this.visible = cfg.visible;
325
- this.culled = cfg.culled;
326
- this.pickable = cfg.pickable;
327
- this.clippable = cfg.clippable;
328
- this.collidable = cfg.collidable;
329
- this.castsShadow = cfg.castsShadow;
330
- this.receivesShadow = cfg.receivesShadow;
331
- this.xrayed = cfg.xrayed;
332
- this.highlighted = cfg.highlighted;
333
- this.selected = cfg.selected;
334
- this.edges = cfg.edges;
335
- this.layer = cfg.layer;
336
- this.colorize = cfg.colorize;
337
- this.opacity = cfg.opacity;
338
- this.offset = cfg.offset;
339
-
340
- if (cfg.parentId) {
341
- const parentNode = this.scene.components[cfg.parentId];
342
- if (!parentNode) {
343
- this.error("Parent not found: '" + cfg.parentId + "'");
344
- } else if (!parentNode.isNode) {
345
- this.error("Parent is not a Node: '" + cfg.parentId + "'");
346
- } else {
347
- parentNode.addChild(this);
348
- }
349
- this._parentNode = parentNode;
350
- } else if (cfg.parent) {
351
- if (!cfg.parent.isNode) {
352
- this.error("Parent is not a Node");
353
- }
354
- cfg.parent.addChild(this);
355
- this._parentNode = cfg.parent;
356
- }
357
-
358
- this.compile();
359
- }
360
-
361
- //------------------------------------------------------------------------------------------------------------------
362
- // Mesh members
363
- //------------------------------------------------------------------------------------------------------------------
364
-
365
- /**
366
- * Returns true to indicate that this Component is a Mesh.
367
- * @final
368
- * @type {Boolean}
369
- */
370
- get isMesh() {
371
- return true;
372
- }
373
-
374
- /**
375
- * The parent Node.
376
- *
377
- * The parent Node may also be set by passing the Mesh to the parent's {@link Node#addChild} method.
378
- *
379
- * @type {Node}
380
- */
381
- get parent() {
382
- return this._parentNode;
383
- }
384
-
385
- _checkBillboard(value) {
386
- value = value || "none";
387
- if (value !== "spherical" && value !== "cylindrical" && value !== "none") {
388
- this.error("Unsupported value for 'billboard': " + value + " - accepted values are " +
389
- "'spherical', 'cylindrical' and 'none' - defaulting to 'none'.");
390
- value = "none";
391
- }
392
- return value;
393
- }
394
-
395
- /**
396
- * Called by yjkkit to compile shaders for this Mesh.
397
- * @private
398
- */
399
- compile() {
400
- const drawHash = this._makeDrawHash();
401
- if (this._state.drawHash !== drawHash) {
402
- this._state.drawHash = drawHash;
403
- this._putDrawRenderers();
404
- this._drawRenderer = DrawRenderer.get(this);
405
- // this._shadowRenderer = ShadowRenderer.get(this);
406
- this._emphasisFillRenderer = EmphasisFillRenderer.get(this);
407
- this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this);
408
- }
409
- const pickHash = this._makePickHash();
410
- if (this._state.pickHash !== pickHash) {
411
- this._state.pickHash = pickHash;
412
- this._putPickRenderers();
413
- this._pickMeshRenderer = PickMeshRenderer.get(this);
414
- }
415
- const occlusionHash = this._makeOcclusionHash();
416
- if (this._state.occlusionHash !== occlusionHash) {
417
- this._state.occlusionHash = occlusionHash;
418
- this._putOcclusionRenderer();
419
- this._occlusionRenderer = OcclusionRenderer.get(this);
420
- }
421
- }
422
-
423
- _setLocalMatrixDirty() {
424
- this._localMatrixDirty = true;
425
- this._setWorldMatrixDirty();
426
- }
427
-
428
- _setWorldMatrixDirty() {
429
- this._worldMatrixDirty = true;
430
- this._worldNormalMatrixDirty = true;
431
- }
432
-
433
- _buildWorldMatrix() {
434
- const localMatrix = this.matrix;
435
- if (!this._parentNode) {
436
- for (let i = 0, len = localMatrix.length; i < len; i++) {
437
- this._worldMatrix[i] = localMatrix[i];
438
- }
439
- } else {
440
- math.mulMat4(this._parentNode.worldMatrix, localMatrix, this._worldMatrix);
441
- }
442
- this._worldMatrixDirty = false;
443
- }
444
-
445
- _buildWorldNormalMatrix() {
446
- if (this._worldMatrixDirty) {
447
- this._buildWorldMatrix();
448
- }
449
- if (!this._worldNormalMatrix) {
450
- this._worldNormalMatrix = math.mat4();
451
- }
452
- // Note: order of inverse and transpose doesn't matter
453
- math.transposeMat4(this._worldMatrix, this._worldNormalMatrix);
454
- math.inverseMat4(this._worldNormalMatrix);
455
- this._worldNormalMatrixDirty = false;
456
- }
457
-
458
- _setAABBDirty() {
459
- if (this.collidable) {
460
- for (let node = this; node; node = node._parentNode) {
461
- node._aabbDirty = true;
462
- }
463
- }
464
- }
465
-
466
- _updateAABB() {
467
- this.scene._aabbDirty = true;
468
- if (!this._aabb) {
469
- this._aabb = math.AABB3();
470
- }
471
- this._buildAABB(this.worldMatrix, this._aabb); // Mesh or PerformanceModel
472
- this._aabbDirty = false;
473
- }
474
-
475
- _webglContextRestored() {
476
- if (this._drawRenderer) {
477
- this._drawRenderer.webglContextRestored();
478
- }
479
- if (this._shadowRenderer) {
480
- this._shadowRenderer.webglContextRestored();
481
- }
482
- if (this._emphasisFillRenderer) {
483
- this._emphasisFillRenderer.webglContextRestored();
484
- }
485
- if (this._emphasisEdgesRenderer) {
486
- this._emphasisEdgesRenderer.webglContextRestored();
487
- }
488
- if (this._pickMeshRenderer) {
489
- this._pickMeshRenderer.webglContextRestored();
490
- }
491
- if (this._pickTriangleRenderer) {
492
- this._pickMeshRenderer.webglContextRestored();
493
- }
494
- if (this._occlusionRenderer) {
495
- this._occlusionRenderer.webglContextRestored();
496
- }
497
- }
498
-
499
- _makeDrawHash() {
500
- const scene = this.scene;
501
- const hash = [
502
- scene.canvas.canvas.id,
503
- (scene.gammaInput ? "gi;" : ";") + (scene.gammaOutput ? "go" : ""),
504
- scene._lightsState.getHash(),
505
- scene._sectionPlanesState.getHash()
506
- ];
507
- const state = this._state;
508
- if (state.stationary) {
509
- hash.push("/s");
510
- }
511
- if (state.billboard === "none") {
512
- hash.push("/n");
513
- } else if (state.billboard === "spherical") {
514
- hash.push("/s");
515
- } else if (state.billboard === "cylindrical") {
516
- hash.push("/c");
517
- }
518
- if (state.receivesShadow) {
519
- hash.push("/rs");
520
- }
521
- hash.push(";");
522
- return hash.join("");
523
- }
524
-
525
- _makePickHash() {
526
- const scene = this.scene;
527
- const hash = [
528
- scene.canvas.canvas.id,
529
- scene._sectionPlanesState.getHash()
530
- ];
531
- const state = this._state;
532
- if (state.stationary) {
533
- hash.push("/s");
534
- }
535
- if (state.billboard === "none") {
536
- hash.push("/n");
537
- } else if (state.billboard === "spherical") {
538
- hash.push("/s");
539
- } else if (state.billboard === "cylindrical") {
540
- hash.push("/c");
541
- }
542
- hash.push(";");
543
- return hash.join("");
544
- }
545
-
546
- _makeOcclusionHash() {
547
- const scene = this.scene;
548
- const hash = [
549
- scene.canvas.canvas.id,
550
- scene._sectionPlanesState.getHash()
551
- ];
552
- const state = this._state;
553
- if (state.stationary) {
554
- hash.push("/s");
555
- }
556
- if (state.billboard === "none") {
557
- hash.push("/n");
558
- } else if (state.billboard === "spherical") {
559
- hash.push("/s");
560
- } else if (state.billboard === "cylindrical") {
561
- hash.push("/c");
562
- }
563
- hash.push(";");
564
- return hash.join("");
565
- }
566
-
567
- _buildAABB(worldMatrix, aabb) {
568
-
569
- math.transformOBB3(worldMatrix, this._geometry.obb, obb);
570
- math.OBB3ToAABB3(obb, aabb);
571
-
572
- const offset = this._state.offset;
573
-
574
- aabb[0] += offset[0];
575
- aabb[1] += offset[1];
576
- aabb[2] += offset[2];
577
- aabb[3] += offset[0];
578
- aabb[4] += offset[1];
579
- aabb[5] += offset[2];
580
-
581
- if (this._state.rtcCenter) {
582
- const rtcCenter = this._state.rtcCenter;
583
- aabb[0] += rtcCenter[0];
584
- aabb[1] += rtcCenter[1];
585
- aabb[2] += rtcCenter[2];
586
- aabb[3] += rtcCenter[0];
587
- aabb[4] += rtcCenter[1];
588
- aabb[5] += rtcCenter[2];
589
- }
590
- }
591
-
592
- /**
593
- * Defines the shape of this Mesh.
594
- *
595
- * Set to {@link Scene#geometry} by default.
596
- *
597
- * @type {Geometry}
598
- */
599
- get geometry() {
600
- return this._geometry;
601
- }
602
-
603
- /**
604
- * Defines the appearance of this Mesh when rendering normally, ie. when not xrayed, highlighted or selected.
605
- *
606
- * Set to {@link Scene#material} by default.
607
- *
608
- * @type {Material}
609
- */
610
- get material() {
611
- return this._material;
612
- }
613
-
614
- /**
615
- * Sets the Mesh's local translation.
616
- *
617
- * Default value is ````[0,0,0]````.
618
- *
619
- * @type {Number[]}
620
- */
621
- set position(value) {
622
- this._position.set(value || [0, 0, 0]);
623
- this._setLocalMatrixDirty();
624
- this._setAABBDirty();
625
- this.glRedraw();
626
- }
627
-
628
- /**
629
- * Gets the Mesh's local translation.
630
- *
631
- * Default value is ````[0,0,0]````.
632
- *
633
- * @type {Number[]}
634
- */
635
- get position() {
636
- return this._position;
637
- }
638
-
639
- /**
640
- * Sets the Mesh's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
641
- *
642
- * Default value is ````[0,0,0]````.
643
- *
644
- * @type {Number[]}
645
- */
646
- set rotation(value) {
647
- this._rotation.set(value || [0, 0, 0]);
648
- math.eulerToQuaternion(this._rotation, "XYZ", this._quaternion);
649
- this._setLocalMatrixDirty();
650
- this._setAABBDirty();
651
- this.glRedraw();
652
- }
653
-
654
- /**
655
- * Gets the Mesh's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
656
- *
657
- * Default value is ````[0,0,0]````.
658
- *
659
- * @type {Number[]}
660
- */
661
- get rotation() {
662
- return this._rotation;
663
- }
664
-
665
- /**
666
- * Sets the Mesh's local rotation quaternion.
667
- *
668
- * Default value is ````[0,0,0,1]````.
669
- *
670
- * @type {Number[]}
671
- */
672
- set quaternion(value) {
673
- this._quaternion.set(value || [0, 0, 0, 1]);
674
- math.quaternionToEuler(this._quaternion, "XYZ", this._rotation);
675
- this._setLocalMatrixDirty();
676
- this._setAABBDirty();
677
- this.glRedraw();
678
- }
679
-
680
- /**
681
- * Gets the Mesh's local rotation quaternion.
682
- *
683
- * Default value is ````[0,0,0,1]````.
684
- *
685
- * @type {Number[]}
686
- */
687
- get quaternion() {
688
- return this._quaternion;
689
- }
690
-
691
- /**
692
- * Sets the Mesh's local scale.
693
- *
694
- * Default value is ````[1,1,1]````.
695
- *
696
- * @type {Number[]}
697
- */
698
- set scale(value) {
699
- this._scale.set(value || [1, 1, 1]);
700
- this._setLocalMatrixDirty();
701
- this._setAABBDirty();
702
- this.glRedraw();
703
- }
704
-
705
- /**
706
- * Gets the Mesh's local scale.
707
- *
708
- * Default value is ````[1,1,1]````.
709
- *
710
- * @type {Number[]}
711
- */
712
- get scale() {
713
- return this._scale;
714
- }
715
-
716
- /**
717
- * Sets the Mesh's local modeling transform matrix.
718
- *
719
- * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.
720
- *
721
- * @type {Number[]}
722
- */
723
- set matrix(value) {
724
- if (!this.__localMatrix) {
725
- this.__localMatrix = math.identityMat4();
726
- }
727
- this.__localMatrix.set(value || identityMat);
728
- math.decomposeMat4(this.__localMatrix, this._position, this._quaternion, this._scale);
729
- this._localMatrixDirty = false;
730
- this._setWorldMatrixDirty();
731
- this._setAABBDirty();
732
- this.glRedraw();
733
- }
734
-
735
- /**
736
- * Gets the Mesh's local modeling transform matrix.
737
- *
738
- * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.
739
- *
740
- * @type {Number[]}
741
- */
742
- get matrix() {
743
- if (this._localMatrixDirty) {
744
- if (!this.__localMatrix) {
745
- this.__localMatrix = math.identityMat4();
746
- }
747
- math.composeMat4(this._position, this._quaternion, this._scale, this.__localMatrix);
748
- this._localMatrixDirty = false;
749
- }
750
- return this.__localMatrix;
751
- }
752
-
753
- /**
754
- * Gets the Mesh's World matrix.
755
- *
756
- * @property worldMatrix
757
- * @type {Number[]}
758
- */
759
- get worldMatrix() {
760
- if (this._worldMatrixDirty) {
761
- this._buildWorldMatrix();
762
- }
763
- return this._worldMatrix;
764
- }
765
-
766
- /**
767
- * Gets the Mesh's World normal matrix.
768
- *
769
- * @type {Number[]}
770
- */
771
- get worldNormalMatrix() {
772
- if (this._worldNormalMatrixDirty) {
773
- this._buildWorldNormalMatrix();
774
- }
775
- return this._worldNormalMatrix;
776
- }
777
-
778
- /**
779
- * Rotates the Mesh about the given local axis by the given increment.
780
- *
781
- * @param {Number[]} axis Local axis about which to rotate.
782
- * @param {Number} angle Angle increment in degrees.
783
- */
784
- rotate(axis, angle) {
785
- angleAxis[0] = axis[0];
786
- angleAxis[1] = axis[1];
787
- angleAxis[2] = axis[2];
788
- angleAxis[3] = angle * math.DEGTORAD;
789
- math.angleAxisToQuaternion(angleAxis, q1);
790
- math.mulQuaternions(this.quaternion, q1, q2);
791
- this.quaternion = q2;
792
- this._setLocalMatrixDirty();
793
- this._setAABBDirty();
794
- this.glRedraw();
795
- return this;
796
- }
797
-
798
- /**
799
- * Rotates the Mesh about the given World-space axis by the given increment.
800
- *
801
- * @param {Number[]} axis Local axis about which to rotate.
802
- * @param {Number} angle Angle increment in degrees.
803
- */
804
- rotateOnWorldAxis(axis, angle) {
805
- angleAxis[0] = axis[0];
806
- angleAxis[1] = axis[1];
807
- angleAxis[2] = axis[2];
808
- angleAxis[3] = angle * math.DEGTORAD;
809
- math.angleAxisToQuaternion(angleAxis, q1);
810
- math.mulQuaternions(q1, this.quaternion, q1);
811
- //this.quaternion.premultiply(q1);
812
- return this;
813
- }
814
-
815
- /**
816
- * Rotates the Mesh about the local X-axis by the given increment.
817
- *
818
- * @param {Number} angle Angle increment in degrees.
819
- */
820
- rotateX(angle) {
821
- return this.rotate(xAxis, angle);
822
- }
823
-
824
- /**
825
- * Rotates the Mesh about the local Y-axis by the given increment.
826
- *
827
- * @param {Number} angle Angle increment in degrees.
828
- */
829
- rotateY(angle) {
830
- return this.rotate(yAxis, angle);
831
- }
832
-
833
- /**
834
- * Rotates the Mesh about the local Z-axis by the given increment.
835
- *
836
- * @param {Number} angle Angle increment in degrees.
837
- */
838
- rotateZ(angle) {
839
- return this.rotate(zAxis, angle);
840
- }
841
-
842
- /**
843
- * Translates the Mesh along local space vector by the given increment.
844
- *
845
- * @param {Number[]} axis Normalized local space 3D vector along which to translate.
846
- * @param {Number} distance Distance to translate along the vector.
847
- */
848
- translate(axis, distance) {
849
- math.vec3ApplyQuaternion(this.quaternion, axis, veca);
850
- math.mulVec3Scalar(veca, distance, vecb);
851
- math.addVec3(this.position, vecb, this.position);
852
- this._setLocalMatrixDirty();
853
- this._setAABBDirty();
854
- this.glRedraw();
855
- return this;
856
- }
857
-
858
- /**
859
- * Translates the Mesh along the local X-axis by the given increment.
860
- *
861
- * @param {Number} distance Distance to translate along the X-axis.
862
- */
863
- translateX(distance) {
864
- return this.translate(xAxis, distance);
865
- }
866
-
867
- /**
868
- * Translates the Mesh along the local Y-axis by the given increment.
869
- *
870
- * @param {Number} distance Distance to translate along the Y-axis.
871
- */
872
- translateY(distance) {
873
- return this.translate(yAxis, distance);
874
- }
875
-
876
- /**
877
- * Translates the Mesh along the local Z-axis by the given increment.
878
- *
879
- * @param {Number} distance Distance to translate along the Z-axis.
880
- */
881
- translateZ(distance) {
882
- return this.translate(zAxis, distance);
883
- }
884
-
885
- _putDrawRenderers() {
886
- if (this._drawRenderer) {
887
- this._drawRenderer.put();
888
- this._drawRenderer = null;
889
- }
890
- if (this._shadowRenderer) {
891
- this._shadowRenderer.put();
892
- this._shadowRenderer = null;
893
- }
894
- if (this._emphasisFillRenderer) {
895
- this._emphasisFillRenderer.put();
896
- this._emphasisFillRenderer = null;
897
- }
898
- if (this._emphasisEdgesRenderer) {
899
- this._emphasisEdgesRenderer.put();
900
- this._emphasisEdgesRenderer = null;
901
- }
902
- }
903
-
904
- _putPickRenderers() {
905
- if (this._pickMeshRenderer) {
906
- this._pickMeshRenderer.put();
907
- this._pickMeshRenderer = null;
908
- }
909
- if (this._pickTriangleRenderer) {
910
- this._pickTriangleRenderer.put();
911
- this._pickTriangleRenderer = null;
912
- }
913
- }
914
-
915
- _putOcclusionRenderer() {
916
- if (this._occlusionRenderer) {
917
- this._occlusionRenderer.put();
918
- this._occlusionRenderer = null;
919
- }
920
- }
921
-
922
- //------------------------------------------------------------------------------------------------------------------
923
- // Entity members
924
- //------------------------------------------------------------------------------------------------------------------
925
-
926
- /**
927
- * Returns true to indicate that Mesh implements {@link Entity}.
928
- *
929
- * @returns {Boolean}
930
- */
931
- get isEntity() {
932
- return true;
933
- }
934
-
935
- /**
936
- * Returns ````true```` if this Mesh represents a model.
937
- *
938
- * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and
939
- * may also have a corresponding {@link MetaModel}.
940
- *
941
- * @type {Boolean}
942
- */
943
- get isModel() {
944
- return this._isModel;
945
- }
946
-
947
- /**
948
- * Returns ````true```` if this Mesh represents an object.
949
- *
950
- * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and
951
- * may also have a corresponding {@link MetaObject}.
952
- *
953
- * @type {Boolean}
954
- */
955
- get isObject() {
956
- return this._isObject;
957
- }
958
-
959
- /**
960
- * Gets the Mesh's World-space 3D axis-aligned bounding box.
961
- *
962
- * Represented by a six-element Float64Array containing the min/max extents of the
963
- * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.
964
- *
965
- * @type {Number[]}
966
- */
967
- get aabb() {
968
- if (this._aabbDirty) {
969
- this._updateAABB();
970
- }
971
- return this._aabb;
972
- }
973
-
974
- /**
975
- * Center of the relative-to-center (RTC) coordinate system for this Mesh.
976
- *
977
- * When this is given, then {@link Mesh#matrix}, {@link Mesh#position} and {@link Mesh#geometry} are all assumed to be relative to this center position.
978
- *
979
- * @type {Float64Array}
980
- */
981
- set rtcCenter(rtcCenter) {
982
- if (rtcCenter) {
983
- if (!this._state.rtcCenter) {
984
- this._state.rtcCenter = math.vec3();
985
- }
986
- this._state.rtcCenter.set(rtcCenter);
987
- this._state.rtcCenterHash = rtcCenter.join();
988
- this._setAABBDirty();
989
- this.scene._aabbDirty = true;
990
- } else {
991
- if (this._state.rtcCenter) {
992
- this._state.rtcCenter = null;
993
- this._state.rtcCenterHash = null;
994
- this._setAABBDirty();
995
- this.scene._aabbDirty = true;
996
- }
997
- }
998
- }
999
-
1000
- /**
1001
- * 3D origin of the Mesh's {@link Geometry}'s vertex positions.
1002
- *
1003
- * When this is defined, then the positions are RTC, which means that they are relative to this position.
1004
- *
1005
- * @type {Float64Array}
1006
- */
1007
- get rtcCenter() {
1008
- return this._state.rtcCenter;
1009
- }
1010
-
1011
- /**
1012
- * The approximate number of triangles in this Mesh.
1013
- *
1014
- * @type {Number}
1015
- */
1016
- get numTriangles() {
1017
- return this._numTriangles;
1018
- }
1019
-
1020
- /**
1021
- * Sets if this Mesh is visible.
1022
- *
1023
- * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.
1024
- *
1025
- * When {@link Mesh#isObject} and {@link Mesh#visible} are both ````true```` the Mesh will be
1026
- * registered by {@link Mesh#id} in {@link Scene#visibleObjects}.
1027
- *
1028
- * @type {Boolean}
1029
- */
1030
- set visible(visible) {
1031
- visible = visible !== false;
1032
- this._state.visible = visible;
1033
- if (this._isObject) {
1034
- this.scene._objectVisibilityUpdated(this);
1035
- }
1036
- this.glRedraw();
1037
- }
1038
-
1039
- /**
1040
- * Gets if this Mesh is visible.
1041
- *
1042
- * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.
1043
- *
1044
- * When {@link Mesh#isObject} and {@link Mesh#visible} are both ````true```` the Mesh will be
1045
- * registered by {@link Mesh#id} in {@link Scene#visibleObjects}.
1046
- *
1047
- * @type {Boolean}
1048
- */
1049
- get visible() {
1050
- return this._state.visible;
1051
- }
1052
-
1053
- /**
1054
- * Sets if this Mesh is xrayed.
1055
- *
1056
- * XRayed appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#xrayMaterial}.
1057
- *
1058
- * When {@link Mesh#isObject} and {@link Mesh#xrayed} are both ````true``` the Mesh will be
1059
- * registered by {@link Mesh#id} in {@link Scene#xrayedObjects}.
1060
- *
1061
- * @type {Boolean}
1062
- */
1063
- set xrayed(xrayed) {
1064
- xrayed = !!xrayed;
1065
- if (this._state.xrayed === xrayed) {
1066
- return;
1067
- }
1068
- this._state.xrayed = xrayed;
1069
- if (this._isObject) {
1070
- this.scene._objectXRayedUpdated(this);
1071
- }
1072
- this.glRedraw();
1073
- }
1074
-
1075
- /**
1076
- * Gets if this Mesh is xrayed.
1077
- *
1078
- * XRayed appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#xrayMaterial}.
1079
- *
1080
- * When {@link Mesh#isObject} and {@link Mesh#xrayed} are both ````true``` the Mesh will be
1081
- * registered by {@link Mesh#id} in {@link Scene#xrayedObjects}.
1082
- *
1083
- * @type {Boolean}
1084
- */
1085
- get xrayed() {
1086
- return this._state.xrayed;
1087
- }
1088
-
1089
- /**
1090
- * Sets if this Mesh is highlighted.
1091
- *
1092
- * Highlighted appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#highlightMaterial}.
1093
- *
1094
- * When {@link Mesh#isObject} and {@link Mesh#highlighted} are both ````true```` the Mesh will be
1095
- * registered by {@link Mesh#id} in {@link Scene#highlightedObjects}.
1096
- *
1097
- * @type {Boolean}
1098
- */
1099
- set highlighted(highlighted) {
1100
- highlighted = !!highlighted;
1101
- if (highlighted === this._state.highlighted) {
1102
- return;
1103
- }
1104
- this._state.highlighted = highlighted;
1105
- if (this._isObject) {
1106
- this.scene._objectHighlightedUpdated(this);
1107
- }
1108
- this.glRedraw();
1109
- }
1110
-
1111
- /**
1112
- * Gets if this Mesh is highlighted.
1113
- *
1114
- * Highlighted appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#highlightMaterial}.
1115
- *
1116
- * When {@link Mesh#isObject} and {@link Mesh#highlighted} are both ````true```` the Mesh will be
1117
- * registered by {@link Mesh#id} in {@link Scene#highlightedObjects}.
1118
- *
1119
- * @type {Boolean}
1120
- */
1121
- get highlighted() {
1122
- return this._state.highlighted;
1123
- }
1124
-
1125
- /**
1126
- * Sets if this Mesh is selected.
1127
- *
1128
- * Selected appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#selectedMaterial}.
1129
- *
1130
- * When {@link Mesh#isObject} and {@link Mesh#selected} are both ````true``` the Mesh will be
1131
- * registered by {@link Mesh#id} in {@link Scene#selectedObjects}.
1132
- *
1133
- * @type {Boolean}
1134
- */
1135
- set selected(selected) {
1136
- selected = !!selected;
1137
- if (selected === this._state.selected) {
1138
- return;
1139
- }
1140
- this._state.selected = selected;
1141
- if (this._isObject) {
1142
- this.scene._objectSelectedUpdated(this);
1143
- }
1144
- this.glRedraw();
1145
- }
1146
-
1147
- /**
1148
- * Gets if this Mesh is selected.
1149
- *
1150
- * Selected appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#selectedMaterial}.
1151
- *
1152
- * When {@link Mesh#isObject} and {@link Mesh#selected} are both ````true``` the Mesh will be
1153
- * registered by {@link Mesh#id} in {@link Scene#selectedObjects}.
1154
- *
1155
- * @type {Boolean}
1156
- */
1157
- get selected() {
1158
- return this._state.selected;
1159
- }
1160
-
1161
- /**
1162
- * Sets if this Mesh is edge-enhanced.
1163
- *
1164
- * Edge appearance is configured by the {@link EdgeMaterial} referenced by {@link Mesh#edgeMaterial}.
1165
- *
1166
- * @type {Boolean}
1167
- */
1168
- set edges(edges) {
1169
- edges = !!edges;
1170
- if (edges === this._state.edges) {
1171
- return;
1172
- }
1173
- this._state.edges = edges;
1174
- this.glRedraw();
1175
- }
1176
-
1177
- /**
1178
- * Gets if this Mesh is edge-enhanced.
1179
- *
1180
- * Edge appearance is configured by the {@link EdgeMaterial} referenced by {@link Mesh#edgeMaterial}.
1181
- *
1182
- * @type {Boolean}
1183
- */
1184
- get edges() {
1185
- return this._state.edges;
1186
- }
1187
-
1188
- /**
1189
- * Sets if this Mesh is culled.
1190
- *
1191
- * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.
1192
- *
1193
- * @type {Boolean}
1194
- */
1195
- set culled(value) {
1196
- this._state.culled = !!value;
1197
- this.glRedraw();
1198
- }
1199
-
1200
- /**
1201
- * Gets if this Mesh is culled.
1202
- *
1203
- * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.
1204
- *
1205
- * @type {Boolean}
1206
- */
1207
- get culled() {
1208
- return this._state.culled;
1209
- }
1210
-
1211
- /**
1212
- * Sets if this Mesh is clippable.
1213
- *
1214
- * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.
1215
- *
1216
- * @type {Boolean}
1217
- */
1218
- set clippable(value) {
1219
- value = value !== false;
1220
- if (this._state.clippable === value) {
1221
- return;
1222
- }
1223
- this._state.clippable = value;
1224
- this.glRedraw();
1225
- }
1226
-
1227
- /**
1228
- * Gets if this Mesh is clippable.
1229
- *
1230
- * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.
1231
- *
1232
- * @type {Boolean}
1233
- */
1234
- get clippable() {
1235
- return this._state.clippable;
1236
- }
1237
-
1238
- /**
1239
- * Sets if this Mesh included in boundary calculations.
1240
- *
1241
- * @type {Boolean}
1242
- */
1243
- set collidable(value) {
1244
- value = value !== false;
1245
- if (value === this._state.collidable) {
1246
- return;
1247
- }
1248
- this._state.collidable = value;
1249
- this._setAABBDirty();
1250
- this.scene._aabbDirty = true;
1251
-
1252
- }
1253
-
1254
- /**
1255
- * Gets if this Mesh included in boundary calculations.
1256
- *
1257
- * @type {Boolean}
1258
- */
1259
- get collidable() {
1260
- return this._state.collidable;
1261
- }
1262
-
1263
- /**
1264
- * Sets if this Mesh is pickable.
1265
- *
1266
- * Picking is done via calls to {@link Scene#pick}.
1267
- *
1268
- * @type {Boolean}
1269
- */
1270
- set pickable(value) {
1271
- value = value !== false;
1272
- if (this._state.pickable === value) {
1273
- return;
1274
- }
1275
- this._state.pickable = value;
1276
- // No need to trigger a render;
1277
- // state is only used when picking
1278
- }
1279
-
1280
- /**
1281
- * Gets if this Mesh is pickable.
1282
- *
1283
- * Picking is done via calls to {@link Scene#pick}.
1284
- *
1285
- * @type {Boolean}
1286
- */
1287
- get pickable() {
1288
- return this._state.pickable;
1289
- }
1290
-
1291
- /**
1292
- * Sets if this Mesh casts shadows.
1293
- *
1294
- * @type {Boolean}
1295
- */
1296
- set castsShadow(value) {
1297
- value = value !== false;
1298
- if (value === this._state.castsShadow) {
1299
- return;
1300
- }
1301
- this._state.castsShadow = value;
1302
- this.glRedraw();
1303
- }
1304
-
1305
- /**
1306
- * Gets if this Mesh casts shadows.
1307
- *
1308
- * @type {Boolean}
1309
- */
1310
- get castsShadow() {
1311
- return this._state.castsShadow;
1312
- }
1313
-
1314
- /**
1315
- * Sets if this Mesh can have shadows cast upon it.
1316
- *
1317
- * @type {Boolean}
1318
- */
1319
- set receivesShadow(value) {
1320
- value = value !== false;
1321
- if (value === this._state.receivesShadow) {
1322
- return;
1323
- }
1324
- this._state.receivesShadow = value;
1325
- this._state.hash = value ? "/mod/rs;" : "/mod;";
1326
- this.fire("dirty", this); // Now need to (re)compile objectRenderers to include/exclude shadow mapping
1327
- }
1328
-
1329
- /**
1330
- * Gets if this Mesh can have shadows cast upon it.
1331
- *
1332
- * @type {Boolean}
1333
- */
1334
- get receivesShadow() {
1335
- return this._state.receivesShadow;
1336
- }
1337
-
1338
- /**
1339
- * Gets if this Mesh can have Scalable Ambient Obscurance (SAO) applied to it.
1340
- *
1341
- * SAO is configured by {@link SAO}.
1342
- *
1343
- * @type {Boolean}
1344
- * @abstract
1345
- */
1346
- get saoEnabled() {
1347
- return false; // TODO: Support SAO on Meshes
1348
- }
1349
-
1350
- /**
1351
- * Sets the RGB colorize color for this Mesh.
1352
- *
1353
- * Multiplies by rendered fragment colors.
1354
- *
1355
- * Each element of the color is in range ````[0..1]````.
1356
- *
1357
- * @type {Number[]}
1358
- */
1359
- set colorize(value) {
1360
- let colorize = this._state.colorize;
1361
- if (!colorize) {
1362
- colorize = this._state.colorize = new Float32Array(4);
1363
- colorize[3] = 1;
1364
- }
1365
- if (value) {
1366
- colorize[0] = value[0];
1367
- colorize[1] = value[1];
1368
- colorize[2] = value[2];
1369
- } else {
1370
- colorize[0] = 1;
1371
- colorize[1] = 1;
1372
- colorize[2] = 1;
1373
- }
1374
- const colorized = (!!value);
1375
- this.scene._objectColorizeUpdated(this, colorized);
1376
- this.glRedraw();
1377
- }
1378
-
1379
- /**
1380
- * Gets the RGB colorize color for this Mesh.
1381
- *
1382
- * Multiplies by rendered fragment colors.
1383
- *
1384
- * Each element of the color is in range ````[0..1]````.
1385
- *
1386
- * @type {Number[]}
1387
- */
1388
- get colorize() {
1389
- return this._state.colorize;
1390
- }
1391
-
1392
- /**
1393
- * Sets the opacity factor for this Mesh.
1394
- *
1395
- * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.
1396
- *
1397
- * @type {Number}
1398
- */
1399
- set opacity(opacity) {
1400
- let colorize = this._state.colorize;
1401
- if (!colorize) {
1402
- colorize = this._state.colorize = new Float32Array(4);
1403
- colorize[0] = 1;
1404
- colorize[1] = 1;
1405
- colorize[2] = 1;
1406
- }
1407
- const opacityUpdated = (opacity !== null && opacity !== undefined);
1408
- colorize[3] = opacityUpdated ? opacity : 1.0;
1409
- this.scene._objectOpacityUpdated(this, opacityUpdated);
1410
- this.glRedraw();
1411
- }
1412
-
1413
- /**
1414
- * Gets the opacity factor for this Mesh.
1415
- *
1416
- * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.
1417
- *
1418
- * @type {Number}
1419
- */
1420
- get opacity() {
1421
- return this._state.colorize[3];
1422
- }
1423
-
1424
- /**
1425
- * Gets if this Mesh is transparent.
1426
- * @returns {Boolean}
1427
- */
1428
- get transparent() {
1429
- return this._material.alphaMode === 2 /* blend */ || this._state.colorize[3] < 1
1430
- }
1431
-
1432
- /**
1433
- * Sets the Mesh's rendering order relative to other Meshes.
1434
- *
1435
- * Default value is ````0````.
1436
- *
1437
- * This can be set on multiple transparent Meshes, to make them render in a specific order for correct alpha blending.
1438
- *
1439
- * @type {Number}
1440
- */
1441
- set layer(value) {
1442
- // TODO: Only accept rendering layer in range [0...MAX_layer]
1443
- value = value || 0;
1444
- value = Math.round(value);
1445
- if (value === this._state.layer) {
1446
- return;
1447
- }
1448
- this._state.layer = value;
1449
- this._renderer.needStateSort();
1450
- }
1451
-
1452
- /**
1453
- * Gets the Mesh's rendering order relative to other Meshes.
1454
- *
1455
- * Default value is ````0````.
1456
- *
1457
- * This can be set on multiple transparent Meshes, to make them render in a specific order for correct alpha blending.
1458
- *
1459
- * @type {Number}
1460
- */
1461
- get layer() {
1462
- return this._state.layer;
1463
- }
1464
-
1465
- /**
1466
- * Gets if the Node's position is stationary.
1467
- *
1468
- * When true, will disable the effect of {@link Camera} translations for this Mesh, while still allowing it to rotate. This is useful for skyboxes.
1469
- *
1470
- * @type {Boolean}
1471
- */
1472
- get stationary() {
1473
- return this._state.stationary;
1474
- }
1475
-
1476
- /**
1477
- * Gets the Node's billboarding behaviour.
1478
- *
1479
- * Options are:
1480
- * * ````"none"```` - (default) - No billboarding.
1481
- * * ````"spherical"```` - Mesh is billboarded to face the viewpoint, rotating both vertically and horizontally.
1482
- * * ````"cylindrical"```` - Mesh is billboarded to face the viewpoint, rotating only about its vertically axis. Use this mode for things like trees on a landscape.
1483
- * @type {String}
1484
- */
1485
- get billboard() {
1486
- return this._state.billboard;
1487
- }
1488
-
1489
- /**
1490
- * Sets the Mesh's 3D World-space offset.
1491
- *
1492
- * The offset dynamically translates the Mesh in World-space.
1493
- *
1494
- * Default value is ````[0, 0, 0]````.
1495
- *
1496
- * Provide a null or undefined value to reset to the default value.
1497
- *
1498
- * @type {Number[]}
1499
- */
1500
- set offset(value) {
1501
- this._state.offset.set(value || [0, 0, 0]);
1502
- this._setAABBDirty();
1503
- this.glRedraw();
1504
- }
1505
-
1506
- /**
1507
- * Gets the Mesh's 3D World-space offset.
1508
- *
1509
- * Default value is ````[0,0,0]````.
1510
- *
1511
- * @type {Number[]}
1512
- */
1513
- get offset() {
1514
- return this._state.offset;
1515
- }
1516
-
1517
- //------------------------------------------------------------------------------------------------------------------
1518
- // Drawable members
1519
- //------------------------------------------------------------------------------------------------------------------
1520
-
1521
- /**
1522
- * Returns true to indicate that Mesh implements {@link Drawable}.
1523
- * @final
1524
- * @type {Boolean}
1525
- */
1526
- get isDrawable() {
1527
- return true;
1528
- }
1529
-
1530
- /**
1531
- * Property with final value ````true```` to indicate that yjkkit should render this Mesh in sorted order, relative to other Meshes.
1532
- *
1533
- * The sort order is determined by {@link Mesh#stateSortCompare}.
1534
- *
1535
- * Sorting is essential for rendering performance, so that yjkkit is able to avoid applying runs of the same state changes to the GPU, ie. can collapse them.
1536
- *
1537
- * @type {Boolean}
1538
- */
1539
- get isStateSortable() {
1540
- return true;
1541
- }
1542
-
1543
- /**
1544
- * Comparison function used by the renderer to determine the order in which yjkkit should render the Mesh, relative to to other Meshes.
1545
- *
1546
- * yjkkit requires this method because Mesh implements {@link Drawable}.
1547
- *
1548
- * Sorting is essential for rendering performance, so that yjkkit is able to avoid needlessly applying runs of the same rendering state changes to the GPU, ie. can collapse them.
1549
- *
1550
- * @param {Mesh} mesh1
1551
- * @param {Mesh} mesh2
1552
- * @returns {number}
1553
- */
1554
- stateSortCompare(mesh1, mesh2) {
1555
- return (mesh1._state.layer - mesh2._state.layer)
1556
- || (mesh1._drawRenderer.id - mesh2._drawRenderer.id) // Program state
1557
- || (mesh1._material._state.id - mesh2._material._state.id) // Material state
1558
- || (mesh1._geometry._state.id - mesh2._geometry._state.id); // Geometry state
1559
- }
1560
-
1561
- /** @private */
1562
- rebuildRenderFlags() {
1563
- this.renderFlags.reset();
1564
- if (!this._getActiveSectionPlanes()) {
1565
- this.renderFlags.culled = true;
1566
- return;
1567
- }
1568
- this.renderFlags.numLayers = 1;
1569
- this.renderFlags.numVisibleLayers = 1;
1570
- this.renderFlags.visibleLayers[0] = 0;
1571
- this._updateRenderFlags();
1572
- }
1573
-
1574
- /**
1575
- * @private
1576
- */
1577
- _updateRenderFlags() {
1578
-
1579
- const renderFlags = this.renderFlags;
1580
- const state = this._state;
1581
-
1582
- if (state.xrayed) {
1583
- const xrayMaterial = this._xrayMaterial._state;
1584
- if (xrayMaterial.fill) {
1585
- if (xrayMaterial.fillAlpha < 1.0) {
1586
- renderFlags.xrayedSilhouetteTransparent = true;
1587
- } else {
1588
- renderFlags.xrayedSilhouetteOpaque = true;
1589
- }
1590
- }
1591
- if (xrayMaterial.edges) {
1592
- if (xrayMaterial.edgeAlpha < 1.0) {
1593
- renderFlags.xrayedEdgesTransparent = true;
1594
- } else {
1595
- renderFlags.xrayedEdgesOpaque = true;
1596
- }
1597
- }
1598
- } else {
1599
- const normalMaterial = this._material._state;
1600
- if (normalMaterial.alpha < 1.0 || state.colorize[3] < 1.0) {
1601
- renderFlags.colorTransparent = true;
1602
- } else {
1603
- renderFlags.colorOpaque = true;
1604
- }
1605
- if (state.edges) {
1606
- const edgeMaterial = this._edgeMaterial._state;
1607
- if (edgeMaterial.alpha < 1.0) {
1608
- renderFlags.edgesTransparent = true;
1609
- } else {
1610
- renderFlags.edgesOpaque = true;
1611
- }
1612
- }
1613
- if (state.selected) {
1614
- const selectedMaterial = this._selectedMaterial._state;
1615
- if (selectedMaterial.fill) {
1616
- if (selectedMaterial.fillAlpha < 1.0) {
1617
- renderFlags.selectedSilhouetteTransparent = true;
1618
- } else {
1619
- renderFlags.selectedSilhouetteOpaque = true;
1620
- }
1621
- }
1622
- if (selectedMaterial.edges) {
1623
- if (selectedMaterial.edgeAlpha < 1.0) {
1624
- renderFlags.selectedEdgesTransparent = true;
1625
- } else {
1626
- renderFlags.selectedEdgesOpaque = true;
1627
- }
1628
- }
1629
- } else if (state.highlighted) {
1630
- const highlightMaterial = this._highlightMaterial._state;
1631
- if (highlightMaterial.fill) {
1632
- if (highlightMaterial.fillAlpha < 1.0) {
1633
- renderFlags.highlightedSilhouetteTransparent = true;
1634
- } else {
1635
- renderFlags.highlightedSilhouetteOpaque = true;
1636
- }
1637
- }
1638
- if (highlightMaterial.edges) {
1639
- if (highlightMaterial.edgeAlpha < 1.0) {
1640
- renderFlags.highlightedEdgesTransparent = true;
1641
- } else {
1642
- renderFlags.highlightedEdgesOpaque = true;
1643
- }
1644
- }
1645
- }
1646
- }
1647
- }
1648
-
1649
- _getActiveSectionPlanes() {
1650
-
1651
- if (this._state.clippable) {
1652
-
1653
- const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;
1654
- const numSectionPlanes = sectionPlanes.length;
1655
-
1656
- if (numSectionPlanes > 0) {
1657
- for (let i = 0; i < numSectionPlanes; i++) {
1658
-
1659
- const sectionPlane = sectionPlanes[i];
1660
- const renderFlags = this.renderFlags;
1661
-
1662
- if (!sectionPlane.active) {
1663
- renderFlags.sectionPlanesActivePerLayer[i] = false;
1664
-
1665
- } else {
1666
-
1667
- if (this._state.rtcCenter) {
1668
-
1669
- const intersect = math.planeAABB3Intersect(sectionPlane.dir, sectionPlane.dist, this.aabb);
1670
- const outside = (intersect === -1);
1671
-
1672
- if (outside) {
1673
- return false;
1674
- }
1675
-
1676
- const intersecting = (intersect === 0);
1677
- renderFlags.sectionPlanesActivePerLayer[i] = intersecting;
1678
-
1679
- } else {
1680
- renderFlags.sectionPlanesActivePerLayer[i] = true;
1681
- }
1682
- }
1683
- }
1684
- }
1685
- }
1686
-
1687
- return true;
1688
- }
1689
-
1690
- /**
1691
- * Defines the appearance of this Mesh when xrayed.
1692
- *
1693
- * Mesh is xrayed when {@link Mesh#xrayed} is ````true````.
1694
- *
1695
- * Set to {@link Scene#xrayMaterial} by default.
1696
- *
1697
- * @type {EmphasisMaterial}
1698
- */
1699
- get xrayMaterial() {
1700
- return this._xrayMaterial;
1701
- }
1702
-
1703
- /**
1704
- * Defines the appearance of this Mesh when highlighted.
1705
- *
1706
- * Mesh is xrayed when {@link Mesh#highlighted} is ````true````.
1707
- *
1708
- * Set to {@link Scene#highlightMaterial} by default.
1709
- *
1710
- * @type {EmphasisMaterial}
1711
- */
1712
- get highlightMaterial() {
1713
- return this._highlightMaterial;
1714
- }
1715
-
1716
- /**
1717
- * Defines the appearance of this Mesh when selected.
1718
- *
1719
- * Mesh is xrayed when {@link Mesh#selected} is ````true````.
1720
- *
1721
- * Set to {@link Scene#selectedMaterial} by default.
1722
- *
1723
- * @type {EmphasisMaterial}
1724
- */
1725
- get selectedMaterial() {
1726
- return this._selectedMaterial;
1727
- }
1728
-
1729
- /**
1730
- * Defines the appearance of this Mesh when edges are enhanced.
1731
- *
1732
- * Mesh is xrayed when {@link Mesh#edges} is ````true````.
1733
- *
1734
- * Set to {@link Scene#edgeMaterial} by default.
1735
- *
1736
- * @type {EdgeMaterial}
1737
- */
1738
- get edgeMaterial() {
1739
- return this._edgeMaterial;
1740
- }
1741
-
1742
- // ---------------------- NORMAL RENDERING -----------------------------------
1743
-
1744
- /** @private */
1745
- drawColorOpaque(frameCtx) {
1746
- if (this._drawRenderer || (this._drawRenderer = DrawRenderer.get(this))) {
1747
- this._drawRenderer.drawMesh(frameCtx, this);
1748
- }
1749
- }
1750
-
1751
- /** @private */
1752
- drawColorTransparent(frameCtx) {
1753
- if (this._drawRenderer || (this._drawRenderer = DrawRenderer.get(this))) {
1754
- this._drawRenderer.drawMesh(frameCtx, this);
1755
- }
1756
- }
1757
-
1758
- // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------
1759
-
1760
- // TODO
1761
-
1762
- // ---------------------- EMPHASIS RENDERING -----------------------------------
1763
-
1764
- /** @private */
1765
- drawSilhouetteXRayed(frameCtx) {
1766
- if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {
1767
- this._emphasisFillRenderer.drawMesh(frameCtx, this, 0); // 0 == xray
1768
- }
1769
- }
1770
-
1771
- /** @private */
1772
- drawSilhouetteHighlighted(frameCtx) {
1773
- if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {
1774
- this._emphasisFillRenderer.drawMesh(frameCtx, this, 1); // 1 == highlight
1775
- }
1776
- }
1777
-
1778
- /** @private */
1779
- drawSilhouetteSelected(frameCtx) {
1780
- if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {
1781
- this._emphasisFillRenderer.drawMesh(frameCtx, this, 2); // 2 == selected
1782
- }
1783
- }
1784
-
1785
- // ---------------------- EDGES RENDERING -----------------------------------
1786
-
1787
- /** @private */
1788
- drawEdgesColorOpaque(frameCtx) {
1789
- if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {
1790
- this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 3); // 3 == edges
1791
- }
1792
- }
1793
-
1794
- /** @private */
1795
- drawEdgesColorTransparent(frameCtx) {
1796
- if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {
1797
- this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 3); // 3 == edges
1798
- }
1799
- }
1800
-
1801
- /** @private */
1802
- drawEdgesXRayed(frameCtx) {
1803
- if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {
1804
- this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 0); // 0 == xray
1805
- }
1806
- }
1807
-
1808
- /** @private */
1809
- drawEdgesHighlighted(frameCtx) {
1810
- if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {
1811
- this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 1); // 1 == highlight
1812
- }
1813
- }
1814
-
1815
- /** @private */
1816
- drawEdgesSelected(frameCtx) {
1817
- if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {
1818
- this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 2); // 2 == selected
1819
- }
1820
- }
1821
-
1822
- // ---------------------- OCCLUSION CULL RENDERING -----------------------------------
1823
-
1824
- /** @private */
1825
- drawOcclusion(frameCtx) {
1826
- if (this._occlusionRenderer || (this._occlusionRenderer = OcclusionRenderer.get(this))) {
1827
- this._occlusionRenderer.drawMesh(frameCtx, this);
1828
- }
1829
- }
1830
-
1831
- // ---------------------- SHADOW BUFFER RENDERING -----------------------------------
1832
-
1833
- /** @private */
1834
- drawShadow(frameCtx) {
1835
- if (this._shadowRenderer || (this._shadowRenderer = ShadowRenderer.get(this))) {
1836
- this._shadowRenderer.drawMesh(frameCtx, this);
1837
- }
1838
- }
1839
-
1840
- // ---------------------- PICKING RENDERING ----------------------------------
1841
-
1842
- /** @private */
1843
- drawPickMesh(frameCtx) {
1844
- if (this._pickMeshRenderer || (this._pickMeshRenderer = PickMeshRenderer.get(this))) {
1845
- this._pickMeshRenderer.drawMesh(frameCtx, this);
1846
- }
1847
- }
1848
-
1849
- /** @private
1850
- */
1851
- canPickTriangle() {
1852
- return this._geometry.isReadableGeometry; // VBOGeometry does not support surface picking because it has no geometry data in browser memory
1853
- }
1854
-
1855
- /** @private */
1856
- drawPickTriangles(frameCtx) {
1857
- if (this._pickTriangleRenderer || (this._pickTriangleRenderer = PickTriangleRenderer.get(this))) {
1858
- this._pickTriangleRenderer.drawMesh(frameCtx, this);
1859
- }
1860
- }
1861
-
1862
- /** @private */
1863
- pickTriangleSurface(pickViewMatrix, pickProjMatrix, pickResult) {
1864
- pickTriangleSurface(this, pickViewMatrix, pickProjMatrix, pickResult);
1865
- }
1866
-
1867
- /** @private */
1868
- drawPickVertices(frameCtx) {
1869
-
1870
- }
1871
-
1872
- /**
1873
- * @private
1874
- * @returns {PerformanceNode}
1875
- */
1876
- delegatePickedEntity() {
1877
- return this;
1878
- }
1879
-
1880
- //------------------------------------------------------------------------------------------------------------------
1881
- // Component members
1882
- //------------------------------------------------------------------------------------------------------------------
1883
-
1884
- /**
1885
- * Destroys this Mesh.
1886
- */
1887
- destroy() {
1888
- super.destroy(); // yjkkit.Object
1889
- this._putDrawRenderers();
1890
- this._putPickRenderers();
1891
- this._putOcclusionRenderer();
1892
- this.scene._renderer.putPickID(this._state.pickID); // TODO: somehow puch this down into yjkkit framework?
1893
- if (this._isObject) {
1894
- this.scene._deregisterObject(this);
1895
- if (this._visible) {
1896
- this.scene._objectVisibilityUpdated(this, false);
1897
- }
1898
- if (this._xrayed) {
1899
- this.scene._objectXRayedUpdated(this, false);
1900
- }
1901
- if (this._selected) {
1902
- this.scene._objectSelectedUpdated(this, false);
1903
- }
1904
- if (this._highlighted) {
1905
- this.scene._objectHighlightedUpdated(this, false);
1906
- }
1907
- this.scene._objectColorizeUpdated(this, false);
1908
- this.scene._objectOpacityUpdated(this, false);
1909
- this.scene._objectOffsetUpdated(this, false);
1910
- }
1911
- if (this._isModel) {
1912
- this.scene._deregisterModel(this);
1913
- }
1914
- this.glRedraw();
1915
- }
1916
-
1917
- }
1918
-
1919
-
1920
- const pickTriangleSurface = (function () {
1921
-
1922
- // Cached vars to avoid garbage collection
1923
-
1924
- const localRayOrigin = math.vec3();
1925
- const localRayDir = math.vec3();
1926
- const positionA = math.vec3();
1927
- const positionB = math.vec3();
1928
- const positionC = math.vec3();
1929
- const triangleVertices = math.vec3();
1930
- const position = math.vec4();
1931
- const worldPos = math.vec3();
1932
- const viewPos = math.vec3();
1933
- const bary = math.vec3();
1934
- const normalA = math.vec3();
1935
- const normalB = math.vec3();
1936
- const normalC = math.vec3();
1937
- const uva = math.vec3();
1938
- const uvb = math.vec3();
1939
- const uvc = math.vec3();
1940
- const tempVec4a = math.vec4();
1941
- const tempVec4b = math.vec4();
1942
- const tempVec4c = math.vec4();
1943
- const tempVec3 = math.vec3();
1944
- const tempVec3b = math.vec3();
1945
- const tempVec3c = math.vec3();
1946
- const tempVec3d = math.vec3();
1947
- const tempVec3e = math.vec3();
1948
- const tempVec3f = math.vec3();
1949
- const tempVec3g = math.vec3();
1950
- const tempVec3h = math.vec3();
1951
- const tempVec3i = math.vec3();
1952
- const tempVec3j = math.vec3();
1953
- const tempVec3k = math.vec3();
1954
-
1955
- return function (mesh, pickViewMatrix, pickProjMatrix, pickResult) {
1956
-
1957
- var primIndex = pickResult.primIndex;
1958
-
1959
- if (primIndex !== undefined && primIndex !== null && primIndex > -1) {
1960
-
1961
- const geometry = mesh.geometry._state;
1962
- const scene = mesh.scene;
1963
- const camera = scene.camera;
1964
- const canvas = scene.canvas;
1965
-
1966
- if (geometry.primitiveName === "triangles") {
1967
-
1968
- // Triangle picked; this only happens when the
1969
- // Mesh has a Geometry that has primitives of type "triangle"
1970
-
1971
- pickResult.primitive = "triangle";
1972
-
1973
- // Get the World-space positions of the triangle's vertices
1974
-
1975
- const i = primIndex; // Indicates the first triangle index in the indices array
1976
-
1977
- const indices = geometry.indices; // Indices into geometry arrays, not into shared VertexBufs
1978
- const positions = geometry.positions;
1979
-
1980
- let ia3;
1981
- let ib3;
1982
- let ic3;
1983
-
1984
- if (indices) {
1985
-
1986
- var ia = indices[i + 0];
1987
- var ib = indices[i + 1];
1988
- var ic = indices[i + 2];
1989
-
1990
- triangleVertices[0] = ia;
1991
- triangleVertices[1] = ib;
1992
- triangleVertices[2] = ic;
1993
-
1994
- pickResult.indices = triangleVertices;
1995
-
1996
- ia3 = ia * 3;
1997
- ib3 = ib * 3;
1998
- ic3 = ic * 3;
1999
-
2000
- } else {
2001
-
2002
- ia3 = i * 3;
2003
- ib3 = ia3 + 3;
2004
- ic3 = ib3 + 3;
2005
- }
2006
-
2007
- positionA[0] = positions[ia3 + 0];
2008
- positionA[1] = positions[ia3 + 1];
2009
- positionA[2] = positions[ia3 + 2];
2010
-
2011
- positionB[0] = positions[ib3 + 0];
2012
- positionB[1] = positions[ib3 + 1];
2013
- positionB[2] = positions[ib3 + 2];
2014
-
2015
- positionC[0] = positions[ic3 + 0];
2016
- positionC[1] = positions[ic3 + 1];
2017
- positionC[2] = positions[ic3 + 2];
2018
-
2019
- if (geometry.compressGeometry) {
2020
-
2021
- // Decompress vertex positions
2022
-
2023
- const positionsDecodeMatrix = geometry.positionsDecodeMatrix;
2024
- if (positionsDecodeMatrix) {
2025
- geometryCompressionUtils.decompressPosition(positionA, positionsDecodeMatrix, positionA);
2026
- geometryCompressionUtils.decompressPosition(positionB, positionsDecodeMatrix, positionB);
2027
- geometryCompressionUtils.decompressPosition(positionC, positionsDecodeMatrix, positionC);
2028
- }
2029
- }
2030
-
2031
- // Attempt to ray-pick the triangle in local space
2032
-
2033
- let canvasPos;
2034
-
2035
- if (pickResult.canvasPos) {
2036
- canvasPos = pickResult.canvasPos;
2037
- math.canvasPosToLocalRay(canvas.canvas, pickViewMatrix, pickProjMatrix, mesh.worldMatrix, canvasPos, localRayOrigin, localRayDir);
2038
-
2039
- } else if (pickResult.origin && pickResult.direction) {
2040
- math.worldRayToLocalRay(mesh.worldMatrix, pickResult.origin, pickResult.direction, localRayOrigin, localRayDir);
2041
- }
2042
-
2043
- math.normalizeVec3(localRayDir);
2044
- math.rayPlaneIntersect(localRayOrigin, localRayDir, positionA, positionB, positionC, position);
2045
-
2046
- // Get Local-space cartesian coordinates of the ray-triangle intersection
2047
-
2048
- pickResult.localPos = position;
2049
- pickResult.position = position;
2050
-
2051
- // Get interpolated World-space coordinates
2052
-
2053
- // Need to transform homogeneous coords
2054
-
2055
- tempVec4a[0] = position[0];
2056
- tempVec4a[1] = position[1];
2057
- tempVec4a[2] = position[2];
2058
- tempVec4a[3] = 1;
2059
-
2060
- // Get World-space cartesian coordinates of the ray-triangle intersection
2061
-
2062
- math.transformVec4(mesh.worldMatrix, tempVec4a, tempVec4b);
2063
-
2064
- worldPos[0] = tempVec4b[0];
2065
- worldPos[1] = tempVec4b[1];
2066
- worldPos[2] = tempVec4b[2];
2067
-
2068
- pickResult.worldPos = worldPos;
2069
-
2070
- // Get View-space cartesian coordinates of the ray-triangle intersection
2071
-
2072
- math.transformVec4(camera.matrix, tempVec4b, tempVec4c);
2073
-
2074
- viewPos[0] = tempVec4c[0];
2075
- viewPos[1] = tempVec4c[1];
2076
- viewPos[2] = tempVec4c[2];
2077
-
2078
- pickResult.viewPos = viewPos;
2079
-
2080
- // Get barycentric coordinates of the ray-triangle intersection
2081
-
2082
- math.cartesianToBarycentric(position, positionA, positionB, positionC, bary);
2083
-
2084
- pickResult.bary = bary;
2085
-
2086
- // Get interpolated normal vector
2087
-
2088
- const normals = geometry.normals;
2089
-
2090
- if (normals) {
2091
-
2092
- if (geometry.compressGeometry) {
2093
-
2094
- // Decompress vertex normals
2095
-
2096
- const ia2 = ia * 3;
2097
- const ib2 = ib * 3;
2098
- const ic2 = ic * 3;
2099
-
2100
- geometryCompressionUtils.decompressNormal(normals.subarray(ia2, ia2 + 2), normalA);
2101
- geometryCompressionUtils.decompressNormal(normals.subarray(ib2, ib2 + 2), normalB);
2102
- geometryCompressionUtils.decompressNormal(normals.subarray(ic2, ic2 + 2), normalC);
2103
-
2104
- } else {
2105
-
2106
- normalA[0] = normals[ia3];
2107
- normalA[1] = normals[ia3 + 1];
2108
- normalA[2] = normals[ia3 + 2];
2109
-
2110
- normalB[0] = normals[ib3];
2111
- normalB[1] = normals[ib3 + 1];
2112
- normalB[2] = normals[ib3 + 2];
2113
-
2114
- normalC[0] = normals[ic3];
2115
- normalC[1] = normals[ic3 + 1];
2116
- normalC[2] = normals[ic3 + 2];
2117
- }
2118
-
2119
- const normal = math.addVec3(math.addVec3(
2120
- math.mulVec3Scalar(normalA, bary[0], tempVec3),
2121
- math.mulVec3Scalar(normalB, bary[1], tempVec3b), tempVec3c),
2122
- math.mulVec3Scalar(normalC, bary[2], tempVec3d), tempVec3e);
2123
-
2124
- pickResult.worldNormal = math.normalizeVec3(math.transformVec3(mesh.worldNormalMatrix, normal, tempVec3f));
2125
- }
2126
-
2127
- // Get interpolated UV coordinates
2128
-
2129
- const uvs = geometry.uv;
2130
-
2131
- if (uvs) {
2132
-
2133
- uva[0] = uvs[(ia * 2)];
2134
- uva[1] = uvs[(ia * 2) + 1];
2135
-
2136
- uvb[0] = uvs[(ib * 2)];
2137
- uvb[1] = uvs[(ib * 2) + 1];
2138
-
2139
- uvc[0] = uvs[(ic * 2)];
2140
- uvc[1] = uvs[(ic * 2) + 1];
2141
-
2142
- if (geometry.compressGeometry) {
2143
-
2144
- // Decompress vertex UVs
2145
-
2146
- const uvDecodeMatrix = geometry.uvDecodeMatrix;
2147
- if (uvDecodeMatrix) {
2148
- geometryCompressionUtils.decompressUV(uva, uvDecodeMatrix, uva);
2149
- geometryCompressionUtils.decompressUV(uvb, uvDecodeMatrix, uvb);
2150
- geometryCompressionUtils.decompressUV(uvc, uvDecodeMatrix, uvc);
2151
- }
2152
- }
2153
-
2154
- pickResult.uv = math.addVec3(
2155
- math.addVec3(
2156
- math.mulVec2Scalar(uva, bary[0], tempVec3g),
2157
- math.mulVec2Scalar(uvb, bary[1], tempVec3h), tempVec3i),
2158
- math.mulVec2Scalar(uvc, bary[2], tempVec3j), tempVec3k);
2159
- }
2160
- }
2161
- }
2162
- }
2163
- })();
2164
-
2165
- export {Mesh};