@xeokit/xeokit-sdk 2.4.0-alpha-81 → 2.4.0-alpha-82

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 (384) hide show
  1. package/package.json +2 -1
  2. package/src/extras/ContextMenu/ContextMenu.js +907 -0
  3. package/src/extras/ContextMenu/index.js +1 -0
  4. package/src/extras/index.js +1 -0
  5. package/src/index.js +3 -0
  6. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +658 -0
  7. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +418 -0
  8. package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +400 -0
  9. package/src/plugins/AngleMeasurementsPlugin/index.js +1 -0
  10. package/src/plugins/AnnotationsPlugin/Annotation.js +368 -0
  11. package/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +583 -0
  12. package/src/plugins/AnnotationsPlugin/index.js +1 -0
  13. package/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +333 -0
  14. package/src/plugins/AxisGizmoPlugin/index.js +1 -0
  15. package/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +955 -0
  16. package/src/plugins/BCFViewpointsPlugin/index.js +1 -0
  17. package/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +29 -0
  18. package/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +751 -0
  19. package/src/plugins/CityJSONLoaderPlugin/index.js +1 -0
  20. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +870 -0
  21. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +376 -0
  22. package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +454 -0
  23. package/src/plugins/DistanceMeasurementsPlugin/index.js +1 -0
  24. package/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +639 -0
  25. package/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +436 -0
  26. package/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +247 -0
  27. package/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +167 -0
  28. package/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +1 -0
  29. package/src/plugins/FastNavPlugin/FastNavPlugin.js +429 -0
  30. package/src/plugins/FastNavPlugin/index.js +1 -0
  31. package/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +139 -0
  32. package/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +421 -0
  33. package/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +669 -0
  34. package/src/plugins/GLTFLoaderPlugin/index.js +2 -0
  35. package/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +58 -0
  36. package/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +518 -0
  37. package/src/plugins/LASLoaderPlugin/index.js +1 -0
  38. package/src/plugins/LASLoaderPlugin/loadLASHeader.js +183 -0
  39. package/src/plugins/NavCubePlugin/CubeTextureCanvas.js +289 -0
  40. package/src/plugins/NavCubePlugin/NavCubePlugin.js +752 -0
  41. package/src/plugins/NavCubePlugin/index.js +1 -0
  42. package/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +145 -0
  43. package/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +777 -0
  44. package/src/plugins/OBJLoaderPlugin/index.js +1 -0
  45. package/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +33 -0
  46. package/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +274 -0
  47. package/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +313 -0
  48. package/src/plugins/STLLoaderPlugin/index.js +2 -0
  49. package/src/plugins/SectionPlanesPlugin/Control.js +1328 -0
  50. package/src/plugins/SectionPlanesPlugin/Overview.js +249 -0
  51. package/src/plugins/SectionPlanesPlugin/Plane.js +169 -0
  52. package/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +404 -0
  53. package/src/plugins/SectionPlanesPlugin/index.js +1 -0
  54. package/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +134 -0
  55. package/src/plugins/SkyboxesPlugin/index.js +1 -0
  56. package/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js +77 -0
  57. package/src/plugins/StoreyViewsPlugin/Storey.js +61 -0
  58. package/src/plugins/StoreyViewsPlugin/StoreyMap.js +57 -0
  59. package/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +825 -0
  60. package/src/plugins/StoreyViewsPlugin/index.js +1 -0
  61. package/src/plugins/TreeViewPlugin/TreeViewNode.js +97 -0
  62. package/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1424 -0
  63. package/src/plugins/TreeViewPlugin/index.js +1 -0
  64. package/src/plugins/ViewCullPlugin/ViewCullPlugin.js +295 -0
  65. package/src/plugins/ViewCullPlugin/index.js +1 -0
  66. package/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +58 -0
  67. package/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +942 -0
  68. package/src/plugins/WebIFCLoaderPlugin/index.js +1 -0
  69. package/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +95 -0
  70. package/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +1107 -0
  71. package/src/plugins/XKTLoaderPlugin/index.js +2 -0
  72. package/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +169 -0
  73. package/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +656 -0
  74. package/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +230 -0
  75. package/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +223 -0
  76. package/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +283 -0
  77. package/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +246 -0
  78. package/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +301 -0
  79. package/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +439 -0
  80. package/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +563 -0
  81. package/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +514 -0
  82. package/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +2 -0
  83. package/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +238 -0
  84. package/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +1279 -0
  85. package/src/plugins/XML3DLoaderPlugin/index.js +1 -0
  86. package/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +11 -0
  87. package/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +2060 -0
  88. package/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +2155 -0
  89. package/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +1002 -0
  90. package/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +64 -0
  91. package/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +153 -0
  92. package/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +267 -0
  93. package/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +553 -0
  94. package/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +991 -0
  95. package/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +49 -0
  96. package/src/plugins/index.js +21 -0
  97. package/src/plugins/lib/culling/ObjectCullStates.js +208 -0
  98. package/src/plugins/lib/earcut.js +677 -0
  99. package/src/plugins/lib/html/Dot.js +145 -0
  100. package/src/plugins/lib/html/Label.js +156 -0
  101. package/src/plugins/lib/html/Wire.js +191 -0
  102. package/src/viewer/Configs.js +79 -0
  103. package/src/viewer/Plugin.js +224 -0
  104. package/src/viewer/Viewer.js +535 -0
  105. package/src/viewer/index.js +5 -0
  106. package/src/viewer/localization/LocaleService.js +475 -0
  107. package/src/viewer/metadata/IFCObjectDefaultColors.js +162 -0
  108. package/src/viewer/metadata/IFCObjectDefaults.js +17 -0
  109. package/src/viewer/metadata/MetaModel.js +389 -0
  110. package/src/viewer/metadata/MetaObject.js +218 -0
  111. package/src/viewer/metadata/MetaScene.js +336 -0
  112. package/src/viewer/metadata/Property.js +55 -0
  113. package/src/viewer/metadata/PropertySet.js +77 -0
  114. package/src/viewer/scene/Bitmap/Bitmap.js +470 -0
  115. package/src/viewer/scene/Bitmap/index.js +1 -0
  116. package/src/viewer/scene/CameraControl/CameraControl.js +1737 -0
  117. package/src/viewer/scene/CameraControl/lib/CameraUpdater.js +312 -0
  118. package/src/viewer/scene/CameraControl/lib/controllers/PanController.js +112 -0
  119. package/src/viewer/scene/CameraControl/lib/controllers/PickController.js +264 -0
  120. package/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +384 -0
  121. package/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +122 -0
  122. package/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +183 -0
  123. package/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +68 -0
  124. package/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +345 -0
  125. package/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +372 -0
  126. package/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +269 -0
  127. package/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +235 -0
  128. package/src/viewer/scene/Component.js +907 -0
  129. package/src/viewer/scene/Entity.js +502 -0
  130. package/src/viewer/scene/ImagePlane/ImagePlane.js +570 -0
  131. package/src/viewer/scene/ImagePlane/index.js +1 -0
  132. package/src/viewer/scene/LineSet/LineSet.js +164 -0
  133. package/src/viewer/scene/LineSet/index.js +1 -0
  134. package/src/viewer/scene/camera/Camera.js +912 -0
  135. package/src/viewer/scene/camera/CameraFlightAnimation.js +669 -0
  136. package/src/viewer/scene/camera/CameraPath.js +194 -0
  137. package/src/viewer/scene/camera/CameraPathAnimation.js +326 -0
  138. package/src/viewer/scene/camera/CustomProjection.js +149 -0
  139. package/src/viewer/scene/camera/Frustum.js +316 -0
  140. package/src/viewer/scene/camera/Ortho.js +286 -0
  141. package/src/viewer/scene/camera/Perspective.js +304 -0
  142. package/src/viewer/scene/camera/index.js +2 -0
  143. package/src/viewer/scene/canvas/Canvas.js +492 -0
  144. package/src/viewer/scene/canvas/Spinner.js +323 -0
  145. package/src/viewer/scene/constants/constants.js +371 -0
  146. package/src/viewer/scene/core.js +233 -0
  147. package/src/viewer/scene/geometry/Geometry.js +33 -0
  148. package/src/viewer/scene/geometry/ReadableGeometry.js +682 -0
  149. package/src/viewer/scene/geometry/VBOGeometry.js +319 -0
  150. package/src/viewer/scene/geometry/builders/buildBoxGeometry.js +238 -0
  151. package/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +106 -0
  152. package/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +271 -0
  153. package/src/viewer/scene/geometry/builders/buildGridGeometry.js +102 -0
  154. package/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +168 -0
  155. package/src/viewer/scene/geometry/builders/buildSphereGeometry.js +161 -0
  156. package/src/viewer/scene/geometry/builders/buildTorusGeometry.js +172 -0
  157. package/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +1721 -0
  158. package/src/viewer/scene/geometry/builders/index.js +8 -0
  159. package/src/viewer/scene/geometry/index.js +4 -0
  160. package/src/viewer/scene/geometry/loaders/index.js +2 -0
  161. package/src/viewer/scene/geometry/loaders/load3DSGeometry.js +103 -0
  162. package/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +130 -0
  163. package/src/viewer/scene/index.js +23 -0
  164. package/src/viewer/scene/input/Input.js +1325 -0
  165. package/src/viewer/scene/libs/k3d.js +1032 -0
  166. package/src/viewer/scene/lights/AmbientLight.js +175 -0
  167. package/src/viewer/scene/lights/CubeTexture.js +156 -0
  168. package/src/viewer/scene/lights/DirLight.js +314 -0
  169. package/src/viewer/scene/lights/Light.js +29 -0
  170. package/src/viewer/scene/lights/LightMap.js +77 -0
  171. package/src/viewer/scene/lights/PointLight.js +395 -0
  172. package/src/viewer/scene/lights/ReflectionMap.js +79 -0
  173. package/src/viewer/scene/lights/Shadow.js +138 -0
  174. package/src/viewer/scene/lights/index.js +5 -0
  175. package/src/viewer/scene/lod/LOD.js +162 -0
  176. package/src/viewer/scene/lod/LODCullingManager.js +83 -0
  177. package/src/viewer/scene/lod/LODState.js +125 -0
  178. package/src/viewer/scene/lod/index.js +1 -0
  179. package/src/viewer/scene/marker/Marker.js +383 -0
  180. package/src/viewer/scene/marker/SpriteMarker.js +356 -0
  181. package/src/viewer/scene/marker/index.js +2 -0
  182. package/src/viewer/scene/materials/EdgeMaterial.js +359 -0
  183. package/src/viewer/scene/materials/EmphasisMaterial.js +613 -0
  184. package/src/viewer/scene/materials/Fresnel.js +222 -0
  185. package/src/viewer/scene/materials/LambertMaterial.js +378 -0
  186. package/src/viewer/scene/materials/LinesMaterial.js +169 -0
  187. package/src/viewer/scene/materials/Material.js +39 -0
  188. package/src/viewer/scene/materials/MetallicMaterial.js +820 -0
  189. package/src/viewer/scene/materials/PhongMaterial.js +860 -0
  190. package/src/viewer/scene/materials/PointsMaterial.js +409 -0
  191. package/src/viewer/scene/materials/SpecularMaterial.js +807 -0
  192. package/src/viewer/scene/materials/Texture.js +513 -0
  193. package/src/viewer/scene/materials/index.js +8 -0
  194. package/src/viewer/scene/math/Frustum.js +118 -0
  195. package/src/viewer/scene/math/buildEdgeIndices.js +162 -0
  196. package/src/viewer/scene/math/geometryCompressionUtils.js +365 -0
  197. package/src/viewer/scene/math/index.js +3 -0
  198. package/src/viewer/scene/math/math.js +5363 -0
  199. package/src/viewer/scene/math/rtcCoords.js +139 -0
  200. package/src/viewer/scene/mementos/CameraMemento.js +200 -0
  201. package/src/viewer/scene/mementos/ModelMemento.js +263 -0
  202. package/src/viewer/scene/mementos/ObjectsMemento.js +259 -0
  203. package/src/viewer/scene/mementos/index.js +3 -0
  204. package/src/viewer/scene/mesh/Mesh.js +2202 -0
  205. package/src/viewer/scene/mesh/draw/DrawRenderer.js +986 -0
  206. package/src/viewer/scene/mesh/draw/DrawShaderSource.js +1570 -0
  207. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +249 -0
  208. package/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +158 -0
  209. package/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +276 -0
  210. package/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +261 -0
  211. package/src/viewer/scene/mesh/index.js +1 -0
  212. package/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +207 -0
  213. package/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +156 -0
  214. package/src/viewer/scene/mesh/pick/PickMeshRenderer.js +210 -0
  215. package/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +142 -0
  216. package/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +186 -0
  217. package/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +116 -0
  218. package/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
  219. package/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +98 -0
  220. package/src/viewer/scene/metriqs/Metriqs.js +259 -0
  221. package/src/viewer/scene/model/ENTITY_FLAGS.js +21 -0
  222. package/src/viewer/scene/model/PerformanceModel.js +26 -0
  223. package/src/viewer/scene/model/RENDER_PASSES.js +34 -0
  224. package/src/viewer/scene/model/SceneModel.js +3817 -0
  225. package/src/viewer/scene/model/SceneModelEntity.js +478 -0
  226. package/src/viewer/scene/model/SceneModelMesh.js +160 -0
  227. package/src/viewer/scene/model/SceneModelTexture.js +17 -0
  228. package/src/viewer/scene/model/SceneModelTextureSet.js +17 -0
  229. package/src/viewer/scene/model/VBOSceneModel.js +26 -0
  230. package/src/viewer/scene/model/compression.js +227 -0
  231. package/src/viewer/scene/model/dtx/triangles/BindableDataTexture.js +31 -0
  232. package/src/viewer/scene/model/dtx/triangles/DataTextureGenerator.js +631 -0
  233. package/src/viewer/scene/model/dtx/triangles/DataTextureState.js +288 -0
  234. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureBuffer.js +31 -0
  235. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureLayer.js +1329 -0
  236. package/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureRenderers.js +278 -0
  237. package/src/viewer/scene/model/dtx/triangles/calculateUniquePositions.js +126 -0
  238. package/src/viewer/scene/model/dtx/triangles/dataTextureRamStats.js +54 -0
  239. package/src/viewer/scene/model/dtx/triangles/rebucketPositions.js +347 -0
  240. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorRenderer.js +633 -0
  241. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureDepthRenderer.js +475 -0
  242. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesColorRenderer.js +426 -0
  243. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesRenderer.js +430 -0
  244. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureNormalsRenderer.js +341 -0
  245. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureOcclusionRenderer.js +442 -0
  246. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickDepthRenderer.js +451 -0
  247. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickMeshRenderer.js +436 -0
  248. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js +502 -0
  249. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsRenderer.js +430 -0
  250. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSilhouetteRenderer.js +469 -0
  251. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js +451 -0
  252. package/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthRenderer.js +424 -0
  253. package/src/viewer/scene/model/index.js +3 -0
  254. package/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
  255. package/src/viewer/scene/model/vbo/VBOSceneModelRenderers.js +805 -0
  256. package/src/viewer/scene/model/vbo/float16.js +760 -0
  257. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingBuffer.js +21 -0
  258. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingLayer.js +744 -0
  259. package/src/viewer/scene/model/vbo/linesBatching/LinesBatchingRenderers.js +71 -0
  260. package/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingColorRenderer.js +116 -0
  261. package/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js +126 -0
  262. package/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingLayer.js +653 -0
  263. package/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingRenderers.js +71 -0
  264. package/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingColorRenderer.js +150 -0
  265. package/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js +128 -0
  266. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingBuffer.js +22 -0
  267. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingLayer.js +753 -0
  268. package/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingRenderers.js +116 -0
  269. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingColorRenderer.js +167 -0
  270. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js +135 -0
  271. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js +154 -0
  272. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js +146 -0
  273. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingShadowRenderer.js +108 -0
  274. package/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js +147 -0
  275. package/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingLayer.js +684 -0
  276. package/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingRenderers.js +146 -0
  277. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingColorRenderer.js +174 -0
  278. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingDepthRenderer.js +156 -0
  279. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js +151 -0
  280. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js +167 -0
  281. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js +151 -0
  282. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingShadowRenderer.js +121 -0
  283. package/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js +156 -0
  284. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthBufInitRenderer.js +351 -0
  285. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthRenderer.js +365 -0
  286. package/src/viewer/scene/model/vbo/snapBatching/SnapBatchingRenderers.js +71 -0
  287. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthBufInitRenderer.js +381 -0
  288. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthRenderer.js +374 -0
  289. package/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingRenderers.js +71 -0
  290. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingBuffer.js +26 -0
  291. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingLayer.js +1322 -0
  292. package/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingRenderers.js +322 -0
  293. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js +240 -0
  294. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js +271 -0
  295. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js +127 -0
  296. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js +129 -0
  297. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js +134 -0
  298. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js +237 -0
  299. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js +139 -0
  300. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js +127 -0
  301. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js +563 -0
  302. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js +143 -0
  303. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js +130 -0
  304. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js +119 -0
  305. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js +129 -0
  306. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js +108 -0
  307. package/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js +137 -0
  308. package/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingLayer.js +1167 -0
  309. package/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingRenderers.js +322 -0
  310. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js +253 -0
  311. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js +278 -0
  312. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js +125 -0
  313. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js +131 -0
  314. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js +134 -0
  315. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js +244 -0
  316. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js +130 -0
  317. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js +140 -0
  318. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js +130 -0
  319. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js +563 -0
  320. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js +148 -0
  321. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js +135 -0
  322. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js +130 -0
  323. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js +144 -0
  324. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js +113 -0
  325. package/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js +141 -0
  326. package/src/viewer/scene/nodes/Node.js +1383 -0
  327. package/src/viewer/scene/nodes/index.js +1 -0
  328. package/src/viewer/scene/paths/CubicBezierCurve.js +194 -0
  329. package/src/viewer/scene/paths/Curve.js +183 -0
  330. package/src/viewer/scene/paths/Path.js +239 -0
  331. package/src/viewer/scene/paths/QuadraticBezierCurve.js +161 -0
  332. package/src/viewer/scene/paths/SplineCurve.js +133 -0
  333. package/src/viewer/scene/paths/index.js +5 -0
  334. package/src/viewer/scene/postfx/SAO.js +543 -0
  335. package/src/viewer/scene/scene/Scene.js +2627 -0
  336. package/src/viewer/scene/sectionPlane/SectionPlane.js +194 -0
  337. package/src/viewer/scene/sectionPlane/index.js +1 -0
  338. package/src/viewer/scene/skybox/Skybox.js +123 -0
  339. package/src/viewer/scene/skybox/index.js +1 -0
  340. package/src/viewer/scene/stats.js +44 -0
  341. package/src/viewer/scene/utils/Cache.js +29 -0
  342. package/src/viewer/scene/utils/FileLoader.js +160 -0
  343. package/src/viewer/scene/utils/Loader.js +55 -0
  344. package/src/viewer/scene/utils/LoadingManager.js +86 -0
  345. package/src/viewer/scene/utils/Map.js +45 -0
  346. package/src/viewer/scene/utils/Queue.js +56 -0
  347. package/src/viewer/scene/utils/WorkerPool.js +73 -0
  348. package/src/viewer/scene/utils/index.js +6 -0
  349. package/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +650 -0
  350. package/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +1 -0
  351. package/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +31 -0
  352. package/src/viewer/scene/utils/textureTranscoders/index.js +2 -0
  353. package/src/viewer/scene/utils.js +452 -0
  354. package/src/viewer/scene/vfc/VFC.js +82 -0
  355. package/src/viewer/scene/vfc/VFCManager.js +54 -0
  356. package/src/viewer/scene/vfc/VFCState.js +391 -0
  357. package/src/viewer/scene/vfc/cluster-helper.js +134 -0
  358. package/src/viewer/scene/vfc/index.js +1 -0
  359. package/src/viewer/scene/vfc/rbush3d.js +848 -0
  360. package/src/viewer/scene/vfc/xeokit-cluster.js +418 -0
  361. package/src/viewer/scene/viewport/Viewport.js +212 -0
  362. package/src/viewer/scene/webgl/ArrayBuf.js +121 -0
  363. package/src/viewer/scene/webgl/Attribute.js +23 -0
  364. package/src/viewer/scene/webgl/Drawable.js +270 -0
  365. package/src/viewer/scene/webgl/FrameContext.js +313 -0
  366. package/src/viewer/scene/webgl/PickResult.js +339 -0
  367. package/src/viewer/scene/webgl/Pickable.js +69 -0
  368. package/src/viewer/scene/webgl/Program.js +181 -0
  369. package/src/viewer/scene/webgl/RenderBuffer.js +350 -0
  370. package/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
  371. package/src/viewer/scene/webgl/RenderFlags.js +203 -0
  372. package/src/viewer/scene/webgl/RenderState.js +40 -0
  373. package/src/viewer/scene/webgl/Renderer.js +1654 -0
  374. package/src/viewer/scene/webgl/Sampler.js +18 -0
  375. package/src/viewer/scene/webgl/Shader.js +49 -0
  376. package/src/viewer/scene/webgl/Texture2D.js +442 -0
  377. package/src/viewer/scene/webgl/convertConstant.js +244 -0
  378. package/src/viewer/scene/webgl/getExtension.js +32 -0
  379. package/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +214 -0
  380. package/src/viewer/scene/webgl/occlusion/OcclusionTester.js +426 -0
  381. package/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
  382. package/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +376 -0
  383. package/src/viewer/scene/webgl/webglEnums.js +61 -0
  384. package/src/viewer/scene/webglInfo.js +47 -0
@@ -0,0 +1,319 @@
1
+ import {Geometry} from './Geometry.js';
2
+ import {RenderState} from '../webgl/RenderState.js';
3
+ import {ArrayBuf} from '../webgl/ArrayBuf.js';
4
+ import {math} from '../math/math.js';
5
+ import {stats} from '../stats.js';
6
+ import {buildEdgeIndices} from '../math/buildEdgeIndices.js';
7
+ import {geometryCompressionUtils} from '../math/geometryCompressionUtils.js';
8
+
9
+ const memoryStats = stats.memory;
10
+ const tempAABB = math.AABB3();
11
+
12
+ /**
13
+ * @desc A {@link Geometry} that keeps its geometry data solely in GPU memory, without retaining it in browser memory.
14
+ *
15
+ * VBOGeometry uses less memory than {@link ReadableGeometry}, which keeps its geometry data in both browser and GPU memory.
16
+ *
17
+ * ## Usage
18
+ *
19
+ * Creating a {@link Mesh} with a VBOGeometry that defines a single triangle, plus a {@link PhongMaterial} with diffuse {@link Texture}:
20
+ *
21
+ * [[Run this example](/examples/#geometry_VBOGeometry)]
22
+ *
23
+ * ````javascript
24
+ * import {Viewer, Mesh, VBOGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js";
25
+ *
26
+ * const viewer = new Viewer({
27
+ * canvasId: "myCanvas"
28
+ * });
29
+ *
30
+ * new Mesh(viewer.scene, {
31
+ * geometry: new VBOGeometry(viewer.scene, {
32
+ * primitive: "triangles",
33
+ * positions: [0.0, 3, 0.0, -3, -3, 0.0, 3, -3, 0.0],
34
+ * normals: [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0],
35
+ * uv: [0.0, 0.0, 0.5, 1.0, 1.0, 0.0],
36
+ * indices: [0, 1, 2]
37
+ * }),
38
+ * material: new PhongMaterial(viewer.scene, {
39
+ * diffuseMap: new Texture(viewer.scene, {
40
+ * src: "textures/diffuse/uvGrid2.jpg"
41
+ * }),
42
+ * backfaces: true
43
+ * })
44
+ * });
45
+ * ````
46
+ */
47
+ class VBOGeometry extends Geometry {
48
+
49
+ /**
50
+ @private
51
+ */
52
+ get type() {
53
+ return "VBOGeometry";
54
+ }
55
+
56
+ /**
57
+ * @private
58
+ * @returns {Boolean}
59
+ */
60
+ get isVBOGeometry() {
61
+ return true;
62
+ }
63
+
64
+ /**
65
+ * @constructor
66
+ * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.
67
+ * @param {*} [cfg] Configs
68
+ * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.
69
+ * @param {String} [cfg.primitive="triangles"] The primitive type. Accepted values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.
70
+ * @param {Number[]} [cfg.positions] Positions array.
71
+ * @param {Number[]} [cfg.normals] Vertex normal vectors array.
72
+ * @param {Number[]} [cfg.uv] UVs array.
73
+ * @param {Number[]} [cfg.colors] Vertex colors.
74
+ * @param {Number[]} [cfg.indices] Indices array.
75
+ * @param {Number} [cfg.edgeThreshold=10] When autogenerating edges for supporting {@link Drawable#edges}, this indicates the threshold angle (in degrees) between the face normals of adjacent triangles below which the edge is discarded.
76
+ */
77
+ constructor(owner, cfg = {}) {
78
+
79
+ super(owner, cfg);
80
+
81
+ this._state = new RenderState({ // Arrays for emphasis effects are got from xeokit.GeometryLite friend methods
82
+ compressGeometry: true,
83
+ primitive: null, // WebGL enum
84
+ primitiveName: null, // String
85
+ positionsDecodeMatrix: null, // Set when compressGeometry == true
86
+ uvDecodeMatrix: null, // Set when compressGeometry == true
87
+ positionsBuf: null,
88
+ normalsBuf: null,
89
+ colorsbuf: null,
90
+ uvBuf: null,
91
+ indicesBuf: null,
92
+ hash: ""
93
+ });
94
+
95
+ this._numTriangles = 0;
96
+
97
+ this._edgeThreshold = cfg.edgeThreshold || 10.0;
98
+ this._aabb = null;
99
+ this._obb = math.OBB3();
100
+
101
+ const state = this._state;
102
+ const gl = this.scene.canvas.gl;
103
+
104
+ cfg.primitive = cfg.primitive || "triangles";
105
+ switch (cfg.primitive) {
106
+ case "points":
107
+ state.primitive = gl.POINTS;
108
+ state.primitiveName = cfg.primitive;
109
+ break;
110
+ case "lines":
111
+ state.primitive = gl.LINES;
112
+ state.primitiveName = cfg.primitive;
113
+ break;
114
+ case "line-loop":
115
+ state.primitive = gl.LINE_LOOP;
116
+ state.primitiveName = cfg.primitive;
117
+ break;
118
+ case "line-strip":
119
+ state.primitive = gl.LINE_STRIP;
120
+ state.primitiveName = cfg.primitive;
121
+ break;
122
+ case "triangles":
123
+ state.primitive = gl.TRIANGLES;
124
+ state.primitiveName = cfg.primitive;
125
+ break;
126
+ case "triangle-strip":
127
+ state.primitive = gl.TRIANGLE_STRIP;
128
+ state.primitiveName = cfg.primitive;
129
+ break;
130
+ case "triangle-fan":
131
+ state.primitive = gl.TRIANGLE_FAN;
132
+ state.primitiveName = cfg.primitive;
133
+ break;
134
+ default:
135
+ this.error("Unsupported value for 'primitive': '" + cfg.primitive +
136
+ "' - supported values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', " +
137
+ "'triangle-strip' and 'triangle-fan'. Defaulting to 'triangles'.");
138
+ state.primitive = gl.TRIANGLES;
139
+ state.primitiveName = cfg.primitive;
140
+ }
141
+
142
+ if (!cfg.positions) {
143
+ this.error("Config expected: positions");
144
+ return; // TODO: Recover?
145
+ }
146
+
147
+ if (!cfg.indices) {
148
+ this.error("Config expected: indices");
149
+ return; // TODO: Recover?
150
+ }
151
+
152
+ var positions;
153
+
154
+ {
155
+ const positionsDecodeMatrix = cfg.positionsDecodeMatrix;
156
+
157
+ if (positionsDecodeMatrix) {
158
+
159
+ // Compressed positions
160
+
161
+ } else {
162
+
163
+ // Uncompressed positions
164
+
165
+ const bounds = geometryCompressionUtils.getPositionsBounds(cfg.positions);
166
+ const result = geometryCompressionUtils.compressPositions(cfg.positions, bounds.min, bounds.max);
167
+ positions = result.quantized;
168
+ state.positionsDecodeMatrix = result.decodeMatrix;
169
+ state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);
170
+ memoryStats.positions += state.positionsBuf.numItems;
171
+ math.positions3ToAABB3(cfg.positions, this._aabb);
172
+ math.positions3ToAABB3(positions, tempAABB, state.positionsDecodeMatrix);
173
+ math.AABB3ToOBB3(tempAABB, this._obb);
174
+ }
175
+ }
176
+
177
+ if (cfg.colors) {
178
+ const colors = cfg.colors.constructor === Float32Array ? cfg.colors : new Float32Array(cfg.colors);
179
+ state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, colors.length, 4, gl.STATIC_DRAW);
180
+ memoryStats.colors += state.colorsBuf.numItems;
181
+ }
182
+
183
+ if (cfg.uv) {
184
+ const bounds = geometryCompressionUtils.getUVBounds(cfg.uv);
185
+ const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max);
186
+ const uv = result.quantized;
187
+ state.uvDecodeMatrix = result.decodeMatrix;
188
+ state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uv, uv.length, 2, gl.STATIC_DRAW);
189
+ memoryStats.uvs += state.uvBuf.numItems;
190
+ }
191
+
192
+ if (cfg.normals) {
193
+ const normals = geometryCompressionUtils.compressNormals(cfg.normals);
194
+ let normalized = state.compressGeometry;
195
+ state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, normals, normals.length, 3, gl.STATIC_DRAW, normalized);
196
+ memoryStats.normals += state.normalsBuf.numItems;
197
+ }
198
+
199
+ {
200
+ const indices = (cfg.indices.constructor === Uint32Array || cfg.indices.constructor === Uint16Array) ? cfg.indices : new Uint32Array(cfg.indices);
201
+ state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, indices.length, 1, gl.STATIC_DRAW);
202
+ memoryStats.indices += state.indicesBuf.numItems;
203
+ const edgeIndices = buildEdgeIndices(positions, indices, state.positionsDecodeMatrix, this._edgeThreshold);
204
+ this._edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, edgeIndices, edgeIndices.length, 1, gl.STATIC_DRAW);
205
+
206
+ if (this._state.primitiveName === "triangles") {
207
+ this._numTriangles = (cfg.indices.length / 3);
208
+ }
209
+ }
210
+
211
+ this._buildHash();
212
+
213
+ memoryStats.meshes++;
214
+ }
215
+
216
+ _buildHash() {
217
+ const state = this._state;
218
+ const hash = ["/g"];
219
+ hash.push("/" + state.primitive + ";");
220
+ if (state.positionsBuf) {
221
+ hash.push("p");
222
+ }
223
+ if (state.colorsBuf) {
224
+ hash.push("c");
225
+ }
226
+ if (state.normalsBuf || state.autoVertexNormals) {
227
+ hash.push("n");
228
+ }
229
+ if (state.uvBuf) {
230
+ hash.push("u");
231
+ }
232
+ hash.push("cp"); // Always compressed
233
+ hash.push(";");
234
+ state.hash = hash.join("");
235
+ }
236
+
237
+ _getEdgeIndices() {
238
+ return this._edgeIndicesBuf;
239
+ }
240
+
241
+ /**
242
+ * Gets the primitive type.
243
+ *
244
+ * Possible types are: 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.
245
+ *
246
+ * @type {String}
247
+ */
248
+ get primitive() {
249
+ return this._state.primitiveName;
250
+ }
251
+
252
+ /**
253
+ * Gets the local-space axis-aligned 3D boundary (AABB).
254
+ *
255
+ * The AABB is represented by a six-element Float64Array containing the min/max extents of the axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.
256
+ *
257
+ * @type {Number[]}
258
+ */
259
+ get aabb() {
260
+ return this._aabb;
261
+ }
262
+
263
+ /**
264
+ * Gets the local-space oriented 3D boundary (OBB).
265
+ *
266
+ * The OBB is represented by a 32-element Float64Array containing the eight vertices of the box, where each vertex is a homogeneous coordinate having [x,y,z,w] elements.
267
+ *
268
+ * @type {Number[]}
269
+ */
270
+ get obb() {
271
+ return this._obb;
272
+ }
273
+
274
+ /**
275
+ * Approximate number of triangles in this VBOGeometry.
276
+ *
277
+ * Will be zero if {@link VBOGeometry#primitive} is not 'triangles', 'triangle-strip' or 'triangle-fan'.
278
+ *
279
+ * @type {Number}
280
+ */
281
+ get numTriangles() {
282
+ return this._numTriangles;
283
+ }
284
+
285
+ /** @private */
286
+ _getState() {
287
+ return this._state;
288
+ }
289
+
290
+ /**
291
+ * Destroys this component.
292
+ */
293
+ destroy() {
294
+ super.destroy();
295
+ const state = this._state;
296
+ if (state.indicesBuf) {
297
+ state.indicesBuf.destroy();
298
+ }
299
+ if (state.positionsBuf) {
300
+ state.positionsBuf.destroy();
301
+ }
302
+ if (state.normalsBuf) {
303
+ state.normalsBuf.destroy();
304
+ }
305
+ if (state.uvBuf) {
306
+ state.uvBuf.destroy();
307
+ }
308
+ if (state.colorsBuf) {
309
+ state.colorsBuf.destroy();
310
+ }
311
+ if (this._edgeIndicesBuf) {
312
+ this._edgeIndicesBuf.destroy();
313
+ }
314
+ state.destroy();
315
+ memoryStats.meshes--;
316
+ }
317
+ }
318
+
319
+ export {VBOGeometry};
@@ -0,0 +1,238 @@
1
+ import {utils} from '../../utils.js';
2
+
3
+ /**
4
+ * @desc Creates box-shaped {@link Geometry}.
5
+ *
6
+ * ## Usage
7
+ *
8
+ * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry}.
9
+ *
10
+ * [[Run this example](/examples/#geometry_builders_buildBoxGeometry)]
11
+ *
12
+ * ````javascript
13
+ * import {Viewer, Mesh, buildBoxGeometry, ReadableGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js";
14
+ *
15
+ * const viewer = new Viewer({
16
+ * canvasId: "myCanvas"
17
+ * });
18
+ *
19
+ * viewer.scene.camera.eye = [0, 0, 5];
20
+ * viewer.scene.camera.look = [0, 0, 0];
21
+ * viewer.scene.camera.up = [0, 1, 0];
22
+ *
23
+ * new Mesh(viewer.scene, {
24
+ * geometry: new ReadableGeometry(viewer.scene, buildBoxGeometry({
25
+ * center: [0,0,0],
26
+ * xSize: 1, // Half-size on each axis
27
+ * ySize: 1,
28
+ * zSize: 1
29
+ * }),
30
+ * material: new PhongMaterial(viewer.scene, {
31
+ * diffuseMap: new Texture(viewer.scene, {
32
+ * src: "textures/diffuse/uvGrid2.jpg"
33
+ * })
34
+ * })
35
+ * });
36
+ * ````
37
+ *
38
+ * @function buildBoxGeometry
39
+ * @param {*} [cfg] Configs
40
+ * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.
41
+ * @param {Number[]} [cfg.center] 3D point indicating the center position.
42
+ * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.
43
+ * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.
44
+ * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.
45
+ * @returns {Object} Configuration for a {@link Geometry} subtype.
46
+ */
47
+ function buildBoxGeometry(cfg = {}) {
48
+
49
+ let xSize = cfg.xSize || 1;
50
+ if (xSize < 0) {
51
+ console.error("negative xSize not allowed - will invert");
52
+ xSize *= -1;
53
+ }
54
+
55
+ let ySize = cfg.ySize || 1;
56
+ if (ySize < 0) {
57
+ console.error("negative ySize not allowed - will invert");
58
+ ySize *= -1;
59
+ }
60
+
61
+ let zSize = cfg.zSize || 1;
62
+ if (zSize < 0) {
63
+ console.error("negative zSize not allowed - will invert");
64
+ zSize *= -1;
65
+ }
66
+
67
+ const center = cfg.center;
68
+ const centerX = center ? center[0] : 0;
69
+ const centerY = center ? center[1] : 0;
70
+ const centerZ = center ? center[2] : 0;
71
+
72
+ const xmin = -xSize + centerX;
73
+ const ymin = -ySize + centerY;
74
+ const zmin = -zSize + centerZ;
75
+ const xmax = xSize + centerX;
76
+ const ymax = ySize + centerY;
77
+ const zmax = zSize + centerZ;
78
+
79
+ return utils.apply(cfg, {
80
+
81
+ // The vertices - eight for our cube, each
82
+ // one spanning three array elements for X,Y and Z
83
+ positions: [
84
+
85
+ // v0-v1-v2-v3 front
86
+ xmax, ymax, zmax,
87
+ xmin, ymax, zmax,
88
+ xmin, ymin, zmax,
89
+ xmax, ymin, zmax,
90
+
91
+ // v0-v3-v4-v1 right
92
+ xmax, ymax, zmax,
93
+ xmax, ymin, zmax,
94
+ xmax, ymin, zmin,
95
+ xmax, ymax, zmin,
96
+
97
+ // v0-v1-v6-v1 top
98
+ xmax, ymax, zmax,
99
+ xmax, ymax, zmin,
100
+ xmin, ymax, zmin,
101
+ xmin, ymax, zmax,
102
+
103
+ // v1-v6-v7-v2 left
104
+ xmin, ymax, zmax,
105
+ xmin, ymax, zmin,
106
+ xmin, ymin, zmin,
107
+ xmin, ymin, zmax,
108
+
109
+ // v7-v4-v3-v2 bottom
110
+ xmin, ymin, zmin,
111
+ xmax, ymin, zmin,
112
+ xmax, ymin, zmax,
113
+ xmin, ymin, zmax,
114
+
115
+ // v4-v7-v6-v1 back
116
+ xmax, ymin, zmin,
117
+ xmin, ymin, zmin,
118
+ xmin, ymax, zmin,
119
+ xmax, ymax, zmin
120
+ ],
121
+
122
+ // Normal vectors, one for each vertex
123
+ normals: [
124
+
125
+ // v0-v1-v2-v3 front
126
+ 0, 0, 1,
127
+ 0, 0, 1,
128
+ 0, 0, 1,
129
+ 0, 0, 1,
130
+
131
+ // v0-v3-v4-v5 right
132
+ 1, 0, 0,
133
+ 1, 0, 0,
134
+ 1, 0, 0,
135
+ 1, 0, 0,
136
+
137
+ // v0-v5-v6-v1 top
138
+ 0, 1, 0,
139
+ 0, 1, 0,
140
+ 0, 1, 0,
141
+ 0, 1, 0,
142
+
143
+ // v1-v6-v7-v2 left
144
+ -1, 0, 0,
145
+ -1, 0, 0,
146
+ -1, 0, 0,
147
+ -1, 0, 0,
148
+
149
+ // v7-v4-v3-v2 bottom
150
+ 0, -1, 0,
151
+ 0, -1, 0,
152
+ 0, -1, 0,
153
+ 0, -1, 0,
154
+
155
+ // v4-v7-v6-v5 back
156
+ 0, 0, -1,
157
+ 0, 0, -1,
158
+ 0, 0, -1,
159
+ 0, 0, -1
160
+ ],
161
+
162
+ // UV coords
163
+ uv: [
164
+
165
+ // v0-v1-v2-v3 front
166
+ 1, 0,
167
+ 0, 0,
168
+ 0, 1,
169
+ 1, 1,
170
+
171
+ // v0-v3-v4-v1 right
172
+ 0, 0,
173
+ 0, 1,
174
+ 1, 1,
175
+ 1, 0,
176
+
177
+ // v0-v1-v6-v1 top
178
+ 1, 1,
179
+ 1, 0,
180
+ 0, 0,
181
+ 0, 1,
182
+
183
+ // v1-v6-v7-v2 left
184
+ 1, 0,
185
+ 0, 0,
186
+ 0, 1,
187
+ 1, 1,
188
+
189
+ // v7-v4-v3-v2 bottom
190
+ 0, 1,
191
+ 1, 1,
192
+ 1, 0,
193
+ 0, 0,
194
+
195
+ // v4-v7-v6-v1 back
196
+ 0, 1,
197
+ 1, 1,
198
+ 1, 0,
199
+ 0, 0
200
+ ],
201
+
202
+ // Indices - these organise the
203
+ // positions and uv texture coordinates
204
+ // into geometric primitives in accordance
205
+ // with the "primitive" parameter,
206
+ // in this case a set of three indices
207
+ // for each triangle.
208
+ //
209
+ // Note that each triangle is specified
210
+ // in counter-clockwise winding order.
211
+ //
212
+ // You can specify them in clockwise
213
+ // order if you configure the Modes
214
+ // node's frontFace flag as "cw", instead of
215
+ // the default "ccw".
216
+ indices: [
217
+ 0, 1, 2,
218
+ 0, 2, 3,
219
+ // front
220
+ 4, 5, 6,
221
+ 4, 6, 7,
222
+ // right
223
+ 8, 9, 10,
224
+ 8, 10, 11,
225
+ // top
226
+ 12, 13, 14,
227
+ 12, 14, 15,
228
+ // left
229
+ 16, 17, 18,
230
+ 16, 18, 19,
231
+ // bottom
232
+ 20, 21, 22,
233
+ 20, 22, 23
234
+ ]
235
+ });
236
+ }
237
+
238
+ export {buildBoxGeometry};
@@ -0,0 +1,106 @@
1
+ import {utils} from '../../utils.js';
2
+
3
+ /**
4
+ * @desc Creates a box-shaped lines {@link Geometry}.
5
+ *
6
+ * ## Usage
7
+ *
8
+ * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry} that has lines primitives.
9
+ *
10
+ * [[Run this example](/examples/#geometry_builders_buildBoxLinesGeometry)]
11
+ *
12
+ * ````javascript
13
+ * import {Viewer, Mesh, buildBoxLinesGeometry, ReadableGeometry, PhongMaterial} from "xeokit-sdk.es.js";
14
+ *
15
+ * const viewer = new Viewer({
16
+ * canvasId: "myCanvas"
17
+ * });
18
+ *
19
+ * viewer.scene.camera.eye = [0, 0, 5];
20
+ * viewer.scene.camera.look = [0, 0, 0];
21
+ * viewer.scene.camera.up = [0, 1, 0];
22
+ *
23
+ * new Mesh(viewer.scene, {
24
+ * geometry: new ReadableGeometry(viewer.scene, buildBoxLinesGeometry({
25
+ * center: [0,0,0],
26
+ * xSize: 1, // Half-size on each axis
27
+ * ySize: 1,
28
+ * zSize: 1
29
+ * })),
30
+ * material: new PhongMaterial(viewer.scene, {
31
+ * emissive: [0,1,0]
32
+ * })
33
+ * });
34
+ * ````
35
+ *
36
+ * @function buildBoxLinesGeometry
37
+ * @param {*} [cfg] Configs
38
+ * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.
39
+ * @param {Number[]} [cfg.center] 3D point indicating the center position.
40
+ * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.
41
+ * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.
42
+ * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.
43
+ * @returns {Object} Configuration for a {@link Geometry} subtype.
44
+ */
45
+ function buildBoxLinesGeometry(cfg = {}) {
46
+
47
+ let xSize = cfg.xSize || 1;
48
+ if (xSize < 0) {
49
+ console.error("negative xSize not allowed - will invert");
50
+ xSize *= -1;
51
+ }
52
+
53
+ let ySize = cfg.ySize || 1;
54
+ if (ySize < 0) {
55
+ console.error("negative ySize not allowed - will invert");
56
+ ySize *= -1;
57
+ }
58
+
59
+ let zSize = cfg.zSize || 1;
60
+ if (zSize < 0) {
61
+ console.error("negative zSize not allowed - will invert");
62
+ zSize *= -1;
63
+ }
64
+
65
+ const center = cfg.center;
66
+ const centerX = center ? center[0] : 0;
67
+ const centerY = center ? center[1] : 0;
68
+ const centerZ = center ? center[2] : 0;
69
+
70
+ const xmin = -xSize + centerX;
71
+ const ymin = -ySize + centerY;
72
+ const zmin = -zSize + centerZ;
73
+ const xmax = xSize + centerX;
74
+ const ymax = ySize + centerY;
75
+ const zmax = zSize + centerZ;
76
+
77
+ return utils.apply(cfg, {
78
+ primitive: "lines",
79
+ positions: [
80
+ xmin, ymin, zmin,
81
+ xmin, ymin, zmax,
82
+ xmin, ymax, zmin,
83
+ xmin, ymax, zmax,
84
+ xmax, ymin, zmin,
85
+ xmax, ymin, zmax,
86
+ xmax, ymax, zmin,
87
+ xmax, ymax, zmax
88
+ ],
89
+ indices: [
90
+ 0, 1,
91
+ 1, 3,
92
+ 3, 2,
93
+ 2, 0,
94
+ 4, 5,
95
+ 5, 7,
96
+ 7, 6,
97
+ 6, 4,
98
+ 0, 4,
99
+ 1, 5,
100
+ 2, 6,
101
+ 3, 7
102
+ ]
103
+ });
104
+ }
105
+
106
+ export {buildBoxLinesGeometry};