@cesium/engine 24.0.0 → 25.0.0
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/Build/Workers/{chunk-NKT5K3K3.js → chunk-35H3UBIO.js} +13 -12
- package/Build/Workers/{chunk-5A2SW66E.js → chunk-3LSD7OOA.js} +16 -16
- package/Build/Workers/{chunk-HXJMS2ZI.js → chunk-3RFFPH4M.js} +1 -1
- package/Build/Workers/{chunk-EDXL4W76.js → chunk-3TKLDHV3.js} +2 -2
- package/Build/Workers/{chunk-GQUNK2XC.js → chunk-3VDDRF2E.js} +14 -14
- package/Build/Workers/{chunk-Q3C6VQH6.js → chunk-3XY3MVPG.js} +4 -4
- package/Build/Workers/{chunk-A47HVBC5.js → chunk-4GF4MVPY.js} +7 -7
- package/Build/Workers/{chunk-YQFTYQMZ.js → chunk-4MTRQFJP.js} +3 -2
- package/Build/Workers/{chunk-N65BAKSH.js → chunk-4QQXGTCE.js} +8 -8
- package/Build/Workers/{chunk-EV3VGO6Y.js → chunk-4XXHJI6Y.js} +17 -17
- package/Build/Workers/{chunk-DHKPFLSJ.js → chunk-5T6QQAJW.js} +3 -2
- package/Build/Workers/{chunk-UIGVOKKI.js → chunk-6SDGQI27.js} +3 -2
- package/Build/Workers/{chunk-ILMFADZA.js → chunk-77RL3MBD.js} +6 -5
- package/Build/Workers/{chunk-2N4KDHS3.js → chunk-7LSFAEWF.js} +12 -11
- package/Build/Workers/{chunk-44EMEGKW.js → chunk-A7A433MD.js} +5 -5
- package/Build/Workers/{chunk-J6AW5YHS.js → chunk-A7ZBMVFS.js} +14 -14
- package/Build/Workers/{chunk-XJRBB253.js → chunk-ACFFCHHZ.js} +11 -11
- package/Build/Workers/{chunk-MKM27KGV.js → chunk-AEAVLYPS.js} +2 -2
- package/Build/Workers/{chunk-7MDYBRYJ.js → chunk-AWFZHD2B.js} +4 -4
- package/Build/Workers/{chunk-UQU4RXLT.js → chunk-BTX2NL3P.js} +50 -45
- package/Build/Workers/{chunk-4TIG36AW.js → chunk-BVAIWR7O.js} +12 -12
- package/Build/Workers/chunk-CKQP3DSS.js +973 -0
- package/Build/Workers/{chunk-VLDEUTOP.js → chunk-CZ23Y3RM.js} +2 -2
- package/Build/Workers/{chunk-NPF7SSHZ.js → chunk-DFEI5MAV.js} +7 -7
- package/Build/Workers/{chunk-AJLTU6PF.js → chunk-DH26SNAB.js} +4 -1
- package/Build/Workers/{chunk-5GXYJQ2K.js → chunk-DYT5NR6P.js} +3 -3
- package/Build/Workers/{chunk-63SIWPLS.js → chunk-EZARA5FJ.js} +13 -13
- package/Build/Workers/{chunk-AMIHNSST.js → chunk-FIBS5S7R.js} +2 -2
- package/Build/Workers/{chunk-Y7HNNPNK.js → chunk-FVLVVOBQ.js} +10 -10
- package/Build/Workers/{chunk-XY6HMDGI.js → chunk-GL7DNVUS.js} +5 -5
- package/Build/Workers/{chunk-6WLHJFD3.js → chunk-GPIGURCG.js} +59 -32
- package/Build/Workers/{chunk-B6SCUUFP.js → chunk-H2A4USJR.js} +10 -10
- package/Build/Workers/chunk-HSVQATK2.js +147 -0
- package/Build/Workers/{chunk-72VYSVEW.js → chunk-HVMG6AG4.js} +11 -10
- package/Build/Workers/{chunk-LXMCPFFS.js → chunk-I3A6DXYZ.js} +4 -4
- package/Build/Workers/{chunk-7QRFIKWQ.js → chunk-ITD2IN7N.js} +2 -2
- package/Build/Workers/{chunk-RQNJD3O4.js → chunk-J3OFS2RD.js} +12 -12
- package/Build/Workers/{chunk-C6P4IG5P.js → chunk-J647NNZW.js} +6 -6
- package/Build/Workers/{chunk-7X322WP2.js → chunk-J7KQEKPK.js} +13 -13
- package/Build/Workers/{chunk-7O5XJTVE.js → chunk-K6NFIRFB.js} +5 -5
- package/Build/Workers/{chunk-AF3MU2RL.js → chunk-LH5SF3XV.js} +7 -6
- package/Build/Workers/{chunk-GOQBUCXH.js → chunk-ND3NTTOF.js} +708 -430
- package/Build/Workers/chunk-QO2CGXMP.js +2342 -0
- package/Build/Workers/chunk-QSDY4NS7.js +1287 -0
- package/Build/Workers/chunk-QXNQQYPV.js +3201 -0
- package/Build/Workers/{chunk-YAOZMOFL.js → chunk-ST2UWDUU.js} +5 -5
- package/Build/Workers/{chunk-PVV64VFW.js → chunk-TA777BGS.js} +3 -2
- package/Build/Workers/{chunk-ISY4EZCA.js → chunk-TAI4HLII.js} +4 -4
- package/Build/Workers/{chunk-JCI63T3K.js → chunk-URUCCIPS.js} +6 -6
- package/Build/Workers/{chunk-VMVOUQ5J.js → chunk-VQKLRBIK.js} +7 -7
- package/Build/Workers/{chunk-6MPGQEHA.js → chunk-WC57YYBN.js} +2 -2
- package/Build/Workers/{chunk-BJD6QGXZ.js → chunk-WN6P5UDH.js} +12 -12
- package/Build/Workers/{chunk-LIB2H534.js → chunk-WNN5D4W3.js} +12 -11
- package/Build/Workers/{chunk-D4EJ2NXG.js → chunk-WTQGE7Q6.js} +17 -17
- package/Build/Workers/{chunk-YJZGW74L.js → chunk-WUBKZFF6.js} +2213 -1349
- package/Build/Workers/{chunk-7TYLCBGK.js → chunk-ZAPOS52G.js} +12 -10
- package/Build/Workers/{chunk-6RMS4S72.js → chunk-ZCCIIBZT.js} +6 -6
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +175 -118
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +24 -23
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +12 -9
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/ArcType.js +6 -1
- package/Source/Core/ArticulationStageType.js +5 -1
- package/Source/Core/AssociativeArray.js +100 -94
- package/Source/Core/BoundingSphere.js +1296 -1300
- package/Source/Core/Cartesian3.js +1 -2
- package/Source/Core/Cartographic.js +257 -249
- package/Source/Core/ClockRange.js +6 -1
- package/Source/Core/ClockStep.js +6 -1
- package/Source/Core/Color.js +844 -835
- package/Source/Core/ComponentDatatype.js +4 -1
- package/Source/Core/CornerType.js +6 -1
- package/Source/Core/Credit.js +121 -124
- package/Source/Core/Ellipsoid.js +637 -660
- package/Source/Core/ExtrapolationType.js +6 -1
- package/Source/Core/GeocodeType.js +6 -1
- package/Source/Core/GeographicProjection.js +74 -74
- package/Source/Core/GeographicTilingScheme.js +179 -198
- package/Source/Core/GeometryOffsetAttribute.js +7 -1
- package/Source/Core/GeometryType.js +7 -1
- package/Source/Core/HeightmapEncoding.js +6 -1
- package/Source/Core/Iau2006XysData.js +24 -13
- package/Source/Core/IndexDatatype.js +3 -1
- package/Source/Core/InterpolationType.js +5 -1
- package/Source/Core/Intersect.js +6 -1
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonGeocodeProviderType.js +5 -1
- package/Source/Core/JulianDate.js +850 -848
- package/Source/Core/KeyboardEventModifier.js +6 -1
- package/Source/Core/MapProjection.js +39 -44
- package/Source/Core/Matrix2.js +906 -893
- package/Source/Core/Matrix3.js +1643 -1575
- package/Source/Core/Matrix4.js +2903 -2872
- package/Source/Core/PixelFormat.js +3 -1
- package/Source/Core/PrimitiveType.js +11 -1
- package/Source/Core/Ray.js +62 -60
- package/Source/Core/Rectangle.js +913 -904
- package/Source/Core/ReferenceFrame.js +6 -1
- package/Source/Core/RequestScheduler.js +8 -3
- package/Source/Core/RequestState.js +6 -1
- package/Source/Core/RequestType.js +6 -1
- package/Source/Core/ScreenSpaceEventType.js +6 -1
- package/Source/Core/TerrainQuantization.js +6 -1
- package/Source/Core/TilingScheme.js +100 -98
- package/Source/Core/TimeConstants.js +6 -1
- package/Source/Core/TimeStandard.js +6 -1
- package/Source/Core/TrackingReferenceFrame.js +6 -1
- package/Source/Core/Visibility.js +6 -1
- package/Source/Core/VulkanConstants.js +6 -1
- package/Source/Core/WebGLConstants.js +6 -1
- package/Source/Core/WebMercatorProjection.js +108 -109
- package/Source/Core/WebMercatorTilingScheme.js +246 -242
- package/Source/Core/WindingOrder.js +3 -1
- package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +1 -0
- package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -0
- package/Source/DataSources/StripeOrientation.js +6 -1
- package/Source/Renderer/BufferUsage.js +20 -9
- package/Source/Renderer/Context.js +2 -29
- package/Source/Renderer/DrawCommand.js +435 -403
- package/Source/Renderer/MipmapHint.js +5 -1
- package/Source/Renderer/Pass.js +7 -1
- package/Source/Renderer/PickId.js +44 -0
- package/Source/Renderer/PixelDatatype.js +3 -1
- package/Source/Renderer/RenderbufferFormat.js +5 -1
- package/Source/Renderer/ShaderDestination.js +4 -1
- package/Source/Renderer/TextureMagnificationFilter.js +3 -1
- package/Source/Renderer/TextureMinificationFilter.js +3 -1
- package/Source/Renderer/TextureWrap.js +5 -1
- package/Source/Scene/AlphaMode.js +5 -1
- package/Source/Scene/ArcGisBaseMapType.js +6 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/AttributeType.js +3 -1
- package/Source/Scene/Axis.js +3 -1
- package/Source/Scene/BingMapsStyle.js +6 -1
- package/Source/Scene/BlendEquation.js +6 -1
- package/Source/Scene/BlendFunction.js +6 -1
- package/Source/Scene/BlendOption.js +6 -1
- package/Source/Scene/BlendingState.js +6 -1
- package/Source/Scene/BufferLoader.js +0 -2
- package/Source/Scene/BufferPointCollection.js +4 -1
- package/Source/Scene/BufferPolygonCollection.js +3 -1
- package/Source/Scene/BufferPolylineCollection.js +3 -1
- package/Source/Scene/BufferPrimitiveCollection.js +140 -24
- package/Source/Scene/CameraEventType.js +6 -1
- package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
- package/Source/Scene/Cesium3DTileContentState.js +6 -1
- package/Source/Scene/Cesium3DTileContentType.js +3 -1
- package/Source/Scene/Cesium3DTileFeature.js +289 -306
- package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
- package/Source/Scene/Cesium3DTilePass.js +5 -1
- package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
- package/Source/Scene/Cesium3DTileRefine.js +6 -1
- package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
- package/Source/Scene/Cesium3DTileset.js +1 -1
- package/Source/Scene/ClassificationType.js +3 -1
- package/Source/Scene/CloudType.js +3 -1
- package/Source/Scene/ColorBlendMode.js +4 -1
- package/Source/Scene/CullFace.js +6 -1
- package/Source/Scene/DepthFunction.js +6 -1
- package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
- package/Source/Scene/EquirectangularPanorama.js +1 -0
- package/Source/Scene/ExpressionNodeType.js +6 -1
- package/Source/Scene/GltfBufferViewLoader.js +0 -2
- package/Source/Scene/GltfDracoLoader.js +0 -2
- package/Source/Scene/GltfImageLoader.js +0 -3
- package/Source/Scene/GltfIndexBufferLoader.js +0 -4
- package/Source/Scene/GltfJsonLoader.js +0 -2
- package/Source/Scene/GltfLoader.js +0 -5
- package/Source/Scene/GltfLoaderUtil.js +14 -0
- package/Source/Scene/GltfSpzLoader.js +0 -2
- package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
- package/Source/Scene/GltfTextureLoader.js +0 -2
- package/Source/Scene/GltfVertexBufferLoader.js +0 -4
- package/Source/Scene/HeightReference.js +5 -1
- package/Source/Scene/HorizontalOrigin.js +6 -1
- package/Source/Scene/ImageryProvider.js +1 -1
- package/Source/Scene/ImageryState.js +6 -1
- package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
- package/Source/Scene/InstanceAttributeSemantic.js +3 -1
- package/Source/Scene/IonWorldImageryStyle.js +6 -1
- package/Source/Scene/JobType.js +6 -1
- package/Source/Scene/LabelStyle.js +6 -1
- package/Source/Scene/MapMode2D.js +6 -1
- package/Source/Scene/MetadataComponentType.js +3 -1
- package/Source/Scene/MetadataSchemaLoader.js +0 -2
- package/Source/Scene/MetadataSemantic.js +6 -2
- package/Source/Scene/MetadataType.js +3 -1
- package/Source/Scene/Model/B3dmLoader.js +0 -3
- package/Source/Scene/Model/CustomShaderMode.js +3 -1
- package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +44 -71
- package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
- package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
- package/Source/Scene/Model/GeoJsonLoader.js +0 -2
- package/Source/Scene/Model/I3dmLoader.js +0 -3
- package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
- package/Source/Scene/Model/LightingModel.js +5 -1
- package/Source/Scene/Model/MaterialPipelineStage.js +184 -3
- package/Source/Scene/Model/ModelReader.js +474 -3
- package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
- package/Source/Scene/Model/ModelType.js +3 -1
- package/Source/Scene/Model/PntsLoader.js +4 -3
- package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
- package/Source/Scene/Model/UniformType.js +5 -1
- package/Source/Scene/Model/VaryingType.js +5 -1
- package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +73 -28
- package/Source/Scene/Model/pickModel.js +94 -299
- package/Source/Scene/ModelAnimationLoop.js +6 -1
- package/Source/Scene/ModelAnimationState.js +6 -1
- package/Source/Scene/ModelComponents.js +8 -1
- package/Source/Scene/PrimitiveState.js +7 -1
- package/Source/Scene/QuadtreeOccluders.js +20 -15
- package/Source/Scene/QuadtreeTile.js +547 -541
- package/Source/Scene/QuadtreeTileLoadState.js +6 -1
- package/Source/Scene/QuadtreeTileProvider.js +159 -175
- package/Source/Scene/ResourceLoader.js +0 -1
- package/Source/Scene/ResourceLoaderState.js +7 -1
- package/Source/Scene/SceneMode.js +4 -1
- package/Source/Scene/ShadowMode.js +3 -1
- package/Source/Scene/SkyBox.js +1 -1
- package/Source/Scene/SplitDirection.js +6 -1
- package/Source/Scene/StencilFunction.js +6 -1
- package/Source/Scene/StencilOperation.js +6 -1
- package/Source/Scene/TerrainState.js +7 -1
- package/Source/Scene/TileState.js +7 -1
- package/Source/Scene/Tonemapper.js +5 -1
- package/Source/Scene/VectorGltf3DTileContent.js +72 -51
- package/Source/Scene/VertexAttributeSemantic.js +3 -1
- package/Source/Scene/VerticalOrigin.js +6 -1
- package/Source/Scene/VoxelBoxShape.js +12 -6
- package/Source/Scene/VoxelContent.js +2 -0
- package/Source/Scene/VoxelCylinderShape.js +39 -38
- package/Source/Scene/VoxelEllipsoidShape.js +46 -96
- package/Source/Scene/VoxelMetadataOrder.js +6 -1
- package/Source/Scene/VoxelProvider.js +1 -0
- package/Source/Scene/VoxelShapeType.js +3 -1
- package/Source/Scene/renderBufferPointCollection.js +17 -66
- package/Source/Scene/renderBufferPolygonCollection.js +21 -68
- package/Source/Scene/renderBufferPolylineCollection.js +22 -73
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
- package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
- package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
- package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
- package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
- package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
- package/Source/Shaders/Model/MaterialStageFS.js +46 -20
- package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
- package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
- package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
- package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
- package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
- package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
- package/Source/Widget/CesiumWidget.js +11 -4
- package/index.d.ts +343 -309
- package/index.js +443 -438
- package/package.json +2 -2
- package/Build/Workers/chunk-DVB56LG7.js +0 -114
- package/Build/Workers/chunk-HKUES6UG.js +0 -2357
- package/Build/Workers/chunk-HRHRYFHS.js +0 -940
- package/Build/Workers/chunk-KLPGTXS3.js +0 -642
- package/Build/Workers/chunk-ZBZRTRJB.js +0 -1829
|
@@ -16,6 +16,7 @@ import VertexAttributeSemantic from "../VertexAttributeSemantic.js";
|
|
|
16
16
|
import ModelReader from "./ModelReader.js";
|
|
17
17
|
import ModelUtility from "./ModelUtility.js";
|
|
18
18
|
import ModelComponents from "../ModelComponents.js";
|
|
19
|
+
import Cesium3DTileVectorFeature from "../Cesium3DTileVectorFeature.js";
|
|
19
20
|
|
|
20
21
|
/** @import { TypedArray } from "../../Core/globalTypes.js"; */
|
|
21
22
|
/** @import BufferPrimitive from "../BufferPrimitive.js"; */
|
|
@@ -27,6 +28,7 @@ import ModelComponents from "../ModelComponents.js";
|
|
|
27
28
|
* @typedef {object} VectorTileResult
|
|
28
29
|
* @property {Array<BufferPrimitiveCollection<BufferPrimitive>>} collections
|
|
29
30
|
* @property {Array<Matrix4>} collectionLocalMatrices
|
|
31
|
+
* @property {Map<number, Cesium3DTileVectorFeature>} features
|
|
30
32
|
* @ignore
|
|
31
33
|
*/
|
|
32
34
|
|
|
@@ -48,7 +50,11 @@ function createVectorTileBuffersFromModelComponents(content, components) {
|
|
|
48
50
|
const rootNodes = components.scene.nodes;
|
|
49
51
|
|
|
50
52
|
/** @type {VectorTileResult} */
|
|
51
|
-
const result = {
|
|
53
|
+
const result = {
|
|
54
|
+
collections: [],
|
|
55
|
+
collectionLocalMatrices: [],
|
|
56
|
+
features: new Map(),
|
|
57
|
+
};
|
|
52
58
|
|
|
53
59
|
for (let i = 0; i < rootNodes.length; i++) {
|
|
54
60
|
appendNodeToBuffers(content, rootNodes[i], Matrix4.IDENTITY, result);
|
|
@@ -113,12 +119,9 @@ function gatherPrimitiveStats(primitive) {
|
|
|
113
119
|
? ModelReader.readIndicesAsTypedArray(primitive.indices)
|
|
114
120
|
: undefined;
|
|
115
121
|
|
|
116
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
117
122
|
if (primitiveType === PrimitiveType.POINTS) {
|
|
118
123
|
stats.pointPrimitiveCount += vector.count;
|
|
119
124
|
stats.pointVertexCount += vector.count;
|
|
120
|
-
|
|
121
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
122
125
|
} else if (primitiveType === PrimitiveType.LINE_STRIP) {
|
|
123
126
|
//>>includeStart('debug', pragmas.debug);
|
|
124
127
|
assert(defined(indices), "Vector LINE_STRIP primitive must be indexed.");
|
|
@@ -126,8 +129,6 @@ function gatherPrimitiveStats(primitive) {
|
|
|
126
129
|
|
|
127
130
|
stats.polylinePrimitiveCount += vector.count;
|
|
128
131
|
stats.polylineVertexCount += indices.length - (vector.count - 1);
|
|
129
|
-
|
|
130
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
131
132
|
} else if (primitiveType === PrimitiveType.TRIANGLES) {
|
|
132
133
|
//>>includeStart('debug', pragmas.debug);
|
|
133
134
|
assert(defined(indices), "Vector TRIANGLES primitive must be indexed.");
|
|
@@ -154,9 +155,17 @@ function gatherPrimitiveStats(primitive) {
|
|
|
154
155
|
* @param {VectorGltf3DTileContent} content
|
|
155
156
|
* @param {Primitive} primitive
|
|
156
157
|
* @param {BufferPrimitiveCollection<BufferPrimitive>} collection
|
|
158
|
+
* @param {number} collectionIndex
|
|
159
|
+
* @param {Map<number, Cesium3DTileVectorFeature>} features
|
|
157
160
|
* @ignore
|
|
158
161
|
*/
|
|
159
|
-
function appendPrimitiveToBuffers(
|
|
162
|
+
function appendPrimitiveToBuffers(
|
|
163
|
+
content,
|
|
164
|
+
primitive,
|
|
165
|
+
collection,
|
|
166
|
+
collectionIndex,
|
|
167
|
+
features,
|
|
168
|
+
) {
|
|
160
169
|
const vector = primitive.vector;
|
|
161
170
|
const positionAttribute = ModelUtility.getAttributeBySemantic(
|
|
162
171
|
primitive,
|
|
@@ -174,10 +183,24 @@ function appendPrimitiveToBuffers(content, primitive, collection) {
|
|
|
174
183
|
: undefined;
|
|
175
184
|
|
|
176
185
|
const featureIdComponent = primitive.featureIds?.[0];
|
|
186
|
+
|
|
177
187
|
/** @type {Attribute} */
|
|
178
188
|
let featureIdAttribute;
|
|
189
|
+
|
|
179
190
|
/** @type {TypedArray} */
|
|
180
191
|
let featureIdArray;
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @param {number} vertexOffset
|
|
195
|
+
* @returns {Cesium3DTileVectorFeature}
|
|
196
|
+
*/
|
|
197
|
+
function getFeature(vertexOffset) {
|
|
198
|
+
const featureId = featureIdArray[vertexOffset];
|
|
199
|
+
if (featureId !== featureIdComponent.nullFeatureId) {
|
|
200
|
+
return features.get(featureId);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
181
204
|
if (featureIdComponent instanceof ModelComponents.FeatureIdAttribute) {
|
|
182
205
|
featureIdAttribute = ModelUtility.getAttributeBySemantic(
|
|
183
206
|
primitive,
|
|
@@ -187,6 +210,18 @@ function appendPrimitiveToBuffers(content, primitive, collection) {
|
|
|
187
210
|
featureIdArray =
|
|
188
211
|
featureIdAttribute.typedArray ??
|
|
189
212
|
ModelReader.readAttributeAsTypedArray(featureIdAttribute);
|
|
213
|
+
|
|
214
|
+
for (let i = 0; i < featureIdArray.length; i++) {
|
|
215
|
+
const featureId = featureIdArray[i];
|
|
216
|
+
if (!features.has(featureId)) {
|
|
217
|
+
const feature = new Cesium3DTileVectorFeature(
|
|
218
|
+
content,
|
|
219
|
+
featureId,
|
|
220
|
+
featureIdComponent.propertyTableId,
|
|
221
|
+
);
|
|
222
|
+
features.set(featureId, feature);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
190
225
|
}
|
|
191
226
|
|
|
192
227
|
if (collection instanceof BufferPointCollection) {
|
|
@@ -198,27 +233,31 @@ function appendPrimitiveToBuffers(content, primitive, collection) {
|
|
|
198
233
|
vertexOffset * 3,
|
|
199
234
|
scratchPosition,
|
|
200
235
|
);
|
|
201
|
-
collection.add({ position: scratchPosition }, scratchPoint);
|
|
202
236
|
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
237
|
+
const pickObject = getFeature(vertexOffset);
|
|
238
|
+
pickObject.addPrimitiveByCollection(collectionIndex, i);
|
|
239
|
+
const featureId = pickObject.featureId;
|
|
240
|
+
|
|
241
|
+
collection.add(
|
|
242
|
+
{ position: scratchPosition, featureId, pickObject },
|
|
243
|
+
scratchPoint,
|
|
244
|
+
);
|
|
207
245
|
}
|
|
208
246
|
} else if (collection instanceof BufferPolylineCollection) {
|
|
209
247
|
// @ts-expect-error TODO
|
|
210
248
|
forEachLineStripSegment(indices, (indexOffset, indexCount) => {
|
|
249
|
+
const i = collection.primitiveCount;
|
|
211
250
|
const vertexOffset = indices[indexOffset];
|
|
212
251
|
const positions = collectionPositions.subarray(
|
|
213
252
|
vertexOffset * 3,
|
|
214
253
|
(vertexOffset + indexCount) * 3,
|
|
215
254
|
);
|
|
216
|
-
collection.add({ positions }, scratchPolyline);
|
|
217
255
|
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
256
|
+
const pickObject = getFeature(vertexOffset);
|
|
257
|
+
pickObject.addPrimitiveByCollection(collectionIndex, i);
|
|
258
|
+
const featureId = pickObject.featureId;
|
|
259
|
+
|
|
260
|
+
collection.add({ positions, featureId, pickObject }, scratchPolyline);
|
|
222
261
|
});
|
|
223
262
|
} else if (collection instanceof BufferPolygonCollection) {
|
|
224
263
|
const polygonAttributeOffsets = vector.polygonAttributeOffsets;
|
|
@@ -254,12 +293,14 @@ function appendPrimitiveToBuffers(content, primitive, collection) {
|
|
|
254
293
|
triangles[t] -= polygonVertexStart;
|
|
255
294
|
}
|
|
256
295
|
|
|
257
|
-
|
|
296
|
+
const pickObject = getFeature(polygonVertexStart);
|
|
297
|
+
pickObject.addPrimitiveByCollection(collectionIndex, i);
|
|
298
|
+
const featureId = pickObject.featureId;
|
|
258
299
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
scratchPolygon
|
|
262
|
-
|
|
300
|
+
collection.add(
|
|
301
|
+
{ positions, triangles, holes, featureId, pickObject },
|
|
302
|
+
scratchPolygon,
|
|
303
|
+
);
|
|
263
304
|
}
|
|
264
305
|
}
|
|
265
306
|
}
|
|
@@ -292,33 +333,37 @@ function appendNodeToBuffers(content, node, parentTransform, result) {
|
|
|
292
333
|
|
|
293
334
|
const stats = gatherPrimitiveStats(primitive);
|
|
294
335
|
|
|
295
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
296
336
|
if (primitiveType === PrimitiveType.POINTS) {
|
|
297
337
|
collection = new BufferPointCollection({
|
|
298
338
|
primitiveCountMax: stats.pointPrimitiveCount,
|
|
339
|
+
allowPicking: true,
|
|
299
340
|
});
|
|
300
|
-
|
|
301
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
302
341
|
} else if (primitiveType === PrimitiveType.LINE_STRIP) {
|
|
303
342
|
collection = new BufferPolylineCollection({
|
|
304
343
|
primitiveCountMax: stats.polylinePrimitiveCount,
|
|
305
344
|
vertexCountMax: stats.polylineVertexCount,
|
|
345
|
+
allowPicking: true,
|
|
306
346
|
});
|
|
307
|
-
|
|
308
|
-
// @ts-expect-error Requires https://github.com/CesiumGS/cesium/pull/13203.
|
|
309
347
|
} else if (primitiveType === PrimitiveType.TRIANGLES) {
|
|
310
348
|
collection = new BufferPolygonCollection({
|
|
311
349
|
primitiveCountMax: stats.polygonPrimitiveCount,
|
|
312
350
|
vertexCountMax: stats.polygonVertexCount,
|
|
313
351
|
holeCountMax: stats.polygonHoleCount,
|
|
314
352
|
triangleCountMax: stats.polygonTriangleCount,
|
|
353
|
+
allowPicking: true,
|
|
315
354
|
});
|
|
316
355
|
}
|
|
317
356
|
|
|
318
357
|
result.collections.push(collection);
|
|
319
358
|
result.collectionLocalMatrices.push(Matrix4.clone(nodeTransform));
|
|
320
359
|
|
|
321
|
-
appendPrimitiveToBuffers(
|
|
360
|
+
appendPrimitiveToBuffers(
|
|
361
|
+
content,
|
|
362
|
+
primitive,
|
|
363
|
+
collection,
|
|
364
|
+
result.collections.length - 1,
|
|
365
|
+
result.features,
|
|
366
|
+
);
|
|
322
367
|
}
|
|
323
368
|
|
|
324
369
|
const children = node.children;
|
|
@@ -1,31 +1,46 @@
|
|
|
1
|
-
import AttributeCompression from "../../Core/AttributeCompression.js";
|
|
2
1
|
import BoundingSphere from "../../Core/BoundingSphere.js";
|
|
3
2
|
import Cartesian3 from "../../Core/Cartesian3.js";
|
|
4
3
|
import Cartographic from "../../Core/Cartographic.js";
|
|
5
4
|
import Check from "../../Core/Check.js";
|
|
6
|
-
import ComponentDatatype from "../../Core/ComponentDatatype.js";
|
|
7
5
|
import defined from "../../Core/defined.js";
|
|
8
6
|
import Ellipsoid from "../../Core/Ellipsoid.js";
|
|
9
|
-
import IndexDatatype from "../../Core/IndexDatatype.js";
|
|
10
7
|
import IntersectionTests from "../../Core/IntersectionTests.js";
|
|
11
|
-
import Ray from "../../Core/Ray.js";
|
|
12
8
|
import Matrix4 from "../../Core/Matrix4.js";
|
|
13
|
-
import
|
|
9
|
+
import Ray from "../../Core/Ray.js";
|
|
14
10
|
import VerticalExaggeration from "../../Core/VerticalExaggeration.js";
|
|
15
11
|
import AttributeType from "../AttributeType.js";
|
|
16
12
|
import SceneMode from "../SceneMode.js";
|
|
17
13
|
import VertexAttributeSemantic from "../VertexAttributeSemantic.js";
|
|
14
|
+
import ModelReader from "./ModelReader.js";
|
|
18
15
|
import ModelUtility from "./ModelUtility.js";
|
|
19
16
|
|
|
20
17
|
const scratchV0 = new Cartesian3();
|
|
21
18
|
const scratchV1 = new Cartesian3();
|
|
22
19
|
const scratchV2 = new Cartesian3();
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
20
|
+
const scratchV0_t = new Cartesian3();
|
|
21
|
+
const scratchV1_t = new Cartesian3();
|
|
22
|
+
const scratchV2_t = new Cartesian3();
|
|
26
23
|
const scratchPickCartographic = new Cartographic();
|
|
27
24
|
const scratchBoundingSphere = new BoundingSphere();
|
|
28
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Reads a 3D position from a flat vertex array at the given element index.
|
|
28
|
+
*
|
|
29
|
+
* @param {TypedArray} vertices The flat array of vertex components.
|
|
30
|
+
* @param {number} index The vertex index (element index, not byte offset).
|
|
31
|
+
* @param {number} elementStride The number of components per vertex element.
|
|
32
|
+
* @param {Cartesian3} result The object into which to store the position.
|
|
33
|
+
* @returns {Cartesian3} The modified result parameter.
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
function readPosition(vertices, index, elementStride, result) {
|
|
37
|
+
const i = index * elementStride;
|
|
38
|
+
result.x = vertices[i];
|
|
39
|
+
result.y = vertices[i + 1];
|
|
40
|
+
result.z = vertices[i + 2];
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
|
|
29
44
|
/**
|
|
30
45
|
* Find an intersection between a ray and the model surface that was rendered. The ray must be given in world coordinates.
|
|
31
46
|
*
|
|
@@ -60,125 +75,22 @@ export default function pickModel(
|
|
|
60
75
|
}
|
|
61
76
|
|
|
62
77
|
let minT = Number.MAX_VALUE;
|
|
63
|
-
const sceneGraph = model.sceneGraph;
|
|
64
|
-
|
|
65
|
-
const nodes = sceneGraph._runtimeNodes;
|
|
66
|
-
for (let i = 0; i < nodes.length; i++) {
|
|
67
|
-
const runtimeNode = nodes[i];
|
|
68
|
-
const node = runtimeNode.node;
|
|
69
|
-
|
|
70
|
-
let nodeComputedTransform = Matrix4.clone(
|
|
71
|
-
runtimeNode.computedTransform,
|
|
72
|
-
scratchNodeComputedTransform,
|
|
73
|
-
);
|
|
74
|
-
let modelMatrix = Matrix4.clone(
|
|
75
|
-
sceneGraph.computedModelMatrix,
|
|
76
|
-
scratchModelMatrix,
|
|
77
|
-
);
|
|
78
|
-
|
|
79
|
-
const instances = node.instances;
|
|
80
|
-
if (defined(instances)) {
|
|
81
|
-
if (instances.transformInWorldSpace) {
|
|
82
|
-
// Replicate the multiplication order in LegacyInstancingStageVS.
|
|
83
|
-
modelMatrix = Matrix4.multiplyTransformation(
|
|
84
|
-
model.modelMatrix,
|
|
85
|
-
sceneGraph.components.transform,
|
|
86
|
-
modelMatrix,
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
nodeComputedTransform = Matrix4.multiplyTransformation(
|
|
90
|
-
sceneGraph.axisCorrectionMatrix,
|
|
91
|
-
runtimeNode.computedTransform,
|
|
92
|
-
nodeComputedTransform,
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
let computedModelMatrix = Matrix4.multiplyTransformation(
|
|
98
|
-
modelMatrix,
|
|
99
|
-
nodeComputedTransform,
|
|
100
|
-
scratchcomputedModelMatrix,
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
if (frameState.mode !== SceneMode.SCENE3D) {
|
|
104
|
-
computedModelMatrix = Transforms.basisTo2D(
|
|
105
|
-
frameState.mapProjection,
|
|
106
|
-
computedModelMatrix,
|
|
107
|
-
computedModelMatrix,
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const transforms = [];
|
|
112
|
-
if (defined(instances)) {
|
|
113
|
-
const transformsCount = instances.attributes[0].count;
|
|
114
|
-
const instanceComponentDatatype =
|
|
115
|
-
instances.attributes[0].componentDatatype;
|
|
116
|
-
|
|
117
|
-
const transformElements = 12;
|
|
118
|
-
let transformsTypedArray = runtimeNode.transformsTypedArray;
|
|
119
|
-
if (!defined(transformsTypedArray)) {
|
|
120
|
-
const instanceTransformsBuffer = runtimeNode.instancingTransformsBuffer;
|
|
121
|
-
if (defined(instanceTransformsBuffer) && frameState.context.webgl2) {
|
|
122
|
-
transformsTypedArray = ComponentDatatype.createTypedArray(
|
|
123
|
-
instanceComponentDatatype,
|
|
124
|
-
transformsCount * transformElements,
|
|
125
|
-
);
|
|
126
|
-
instanceTransformsBuffer.getBufferData(transformsTypedArray);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (defined(transformsTypedArray)) {
|
|
131
|
-
for (let i = 0; i < transformsCount; i++) {
|
|
132
|
-
const index = i * transformElements;
|
|
133
|
-
|
|
134
|
-
const transform = new Matrix4(
|
|
135
|
-
transformsTypedArray[index],
|
|
136
|
-
transformsTypedArray[index + 1],
|
|
137
|
-
transformsTypedArray[index + 2],
|
|
138
|
-
transformsTypedArray[index + 3],
|
|
139
|
-
transformsTypedArray[index + 4],
|
|
140
|
-
transformsTypedArray[index + 5],
|
|
141
|
-
transformsTypedArray[index + 6],
|
|
142
|
-
transformsTypedArray[index + 7],
|
|
143
|
-
transformsTypedArray[index + 8],
|
|
144
|
-
transformsTypedArray[index + 9],
|
|
145
|
-
transformsTypedArray[index + 10],
|
|
146
|
-
transformsTypedArray[index + 11],
|
|
147
|
-
0,
|
|
148
|
-
0,
|
|
149
|
-
0,
|
|
150
|
-
1,
|
|
151
|
-
);
|
|
152
|
-
|
|
153
|
-
if (instances.transformInWorldSpace) {
|
|
154
|
-
Matrix4.multiplyTransformation(
|
|
155
|
-
transform,
|
|
156
|
-
nodeComputedTransform,
|
|
157
|
-
transform,
|
|
158
|
-
);
|
|
159
|
-
Matrix4.multiplyTransformation(modelMatrix, transform, transform);
|
|
160
|
-
} else {
|
|
161
|
-
Matrix4.multiplyTransformation(
|
|
162
|
-
transform,
|
|
163
|
-
computedModelMatrix,
|
|
164
|
-
transform,
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
transforms.push(transform);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
78
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
79
|
+
ellipsoid = ellipsoid ?? Ellipsoid.default;
|
|
80
|
+
verticalExaggeration = verticalExaggeration ?? 1.0;
|
|
81
|
+
relativeHeight = relativeHeight ?? 0.0;
|
|
82
|
+
|
|
83
|
+
const mapProjection =
|
|
84
|
+
frameState.mode !== SceneMode.SCENE3D
|
|
85
|
+
? frameState.mapProjection
|
|
86
|
+
: undefined;
|
|
87
|
+
|
|
88
|
+
ModelReader.forEachPrimitive(
|
|
89
|
+
model,
|
|
90
|
+
{ mapProjection: mapProjection },
|
|
91
|
+
function (runtimePrimitive, primitive, instances, computedModelMatrix) {
|
|
92
|
+
// Bounding sphere early-out for non-instanced primitives
|
|
93
|
+
if (defined(runtimePrimitive.boundingSphere) && instances.length === 1) {
|
|
182
94
|
const boundingSphere = BoundingSphere.transform(
|
|
183
95
|
runtimePrimitive.boundingSphere,
|
|
184
96
|
computedModelMatrix,
|
|
@@ -189,144 +101,88 @@ export default function pickModel(
|
|
|
189
101
|
boundingSphere,
|
|
190
102
|
);
|
|
191
103
|
if (!defined(boundsIntersection)) {
|
|
192
|
-
|
|
104
|
+
return;
|
|
193
105
|
}
|
|
194
106
|
}
|
|
195
107
|
|
|
196
|
-
const positionAttribute = ModelUtility.getAttributeBySemantic(
|
|
197
|
-
primitive,
|
|
198
|
-
VertexAttributeSemantic.POSITION,
|
|
199
|
-
);
|
|
200
|
-
const byteOffset = positionAttribute.byteOffset;
|
|
201
|
-
const byteStride = positionAttribute.byteStride;
|
|
202
|
-
const vertexCount = positionAttribute.count;
|
|
203
|
-
|
|
204
108
|
if (!defined(primitive.indices)) {
|
|
205
109
|
// Point clouds
|
|
206
|
-
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
let indices = primitive.indices.typedArray;
|
|
210
|
-
if (!defined(indices)) {
|
|
211
|
-
const indicesBuffer = primitive.indices.buffer;
|
|
212
|
-
const indicesCount = primitive.indices.count;
|
|
213
|
-
const indexDatatype = primitive.indices.indexDatatype;
|
|
214
|
-
if (defined(indicesBuffer) && frameState.context.webgl2) {
|
|
215
|
-
if (indexDatatype === IndexDatatype.UNSIGNED_BYTE) {
|
|
216
|
-
indices = new Uint8Array(indicesCount);
|
|
217
|
-
} else if (indexDatatype === IndexDatatype.UNSIGNED_SHORT) {
|
|
218
|
-
indices = new Uint16Array(indicesCount);
|
|
219
|
-
} else if (indexDatatype === IndexDatatype.UNSIGNED_INT) {
|
|
220
|
-
indices = new Uint32Array(indicesCount);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
indicesBuffer.getBufferData(indices);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
let vertices = positionAttribute.typedArray;
|
|
228
|
-
let componentDatatype = positionAttribute.componentDatatype;
|
|
229
|
-
let attributeType = positionAttribute.type;
|
|
230
|
-
|
|
231
|
-
const quantization = positionAttribute.quantization;
|
|
232
|
-
if (defined(quantization)) {
|
|
233
|
-
componentDatatype = positionAttribute.quantization.componentDatatype;
|
|
234
|
-
attributeType = positionAttribute.quantization.type;
|
|
110
|
+
return;
|
|
235
111
|
}
|
|
236
112
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
offset = byteOffset / bytes;
|
|
113
|
+
let vertices;
|
|
114
|
+
let numPosComponents;
|
|
115
|
+
const positionAttribute = ModelUtility.getAttributeBySemantic(
|
|
116
|
+
primitive,
|
|
117
|
+
VertexAttributeSemantic.POSITION,
|
|
118
|
+
);
|
|
119
|
+
if (defined(positionAttribute)) {
|
|
120
|
+
numPosComponents = AttributeType.getNumberOfComponents(
|
|
121
|
+
positionAttribute.type,
|
|
122
|
+
);
|
|
123
|
+
vertices = ModelReader.readAttributeAsTypedArray(positionAttribute);
|
|
249
124
|
}
|
|
250
|
-
const elementCount = vertexCount * elementStride;
|
|
251
|
-
|
|
252
|
-
if (!defined(vertices)) {
|
|
253
|
-
const verticesBuffer = positionAttribute.buffer;
|
|
254
|
-
|
|
255
|
-
if (defined(verticesBuffer) && frameState.context.webgl2) {
|
|
256
|
-
vertices = ComponentDatatype.createTypedArray(
|
|
257
|
-
componentDatatype,
|
|
258
|
-
elementCount,
|
|
259
|
-
);
|
|
260
|
-
verticesBuffer.getBufferData(
|
|
261
|
-
vertices,
|
|
262
|
-
isInterleaved ? 0 : byteOffset,
|
|
263
|
-
0,
|
|
264
|
-
elementCount,
|
|
265
|
-
);
|
|
266
|
-
}
|
|
267
125
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
componentDatatype,
|
|
272
|
-
attributeType,
|
|
273
|
-
vertexCount,
|
|
274
|
-
);
|
|
275
|
-
}
|
|
126
|
+
let indices;
|
|
127
|
+
if (defined(primitive.indices)) {
|
|
128
|
+
indices = ModelReader.readIndicesAsTypedArray(primitive.indices);
|
|
276
129
|
}
|
|
277
130
|
|
|
278
131
|
if (!defined(indices) || !defined(vertices)) {
|
|
279
132
|
return;
|
|
280
133
|
}
|
|
281
134
|
|
|
282
|
-
ellipsoid = ellipsoid ?? Ellipsoid.default;
|
|
283
|
-
verticalExaggeration = verticalExaggeration ?? 1.0;
|
|
284
|
-
relativeHeight = relativeHeight ?? 0.0;
|
|
285
|
-
|
|
286
135
|
const indicesLength = indices.length;
|
|
287
136
|
for (let i = 0; i < indicesLength; i += 3) {
|
|
288
137
|
const i0 = indices[i];
|
|
289
138
|
const i1 = indices[i + 1];
|
|
290
139
|
const i2 = indices[i + 2];
|
|
291
140
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
instanceTransform,
|
|
300
|
-
verticalExaggeration,
|
|
301
|
-
relativeHeight,
|
|
302
|
-
ellipsoid,
|
|
141
|
+
readPosition(vertices, i0, numPosComponents, scratchV0);
|
|
142
|
+
readPosition(vertices, i1, numPosComponents, scratchV1);
|
|
143
|
+
readPosition(vertices, i2, numPosComponents, scratchV2);
|
|
144
|
+
|
|
145
|
+
for (const instance of instances) {
|
|
146
|
+
const v0 = Matrix4.multiplyByPoint(
|
|
147
|
+
instance.transform,
|
|
303
148
|
scratchV0,
|
|
149
|
+
scratchV0_t,
|
|
304
150
|
);
|
|
305
|
-
const v1 =
|
|
306
|
-
|
|
307
|
-
i1,
|
|
308
|
-
offset,
|
|
309
|
-
elementStride,
|
|
310
|
-
quantization,
|
|
311
|
-
instanceTransform,
|
|
312
|
-
verticalExaggeration,
|
|
313
|
-
relativeHeight,
|
|
314
|
-
ellipsoid,
|
|
151
|
+
const v1 = Matrix4.multiplyByPoint(
|
|
152
|
+
instance.transform,
|
|
315
153
|
scratchV1,
|
|
154
|
+
scratchV1_t,
|
|
316
155
|
);
|
|
317
|
-
const v2 =
|
|
318
|
-
|
|
319
|
-
i2,
|
|
320
|
-
offset,
|
|
321
|
-
elementStride,
|
|
322
|
-
quantization,
|
|
323
|
-
instanceTransform,
|
|
324
|
-
verticalExaggeration,
|
|
325
|
-
relativeHeight,
|
|
326
|
-
ellipsoid,
|
|
156
|
+
const v2 = Matrix4.multiplyByPoint(
|
|
157
|
+
instance.transform,
|
|
327
158
|
scratchV2,
|
|
159
|
+
scratchV2_t,
|
|
328
160
|
);
|
|
329
161
|
|
|
162
|
+
if (verticalExaggeration !== 1.0) {
|
|
163
|
+
VerticalExaggeration.getPosition(
|
|
164
|
+
v0,
|
|
165
|
+
ellipsoid,
|
|
166
|
+
verticalExaggeration,
|
|
167
|
+
relativeHeight,
|
|
168
|
+
v0,
|
|
169
|
+
);
|
|
170
|
+
VerticalExaggeration.getPosition(
|
|
171
|
+
v1,
|
|
172
|
+
ellipsoid,
|
|
173
|
+
verticalExaggeration,
|
|
174
|
+
relativeHeight,
|
|
175
|
+
v1,
|
|
176
|
+
);
|
|
177
|
+
VerticalExaggeration.getPosition(
|
|
178
|
+
v2,
|
|
179
|
+
ellipsoid,
|
|
180
|
+
verticalExaggeration,
|
|
181
|
+
relativeHeight,
|
|
182
|
+
v2,
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
|
|
330
186
|
const t = IntersectionTests.rayTriangleParametric(
|
|
331
187
|
ray,
|
|
332
188
|
v0,
|
|
@@ -342,8 +198,8 @@ export default function pickModel(
|
|
|
342
198
|
}
|
|
343
199
|
}
|
|
344
200
|
}
|
|
345
|
-
}
|
|
346
|
-
|
|
201
|
+
},
|
|
202
|
+
);
|
|
347
203
|
|
|
348
204
|
if (minT === Number.MAX_VALUE) {
|
|
349
205
|
return undefined;
|
|
@@ -362,64 +218,3 @@ export default function pickModel(
|
|
|
362
218
|
|
|
363
219
|
return result;
|
|
364
220
|
}
|
|
365
|
-
|
|
366
|
-
function getVertexPosition(
|
|
367
|
-
vertices,
|
|
368
|
-
index,
|
|
369
|
-
offset,
|
|
370
|
-
numElements,
|
|
371
|
-
quantization,
|
|
372
|
-
instanceTransform,
|
|
373
|
-
verticalExaggeration,
|
|
374
|
-
relativeHeight,
|
|
375
|
-
ellipsoid,
|
|
376
|
-
result,
|
|
377
|
-
) {
|
|
378
|
-
const i = offset + index * numElements;
|
|
379
|
-
result.x = vertices[i];
|
|
380
|
-
result.y = vertices[i + 1];
|
|
381
|
-
result.z = vertices[i + 2];
|
|
382
|
-
|
|
383
|
-
if (defined(quantization)) {
|
|
384
|
-
if (quantization.octEncoded) {
|
|
385
|
-
result = AttributeCompression.octDecodeInRange(
|
|
386
|
-
result,
|
|
387
|
-
quantization.normalizationRange,
|
|
388
|
-
result,
|
|
389
|
-
);
|
|
390
|
-
|
|
391
|
-
if (quantization.octEncodedZXY) {
|
|
392
|
-
const x = result.x;
|
|
393
|
-
result.x = result.z;
|
|
394
|
-
result.z = result.y;
|
|
395
|
-
result.y = x;
|
|
396
|
-
}
|
|
397
|
-
} else {
|
|
398
|
-
result = Cartesian3.multiplyComponents(
|
|
399
|
-
result,
|
|
400
|
-
quantization.quantizedVolumeStepSize,
|
|
401
|
-
result,
|
|
402
|
-
);
|
|
403
|
-
|
|
404
|
-
result = Cartesian3.add(
|
|
405
|
-
result,
|
|
406
|
-
quantization.quantizedVolumeOffset,
|
|
407
|
-
result,
|
|
408
|
-
);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
result = Matrix4.multiplyByPoint(instanceTransform, result, result);
|
|
413
|
-
|
|
414
|
-
if (verticalExaggeration !== 1.0) {
|
|
415
|
-
VerticalExaggeration.getPosition(
|
|
416
|
-
result,
|
|
417
|
-
ellipsoid,
|
|
418
|
-
verticalExaggeration,
|
|
419
|
-
relativeHeight,
|
|
420
|
-
result,
|
|
421
|
-
);
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
return result;
|
|
425
|
-
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Determines if and how a glTF animation is looped.
|
|
3
5
|
*
|
|
@@ -30,4 +32,7 @@ const ModelAnimationLoop = {
|
|
|
30
32
|
*/
|
|
31
33
|
MIRRORED_REPEAT: 2,
|
|
32
34
|
};
|
|
33
|
-
|
|
35
|
+
|
|
36
|
+
Object.freeze(ModelAnimationLoop);
|
|
37
|
+
|
|
38
|
+
export default ModelAnimationLoop;
|