@xeokit/xeokit-sdk 2.5.2-beta-10 → 2.5.2-beta-13
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.
- package/dist/xeokit-sdk.cjs.js +146 -132
- package/dist/xeokit-sdk.es.js +146 -132
- package/dist/xeokit-sdk.es5.js +84 -84
- package/dist/xeokit-sdk.min.cjs.js +1 -1
- package/dist/xeokit-sdk.min.es.js +1 -1
- package/dist/xeokit-sdk.min.es5.js +1 -1
- package/package.json +1 -1
- package/src/src/extras/ContextMenu/ContextMenu.js +907 -0
- package/src/src/extras/ContextMenu/index.js +1 -0
- package/src/src/extras/MarqueePicker/MarqueePicker.js +352 -0
- package/src/src/extras/MarqueePicker/MarqueePickerMouseControl.js +174 -0
- package/src/src/extras/MarqueePicker/index.js +2 -0
- package/src/src/extras/PointerLens/PointerLens.js +312 -0
- package/src/src/extras/PointerLens/index.js +1 -0
- package/src/src/extras/collision/ObjectsKdTree3.js +149 -0
- package/src/src/extras/collision/index.js +1 -0
- package/src/src/extras/index.js +4 -0
- package/src/src/index.js +3 -0
- package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +731 -0
- package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +84 -0
- package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js +435 -0
- package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +406 -0
- package/src/src/plugins/AngleMeasurementsPlugin/index.js +3 -0
- package/src/src/plugins/AnnotationsPlugin/Annotation.js +368 -0
- package/src/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +583 -0
- package/src/src/plugins/AnnotationsPlugin/index.js +1 -0
- package/src/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +333 -0
- package/src/src/plugins/AxisGizmoPlugin/index.js +1 -0
- package/src/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +977 -0
- package/src/src/plugins/BCFViewpointsPlugin/index.js +1 -0
- package/src/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +29 -0
- package/src/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +751 -0
- package/src/src/plugins/CityJSONLoaderPlugin/index.js +1 -0
- package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +963 -0
- package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +84 -0
- package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js +399 -0
- package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +505 -0
- package/src/src/plugins/DistanceMeasurementsPlugin/index.js +3 -0
- package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +639 -0
- package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +436 -0
- package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +247 -0
- package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +167 -0
- package/src/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +1 -0
- package/src/src/plugins/FastNavPlugin/FastNavPlugin.js +429 -0
- package/src/src/plugins/FastNavPlugin/index.js +1 -0
- package/src/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +140 -0
- package/src/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +421 -0
- package/src/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +669 -0
- package/src/src/plugins/GLTFLoaderPlugin/index.js +2 -0
- package/src/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +58 -0
- package/src/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +563 -0
- package/src/src/plugins/LASLoaderPlugin/index.js +1 -0
- package/src/src/plugins/LASLoaderPlugin/loadLASHeader.js +183 -0
- package/src/src/plugins/NavCubePlugin/CubeTextureCanvas.js +290 -0
- package/src/src/plugins/NavCubePlugin/NavCubePlugin.js +753 -0
- package/src/src/plugins/NavCubePlugin/index.js +1 -0
- package/src/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +145 -0
- package/src/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +777 -0
- package/src/src/plugins/OBJLoaderPlugin/index.js +1 -0
- package/src/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +33 -0
- package/src/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +274 -0
- package/src/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +313 -0
- package/src/src/plugins/STLLoaderPlugin/index.js +2 -0
- package/src/src/plugins/SectionPlanesPlugin/Control.js +1328 -0
- package/src/src/plugins/SectionPlanesPlugin/Overview.js +249 -0
- package/src/src/plugins/SectionPlanesPlugin/Plane.js +169 -0
- package/src/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +404 -0
- package/src/src/plugins/SectionPlanesPlugin/index.js +1 -0
- package/src/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +134 -0
- package/src/src/plugins/SkyboxesPlugin/index.js +1 -0
- package/src/src/plugins/StoreyViewsPlugin/Storey.js +84 -0
- package/src/src/plugins/StoreyViewsPlugin/StoreyMap.js +57 -0
- package/src/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +773 -0
- package/src/src/plugins/StoreyViewsPlugin/index.js +1 -0
- package/src/src/plugins/TreeViewPlugin/RenderService.js +169 -0
- package/src/src/plugins/TreeViewPlugin/TreeViewNode.js +101 -0
- package/src/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1370 -0
- package/src/src/plugins/TreeViewPlugin/index.js +1 -0
- package/src/src/plugins/ViewCullPlugin/ViewCullPlugin.js +295 -0
- package/src/src/plugins/ViewCullPlugin/index.js +1 -0
- package/src/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +58 -0
- package/src/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +942 -0
- package/src/src/plugins/WebIFCLoaderPlugin/index.js +1 -0
- package/src/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +95 -0
- package/src/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +1194 -0
- package/src/src/plugins/XKTLoaderPlugin/index.js +2 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +169 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +660 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV11.js +663 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +230 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +223 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +283 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +246 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +301 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +439 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +563 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +518 -0
- package/src/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +2 -0
- package/src/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +238 -0
- package/src/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +1279 -0
- package/src/src/plugins/XML3DLoaderPlugin/index.js +1 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +11 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +2060 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +2155 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +1002 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +64 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +153 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +267 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +553 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +991 -0
- package/src/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +49 -0
- package/src/src/plugins/index.js +21 -0
- package/src/src/plugins/lib/culling/ObjectCullStates.js +208 -0
- package/src/src/plugins/lib/earcut.js +677 -0
- package/src/src/plugins/lib/html/Dot.js +179 -0
- package/src/src/plugins/lib/html/Label.js +174 -0
- package/src/src/plugins/lib/html/Wire.js +220 -0
- package/src/src/viewer/Configs.js +127 -0
- package/src/src/viewer/Plugin.js +233 -0
- package/src/src/viewer/Viewer.js +542 -0
- package/src/src/viewer/index.js +5 -0
- package/src/src/viewer/localization/LocaleService.js +475 -0
- package/src/src/viewer/metadata/IFCObjectDefaultColors.js +163 -0
- package/src/src/viewer/metadata/IFCObjectDefaults.js +17 -0
- package/src/src/viewer/metadata/MetaModel.js +414 -0
- package/src/src/viewer/metadata/MetaObject.js +223 -0
- package/src/src/viewer/metadata/MetaScene.js +336 -0
- package/src/src/viewer/metadata/Property.js +55 -0
- package/src/src/viewer/metadata/PropertySet.js +77 -0
- package/src/src/viewer/scene/Bitmap/Bitmap.js +473 -0
- package/src/src/viewer/scene/Bitmap/index.js +1 -0
- package/src/src/viewer/scene/CameraControl/CameraControl.js +1750 -0
- package/src/src/viewer/scene/CameraControl/lib/CameraUpdater.js +312 -0
- package/src/src/viewer/scene/CameraControl/lib/controllers/PanController.js +112 -0
- package/src/src/viewer/scene/CameraControl/lib/controllers/PickController.js +265 -0
- package/src/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +384 -0
- package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +122 -0
- package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +183 -0
- package/src/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +68 -0
- package/src/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +345 -0
- package/src/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +376 -0
- package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +288 -0
- package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +235 -0
- package/src/src/viewer/scene/Component.js +915 -0
- package/src/src/viewer/scene/Entity.js +502 -0
- package/src/src/viewer/scene/ImagePlane/ImagePlane.js +570 -0
- package/src/src/viewer/scene/ImagePlane/index.js +1 -0
- package/src/src/viewer/scene/LineSet/LineSet.js +163 -0
- package/src/src/viewer/scene/LineSet/index.js +1 -0
- package/src/src/viewer/scene/camera/Camera.js +912 -0
- package/src/src/viewer/scene/camera/CameraFlightAnimation.js +669 -0
- package/src/src/viewer/scene/camera/CameraPath.js +194 -0
- package/src/src/viewer/scene/camera/CameraPathAnimation.js +326 -0
- package/src/src/viewer/scene/camera/CustomProjection.js +149 -0
- package/src/src/viewer/scene/camera/Frustum.js +316 -0
- package/src/src/viewer/scene/camera/Ortho.js +286 -0
- package/src/src/viewer/scene/camera/Perspective.js +304 -0
- package/src/src/viewer/scene/camera/index.js +2 -0
- package/src/src/viewer/scene/canvas/Canvas.js +490 -0
- package/src/src/viewer/scene/canvas/Spinner.js +323 -0
- package/src/src/viewer/scene/constants/constants.js +371 -0
- package/src/src/viewer/scene/core.js +268 -0
- package/src/src/viewer/scene/geometry/Geometry.js +33 -0
- package/src/src/viewer/scene/geometry/ReadableGeometry.js +682 -0
- package/src/src/viewer/scene/geometry/VBOGeometry.js +319 -0
- package/src/src/viewer/scene/geometry/builders/buildBoxGeometry.js +238 -0
- package/src/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +106 -0
- package/src/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +271 -0
- package/src/src/viewer/scene/geometry/builders/buildGridGeometry.js +102 -0
- package/src/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +168 -0
- package/src/src/viewer/scene/geometry/builders/buildSphereGeometry.js +161 -0
- package/src/src/viewer/scene/geometry/builders/buildTorusGeometry.js +172 -0
- package/src/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +1721 -0
- package/src/src/viewer/scene/geometry/builders/index.js +8 -0
- package/src/src/viewer/scene/geometry/index.js +4 -0
- package/src/src/viewer/scene/geometry/loaders/index.js +2 -0
- package/src/src/viewer/scene/geometry/loaders/load3DSGeometry.js +103 -0
- package/src/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +130 -0
- package/src/src/viewer/scene/index.js +21 -0
- package/src/src/viewer/scene/input/Input.js +1333 -0
- package/src/src/viewer/scene/libs/k3d.js +1032 -0
- package/src/src/viewer/scene/lights/AmbientLight.js +175 -0
- package/src/src/viewer/scene/lights/CubeTexture.js +156 -0
- package/src/src/viewer/scene/lights/DirLight.js +314 -0
- package/src/src/viewer/scene/lights/Light.js +29 -0
- package/src/src/viewer/scene/lights/LightMap.js +77 -0
- package/src/src/viewer/scene/lights/PointLight.js +395 -0
- package/src/src/viewer/scene/lights/ReflectionMap.js +79 -0
- package/src/src/viewer/scene/lights/Shadow.js +138 -0
- package/src/src/viewer/scene/lights/index.js +5 -0
- package/src/src/viewer/scene/marker/Marker.js +383 -0
- package/src/src/viewer/scene/marker/SpriteMarker.js +356 -0
- package/src/src/viewer/scene/marker/index.js +2 -0
- package/src/src/viewer/scene/materials/EdgeMaterial.js +359 -0
- package/src/src/viewer/scene/materials/EmphasisMaterial.js +613 -0
- package/src/src/viewer/scene/materials/Fresnel.js +222 -0
- package/src/src/viewer/scene/materials/LambertMaterial.js +378 -0
- package/src/src/viewer/scene/materials/LinesMaterial.js +169 -0
- package/src/src/viewer/scene/materials/Material.js +39 -0
- package/src/src/viewer/scene/materials/MetallicMaterial.js +820 -0
- package/src/src/viewer/scene/materials/PhongMaterial.js +860 -0
- package/src/src/viewer/scene/materials/PointsMaterial.js +409 -0
- package/src/src/viewer/scene/materials/SpecularMaterial.js +807 -0
- package/src/src/viewer/scene/materials/Texture.js +513 -0
- package/src/src/viewer/scene/materials/index.js +8 -0
- package/src/src/viewer/scene/math/Frustum.js +118 -0
- package/src/src/viewer/scene/math/buildEdgeIndices.js +162 -0
- package/src/src/viewer/scene/math/geometryCompressionUtils.js +365 -0
- package/src/src/viewer/scene/math/index.js +3 -0
- package/src/src/viewer/scene/math/math.js +5386 -0
- package/src/src/viewer/scene/math/rtcCoords.js +139 -0
- package/src/src/viewer/scene/mementos/CameraMemento.js +200 -0
- package/src/src/viewer/scene/mementos/ModelMemento.js +263 -0
- package/src/src/viewer/scene/mementos/ObjectsMemento.js +259 -0
- package/src/src/viewer/scene/mementos/index.js +3 -0
- package/src/src/viewer/scene/mesh/Mesh.js +2202 -0
- package/src/src/viewer/scene/mesh/draw/DrawRenderer.js +996 -0
- package/src/src/viewer/scene/mesh/draw/DrawShaderSource.js +1570 -0
- package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +259 -0
- package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +159 -0
- package/src/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +286 -0
- package/src/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +262 -0
- package/src/src/viewer/scene/mesh/index.js +1 -0
- package/src/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +217 -0
- package/src/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +157 -0
- package/src/src/viewer/scene/mesh/pick/PickMeshRenderer.js +223 -0
- package/src/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +151 -0
- package/src/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +200 -0
- package/src/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +124 -0
- package/src/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
- package/src/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +98 -0
- package/src/src/viewer/scene/metriqs/Metriqs.js +259 -0
- package/src/src/viewer/scene/model/ENTITY_FLAGS.js +21 -0
- package/src/src/viewer/scene/model/PerformanceModel.js +26 -0
- package/src/src/viewer/scene/model/RENDER_PASSES.js +34 -0
- package/src/src/viewer/scene/model/SceneModel.js +4018 -0
- package/src/src/viewer/scene/model/SceneModelEntity.js +715 -0
- package/src/src/viewer/scene/model/SceneModelMesh.js +341 -0
- package/src/src/viewer/scene/model/SceneModelTexture.js +38 -0
- package/src/src/viewer/scene/model/SceneModelTextureSet.js +59 -0
- package/src/src/viewer/scene/model/SceneModelTransform.js +404 -0
- package/src/src/viewer/scene/model/VBOSceneModel.js +26 -0
- package/src/src/viewer/scene/model/calculateUniquePositions.js +126 -0
- package/src/src/viewer/scene/model/compression.js +227 -0
- package/src/src/viewer/scene/model/dtx/BindableDataTexture.js +31 -0
- package/src/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +27 -0
- package/src/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +891 -0
- package/src/src/viewer/scene/model/dtx/lines/DTXLinesState.js +46 -0
- package/src/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +411 -0
- package/src/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +49 -0
- package/src/src/viewer/scene/model/dtx/lines/rebucketPositions.js +208 -0
- package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +389 -0
- package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +65 -0
- package/src/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +1322 -0
- package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +46 -0
- package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +250 -0
- package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +518 -0
- package/src/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +54 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +619 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +464 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +414 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +422 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +345 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +436 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +462 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +436 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +455 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +440 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +307 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +465 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +466 -0
- package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +427 -0
- package/src/src/viewer/scene/model/index.js +5 -0
- package/src/src/viewer/scene/model/rebucketPositions.js +354 -0
- package/src/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
- package/src/src/viewer/scene/model/vbo/VBORenderer.js +646 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +699 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +19 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +316 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +114 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +99 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +124 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +311 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +309 -0
- package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +24 -0
- package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js +20 -0
- package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +718 -0
- package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +24 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +168 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +136 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +156 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +148 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +144 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +107 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +146 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +309 -0
- package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +303 -0
- package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +24 -0
- package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +1257 -0
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesEdgesColorRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js} +6 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesEdgesRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js} +6 -4
- package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesRenderers.js → src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js} +45 -45
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js} +4 -3
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesColorRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesColorTextureRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesDepthRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesFlatColorRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesNormalsRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesOcclusionRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPBRRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPickDepthRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPickMeshRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPickNormalsFlatRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesPickNormalsRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesShadowRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesSilhouetteRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js} +3 -3
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesSnapInitRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js} +1 -1
- package/src/{viewer/scene/model/vbo/batching/triangles/renderers/VBOBatchingTrianglesSnapRenderer.js → src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js} +1 -1
- package/src/src/viewer/scene/model/vbo/float16.js +760 -0
- package/src/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +704 -0
- package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +148 -0
- package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +26 -0
- package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +139 -0
- package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +127 -0
- package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +331 -0
- package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +316 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +728 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +174 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +156 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +149 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +170 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +152 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +26 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +174 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +119 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +154 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +330 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +311 -0
- package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +150 -0
- package/src/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +1190 -0
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesEdgesColorRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js} +8 -4
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesEdgesRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js} +8 -5
- package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesRenderers.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js} +45 -45
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesColorRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js} +3 -3
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesColorTextureRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesDepthRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesFlatColorRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesFlatNormalsRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOSceneModelTriangleInstancingRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js} +1 -1
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesNormalsRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesOcclusionRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPBRRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPickDepthRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPickMeshRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPickNormalsFlatRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesPickNormalsRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesShadowRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesSilhouetteRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js} +2 -2
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesSnapInitRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js} +1 -1
- package/src/{viewer/scene/model/vbo/instancing/triangles/renderers/VBOInstancingTrianglesSnapRenderer.js → src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js} +1 -1
- package/src/src/viewer/scene/nodes/Node.js +1383 -0
- package/src/src/viewer/scene/nodes/index.js +1 -0
- package/src/src/viewer/scene/paths/CubicBezierCurve.js +194 -0
- package/src/src/viewer/scene/paths/Curve.js +183 -0
- package/src/src/viewer/scene/paths/Path.js +239 -0
- package/src/src/viewer/scene/paths/QuadraticBezierCurve.js +161 -0
- package/src/src/viewer/scene/paths/SplineCurve.js +133 -0
- package/src/src/viewer/scene/paths/index.js +5 -0
- package/src/src/viewer/scene/postfx/SAO.js +543 -0
- package/src/src/viewer/scene/scene/Scene.js +2802 -0
- package/src/src/viewer/scene/sectionPlane/SectionPlane.js +198 -0
- package/src/src/viewer/scene/sectionPlane/SectionPlaneCache.js +101 -0
- package/src/src/viewer/scene/sectionPlane/index.js +1 -0
- package/src/src/viewer/scene/skybox/Skybox.js +123 -0
- package/src/src/viewer/scene/skybox/index.js +1 -0
- package/src/src/viewer/scene/stats.js +44 -0
- package/src/src/viewer/scene/utils/Cache.js +29 -0
- package/src/src/viewer/scene/utils/FileLoader.js +161 -0
- package/src/src/viewer/scene/utils/Loader.js +55 -0
- package/src/src/viewer/scene/utils/LoadingManager.js +86 -0
- package/src/src/viewer/scene/utils/Map.js +45 -0
- package/src/src/viewer/scene/utils/Queue.js +56 -0
- package/src/src/viewer/scene/utils/WorkerPool.js +73 -0
- package/src/src/viewer/scene/utils/index.js +6 -0
- package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +650 -0
- package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +1 -0
- package/src/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +31 -0
- package/src/src/viewer/scene/utils/textureTranscoders/index.js +2 -0
- package/src/src/viewer/scene/utils.js +453 -0
- package/src/src/viewer/scene/viewport/Viewport.js +212 -0
- package/src/src/viewer/scene/webgl/ArrayBuf.js +121 -0
- package/src/src/viewer/scene/webgl/Attribute.js +23 -0
- package/src/src/viewer/scene/webgl/Drawable.js +270 -0
- package/src/src/viewer/scene/webgl/FrameContext.js +313 -0
- package/src/src/viewer/scene/webgl/PickResult.js +364 -0
- package/src/src/viewer/scene/webgl/Pickable.js +69 -0
- package/src/src/viewer/scene/webgl/Program.js +181 -0
- package/src/src/viewer/scene/webgl/RenderBuffer.js +378 -0
- package/src/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
- package/src/src/viewer/scene/webgl/RenderFlags.js +203 -0
- package/src/src/viewer/scene/webgl/RenderState.js +40 -0
- package/src/src/viewer/scene/webgl/Renderer.js +1781 -0
- package/src/src/viewer/scene/webgl/Sampler.js +18 -0
- package/src/src/viewer/scene/webgl/Shader.js +49 -0
- package/src/src/viewer/scene/webgl/Texture2D.js +442 -0
- package/src/src/viewer/scene/webgl/convertConstant.js +244 -0
- package/src/src/viewer/scene/webgl/getExtension.js +32 -0
- package/src/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +214 -0
- package/src/src/viewer/scene/webgl/occlusion/OcclusionTester.js +426 -0
- package/src/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
- package/src/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +376 -0
- package/src/src/viewer/scene/webgl/webglEnums.js +61 -0
- package/src/src/viewer/scene/webglInfo.js +47 -0
- package/src/viewer/scene/model/SceneModel.js +1 -1
- package/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +1 -1
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +131 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +135 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +375 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +34 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +238 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +270 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +126 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +235 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +139 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +125 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +561 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +144 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +130 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +121 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +131 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +107 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +136 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +311 -0
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +308 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +1 -1
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +136 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +137 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +376 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +253 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +278 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +126 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +244 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +130 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +29 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +138 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +128 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +561 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +149 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +136 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +130 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +145 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +113 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +139 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +342 -0
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +325 -0
- package/src/viewer/scene/webgl/Renderer.js +20 -19
- package/src/viewer/scene/model/vbo/batching/triangles/renderers/VBOSceneModelTriangleBatchingEdgesRenderer.js +0 -12
- package/src/viewer/scene/model/vbo/instancing/triangles/renderers/VBOSceneModelTriangleInstancingEdgesRenderer.js +0 -12
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default data access strategy for {@link LASLoaderPlugin}.
|
|
3
|
+
*/
|
|
4
|
+
class LASDefaultDataSource {
|
|
5
|
+
|
|
6
|
+
constructor() {
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Gets the contents of the given LAS file in an arraybuffer.
|
|
11
|
+
*
|
|
12
|
+
* @param {String|Number} src Path or ID of an LAS file.
|
|
13
|
+
* @param {Function} ok Callback fired on success, argument is the LAS file in an arraybuffer.
|
|
14
|
+
* @param {Function} error Callback fired on error.
|
|
15
|
+
*/
|
|
16
|
+
getLAS(src, ok, error) {
|
|
17
|
+
var defaultCallback = () => {
|
|
18
|
+
};
|
|
19
|
+
ok = ok || defaultCallback;
|
|
20
|
+
error = error || defaultCallback;
|
|
21
|
+
const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;
|
|
22
|
+
const dataUriRegexResult = src.match(dataUriRegex);
|
|
23
|
+
if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest
|
|
24
|
+
const isBase64 = !!dataUriRegexResult[2];
|
|
25
|
+
var data = dataUriRegexResult[3];
|
|
26
|
+
data = window.decodeURIComponent(data);
|
|
27
|
+
if (isBase64) {
|
|
28
|
+
data = window.atob(data);
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const buffer = new ArrayBuffer(data.length);
|
|
32
|
+
const view = new Uint8Array(buffer);
|
|
33
|
+
for (var i = 0; i < data.length; i++) {
|
|
34
|
+
view[i] = data.charCodeAt(i);
|
|
35
|
+
}
|
|
36
|
+
ok(buffer);
|
|
37
|
+
} catch (errMsg) {
|
|
38
|
+
error(errMsg);
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
const request = new XMLHttpRequest();
|
|
42
|
+
request.open('GET', src, true);
|
|
43
|
+
request.responseType = 'arraybuffer';
|
|
44
|
+
request.onreadystatechange = function () {
|
|
45
|
+
if (request.readyState === 4) {
|
|
46
|
+
if (request.status === 200) {
|
|
47
|
+
ok(request.response);
|
|
48
|
+
} else {
|
|
49
|
+
error('getXKT error : ' + request.response);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
request.send(null);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export {LASDefaultDataSource};
|
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
import {utils} from "../../viewer/scene/utils.js";
|
|
2
|
+
import {SceneModel} from "../../viewer/scene/model/index.js";
|
|
3
|
+
import {Plugin} from "../../viewer/Plugin.js";
|
|
4
|
+
import {LASDefaultDataSource} from "./LASDefaultDataSource.js";
|
|
5
|
+
import {math} from "../../viewer/index.js";
|
|
6
|
+
import {parse} from '@loaders.gl/core';
|
|
7
|
+
import {LASLoader} from '@loaders.gl/las/dist/esm/las-loader.js';
|
|
8
|
+
import {loadLASHeader} from "./loadLASHeader";
|
|
9
|
+
|
|
10
|
+
const MAX_VERTICES = 500000; // TODO: Rough estimate
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* {@link Viewer} plugin that loads lidar point cloud geometry from LAS files.
|
|
14
|
+
*
|
|
15
|
+
* <a href="https://xeokit.github.io/xeokit-sdk/examples/#loading_LASLoaderPlugin_Autzen"><img src="https://xeokit.github.io/xeokit-sdk/assets/images/autzen.png"></a>
|
|
16
|
+
*
|
|
17
|
+
* [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_LASLoaderPlugin_Autzen)]
|
|
18
|
+
*
|
|
19
|
+
* ## Summary
|
|
20
|
+
*
|
|
21
|
+
* * Loads [LAS 1.4 Format](https://www.asprs.org/divisions-committees/lidar-division/laser-las-file-format-exchange-activities) from both *.las* and *.laz* files.
|
|
22
|
+
* * Loads lidar point cloud positions, colors and intensities.
|
|
23
|
+
* * Supports 32 and 64-bit positions.
|
|
24
|
+
* * Supports 8 and 16-bit color depths.
|
|
25
|
+
* * Option to load every *n* points.
|
|
26
|
+
* * Does not (yet) load [point classifications](https://www.usna.edu/Users/oceano/pguth/md_help/html/las_format_classification_codes.htm).
|
|
27
|
+
*
|
|
28
|
+
* ## Performance
|
|
29
|
+
*
|
|
30
|
+
* If you need faster loading, consider pre-converting your LAS files to XKT format using [xeokit-convert](https://github.com/xeokit/xeokit-convert), then loading them
|
|
31
|
+
* with {@link XKTLoaderPlugin}.
|
|
32
|
+
*
|
|
33
|
+
* ## Scene and metadata representation
|
|
34
|
+
*
|
|
35
|
+
* When LASLoaderPlugin loads a LAS file, it creates two {@link Entity}s, a {@link MetaModel} and a {@link MetaObject}.
|
|
36
|
+
*
|
|
37
|
+
* The first Entity represents the file as a model within the Viewer's {@link Scene}. To indicate that it represents a model,
|
|
38
|
+
* this Entity will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.
|
|
39
|
+
*
|
|
40
|
+
* The second Entity represents the the point cloud itself, as an object within the Scene. To indicate that it
|
|
41
|
+
* represents an object, this Entity will have {@link Entity#isObject} set ````true```` and will be registered
|
|
42
|
+
* by {@link Entity#id} in {@link Scene#objects}.
|
|
43
|
+
*
|
|
44
|
+
* The MetaModel registers the LAS file as a model within the Viewer's {@link MetaScene}. The MetaModel will be registered
|
|
45
|
+
* by {@link MetaModel#id} in {@link MetaScene#metaModels} .
|
|
46
|
+
*
|
|
47
|
+
* Finally, the MetaObject registers the point cloud as an object within the {@link MetaScene}. The MetaObject will be registered
|
|
48
|
+
* by {@link MetaObject#id} in {@link MetaScene#metaObjects}.
|
|
49
|
+
*
|
|
50
|
+
* ## Usage
|
|
51
|
+
*
|
|
52
|
+
* In the example below we'll load the Autzen model from
|
|
53
|
+
* a [LAS file](/assets/models/las/). Once the model has
|
|
54
|
+
* loaded, we'll then find its {@link MetaModel}, and the {@link MetaObject} and {@link Entity} that represent its point cloud.
|
|
55
|
+
*
|
|
56
|
+
* * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_LASLoaderPlugin_Autzen)]
|
|
57
|
+
*
|
|
58
|
+
* ````javascript
|
|
59
|
+
* import {Viewer, LASLoaderPlugin} from "xeokit-sdk.es.js";
|
|
60
|
+
*
|
|
61
|
+
* const viewer = new Viewer({
|
|
62
|
+
* canvasId: "myCanvas",
|
|
63
|
+
* transparent: true
|
|
64
|
+
* });
|
|
65
|
+
*
|
|
66
|
+
* viewer.camera.eye = [-2.56, 8.38, 8.27];
|
|
67
|
+
* viewer.camera.look = [13.44, 3.31, -14.83];
|
|
68
|
+
* viewer.camera.up = [0.10, 0.98, -0.14];
|
|
69
|
+
*
|
|
70
|
+
* const lasLoader = new LASLoaderPlugin(viewer, {
|
|
71
|
+
* colorDepth: 8, // Default
|
|
72
|
+
* fp64: false, // Default
|
|
73
|
+
* skip: 1 // Default
|
|
74
|
+
* });
|
|
75
|
+
*
|
|
76
|
+
* const modelEntity = lasLoader.load({
|
|
77
|
+
* id: "myModel",
|
|
78
|
+
* src: "../assets/models/las/autzen.laz"
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* modelEntity.on("loaded", () => {
|
|
82
|
+
*
|
|
83
|
+
* const metaModel = viewer.metaScene.metaModels[modelEntity.id];
|
|
84
|
+
* const pointCloudMetaObject = metaModel.rootMetaObject;
|
|
85
|
+
*
|
|
86
|
+
* const pointCloudEntity = viewer.scene.objects[pointCloudMetaObject.id];
|
|
87
|
+
*
|
|
88
|
+
* //...
|
|
89
|
+
* });
|
|
90
|
+
* ````
|
|
91
|
+
*
|
|
92
|
+
* ## Transforming
|
|
93
|
+
*
|
|
94
|
+
* We have the option to rotate, scale and translate each LAS model as we load it.
|
|
95
|
+
*
|
|
96
|
+
* In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then
|
|
97
|
+
* position it at [1842022, 10, -5173301] within xeokit's world coordinate system.
|
|
98
|
+
*
|
|
99
|
+
* ````javascript
|
|
100
|
+
* const modelEntity = lasLoader.load({
|
|
101
|
+
* id: "myModel",
|
|
102
|
+
* src: "../assets/models/las/autzen.laz"
|
|
103
|
+
* rotation: [90,0,0],
|
|
104
|
+
* scale: [0.5, 0.5, 0.5],
|
|
105
|
+
* origin: [1842022, 10, -5173301]
|
|
106
|
+
* });
|
|
107
|
+
* ````
|
|
108
|
+
*
|
|
109
|
+
* ## Configuring a custom data source
|
|
110
|
+
*
|
|
111
|
+
* By default, LASLoaderPlugin will load LAS files over HTTP.
|
|
112
|
+
*
|
|
113
|
+
* In the example below, we'll customize the way LASLoaderPlugin loads the files by configuring it with our own data source
|
|
114
|
+
* object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.
|
|
115
|
+
*
|
|
116
|
+
* ````javascript
|
|
117
|
+
* import {utils} from "xeokit-sdk.es.js";
|
|
118
|
+
*
|
|
119
|
+
* class MyDataSource {
|
|
120
|
+
*
|
|
121
|
+
* constructor() {
|
|
122
|
+
* }
|
|
123
|
+
*
|
|
124
|
+
* // Gets the contents of the given LAS file in an arraybuffer
|
|
125
|
+
* getLAS(src, ok, error) {
|
|
126
|
+
* utils.loadArraybuffer(src,
|
|
127
|
+
* (arraybuffer) => {
|
|
128
|
+
* ok(arraybuffer);
|
|
129
|
+
* },
|
|
130
|
+
* (errMsg) => {
|
|
131
|
+
* error(errMsg);
|
|
132
|
+
* });
|
|
133
|
+
* }
|
|
134
|
+
* }
|
|
135
|
+
*
|
|
136
|
+
* const lasLoader = new LASLoaderPlugin(viewer, {
|
|
137
|
+
* dataSource: new MyDataSource()
|
|
138
|
+
* });
|
|
139
|
+
*
|
|
140
|
+
* const modelEntity = lasLoader.load({
|
|
141
|
+
* id: "myModel",
|
|
142
|
+
* src: "../assets/models/las/autzen.laz"
|
|
143
|
+
* });
|
|
144
|
+
* ````
|
|
145
|
+
*
|
|
146
|
+
* @class LASLoaderPlugin
|
|
147
|
+
* @since 2.0.17
|
|
148
|
+
*/
|
|
149
|
+
class LASLoaderPlugin extends Plugin {
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @constructor
|
|
153
|
+
*
|
|
154
|
+
* @param {Viewer} viewer The Viewer.
|
|
155
|
+
* @param {Object} cfg Plugin configuration.
|
|
156
|
+
* @param {String} [cfg.id="lasLoader"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.
|
|
157
|
+
* @param {Object} [cfg.dataSource] A custom data source through which the LASLoaderPlugin can load model and metadata files. Defaults to an instance of {@link LASDefaultDataSource}, which loads over HTTP.
|
|
158
|
+
* @param {Number} [cfg.skip=1] Configures LASLoaderPlugin to load every **n** points.
|
|
159
|
+
* @param {Number} [cfg.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.
|
|
160
|
+
* @param {Number} [cfg.colorDepth=8] Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits. Accepted values are 8, 16 an "auto".
|
|
161
|
+
*/
|
|
162
|
+
constructor(viewer, cfg = {}) {
|
|
163
|
+
|
|
164
|
+
super("lasLoader", viewer, cfg);
|
|
165
|
+
|
|
166
|
+
this.dataSource = cfg.dataSource;
|
|
167
|
+
this.skip = cfg.skip;
|
|
168
|
+
this.fp64 = cfg.fp64;
|
|
169
|
+
this.colorDepth = cfg.colorDepth;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Gets the custom data source through which the LASLoaderPlugin can load LAS files.
|
|
174
|
+
*
|
|
175
|
+
* Default value is {@link LASDefaultDataSource}, which loads via HTTP.
|
|
176
|
+
*
|
|
177
|
+
* @type {Object}
|
|
178
|
+
*/
|
|
179
|
+
get dataSource() {
|
|
180
|
+
return this._dataSource;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Sets a custom data source through which the LASLoaderPlugin can load LAS files.
|
|
185
|
+
*
|
|
186
|
+
* Default value is {@link LASDefaultDataSource}, which loads via HTTP.
|
|
187
|
+
*
|
|
188
|
+
* @type {Object}
|
|
189
|
+
*/
|
|
190
|
+
set dataSource(value) {
|
|
191
|
+
this._dataSource = value || new LASDefaultDataSource();
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* When LASLoaderPlugin is configured to load every **n** points, returns the value of **n**.
|
|
196
|
+
*
|
|
197
|
+
* Default value is ````1````.
|
|
198
|
+
*
|
|
199
|
+
* @returns {Number} The **n**th point that LASLoaderPlugin will read.
|
|
200
|
+
*/
|
|
201
|
+
get skip() {
|
|
202
|
+
return this._skip;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Configures LASLoaderPlugin to load every **n** points.
|
|
207
|
+
*
|
|
208
|
+
* Default value is ````1````.
|
|
209
|
+
*
|
|
210
|
+
* @param {Number} value The **n**th point that LASLoaderPlugin will read.
|
|
211
|
+
*/
|
|
212
|
+
set skip(value) {
|
|
213
|
+
this._skip = value || 1;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Gets if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.
|
|
218
|
+
*
|
|
219
|
+
* Default value is ````false````.
|
|
220
|
+
*
|
|
221
|
+
* @returns {Boolean} True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.
|
|
222
|
+
*/
|
|
223
|
+
get fp64() {
|
|
224
|
+
return this._fp64;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.
|
|
229
|
+
*
|
|
230
|
+
* Default value is ````false````.
|
|
231
|
+
*
|
|
232
|
+
* @param {Boolean} value True if LASLoaderPlugin assumes that positions are stored in 64-bit floats instead of 32-bit.
|
|
233
|
+
*/
|
|
234
|
+
set fp64(value) {
|
|
235
|
+
this._fp64 = !!value;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Gets whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.
|
|
240
|
+
*
|
|
241
|
+
* Default value is ````8````.
|
|
242
|
+
*
|
|
243
|
+
* Note: LAS specification recommends 16 bits.
|
|
244
|
+
*
|
|
245
|
+
* @returns {Number|String} Possible returned values are 8, 16 and "auto".
|
|
246
|
+
*/
|
|
247
|
+
get colorDepth() {
|
|
248
|
+
return this._colorDepth;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Configures whether LASLoaderPlugin assumes that LAS colors are encoded using 8 or 16 bits.
|
|
253
|
+
*
|
|
254
|
+
* Default value is ````8````.
|
|
255
|
+
*
|
|
256
|
+
* Note: LAS specification recommends 16 bits.
|
|
257
|
+
*
|
|
258
|
+
* @param {Number|String} value Valid values are 8, 16 and "auto".
|
|
259
|
+
*/
|
|
260
|
+
set colorDepth(value) {
|
|
261
|
+
this._colorDepth = value || "auto";
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Loads an ````LAS```` model into this LASLoaderPlugin's {@link Viewer}.
|
|
266
|
+
*
|
|
267
|
+
* @param {*} params Loading parameters.
|
|
268
|
+
* @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.
|
|
269
|
+
* @param {String} [params.src] Path to a LAS file, as an alternative to the ````las```` parameter.
|
|
270
|
+
* @param {ArrayBuffer} [params.las] The LAS file data, as an alternative to the ````src```` parameter.
|
|
271
|
+
* @param {Boolean} [params.loadMetadata=true] Whether to load metadata for the LAS model.
|
|
272
|
+
* @param {Number[]} [params.origin=[0,0,0]] The model's World-space double-precision 3D origin. Use this to position the model within xeokit's World coordinate system, using double-precision coordinates.
|
|
273
|
+
* @param {Number[]} [params.position=[0,0,0]] The model single-precision 3D position, relative to the ````origin```` parameter.
|
|
274
|
+
* @param {Number[]} [params.scale=[1,1,1]] The model's scale.
|
|
275
|
+
* @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis.
|
|
276
|
+
* @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````.
|
|
277
|
+
* @param {Object} [params.stats] Collects model statistics.
|
|
278
|
+
* @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.
|
|
279
|
+
*/
|
|
280
|
+
load(params = {}) {
|
|
281
|
+
|
|
282
|
+
if (params.id && this.viewer.scene.components[params.id]) {
|
|
283
|
+
this.error("Component with this ID already exists in viewer: " + params.id + " - will autogenerate this ID");
|
|
284
|
+
delete params.id;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, {
|
|
288
|
+
isModel: true
|
|
289
|
+
}));
|
|
290
|
+
|
|
291
|
+
if (!params.src && !params.las) {
|
|
292
|
+
this.error("load() param expected: src or las");
|
|
293
|
+
return sceneModel; // Return new empty model
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
const options = {
|
|
297
|
+
las: {
|
|
298
|
+
skip: this._skip,
|
|
299
|
+
fp64: this._fp64,
|
|
300
|
+
colorDepth: this._colorDepth
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
if (params.src) {
|
|
305
|
+
this._loadModel(params.src, params, options, sceneModel);
|
|
306
|
+
} else {
|
|
307
|
+
const spinner = this.viewer.scene.canvas.spinner;
|
|
308
|
+
spinner.processes++;
|
|
309
|
+
this._parseModel(params.las, params, options, sceneModel).then(() => {
|
|
310
|
+
spinner.processes--;
|
|
311
|
+
}, (errMsg) => {
|
|
312
|
+
spinner.processes--;
|
|
313
|
+
this.error(errMsg);
|
|
314
|
+
sceneModel.fire("error", errMsg);
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
return sceneModel;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
_loadModel(src, params, options, sceneModel) {
|
|
322
|
+
const spinner = this.viewer.scene.canvas.spinner;
|
|
323
|
+
spinner.processes++;
|
|
324
|
+
this._dataSource.getLAS(params.src, (arrayBuffer) => {
|
|
325
|
+
this._parseModel(arrayBuffer, params, options, sceneModel).then(() => {
|
|
326
|
+
spinner.processes--;
|
|
327
|
+
}, (errMsg) => {
|
|
328
|
+
spinner.processes--;
|
|
329
|
+
this.error(errMsg);
|
|
330
|
+
sceneModel.fire("error", errMsg);
|
|
331
|
+
});
|
|
332
|
+
},
|
|
333
|
+
(errMsg) => {
|
|
334
|
+
spinner.processes--;
|
|
335
|
+
this.error(errMsg);
|
|
336
|
+
sceneModel.fire("error", errMsg);
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
_parseModel(arrayBuffer, params, options, sceneModel) {
|
|
341
|
+
|
|
342
|
+
function readPositions(attributesPosition) {
|
|
343
|
+
const positionsValue = attributesPosition.value;
|
|
344
|
+
if (params.rotateX) {
|
|
345
|
+
if (positionsValue) {
|
|
346
|
+
for (let i = 0, len = positionsValue.length; i < len; i += 3) {
|
|
347
|
+
const temp = positionsValue[i + 1];
|
|
348
|
+
positionsValue[i + 1] = positionsValue[i + 2];
|
|
349
|
+
positionsValue[i + 2] = temp;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
return positionsValue;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
function readColorsAndIntensities(attributesColor, attributesIntensity) {
|
|
357
|
+
const colors = attributesColor.value;
|
|
358
|
+
const colorSize = attributesColor.size;
|
|
359
|
+
const intensities = attributesIntensity.value;
|
|
360
|
+
const colorsCompressedSize = intensities.length * 4;
|
|
361
|
+
const colorsCompressed = new Uint8Array(colorsCompressedSize);
|
|
362
|
+
for (let i = 0, j = 0, k = 0, len = intensities.length; i < len; i++, k += colorSize, j += 4) {
|
|
363
|
+
colorsCompressed[j + 0] = colors[k + 0];
|
|
364
|
+
colorsCompressed[j + 1] = colors[k + 1];
|
|
365
|
+
colorsCompressed[j + 2] = colors[k + 2];
|
|
366
|
+
colorsCompressed[j + 3] = Math.round((intensities[i] / 65536) * 255);
|
|
367
|
+
}
|
|
368
|
+
return colorsCompressed;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
function readIntensities(attributesIntensity) {
|
|
372
|
+
const intensities = attributesIntensity.intensity;
|
|
373
|
+
const colorsCompressedSize = intensities.length * 4;
|
|
374
|
+
const colorsCompressed = new Uint8Array(colorsCompressedSize);
|
|
375
|
+
for (let i = 0, j = 0, k = 0, len = intensities.length; i < len; i++, k += 3, j += 4) {
|
|
376
|
+
colorsCompressed[j + 0] = 0;
|
|
377
|
+
colorsCompressed[j + 1] = 0;
|
|
378
|
+
colorsCompressed[j + 2] = 0;
|
|
379
|
+
colorsCompressed[j + 3] = Math.round((intensities[i] / 65536) * 255);
|
|
380
|
+
}
|
|
381
|
+
return colorsCompressed;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
return new Promise((resolve, reject) => {
|
|
385
|
+
|
|
386
|
+
if (sceneModel.destroyed) {
|
|
387
|
+
reject();
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
const stats = params.stats || {};
|
|
392
|
+
stats.sourceFormat = "LAS";
|
|
393
|
+
stats.schemaVersion = "";
|
|
394
|
+
stats.title = "";
|
|
395
|
+
stats.author = "";
|
|
396
|
+
stats.created = "";
|
|
397
|
+
stats.numMetaObjects = 0;
|
|
398
|
+
stats.numPropertySets = 0;
|
|
399
|
+
stats.numObjects = 0;
|
|
400
|
+
stats.numGeometries = 0;
|
|
401
|
+
stats.numTriangles = 0;
|
|
402
|
+
stats.numVertices = 0;
|
|
403
|
+
|
|
404
|
+
try {
|
|
405
|
+
|
|
406
|
+
const lasHeader = loadLASHeader(arrayBuffer);
|
|
407
|
+
|
|
408
|
+
parse(arrayBuffer, LASLoader, options).then((parsedData) => {
|
|
409
|
+
|
|
410
|
+
const attributes = parsedData.attributes;
|
|
411
|
+
const loaderData = parsedData.loaderData;
|
|
412
|
+
const pointsFormatId = loaderData.pointsFormatId !== undefined ? loaderData.pointsFormatId : -1;
|
|
413
|
+
|
|
414
|
+
if (!attributes.POSITION) {
|
|
415
|
+
sceneModel.finalize();
|
|
416
|
+
reject("No positions found in file");
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
let positionsValue
|
|
421
|
+
let colorsCompressed;
|
|
422
|
+
|
|
423
|
+
switch (pointsFormatId) {
|
|
424
|
+
case 0:
|
|
425
|
+
positionsValue = readPositions(attributes.POSITION);
|
|
426
|
+
colorsCompressed = readIntensities(attributes.intensity);
|
|
427
|
+
break;
|
|
428
|
+
case 1:
|
|
429
|
+
if (!attributes.intensity) {
|
|
430
|
+
sceneModel.finalize();
|
|
431
|
+
reject("No positions found in file");
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
positionsValue = readPositions(attributes.POSITION);
|
|
435
|
+
colorsCompressed = readIntensities(attributes.intensity);
|
|
436
|
+
break;
|
|
437
|
+
case 2:
|
|
438
|
+
if (!attributes.intensity) {
|
|
439
|
+
sceneModel.finalize();
|
|
440
|
+
reject("No positions found in file");
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
positionsValue = readPositions(attributes.POSITION);
|
|
444
|
+
colorsCompressed = readColorsAndIntensities(attributes.COLOR_0, attributes.intensity);
|
|
445
|
+
break;
|
|
446
|
+
case 3:
|
|
447
|
+
if (!attributes.intensity) {
|
|
448
|
+
sceneModel.finalize();
|
|
449
|
+
reject("No positions found in file");
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
positionsValue = readPositions(attributes.POSITION);
|
|
453
|
+
colorsCompressed = readColorsAndIntensities(attributes.COLOR_0, attributes.intensity);
|
|
454
|
+
break;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);
|
|
458
|
+
const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);
|
|
459
|
+
const meshIds = [];
|
|
460
|
+
|
|
461
|
+
for (let i = 0, len = pointsChunks.length; i < len; i++) {
|
|
462
|
+
const meshId = `pointsMesh${i}`;
|
|
463
|
+
meshIds.push(meshId);
|
|
464
|
+
sceneModel.createMesh({
|
|
465
|
+
id: meshId,
|
|
466
|
+
primitive: "points",
|
|
467
|
+
positions: pointsChunks[i],
|
|
468
|
+
colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
/*
|
|
472
|
+
const pointsChunks = chunkArray(positionsValue, MAX_VERTICES * 3);
|
|
473
|
+
const colorsChunks = chunkArray(colorsCompressed, MAX_VERTICES * 4);
|
|
474
|
+
const meshIds = [];
|
|
475
|
+
|
|
476
|
+
for (let i = 0, len = pointsChunks.length; i < len; i++) {
|
|
477
|
+
|
|
478
|
+
const geometryId = `geometryMesh${i}`;
|
|
479
|
+
const meshId = `pointsMesh${i}`;
|
|
480
|
+
meshIds.push(meshId);
|
|
481
|
+
|
|
482
|
+
sceneModel.createGeometry({
|
|
483
|
+
id: geometryId,
|
|
484
|
+
primitive: "points",
|
|
485
|
+
positions: pointsChunks[i],
|
|
486
|
+
colorsCompressed: (i < colorsChunks.length) ? colorsChunks[i] : null
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
sceneModel.createMesh({
|
|
490
|
+
id: meshId,
|
|
491
|
+
geometryId
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
*/
|
|
495
|
+
|
|
496
|
+
const pointsObjectId = math.createUUID();
|
|
497
|
+
|
|
498
|
+
sceneModel.createEntity({
|
|
499
|
+
id: pointsObjectId,
|
|
500
|
+
meshIds,
|
|
501
|
+
isObject: true
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
sceneModel.finalize();
|
|
505
|
+
|
|
506
|
+
if (params.loadMetadata !== false) {
|
|
507
|
+
const rootMetaObjectId = math.createUUID();
|
|
508
|
+
const metadata = {
|
|
509
|
+
projectId: "",
|
|
510
|
+
author: "",
|
|
511
|
+
createdAt: "",
|
|
512
|
+
schema: "",
|
|
513
|
+
creatingApplication: "",
|
|
514
|
+
metaObjects: [
|
|
515
|
+
{
|
|
516
|
+
id: rootMetaObjectId,
|
|
517
|
+
name: "Model",
|
|
518
|
+
type: "Model"
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
id: pointsObjectId,
|
|
522
|
+
name: "PointCloud (LAS)",
|
|
523
|
+
type: "PointCloud",
|
|
524
|
+
parent: rootMetaObjectId,
|
|
525
|
+
attributes: lasHeader || {}
|
|
526
|
+
}
|
|
527
|
+
],
|
|
528
|
+
propertySets: []
|
|
529
|
+
};
|
|
530
|
+
const metaModelId = sceneModel.id;
|
|
531
|
+
this.viewer.metaScene.createMetaModel(metaModelId, metadata, options);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
sceneModel.scene.once("tick", () => {
|
|
535
|
+
if (sceneModel.destroyed) {
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
sceneModel.scene.fire("modelLoaded", sceneModel.id); // FIXME: Assumes listeners know order of these two events
|
|
539
|
+
sceneModel.fire("loaded", true, false); // Don't forget the event, for late subscribers
|
|
540
|
+
});
|
|
541
|
+
|
|
542
|
+
resolve();
|
|
543
|
+
});
|
|
544
|
+
} catch (e) {
|
|
545
|
+
sceneModel.finalize();
|
|
546
|
+
reject(e);
|
|
547
|
+
}
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
function chunkArray(array, chunkSize) {
|
|
553
|
+
if (chunkSize >= array.length) {
|
|
554
|
+
return array;
|
|
555
|
+
}
|
|
556
|
+
let result = [];
|
|
557
|
+
for (let i = 0; i < array.length; i += chunkSize) {
|
|
558
|
+
result.push(array.slice(i, i + chunkSize));
|
|
559
|
+
}
|
|
560
|
+
return result;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
export {LASLoaderPlugin};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./LASLoaderPlugin.js";
|