@xeokit/xeokit-sdk 2.5.2-beta-10 → 2.5.2-beta-11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/package.json +1 -1
  2. package/src/src/extras/ContextMenu/ContextMenu.js +907 -0
  3. package/src/src/extras/ContextMenu/index.js +1 -0
  4. package/src/src/extras/MarqueePicker/MarqueePicker.js +352 -0
  5. package/src/src/extras/MarqueePicker/MarqueePickerMouseControl.js +174 -0
  6. package/src/src/extras/MarqueePicker/index.js +2 -0
  7. package/src/src/extras/PointerLens/PointerLens.js +312 -0
  8. package/src/src/extras/PointerLens/index.js +1 -0
  9. package/src/src/extras/collision/ObjectsKdTree3.js +149 -0
  10. package/src/src/extras/collision/index.js +1 -0
  11. package/src/src/extras/index.js +4 -0
  12. package/src/src/index.js +3 -0
  13. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +731 -0
  14. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +84 -0
  15. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js +435 -0
  16. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +406 -0
  17. package/src/src/plugins/AngleMeasurementsPlugin/index.js +3 -0
  18. package/src/src/plugins/AnnotationsPlugin/Annotation.js +368 -0
  19. package/src/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +583 -0
  20. package/src/src/plugins/AnnotationsPlugin/index.js +1 -0
  21. package/src/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +333 -0
  22. package/src/src/plugins/AxisGizmoPlugin/index.js +1 -0
  23. package/src/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +977 -0
  24. package/src/src/plugins/BCFViewpointsPlugin/index.js +1 -0
  25. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +29 -0
  26. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +751 -0
  27. package/src/src/plugins/CityJSONLoaderPlugin/index.js +1 -0
  28. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +963 -0
  29. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +84 -0
  30. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js +399 -0
  31. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +505 -0
  32. package/src/src/plugins/DistanceMeasurementsPlugin/index.js +3 -0
  33. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +639 -0
  34. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +436 -0
  35. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +247 -0
  36. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +167 -0
  37. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +1 -0
  38. package/src/src/plugins/FastNavPlugin/FastNavPlugin.js +429 -0
  39. package/src/src/plugins/FastNavPlugin/index.js +1 -0
  40. package/src/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +140 -0
  41. package/src/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +421 -0
  42. package/src/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +669 -0
  43. package/src/src/plugins/GLTFLoaderPlugin/index.js +2 -0
  44. package/src/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +58 -0
  45. package/src/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +563 -0
  46. package/src/src/plugins/LASLoaderPlugin/index.js +1 -0
  47. package/src/src/plugins/LASLoaderPlugin/loadLASHeader.js +183 -0
  48. package/src/src/plugins/NavCubePlugin/CubeTextureCanvas.js +290 -0
  49. package/src/src/plugins/NavCubePlugin/NavCubePlugin.js +753 -0
  50. package/src/src/plugins/NavCubePlugin/index.js +1 -0
  51. package/src/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +145 -0
  52. package/src/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +777 -0
  53. package/src/src/plugins/OBJLoaderPlugin/index.js +1 -0
  54. package/src/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +33 -0
  55. package/src/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +274 -0
  56. package/src/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +313 -0
  57. package/src/src/plugins/STLLoaderPlugin/index.js +2 -0
  58. package/src/src/plugins/SectionPlanesPlugin/Control.js +1328 -0
  59. package/src/src/plugins/SectionPlanesPlugin/Overview.js +249 -0
  60. package/src/src/plugins/SectionPlanesPlugin/Plane.js +169 -0
  61. package/src/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +404 -0
  62. package/src/src/plugins/SectionPlanesPlugin/index.js +1 -0
  63. package/src/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +134 -0
  64. package/src/src/plugins/SkyboxesPlugin/index.js +1 -0
  65. package/src/src/plugins/StoreyViewsPlugin/Storey.js +84 -0
  66. package/src/src/plugins/StoreyViewsPlugin/StoreyMap.js +57 -0
  67. package/src/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +773 -0
  68. package/src/src/plugins/StoreyViewsPlugin/index.js +1 -0
  69. package/src/src/plugins/TreeViewPlugin/RenderService.js +169 -0
  70. package/src/src/plugins/TreeViewPlugin/TreeViewNode.js +101 -0
  71. package/src/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1370 -0
  72. package/src/src/plugins/TreeViewPlugin/index.js +1 -0
  73. package/src/src/plugins/ViewCullPlugin/ViewCullPlugin.js +295 -0
  74. package/src/src/plugins/ViewCullPlugin/index.js +1 -0
  75. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +58 -0
  76. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +942 -0
  77. package/src/src/plugins/WebIFCLoaderPlugin/index.js +1 -0
  78. package/src/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +95 -0
  79. package/src/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +1194 -0
  80. package/src/src/plugins/XKTLoaderPlugin/index.js +2 -0
  81. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +169 -0
  82. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +660 -0
  83. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV11.js +663 -0
  84. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +230 -0
  85. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +223 -0
  86. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +283 -0
  87. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +246 -0
  88. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +301 -0
  89. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +439 -0
  90. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +563 -0
  91. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +518 -0
  92. package/src/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +2 -0
  93. package/src/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +238 -0
  94. package/src/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +1279 -0
  95. package/src/src/plugins/XML3DLoaderPlugin/index.js +1 -0
  96. package/src/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +11 -0
  97. package/src/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +2060 -0
  98. package/src/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +2155 -0
  99. package/src/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +1002 -0
  100. package/src/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +64 -0
  101. package/src/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +153 -0
  102. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +267 -0
  103. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +553 -0
  104. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +991 -0
  105. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +49 -0
  106. package/src/src/plugins/index.js +21 -0
  107. package/src/src/plugins/lib/culling/ObjectCullStates.js +208 -0
  108. package/src/src/plugins/lib/earcut.js +677 -0
  109. package/src/src/plugins/lib/html/Dot.js +179 -0
  110. package/src/src/plugins/lib/html/Label.js +174 -0
  111. package/src/src/plugins/lib/html/Wire.js +220 -0
  112. package/src/src/viewer/Configs.js +127 -0
  113. package/src/src/viewer/Plugin.js +233 -0
  114. package/src/src/viewer/Viewer.js +542 -0
  115. package/src/src/viewer/index.js +5 -0
  116. package/src/src/viewer/localization/LocaleService.js +475 -0
  117. package/src/src/viewer/metadata/IFCObjectDefaultColors.js +163 -0
  118. package/src/src/viewer/metadata/IFCObjectDefaults.js +17 -0
  119. package/src/src/viewer/metadata/MetaModel.js +414 -0
  120. package/src/src/viewer/metadata/MetaObject.js +223 -0
  121. package/src/src/viewer/metadata/MetaScene.js +336 -0
  122. package/src/src/viewer/metadata/Property.js +55 -0
  123. package/src/src/viewer/metadata/PropertySet.js +77 -0
  124. package/src/src/viewer/scene/Bitmap/Bitmap.js +473 -0
  125. package/src/src/viewer/scene/Bitmap/index.js +1 -0
  126. package/src/src/viewer/scene/CameraControl/CameraControl.js +1750 -0
  127. package/src/src/viewer/scene/CameraControl/lib/CameraUpdater.js +312 -0
  128. package/src/src/viewer/scene/CameraControl/lib/controllers/PanController.js +112 -0
  129. package/src/src/viewer/scene/CameraControl/lib/controllers/PickController.js +265 -0
  130. package/src/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +384 -0
  131. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +122 -0
  132. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +183 -0
  133. package/src/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +68 -0
  134. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +345 -0
  135. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +376 -0
  136. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +288 -0
  137. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +235 -0
  138. package/src/src/viewer/scene/Component.js +915 -0
  139. package/src/src/viewer/scene/Entity.js +502 -0
  140. package/src/src/viewer/scene/ImagePlane/ImagePlane.js +570 -0
  141. package/src/src/viewer/scene/ImagePlane/index.js +1 -0
  142. package/src/src/viewer/scene/LineSet/LineSet.js +163 -0
  143. package/src/src/viewer/scene/LineSet/index.js +1 -0
  144. package/src/src/viewer/scene/camera/Camera.js +912 -0
  145. package/src/src/viewer/scene/camera/CameraFlightAnimation.js +669 -0
  146. package/src/src/viewer/scene/camera/CameraPath.js +194 -0
  147. package/src/src/viewer/scene/camera/CameraPathAnimation.js +326 -0
  148. package/src/src/viewer/scene/camera/CustomProjection.js +149 -0
  149. package/src/src/viewer/scene/camera/Frustum.js +316 -0
  150. package/src/src/viewer/scene/camera/Ortho.js +286 -0
  151. package/src/src/viewer/scene/camera/Perspective.js +304 -0
  152. package/src/src/viewer/scene/camera/index.js +2 -0
  153. package/src/src/viewer/scene/canvas/Canvas.js +490 -0
  154. package/src/src/viewer/scene/canvas/Spinner.js +323 -0
  155. package/src/src/viewer/scene/constants/constants.js +371 -0
  156. package/src/src/viewer/scene/core.js +268 -0
  157. package/src/src/viewer/scene/geometry/Geometry.js +33 -0
  158. package/src/src/viewer/scene/geometry/ReadableGeometry.js +682 -0
  159. package/src/src/viewer/scene/geometry/VBOGeometry.js +319 -0
  160. package/src/src/viewer/scene/geometry/builders/buildBoxGeometry.js +238 -0
  161. package/src/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +106 -0
  162. package/src/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +271 -0
  163. package/src/src/viewer/scene/geometry/builders/buildGridGeometry.js +102 -0
  164. package/src/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +168 -0
  165. package/src/src/viewer/scene/geometry/builders/buildSphereGeometry.js +161 -0
  166. package/src/src/viewer/scene/geometry/builders/buildTorusGeometry.js +172 -0
  167. package/src/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +1721 -0
  168. package/src/src/viewer/scene/geometry/builders/index.js +8 -0
  169. package/src/src/viewer/scene/geometry/index.js +4 -0
  170. package/src/src/viewer/scene/geometry/loaders/index.js +2 -0
  171. package/src/src/viewer/scene/geometry/loaders/load3DSGeometry.js +103 -0
  172. package/src/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +130 -0
  173. package/src/src/viewer/scene/index.js +21 -0
  174. package/src/src/viewer/scene/input/Input.js +1333 -0
  175. package/src/src/viewer/scene/libs/k3d.js +1032 -0
  176. package/src/src/viewer/scene/lights/AmbientLight.js +175 -0
  177. package/src/src/viewer/scene/lights/CubeTexture.js +156 -0
  178. package/src/src/viewer/scene/lights/DirLight.js +314 -0
  179. package/src/src/viewer/scene/lights/Light.js +29 -0
  180. package/src/src/viewer/scene/lights/LightMap.js +77 -0
  181. package/src/src/viewer/scene/lights/PointLight.js +395 -0
  182. package/src/src/viewer/scene/lights/ReflectionMap.js +79 -0
  183. package/src/src/viewer/scene/lights/Shadow.js +138 -0
  184. package/src/src/viewer/scene/lights/index.js +5 -0
  185. package/src/src/viewer/scene/marker/Marker.js +383 -0
  186. package/src/src/viewer/scene/marker/SpriteMarker.js +356 -0
  187. package/src/src/viewer/scene/marker/index.js +2 -0
  188. package/src/src/viewer/scene/materials/EdgeMaterial.js +359 -0
  189. package/src/src/viewer/scene/materials/EmphasisMaterial.js +613 -0
  190. package/src/src/viewer/scene/materials/Fresnel.js +222 -0
  191. package/src/src/viewer/scene/materials/LambertMaterial.js +378 -0
  192. package/src/src/viewer/scene/materials/LinesMaterial.js +169 -0
  193. package/src/src/viewer/scene/materials/Material.js +39 -0
  194. package/src/src/viewer/scene/materials/MetallicMaterial.js +820 -0
  195. package/src/src/viewer/scene/materials/PhongMaterial.js +860 -0
  196. package/src/src/viewer/scene/materials/PointsMaterial.js +409 -0
  197. package/src/src/viewer/scene/materials/SpecularMaterial.js +807 -0
  198. package/src/src/viewer/scene/materials/Texture.js +513 -0
  199. package/src/src/viewer/scene/materials/index.js +8 -0
  200. package/src/src/viewer/scene/math/Frustum.js +118 -0
  201. package/src/src/viewer/scene/math/buildEdgeIndices.js +162 -0
  202. package/src/src/viewer/scene/math/geometryCompressionUtils.js +365 -0
  203. package/src/src/viewer/scene/math/index.js +3 -0
  204. package/src/src/viewer/scene/math/math.js +5386 -0
  205. package/src/src/viewer/scene/math/rtcCoords.js +139 -0
  206. package/src/src/viewer/scene/mementos/CameraMemento.js +200 -0
  207. package/src/src/viewer/scene/mementos/ModelMemento.js +263 -0
  208. package/src/src/viewer/scene/mementos/ObjectsMemento.js +259 -0
  209. package/src/src/viewer/scene/mementos/index.js +3 -0
  210. package/src/src/viewer/scene/mesh/Mesh.js +2202 -0
  211. package/src/src/viewer/scene/mesh/draw/DrawRenderer.js +996 -0
  212. package/src/src/viewer/scene/mesh/draw/DrawShaderSource.js +1570 -0
  213. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +259 -0
  214. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +159 -0
  215. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +286 -0
  216. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +262 -0
  217. package/src/src/viewer/scene/mesh/index.js +1 -0
  218. package/src/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +217 -0
  219. package/src/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +157 -0
  220. package/src/src/viewer/scene/mesh/pick/PickMeshRenderer.js +223 -0
  221. package/src/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +151 -0
  222. package/src/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +200 -0
  223. package/src/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +124 -0
  224. package/src/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
  225. package/src/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +98 -0
  226. package/src/src/viewer/scene/metriqs/Metriqs.js +259 -0
  227. package/src/src/viewer/scene/model/ENTITY_FLAGS.js +21 -0
  228. package/src/src/viewer/scene/model/PerformanceModel.js +26 -0
  229. package/src/src/viewer/scene/model/RENDER_PASSES.js +34 -0
  230. package/src/src/viewer/scene/model/SceneModel.js +4018 -0
  231. package/src/src/viewer/scene/model/SceneModelEntity.js +715 -0
  232. package/src/src/viewer/scene/model/SceneModelMesh.js +341 -0
  233. package/src/src/viewer/scene/model/SceneModelTexture.js +38 -0
  234. package/src/src/viewer/scene/model/SceneModelTextureSet.js +59 -0
  235. package/src/src/viewer/scene/model/SceneModelTransform.js +404 -0
  236. package/src/src/viewer/scene/model/VBOSceneModel.js +26 -0
  237. package/src/src/viewer/scene/model/calculateUniquePositions.js +126 -0
  238. package/src/src/viewer/scene/model/compression.js +227 -0
  239. package/src/src/viewer/scene/model/dtx/BindableDataTexture.js +31 -0
  240. package/src/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +27 -0
  241. package/src/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +891 -0
  242. package/src/src/viewer/scene/model/dtx/lines/DTXLinesState.js +46 -0
  243. package/src/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +411 -0
  244. package/src/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +49 -0
  245. package/src/src/viewer/scene/model/dtx/lines/rebucketPositions.js +208 -0
  246. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +389 -0
  247. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +65 -0
  248. package/src/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +1322 -0
  249. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +46 -0
  250. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +250 -0
  251. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +518 -0
  252. package/src/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +54 -0
  253. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +619 -0
  254. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +464 -0
  255. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +414 -0
  256. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +422 -0
  257. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +345 -0
  258. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +436 -0
  259. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +462 -0
  260. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +436 -0
  261. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +455 -0
  262. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +440 -0
  263. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +307 -0
  264. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +465 -0
  265. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +466 -0
  266. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +427 -0
  267. package/src/src/viewer/scene/model/index.js +5 -0
  268. package/src/src/viewer/scene/model/rebucketPositions.js +354 -0
  269. package/src/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
  270. package/src/src/viewer/scene/model/vbo/VBORenderer.js +646 -0
  271. package/src/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +699 -0
  272. package/src/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +19 -0
  273. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +316 -0
  274. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +114 -0
  275. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +99 -0
  276. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +124 -0
  277. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +311 -0
  278. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +309 -0
  279. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +24 -0
  280. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js +20 -0
  281. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +718 -0
  282. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +24 -0
  283. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +168 -0
  284. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +136 -0
  285. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +156 -0
  286. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +148 -0
  287. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +144 -0
  288. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +107 -0
  289. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +146 -0
  290. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +309 -0
  291. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +303 -0
  292. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +24 -0
  293. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +1257 -0
  294. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +131 -0
  295. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +135 -0
  296. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
  297. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +375 -0
  298. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +34 -0
  299. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +238 -0
  300. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +270 -0
  301. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  302. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +235 -0
  303. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +139 -0
  304. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +125 -0
  305. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  306. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +144 -0
  307. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +130 -0
  308. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +121 -0
  309. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +131 -0
  310. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +107 -0
  311. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +136 -0
  312. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +311 -0
  313. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +308 -0
  314. package/src/src/viewer/scene/model/vbo/float16.js +760 -0
  315. package/src/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +704 -0
  316. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +148 -0
  317. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +26 -0
  318. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +139 -0
  319. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +127 -0
  320. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +331 -0
  321. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +316 -0
  322. package/src/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +728 -0
  323. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +174 -0
  324. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +156 -0
  325. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +149 -0
  326. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +170 -0
  327. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +152 -0
  328. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +26 -0
  329. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +174 -0
  330. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +119 -0
  331. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +154 -0
  332. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +330 -0
  333. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +311 -0
  334. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +150 -0
  335. package/src/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +1190 -0
  336. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +136 -0
  337. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +137 -0
  338. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
  339. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +376 -0
  340. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +253 -0
  341. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +278 -0
  342. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  343. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +244 -0
  344. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +130 -0
  345. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +29 -0
  346. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +138 -0
  347. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +128 -0
  348. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  349. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +149 -0
  350. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +136 -0
  351. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +130 -0
  352. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +145 -0
  353. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +113 -0
  354. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +139 -0
  355. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +342 -0
  356. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +325 -0
  357. package/src/src/viewer/scene/nodes/Node.js +1383 -0
  358. package/src/src/viewer/scene/nodes/index.js +1 -0
  359. package/src/src/viewer/scene/paths/CubicBezierCurve.js +194 -0
  360. package/src/src/viewer/scene/paths/Curve.js +183 -0
  361. package/src/src/viewer/scene/paths/Path.js +239 -0
  362. package/src/src/viewer/scene/paths/QuadraticBezierCurve.js +161 -0
  363. package/src/src/viewer/scene/paths/SplineCurve.js +133 -0
  364. package/src/src/viewer/scene/paths/index.js +5 -0
  365. package/src/src/viewer/scene/postfx/SAO.js +543 -0
  366. package/src/src/viewer/scene/scene/Scene.js +2802 -0
  367. package/src/src/viewer/scene/sectionPlane/SectionPlane.js +198 -0
  368. package/src/src/viewer/scene/sectionPlane/SectionPlaneCache.js +101 -0
  369. package/src/src/viewer/scene/sectionPlane/index.js +1 -0
  370. package/src/src/viewer/scene/skybox/Skybox.js +123 -0
  371. package/src/src/viewer/scene/skybox/index.js +1 -0
  372. package/src/src/viewer/scene/stats.js +44 -0
  373. package/src/src/viewer/scene/utils/Cache.js +29 -0
  374. package/src/src/viewer/scene/utils/FileLoader.js +161 -0
  375. package/src/src/viewer/scene/utils/Loader.js +55 -0
  376. package/src/src/viewer/scene/utils/LoadingManager.js +86 -0
  377. package/src/src/viewer/scene/utils/Map.js +45 -0
  378. package/src/src/viewer/scene/utils/Queue.js +56 -0
  379. package/src/src/viewer/scene/utils/WorkerPool.js +73 -0
  380. package/src/src/viewer/scene/utils/index.js +6 -0
  381. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +650 -0
  382. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +1 -0
  383. package/src/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +31 -0
  384. package/src/src/viewer/scene/utils/textureTranscoders/index.js +2 -0
  385. package/src/src/viewer/scene/utils.js +453 -0
  386. package/src/src/viewer/scene/viewport/Viewport.js +212 -0
  387. package/src/src/viewer/scene/webgl/ArrayBuf.js +121 -0
  388. package/src/src/viewer/scene/webgl/Attribute.js +23 -0
  389. package/src/src/viewer/scene/webgl/Drawable.js +270 -0
  390. package/src/src/viewer/scene/webgl/FrameContext.js +313 -0
  391. package/src/src/viewer/scene/webgl/PickResult.js +364 -0
  392. package/src/src/viewer/scene/webgl/Pickable.js +69 -0
  393. package/src/src/viewer/scene/webgl/Program.js +181 -0
  394. package/src/src/viewer/scene/webgl/RenderBuffer.js +378 -0
  395. package/src/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
  396. package/src/src/viewer/scene/webgl/RenderFlags.js +203 -0
  397. package/src/src/viewer/scene/webgl/RenderState.js +40 -0
  398. package/src/src/viewer/scene/webgl/Renderer.js +1781 -0
  399. package/src/src/viewer/scene/webgl/Sampler.js +18 -0
  400. package/src/src/viewer/scene/webgl/Shader.js +49 -0
  401. package/src/src/viewer/scene/webgl/Texture2D.js +442 -0
  402. package/src/src/viewer/scene/webgl/convertConstant.js +244 -0
  403. package/src/src/viewer/scene/webgl/getExtension.js +32 -0
  404. package/src/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +214 -0
  405. package/src/src/viewer/scene/webgl/occlusion/OcclusionTester.js +426 -0
  406. package/src/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
  407. package/src/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +376 -0
  408. package/src/src/viewer/scene/webgl/webglEnums.js +61 -0
  409. package/src/src/viewer/scene/webglInfo.js +47 -0
  410. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +131 -0
  411. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +135 -0
  412. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
  413. package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +375 -0
  414. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +34 -0
  415. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +238 -0
  416. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +270 -0
  417. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  418. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +235 -0
  419. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +139 -0
  420. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +125 -0
  421. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  422. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +144 -0
  423. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +130 -0
  424. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +121 -0
  425. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +131 -0
  426. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +107 -0
  427. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +136 -0
  428. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +311 -0
  429. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +308 -0
  430. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +136 -0
  431. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +137 -0
  432. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
  433. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +376 -0
  434. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +253 -0
  435. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +278 -0
  436. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  437. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +244 -0
  438. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +130 -0
  439. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +29 -0
  440. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +138 -0
  441. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +128 -0
  442. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  443. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +149 -0
  444. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +136 -0
  445. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +130 -0
  446. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +145 -0
  447. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +113 -0
  448. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +139 -0
  449. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +342 -0
  450. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +325 -0
@@ -0,0 +1,404 @@
1
+ import {math} from "../math/index.js";
2
+
3
+ const angleAxis = math.vec4(4);
4
+ const q1 = math.vec4();
5
+ const q2 = math.vec4();
6
+ const xAxis = math.vec3([1, 0, 0]);
7
+ const yAxis = math.vec3([0, 1, 0]);
8
+ const zAxis = math.vec3([0, 0, 1]);
9
+
10
+ const veca = math.vec3(3);
11
+ const vecb = math.vec3(3);
12
+
13
+ const identityMat = math.identityMat4();
14
+
15
+ /**
16
+ * A dynamically-updatable transform within a {@link SceneModel}.
17
+ *
18
+ * * Can be composed into hierarchies
19
+ * * Shared by multiple {@link SceneModelMesh}es
20
+ * * Created with {@link SceneModel#createTransform}
21
+ * * Stored by ID in {@link SceneModel#transforms}
22
+ * * Referenced by {@link SceneModelMesh#transform}
23
+ */
24
+ export class SceneModelTransform {
25
+
26
+ /**
27
+ * @private
28
+ */
29
+ constructor(cfg) {
30
+ this._model = cfg.model;
31
+
32
+ /**
33
+ * Unique ID of this SceneModelTransform.
34
+ *
35
+ * The SceneModelTransform is registered against this ID in {@link SceneModel#transforms}.
36
+ */
37
+ this.id = cfg.id;
38
+
39
+ this._parentTransform = cfg.parent;
40
+ this._childTransforms = [];
41
+ this._meshes = [];
42
+ this._scale = new Float32Array([1,1,1]);
43
+ this._quaternion = math.identityQuaternion(new Float32Array(4));
44
+ this._rotation = new Float32Array(3);
45
+ this._position = new Float32Array(3);
46
+ this._localMatrix = math.identityMat4(new Float32Array(16));
47
+ this._worldMatrix = math.identityMat4(new Float32Array(16));
48
+ this._localMatrixDirty = true;
49
+ this._worldMatrixDirty = true;
50
+
51
+ if (cfg.matrix) {
52
+ this.matrix = cfg.matrix;
53
+ } else {
54
+ this.scale = cfg.scale;
55
+ this.position = cfg.position;
56
+ if (cfg.quaternion) {
57
+ } else {
58
+ this.rotation = cfg.rotation;
59
+ }
60
+ }
61
+ if (cfg.parent) {
62
+ cfg.parent._addChildTransform(this);
63
+ }
64
+ }
65
+
66
+ _addChildTransform(childTransform) {
67
+ this._childTransforms.push(childTransform);
68
+ childTransform._parentTransform = this;
69
+ childTransform._setWorldMatrixDirty();
70
+ childTransform._setAABBDirty();
71
+ }
72
+
73
+ _addMesh(mesh) {
74
+ this._meshes.push(mesh);
75
+ mesh.transform = this;
76
+ // childTransform._setWorldMatrixDirty();
77
+ // childTransform._setAABBDirty();
78
+ }
79
+
80
+ /**
81
+ * The optional parent SceneModelTransform.
82
+ *
83
+ * @type {SceneModelTransform}
84
+ */
85
+ get parentTransform() {
86
+ return this._parentTransform;
87
+ }
88
+
89
+ /**
90
+ * The {@link SceneModelMesh}es transformed by this SceneModelTransform.
91
+ *
92
+ * @returns {[]}
93
+ */
94
+ get meshes() {
95
+ return this._meshes;
96
+ }
97
+
98
+ /**
99
+ * Sets the SceneModelTransform's local translation.
100
+ *
101
+ * Default value is ````[0,0,0]````.
102
+ *
103
+ * @type {Number[]}
104
+ */
105
+ set position(value) {
106
+ this._position.set(value || [0, 0, 0]);
107
+ this._setLocalMatrixDirty();
108
+ this._model.glRedraw();
109
+ }
110
+
111
+ /**
112
+ * Gets the SceneModelTransform's translation.
113
+ *
114
+ * Default value is ````[0,0,0]````.
115
+ *
116
+ * @type {Number[]}
117
+ */
118
+ get position() {
119
+ return this._position;
120
+ }
121
+
122
+ /**
123
+ * Sets the SceneModelTransform's rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
124
+ *
125
+ * Default value is ````[0,0,0]````.
126
+ *
127
+ * @type {Number[]}
128
+ */
129
+ set rotation(value) {
130
+ this._rotation.set(value || [0, 0, 0]);
131
+ math.eulerToQuaternion(this._rotation, "XYZ", this._quaternion);
132
+ this._setLocalMatrixDirty();
133
+ this._model.glRedraw();
134
+ }
135
+
136
+ /**
137
+ * Gets the SceneModelTransform's rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.
138
+ *
139
+ * Default value is ````[0,0,0]````.
140
+ *
141
+ * @type {Number[]}
142
+ */
143
+ get rotation() {
144
+ return this._rotation;
145
+ }
146
+
147
+ /**
148
+ * Sets the SceneModelTransform's rotation quaternion.
149
+ *
150
+ * Default value is ````[0,0,0,1]````.
151
+ *
152
+ * @type {Number[]}
153
+ */
154
+ set quaternion(value) {
155
+ this._quaternion.set(value || [0, 0, 0, 1]);
156
+ math.quaternionToEuler(this._quaternion, "XYZ", this._rotation);
157
+ this._setLocalMatrixDirty();
158
+ this._model.glRedraw();
159
+ }
160
+
161
+ /**
162
+ * Gets the SceneModelTransform's rotation quaternion.
163
+ *
164
+ * Default value is ````[0,0,0,1]````.
165
+ *
166
+ * @type {Number[]}
167
+ */
168
+ get quaternion() {
169
+ return this._quaternion;
170
+ }
171
+
172
+ /**
173
+ * Sets the SceneModelTransform's scale.
174
+ *
175
+ * Default value is ````[1,1,1]````.
176
+ *
177
+ * @type {Number[]}
178
+ */
179
+ set scale(value) {
180
+ this._scale.set(value || [1, 1, 1]);
181
+ this._setLocalMatrixDirty();
182
+ this._model.glRedraw();
183
+ }
184
+
185
+ /**
186
+ * Gets the SceneModelTransform's scale.
187
+ *
188
+ * Default value is ````[1,1,1]````.
189
+ *
190
+ * @type {Number[]}
191
+ */
192
+ get scale() {
193
+ return this._scale;
194
+ }
195
+
196
+ /**
197
+ * Sets the SceneModelTransform's transform matrix.
198
+ *
199
+ * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.
200
+ *
201
+ * @type {Number[]}
202
+ */
203
+ set matrix(value) {
204
+ if (!this._localMatrix) {
205
+ this._localMatrix = math.identityMat4();
206
+ }
207
+ this._localMatrix.set(value || identityMat);
208
+ math.decomposeMat4(this._localMatrix, this._position, this._quaternion, this._scale);
209
+ this._localMatrixDirty = false;
210
+ this._transformDirty();
211
+ this._model.glRedraw();
212
+ }
213
+
214
+ /**
215
+ * Gets the SceneModelTransform's transform matrix.
216
+ *
217
+ * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.
218
+ *
219
+ * @type {Number[]}
220
+ */
221
+ get matrix() {
222
+ if (this._localMatrixDirty) {
223
+ if (!this._localMatrix) {
224
+ this._localMatrix = math.identityMat4();
225
+ }
226
+ math.composeMat4(this._position, this._quaternion, this._scale, this._localMatrix);
227
+ this._localMatrixDirty = false;
228
+ }
229
+ return this._localMatrix;
230
+ }
231
+
232
+ /**
233
+ * Gets the SceneModelTransform's World matrix.
234
+ *
235
+ * @property worldMatrix
236
+ * @type {Number[]}
237
+ */
238
+ get worldMatrix() {
239
+ if (this._worldMatrixDirty) {
240
+ this._buildWorldMatrix();
241
+ }
242
+ return this._worldMatrix;
243
+ }
244
+
245
+ /**
246
+ * Rotates the SceneModelTransform about the given axis by the given increment.
247
+ *
248
+ * @param {Number[]} axis Local axis about which to rotate.
249
+ * @param {Number} angle Angle increment in degrees.
250
+ */
251
+ rotate(axis, angle) {
252
+ angleAxis[0] = axis[0];
253
+ angleAxis[1] = axis[1];
254
+ angleAxis[2] = axis[2];
255
+ angleAxis[3] = angle * math.DEGTORAD;
256
+ math.angleAxisToQuaternion(angleAxis, q1);
257
+ math.mulQuaternions(this.quaternion, q1, q2);
258
+ this.quaternion = q2;
259
+ this._setLocalMatrixDirty();
260
+ this._model.glRedraw();
261
+ return this;
262
+ }
263
+
264
+ /**
265
+ * Rotates the SceneModelTransform about the given World-space axis by the given increment.
266
+ *
267
+ * @param {Number[]} axis Local axis about which to rotate.
268
+ * @param {Number} angle Angle increment in degrees.
269
+ */
270
+ rotateOnWorldAxis(axis, angle) {
271
+ angleAxis[0] = axis[0];
272
+ angleAxis[1] = axis[1];
273
+ angleAxis[2] = axis[2];
274
+ angleAxis[3] = angle * math.DEGTORAD;
275
+ math.angleAxisToQuaternion(angleAxis, q1);
276
+ math.mulQuaternions(q1, this.quaternion, q1);
277
+ //this.quaternion.premultiply(q1);
278
+ return this;
279
+ }
280
+
281
+ /**
282
+ * Rotates the SceneModelTransform about the local X-axis by the given increment.
283
+ *
284
+ * @param {Number} angle Angle increment in degrees.
285
+ */
286
+ rotateX(angle) {
287
+ return this.rotate(xAxis, angle);
288
+ }
289
+
290
+ /**
291
+ * Rotates the SceneModelTransform about the local Y-axis by the given increment.
292
+ *
293
+ * @param {Number} angle Angle increment in degrees.
294
+ */
295
+ rotateY(angle) {
296
+ return this.rotate(yAxis, angle);
297
+ }
298
+
299
+ /**
300
+ * Rotates the SceneModelTransform about the local Z-axis by the given increment.
301
+ *
302
+ * @param {Number} angle Angle increment in degrees.
303
+ */
304
+ rotateZ(angle) {
305
+ return this.rotate(zAxis, angle);
306
+ }
307
+
308
+ /**
309
+ * Translates the SceneModelTransform along the local axis by the given increment.
310
+ *
311
+ * @param {Number[]} axis Normalized local space 3D vector along which to translate.
312
+ * @param {Number} distance Distance to translate along the vector.
313
+ */
314
+ translate(axis) {
315
+ this._position[0] += axis[0];
316
+ this._position[1] += axis[1];
317
+ this._position[2] += axis[2];
318
+ this._setLocalMatrixDirty();
319
+ this._model.glRedraw();
320
+ return this;
321
+ }
322
+
323
+ /**
324
+ * Translates the SceneModelTransform along the local X-axis by the given increment.
325
+ *
326
+ * @param {Number} distance Distance to translate along the X-axis.
327
+ */
328
+ translateX(distance) {
329
+ this._position[0] += distance;
330
+ this._setLocalMatrixDirty();
331
+ this._model.glRedraw();
332
+ return this;
333
+ }
334
+
335
+ /**
336
+ * Translates the SceneModelTransform along the local Y-axis by the given increment.
337
+ *
338
+ * @param {Number} distance Distance to translate along the Y-axis.
339
+ */
340
+ translateY(distance) {
341
+ this._position[1] += distance;
342
+ this._setLocalMatrixDirty();
343
+ this._model.glRedraw();
344
+ return this;
345
+ }
346
+
347
+ /**
348
+ * Translates the SceneModelTransform along the local Z-axis by the given increment.
349
+ *
350
+ * @param {Number} distance Distance to translate along the Z-axis.
351
+ */
352
+ translateZ(distance) {
353
+ this._position[2] += distance;
354
+ this._setLocalMatrixDirty();
355
+ this._model.glRedraw();
356
+ return this;
357
+ }
358
+
359
+ _setLocalMatrixDirty() {
360
+ this._localMatrixDirty = true;
361
+ this._transformDirty();
362
+ }
363
+
364
+ _transformDirty() {
365
+ this._worldMatrixDirty = true;
366
+ for (let i = 0, len = this._childTransforms.length; i < len; i++) {
367
+ const childTransform = this._childTransforms[i];
368
+ childTransform._transformDirty();
369
+ if (childTransform._meshes && childTransform._meshes.length > 0) {
370
+ const meshes = childTransform._meshes;
371
+ for (let j =0, lenj = meshes.length; j < lenj; j++) {
372
+ meshes[j]._transformDirty();
373
+ }
374
+ }
375
+ }
376
+ if (this._meshes && this._meshes.length > 0) {
377
+ const meshes = this._meshes;
378
+ for (let j =0, lenj = meshes.length; j < lenj; j++) {
379
+ meshes[j]._transformDirty();
380
+ }
381
+ }
382
+ }
383
+
384
+ _buildWorldMatrix() {
385
+ const localMatrix = this.matrix;
386
+ if (!this._parentTransform) {
387
+ for (let i = 0, len = localMatrix.length; i < len; i++) {
388
+ this._worldMatrix[i] = localMatrix[i];
389
+ }
390
+ } else {
391
+ math.mulMat4(this._parentTransform.worldMatrix, localMatrix, this._worldMatrix);
392
+ }
393
+ this._worldMatrixDirty = false;
394
+ }
395
+
396
+ _setSubtreeAABBsDirty(sceneTransform) {
397
+ sceneTransform._aabbDirty = true;
398
+ if (sceneTransform._childTransforms) {
399
+ for (let i = 0, len = sceneTransform._childTransforms.length; i < len; i++) {
400
+ this._setSubtreeAABBsDirty(sceneTransform._childTransforms[i]);
401
+ }
402
+ }
403
+ }
404
+ }
@@ -0,0 +1,26 @@
1
+ import {SceneModel} from "./SceneModel.js";
2
+
3
+ /**
4
+ * @desc A high-performance model representation for efficient rendering and low memory usage.
5
+ *
6
+ * * VBOSceneModel was replaced with {@link SceneModel} in ````xeokit-sdk v2.4````.
7
+ * * VBOSceneModel currently extends {@link SceneModel}, in order to maintain backward-compatibility until we remove VBOSceneModel.
8
+ * * See {@link SceneModel} for API details.
9
+ *
10
+ * @deprecated
11
+ * @implements {Drawable}
12
+ * @implements {Entity}
13
+ * @extends {SceneModel}
14
+ */
15
+ export class VBOSceneModel extends SceneModel {
16
+
17
+ /**
18
+ * See {@link VBOSceneModel} for details.
19
+ *
20
+ * @param owner
21
+ * @param cfg
22
+ */
23
+ constructor(owner, cfg = {}) {
24
+ super(owner, cfg);
25
+ }
26
+ }
@@ -0,0 +1,126 @@
1
+ /**
2
+ * @author https://github.com/tmarti, with support from https://tribia.com/
3
+ * @license MIT
4
+ *
5
+ * This file takes a geometry given by { positionsCompressed, indices }, and returns
6
+ * equivalent { positionsCompressed, indices } arrays but which only contain unique
7
+ * positionsCompressed.
8
+ *
9
+ * The time is O(N logN) with the number of positionsCompressed due to a pre-sorting
10
+ * step, but is much more GC-friendly and actually faster than the classic O(N)
11
+ * approach based in keeping a hash-based LUT to identify unique positionsCompressed.
12
+ */
13
+ let comparePositions = null;
14
+
15
+ function compareVertex(a, b) {
16
+ let res;
17
+ for (let i = 0; i < 3; i++) {
18
+ if (0 !== (res = comparePositions[a * 3 + i] - comparePositions[b * 3 + i])) {
19
+ return res;
20
+ }
21
+ }
22
+ return 0;
23
+ }
24
+
25
+ let seqInit = null;
26
+
27
+ function setMaxNumberOfPositions(maxPositions) {
28
+ if (seqInit !== null && seqInit.length >= maxPositions) {
29
+ return;
30
+ }
31
+ seqInit = new Uint32Array(maxPositions);
32
+ for (let i = 0; i < maxPositions; i++) {
33
+ seqInit[i] = i;
34
+ }
35
+ }
36
+
37
+ /**
38
+ * This function obtains unique positionsCompressed in the provided object
39
+ * .positionsCompressed array and calculates an index mapping, which is then
40
+ * applied to the provided object .indices and .edgeindices.
41
+ *
42
+ * The input object items are not modified, and instead new set
43
+ * of positionsCompressed, indices and edgeIndices with the applied optimization
44
+ * are returned.
45
+ *
46
+ * The algorithm, instead of being based in a hash-like LUT for
47
+ * identifying unique positionsCompressed, is based in pre-sorting the input
48
+ * positionsCompressed...
49
+ *
50
+ * (it's possible to define a _"consistent ordering"_ for the positionsCompressed
51
+ * as positionsCompressed are quantized and thus not suffer from float number
52
+ * comparison artifacts)
53
+ *
54
+ * ... so same positionsCompressed are adjacent in the sorted array, and then
55
+ * it's easy to scan linearly the sorted array. During the linear run,
56
+ * we will know that we found a different position because the comparison
57
+ * function will return != 0 between current and previous element.
58
+ *
59
+ * During this linear traversal of the array, a `unique counter` is used
60
+ * in order to calculate the mapping between original indices and unique
61
+ * indices.
62
+ *
63
+ * @param {{positionsCompressed: number[],indices: number[], edgeIndices: number[]}} mesh The input mesh to process, with `positionsCompressed`, `indices` and `edgeIndices` keys.
64
+ *
65
+ * @returns {[Uint16Array, Uint32Array, Uint32Array]} An array with 3 elements: 0 => the uniquified positionsCompressed; 1 and 2 => the remapped edges and edgeIndices arrays
66
+ */
67
+ export function uniquifyPositions(mesh) {
68
+ const _positions = mesh.positionsCompressed;
69
+ const _indices = mesh.indices;
70
+ const _edgeIndices = mesh.edgeIndices;
71
+
72
+ setMaxNumberOfPositions(_positions.length / 3);
73
+
74
+ const seq = seqInit.slice(0, _positions.length / 3);
75
+ const remappings = seqInit.slice(0, _positions.length / 3);
76
+
77
+ comparePositions = _positions;
78
+
79
+ seq.sort(compareVertex);
80
+
81
+ let uniqueIdx = 0
82
+
83
+ remappings[seq[0]] = 0;
84
+
85
+ for (let i = 1, len = seq.length; i < len; i++) {
86
+ if (0 !== compareVertex(seq[i], seq[i - 1])) {
87
+ uniqueIdx++;
88
+ }
89
+ remappings[seq[i]] = uniqueIdx;
90
+ }
91
+
92
+ const numUniquePositions = uniqueIdx + 1;
93
+ const newPositions = new Uint16Array(numUniquePositions * 3);
94
+
95
+ uniqueIdx = 0
96
+
97
+ newPositions [uniqueIdx * 3 + 0] = _positions [seq[0] * 3 + 0];
98
+ newPositions [uniqueIdx * 3 + 1] = _positions [seq[0] * 3 + 1];
99
+ newPositions [uniqueIdx * 3 + 2] = _positions [seq[0] * 3 + 2];
100
+
101
+ for (let i = 1, len = seq.length; i < len; i++) {
102
+ if (0 !== compareVertex(seq[i], seq[i - 1])) {
103
+ uniqueIdx++;
104
+ newPositions [uniqueIdx * 3 + 0] = _positions [seq[i] * 3 + 0];
105
+ newPositions [uniqueIdx * 3 + 1] = _positions [seq[i] * 3 + 1];
106
+ newPositions [uniqueIdx * 3 + 2] = _positions [seq[i] * 3 + 2];
107
+ }
108
+ remappings[seq[i]] = uniqueIdx;
109
+ }
110
+
111
+ comparePositions = null;
112
+
113
+ const newIndices = new Uint32Array(_indices.length);
114
+
115
+ for (let i = 0, len = _indices.length; i < len; i++) {
116
+ newIndices[i] = remappings [_indices[i]];
117
+ }
118
+
119
+ const newEdgeIndices = new Uint32Array(_edgeIndices.length);
120
+
121
+ for (let i = 0, len = _edgeIndices.length; i < len; i++) {
122
+ newEdgeIndices[i] = remappings [_edgeIndices[i]];
123
+ }
124
+
125
+ return [newPositions, newIndices, newEdgeIndices];
126
+ }