@itwin/core-frontend 4.4.0-dev.20 → 4.4.0-dev.24
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/lib/cjs/Viewport.d.ts +5 -0
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +6 -0
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.d.ts +15 -1
- package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.js +11 -3
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +3 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.js +66 -11
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +10 -0
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
- package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +2 -0
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +3 -0
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/tile/ImdlDecoder.d.ts +7 -1
- package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.js +28 -17
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +2 -1
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +1 -0
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +6 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +7 -0
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +5 -0
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/Viewport.d.ts +5 -0
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +6 -0
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.d.ts +15 -1
- package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.js +11 -3
- package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts +3 -1
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.js +67 -12
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +10 -0
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.d.ts +2 -0
- package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +2 -0
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +3 -0
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/tile/ImdlDecoder.d.ts +7 -1
- package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -1
- package/lib/esm/tile/ImdlDecoder.js.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.js +28 -17
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +2 -1
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +1 -0
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +6 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +8 -1
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +2 -0
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +5 -0
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +19 -18
|
@@ -140,20 +140,34 @@ export declare namespace ImdlModel {
|
|
|
140
140
|
animationNodeId?: never;
|
|
141
141
|
animationId?: never;
|
|
142
142
|
layerId?: never;
|
|
143
|
+
groupId?: never;
|
|
143
144
|
}
|
|
144
145
|
interface AnimationNode {
|
|
145
146
|
primitives: NodePrimitive[];
|
|
146
147
|
animationNodeId: number;
|
|
147
148
|
animationId?: string;
|
|
148
149
|
layerId?: never;
|
|
150
|
+
groupId?: never;
|
|
149
151
|
}
|
|
150
152
|
interface Layer {
|
|
151
153
|
primitives: NodePrimitive[];
|
|
152
154
|
layerId: string;
|
|
155
|
+
groupId?: never;
|
|
153
156
|
animationNodeId?: never;
|
|
154
157
|
animationId?: never;
|
|
155
158
|
}
|
|
156
|
-
|
|
159
|
+
/** Nodes that contain primitives. */
|
|
160
|
+
type PrimitivesNode = BasicNode | AnimationNode | Layer;
|
|
161
|
+
/** A grouping node that contains other nodes. These don't nest. */
|
|
162
|
+
interface GroupNode {
|
|
163
|
+
groupId: number;
|
|
164
|
+
nodes: PrimitivesNode[];
|
|
165
|
+
primitives?: never;
|
|
166
|
+
animationNodeId?: never;
|
|
167
|
+
animationId?: never;
|
|
168
|
+
layerId?: never;
|
|
169
|
+
}
|
|
170
|
+
type Node = PrimitivesNode | GroupNode;
|
|
157
171
|
interface SingleModelFeatureTable {
|
|
158
172
|
multiModel: false;
|
|
159
173
|
data: Uint32Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImdlModel.d.ts","sourceRoot":"","sources":["../../../../src/common/imdl/ImdlModel.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ImdlModel.d.ts","sourceRoot":"","sources":["../../../../src/common/imdl/ImdlModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,9 +56,17 @@ export function collectTransferables(document) {
|
|
|
56
56
|
break;
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
|
-
for (const node of document.nodes)
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
for (const node of document.nodes) {
|
|
60
|
+
if (undefined !== node.groupId) {
|
|
61
|
+
for (const primNode of node.nodes)
|
|
62
|
+
for (const primitive of primNode.primitives)
|
|
63
|
+
addPrimitive(primitive);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
for (const primitive of node.primitives)
|
|
67
|
+
addPrimitive(primitive);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
62
70
|
for (const primitives of document.patterns.values())
|
|
63
71
|
for (const primitive of primitives)
|
|
64
72
|
addPrimitive(primitive);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImdlModel.js","sourceRoot":"","sources":["../../../../src/common/imdl/ImdlModel.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { UintArray } from \"@itwin/core-bentley\";\r\nimport { LowAndHighXYZ, XYAndZ } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDefProps, FeatureIndexType, FillFlags, Gradient, LinePixels, PolylineTypeFlags, QParams2dProps, QParams3dProps,\r\n} from \"@itwin/core-common\";\r\nimport { EdgeTable } from \"../render/primitives/EdgeParams\";\r\nimport { SurfaceMaterialAtlas, SurfaceType } from \"../render/primitives/SurfaceParams\";\r\nimport { AuxChannelTableProps } from \"../render/primitives/AuxChannelTable\";\r\nimport { ImdlAreaPattern, ImdlDocument } from \"./ImdlSchema\";\r\n\r\n/** Types comprising the parsed representation of an ImdlDocument, produced by [[parseImdlDocument]] and consumed by [[decodeImdlGraphics]].\r\n * All of the types are required to support [structured cloning](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm) so that they\r\n * can be passed between workers and the main JavaScript thread.\r\n * @internal\r\n */\r\nexport namespace ImdlModel {\r\n export interface VertexTable {\r\n data: Uint8Array;\r\n usesUnquantizedPositions?: boolean;\r\n qparams: QParams3dProps;\r\n width: number;\r\n height: number;\r\n hasTranslucency: boolean;\r\n uniformColor?: ColorDefProps;\r\n featureIndexType: FeatureIndexType;\r\n uniformFeatureID?: number;\r\n numVertices: number;\r\n numRgbaPerVertex: number;\r\n uvParams?: QParams2dProps;\r\n }\r\n\r\n export interface PointStringParams {\r\n vertices: VertexTable;\r\n indices: Uint8Array;\r\n weight: number;\r\n }\r\n\r\n export interface TesselatedPolyline {\r\n indices: Uint8Array;\r\n prevIndices: Uint8Array;\r\n nextIndicesAndParams: Uint8Array;\r\n }\r\n\r\n export interface PolylineParams {\r\n vertices: VertexTable;\r\n polyline: TesselatedPolyline;\r\n isPlanar: boolean;\r\n type: PolylineTypeFlags;\r\n weight: number;\r\n linePixels: LinePixels;\r\n }\r\n\r\n export interface SegmentEdgeParams {\r\n indices: Uint8Array;\r\n endPointAndQuadIndices: Uint8Array;\r\n }\r\n\r\n export interface SilhouetteParams extends SegmentEdgeParams {\r\n normalPairs: Uint8Array;\r\n }\r\n\r\n export interface IndexedEdgeParams {\r\n indices: Uint8Array;\r\n edges: EdgeTable;\r\n }\r\n\r\n export interface EdgeParams {\r\n weight: number;\r\n linePixels: LinePixels;\r\n segments?: SegmentEdgeParams;\r\n silhouettes?: SilhouetteParams;\r\n polylines?: TesselatedPolyline;\r\n indexed?: IndexedEdgeParams;\r\n }\r\n\r\n export interface SurfaceMaterialParams {\r\n alpha?: number;\r\n diffuse?: {\r\n color?: ColorDefProps;\r\n weight?: number;\r\n };\r\n specular?: {\r\n color?: ColorDefProps;\r\n weight?: number;\r\n exponent?: number;\r\n };\r\n }\r\n\r\n export interface SurfaceRenderMaterial {\r\n isAtlas: false;\r\n material: string | SurfaceMaterialParams;\r\n }\r\n\r\n export type SurfaceMaterial = SurfaceRenderMaterial | SurfaceMaterialAtlas;\r\n\r\n export interface SurfaceParams {\r\n type: SurfaceType;\r\n indices: Uint8Array;\r\n fillFlags: FillFlags;\r\n hasBakedLighting: boolean;\r\n material?: SurfaceMaterial;\r\n textureMapping?: {\r\n texture: string | Gradient.SymbProps;\r\n alwaysDisplayed: boolean;\r\n };\r\n }\r\n\r\n export interface MeshParams {\r\n vertices: VertexTable;\r\n surface: SurfaceParams;\r\n edges?: EdgeParams;\r\n isPlanar: boolean;\r\n auxChannels?: AuxChannelTableProps;\r\n }\r\n\r\n export interface Instances {\r\n type: \"instances\";\r\n count: number;\r\n transforms: Float32Array;\r\n transformCenter: XYAndZ;\r\n featureIds?: Uint8Array;\r\n symbologyOverrides?: Uint8Array;\r\n range?: LowAndHighXYZ;\r\n }\r\n\r\n export interface ViewIndependentOrigin {\r\n type: \"viewIndependentOrigin\";\r\n origin: XYAndZ;\r\n }\r\n\r\n export type PrimitiveModifier = Instances | ViewIndependentOrigin;\r\n\r\n export type Primitive = {\r\n params: MeshParams;\r\n modifier?: PrimitiveModifier;\r\n type: \"mesh\";\r\n } | {\r\n params: PointStringParams;\r\n modifier?: PrimitiveModifier;\r\n type: \"point\";\r\n } | {\r\n params: PolylineParams;\r\n modifier?: PrimitiveModifier;\r\n type: \"polyline\";\r\n };\r\n\r\n export type AreaPatternParams = Omit<ImdlAreaPattern, \"xyOffsets\"> & {\r\n xyOffsets: Float32Array;\r\n };\r\n\r\n export type NodePrimitive = Primitive | {\r\n params: AreaPatternParams;\r\n modifier?: never;\r\n type: \"pattern\";\r\n };\r\n\r\n export interface BasicNode {\r\n primitives: NodePrimitive[];\r\n animationNodeId?: never;\r\n animationId?: never;\r\n layerId?: never;\r\n }\r\n\r\n export interface AnimationNode {\r\n primitives: NodePrimitive[];\r\n animationNodeId: number;\r\n animationId?: string;\r\n layerId?: never;\r\n }\r\n\r\n export interface Layer {\r\n primitives: NodePrimitive[];\r\n layerId: string;\r\n animationNodeId?: never;\r\n animationId?: never;\r\n }\r\n\r\n export type Node = BasicNode | AnimationNode | Layer;\r\n\r\n export interface SingleModelFeatureTable {\r\n multiModel: false;\r\n data: Uint32Array;\r\n numFeatures: number;\r\n animationNodeIds?: UintArray;\r\n numSubCategories?: never;\r\n }\r\n\r\n export interface MultiModelFeatureTable {\r\n multiModel: true;\r\n data: Uint32Array;\r\n numFeatures: number;\r\n numSubCategories: number;\r\n animationNodeIds?: UintArray;\r\n }\r\n\r\n export type FeatureTable = SingleModelFeatureTable | MultiModelFeatureTable;\r\n\r\n export interface Document {\r\n featureTable: FeatureTable;\r\n nodes: Node[];\r\n patterns: Map<string, Primitive[]>;\r\n rtcCenter?: XYAndZ;\r\n binaryData: Uint8Array;\r\n json: ImdlDocument;\r\n }\r\n}\r\n\r\n/** Collect an array of all the [transferable objects](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects)\r\n * within the specified document.\r\n * @internal\r\n */\r\nexport function collectTransferables(document: ImdlModel.Document): Transferable[] {\r\n const xfers = new Set<Transferable>();\r\n const add = (array: UintArray | Float32Array | undefined) => {\r\n if (array)\r\n xfers.add(array.buffer);\r\n };\r\n\r\n add(document.binaryData);\r\n add(document.featureTable.data);\r\n add(document.featureTable.animationNodeIds);\r\n\r\n const addPrimitive = (primitive: ImdlModel.NodePrimitive) => {\r\n if (primitive.type === \"pattern\") {\r\n add(primitive.params.xyOffsets);\r\n return;\r\n }\r\n\r\n add(primitive.params.vertices.data);\r\n if (primitive.modifier?.type === \"instances\") {\r\n add(primitive.modifier.transforms);\r\n add(primitive.modifier.featureIds);\r\n add(primitive.modifier.symbologyOverrides);\r\n }\r\n\r\n switch (primitive.type) {\r\n case \"point\":\r\n add(primitive.params.indices);\r\n break;\r\n case \"polyline\":\r\n add(primitive.params.polyline.indices);\r\n add(primitive.params.polyline.prevIndices);\r\n add(primitive.params.polyline.nextIndicesAndParams);\r\n break;\r\n case \"mesh\":\r\n add(primitive.params.surface.indices);\r\n const edges = primitive.params.edges;\r\n if (edges) {\r\n add(edges.segments?.indices);\r\n add(edges.segments?.endPointAndQuadIndices);\r\n add(edges.silhouettes?.indices);\r\n add(edges.silhouettes?.endPointAndQuadIndices);\r\n add(edges.silhouettes?.normalPairs);\r\n add(edges.polylines?.indices);\r\n add(edges.polylines?.prevIndices);\r\n add(edges.polylines?.nextIndicesAndParams);\r\n add(edges.indexed?.indices);\r\n add(edges.indexed?.edges.data);\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n for (const node of document.nodes)\r\n for (const primitive of node.primitives)\r\n addPrimitive(primitive);\r\n\r\n for (const primitives of document.patterns.values())\r\n for (const primitive of primitives)\r\n addPrimitive(primitive);\r\n\r\n return Array.from(xfers);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ImdlModel.js","sourceRoot":"","sources":["../../../../src/common/imdl/ImdlModel.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { UintArray } from \"@itwin/core-bentley\";\r\nimport { LowAndHighXYZ, XYAndZ } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDefProps, FeatureIndexType, FillFlags, Gradient, LinePixels, PolylineTypeFlags, QParams2dProps, QParams3dProps,\r\n} from \"@itwin/core-common\";\r\nimport { EdgeTable } from \"../render/primitives/EdgeParams\";\r\nimport { SurfaceMaterialAtlas, SurfaceType } from \"../render/primitives/SurfaceParams\";\r\nimport { AuxChannelTableProps } from \"../render/primitives/AuxChannelTable\";\r\nimport { ImdlAreaPattern, ImdlDocument } from \"./ImdlSchema\";\r\n\r\n/** Types comprising the parsed representation of an ImdlDocument, produced by [[parseImdlDocument]] and consumed by [[decodeImdlGraphics]].\r\n * All of the types are required to support [structured cloning](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm) so that they\r\n * can be passed between workers and the main JavaScript thread.\r\n * @internal\r\n */\r\nexport namespace ImdlModel {\r\n export interface VertexTable {\r\n data: Uint8Array;\r\n usesUnquantizedPositions?: boolean;\r\n qparams: QParams3dProps;\r\n width: number;\r\n height: number;\r\n hasTranslucency: boolean;\r\n uniformColor?: ColorDefProps;\r\n featureIndexType: FeatureIndexType;\r\n uniformFeatureID?: number;\r\n numVertices: number;\r\n numRgbaPerVertex: number;\r\n uvParams?: QParams2dProps;\r\n }\r\n\r\n export interface PointStringParams {\r\n vertices: VertexTable;\r\n indices: Uint8Array;\r\n weight: number;\r\n }\r\n\r\n export interface TesselatedPolyline {\r\n indices: Uint8Array;\r\n prevIndices: Uint8Array;\r\n nextIndicesAndParams: Uint8Array;\r\n }\r\n\r\n export interface PolylineParams {\r\n vertices: VertexTable;\r\n polyline: TesselatedPolyline;\r\n isPlanar: boolean;\r\n type: PolylineTypeFlags;\r\n weight: number;\r\n linePixels: LinePixels;\r\n }\r\n\r\n export interface SegmentEdgeParams {\r\n indices: Uint8Array;\r\n endPointAndQuadIndices: Uint8Array;\r\n }\r\n\r\n export interface SilhouetteParams extends SegmentEdgeParams {\r\n normalPairs: Uint8Array;\r\n }\r\n\r\n export interface IndexedEdgeParams {\r\n indices: Uint8Array;\r\n edges: EdgeTable;\r\n }\r\n\r\n export interface EdgeParams {\r\n weight: number;\r\n linePixels: LinePixels;\r\n segments?: SegmentEdgeParams;\r\n silhouettes?: SilhouetteParams;\r\n polylines?: TesselatedPolyline;\r\n indexed?: IndexedEdgeParams;\r\n }\r\n\r\n export interface SurfaceMaterialParams {\r\n alpha?: number;\r\n diffuse?: {\r\n color?: ColorDefProps;\r\n weight?: number;\r\n };\r\n specular?: {\r\n color?: ColorDefProps;\r\n weight?: number;\r\n exponent?: number;\r\n };\r\n }\r\n\r\n export interface SurfaceRenderMaterial {\r\n isAtlas: false;\r\n material: string | SurfaceMaterialParams;\r\n }\r\n\r\n export type SurfaceMaterial = SurfaceRenderMaterial | SurfaceMaterialAtlas;\r\n\r\n export interface SurfaceParams {\r\n type: SurfaceType;\r\n indices: Uint8Array;\r\n fillFlags: FillFlags;\r\n hasBakedLighting: boolean;\r\n material?: SurfaceMaterial;\r\n textureMapping?: {\r\n texture: string | Gradient.SymbProps;\r\n alwaysDisplayed: boolean;\r\n };\r\n }\r\n\r\n export interface MeshParams {\r\n vertices: VertexTable;\r\n surface: SurfaceParams;\r\n edges?: EdgeParams;\r\n isPlanar: boolean;\r\n auxChannels?: AuxChannelTableProps;\r\n }\r\n\r\n export interface Instances {\r\n type: \"instances\";\r\n count: number;\r\n transforms: Float32Array;\r\n transformCenter: XYAndZ;\r\n featureIds?: Uint8Array;\r\n symbologyOverrides?: Uint8Array;\r\n range?: LowAndHighXYZ;\r\n }\r\n\r\n export interface ViewIndependentOrigin {\r\n type: \"viewIndependentOrigin\";\r\n origin: XYAndZ;\r\n }\r\n\r\n export type PrimitiveModifier = Instances | ViewIndependentOrigin;\r\n\r\n export type Primitive = {\r\n params: MeshParams;\r\n modifier?: PrimitiveModifier;\r\n type: \"mesh\";\r\n } | {\r\n params: PointStringParams;\r\n modifier?: PrimitiveModifier;\r\n type: \"point\";\r\n } | {\r\n params: PolylineParams;\r\n modifier?: PrimitiveModifier;\r\n type: \"polyline\";\r\n };\r\n\r\n export type AreaPatternParams = Omit<ImdlAreaPattern, \"xyOffsets\"> & {\r\n xyOffsets: Float32Array;\r\n };\r\n\r\n export type NodePrimitive = Primitive | {\r\n params: AreaPatternParams;\r\n modifier?: never;\r\n type: \"pattern\";\r\n };\r\n\r\n export interface BasicNode {\r\n primitives: NodePrimitive[];\r\n animationNodeId?: never;\r\n animationId?: never;\r\n layerId?: never;\r\n groupId?: never;\r\n }\r\n\r\n export interface AnimationNode {\r\n primitives: NodePrimitive[];\r\n animationNodeId: number;\r\n animationId?: string;\r\n layerId?: never;\r\n groupId?: never;\r\n }\r\n\r\n export interface Layer {\r\n primitives: NodePrimitive[];\r\n layerId: string;\r\n groupId?: never;\r\n animationNodeId?: never;\r\n animationId?: never;\r\n }\r\n\r\n /** Nodes that contain primitives. */\r\n export type PrimitivesNode = BasicNode | AnimationNode | Layer;\r\n\r\n /** A grouping node that contains other nodes. These don't nest. */\r\n export interface GroupNode {\r\n groupId: number;\r\n nodes: PrimitivesNode[];\r\n primitives?: never;\r\n animationNodeId?: never;\r\n animationId?: never;\r\n layerId?: never;\r\n }\r\n\r\n export type Node = PrimitivesNode | GroupNode;\r\n\r\n export interface SingleModelFeatureTable {\r\n multiModel: false;\r\n data: Uint32Array;\r\n numFeatures: number;\r\n animationNodeIds?: UintArray;\r\n numSubCategories?: never;\r\n }\r\n\r\n export interface MultiModelFeatureTable {\r\n multiModel: true;\r\n data: Uint32Array;\r\n numFeatures: number;\r\n numSubCategories: number;\r\n animationNodeIds?: UintArray;\r\n }\r\n\r\n export type FeatureTable = SingleModelFeatureTable | MultiModelFeatureTable;\r\n\r\n export interface Document {\r\n featureTable: FeatureTable;\r\n nodes: Node[];\r\n patterns: Map<string, Primitive[]>;\r\n rtcCenter?: XYAndZ;\r\n binaryData: Uint8Array;\r\n json: ImdlDocument;\r\n }\r\n}\r\n\r\n/** Collect an array of all the [transferable objects](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects)\r\n * within the specified document.\r\n * @internal\r\n */\r\nexport function collectTransferables(document: ImdlModel.Document): Transferable[] {\r\n const xfers = new Set<Transferable>();\r\n const add = (array: UintArray | Float32Array | undefined) => {\r\n if (array)\r\n xfers.add(array.buffer);\r\n };\r\n\r\n add(document.binaryData);\r\n add(document.featureTable.data);\r\n add(document.featureTable.animationNodeIds);\r\n\r\n const addPrimitive = (primitive: ImdlModel.NodePrimitive) => {\r\n if (primitive.type === \"pattern\") {\r\n add(primitive.params.xyOffsets);\r\n return;\r\n }\r\n\r\n add(primitive.params.vertices.data);\r\n if (primitive.modifier?.type === \"instances\") {\r\n add(primitive.modifier.transforms);\r\n add(primitive.modifier.featureIds);\r\n add(primitive.modifier.symbologyOverrides);\r\n }\r\n\r\n switch (primitive.type) {\r\n case \"point\":\r\n add(primitive.params.indices);\r\n break;\r\n case \"polyline\":\r\n add(primitive.params.polyline.indices);\r\n add(primitive.params.polyline.prevIndices);\r\n add(primitive.params.polyline.nextIndicesAndParams);\r\n break;\r\n case \"mesh\":\r\n add(primitive.params.surface.indices);\r\n const edges = primitive.params.edges;\r\n if (edges) {\r\n add(edges.segments?.indices);\r\n add(edges.segments?.endPointAndQuadIndices);\r\n add(edges.silhouettes?.indices);\r\n add(edges.silhouettes?.endPointAndQuadIndices);\r\n add(edges.silhouettes?.normalPairs);\r\n add(edges.polylines?.indices);\r\n add(edges.polylines?.prevIndices);\r\n add(edges.polylines?.nextIndicesAndParams);\r\n add(edges.indexed?.indices);\r\n add(edges.indexed?.edges.data);\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n for (const node of document.nodes) {\r\n if (undefined !== node.groupId) {\r\n for (const primNode of node.nodes)\r\n for (const primitive of primNode.primitives)\r\n addPrimitive(primitive);\r\n } else {\r\n for (const primitive of node.primitives)\r\n addPrimitive(primitive);\r\n }\r\n }\r\n\r\n for (const primitives of document.patterns.values())\r\n for (const primitive of primitives)\r\n addPrimitive(primitive);\r\n\r\n return Array.from(xfers);\r\n}\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module Tiles
|
|
3
3
|
*/
|
|
4
|
-
import { Id64String } from "@itwin/core-bentley";
|
|
4
|
+
import { Id64Set, Id64String } from "@itwin/core-bentley";
|
|
5
5
|
import { RenderFeatureTable, RenderSchedule, TileReadStatus } from "@itwin/core-common";
|
|
6
6
|
import { ImdlModel as Imdl } from "./ImdlModel";
|
|
7
7
|
import { EdgeParams } from "../render/primitives/EdgeParams";
|
|
@@ -18,9 +18,11 @@ export interface ImdlParserOptions {
|
|
|
18
18
|
data: Uint8Array;
|
|
19
19
|
batchModelId: Id64String;
|
|
20
20
|
is3d: boolean;
|
|
21
|
+
/** The limit on the width and height of a [[VertexTable]]. */
|
|
21
22
|
maxVertexTableSize: number;
|
|
22
23
|
omitEdges?: boolean;
|
|
23
24
|
createUntransformedRootNode?: boolean;
|
|
25
|
+
modelGroups?: Id64Set[];
|
|
24
26
|
}
|
|
25
27
|
/** Arguments provided to [[parseImdlDocument]].
|
|
26
28
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParseImdlDocument.d.ts","sourceRoot":"","sources":["../../../../src/common/imdl/ParseImdlDocument.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"ParseImdlDocument.d.ts","sourceRoot":"","sources":["../../../../src/common/imdl/ParseImdlDocument.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAA4B,OAAO,EAAE,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAE7G,OAAO,EAEwD,kBAAkB,EAAkB,cAAc,EACnG,cAAc,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC;AAWhD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,UAAU,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,8DAA8D;IAC9D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;CACpC;AAoDD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;AAuG7E,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAOjE;AAWD,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAqBpE;AAy6BD,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAkBhF;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,GAAG,kBAAkB,CAOrH;AAED,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAyDhG"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module Tiles
|
|
7
7
|
*/
|
|
8
|
-
import { assert, ByteStream, JsonUtils, utf8ToString } from "@itwin/core-bentley";
|
|
8
|
+
import { assert, ByteStream, Id64, JsonUtils, utf8ToString } from "@itwin/core-bentley";
|
|
9
9
|
import { Point3d, Range2d, Range3d } from "@itwin/core-geometry";
|
|
10
10
|
import { BatchType, ColorDef, FeatureTableHeader, FillFlags, GltfV2ChunkTypes, GltfVersions, Gradient, ImdlFlags, ImdlHeader, LinePixels, MultiModelPackedFeatureTable, PackedFeatureTable, PolylineTypeFlags, QParams2d, QParams3d, RenderMaterial, RenderTexture, RgbColor, TextureMapping, TileFormat, TileHeader, TileReadStatus, } from "@itwin/core-common";
|
|
11
11
|
import { MeshPrimitiveType } from "../render/primitives/MeshPrimitive";
|
|
@@ -215,7 +215,8 @@ class Parser {
|
|
|
215
215
|
y: this._document.rtcCenter[1] ?? 0,
|
|
216
216
|
z: this._document.rtcCenter[2] ?? 0,
|
|
217
217
|
} : undefined;
|
|
218
|
-
const
|
|
218
|
+
const primitiveNodes = this.parseNodes(featureTable);
|
|
219
|
+
const nodes = this.groupPrimitiveNodes(primitiveNodes, featureTable);
|
|
219
220
|
return {
|
|
220
221
|
featureTable,
|
|
221
222
|
nodes,
|
|
@@ -334,8 +335,12 @@ class Parser {
|
|
|
334
335
|
const docPrimitives = docMesh.primitives;
|
|
335
336
|
if (!docPrimitives)
|
|
336
337
|
return;
|
|
338
|
+
const primitives = docPrimitives.map((x) => this.parseNodePrimitive(x)).filter((x) => x !== undefined);
|
|
339
|
+
if (primitives.length === 0)
|
|
340
|
+
return;
|
|
337
341
|
const nodesById = new Map();
|
|
338
342
|
const getNode = (nodeId) => {
|
|
343
|
+
nodeId = nodeId ?? AnimationNodeId.Untransformed;
|
|
339
344
|
let node = nodesById.get(nodeId);
|
|
340
345
|
if (!node) {
|
|
341
346
|
node = {
|
|
@@ -358,6 +363,9 @@ class Parser {
|
|
|
358
363
|
const nodeId = featureTable.getAnimationNodeId(featureIndex);
|
|
359
364
|
return 0 !== nodeId && discreteNodeIds.has(nodeId) ? nodeId : 0;
|
|
360
365
|
};
|
|
366
|
+
this.splitPrimitives(primitives, featureTable, computeNodeId, getNode);
|
|
367
|
+
}
|
|
368
|
+
splitPrimitives(primitives, featureTable, computeNodeId, getPrimitivesNode) {
|
|
361
369
|
const splitArgs = {
|
|
362
370
|
maxDimension: this._options.maxVertexTableSize,
|
|
363
371
|
computeNodeId,
|
|
@@ -371,15 +379,13 @@ class Parser {
|
|
|
371
379
|
const material = (typeof imdl.material === "string") ? this.materialFromJson(imdl.material) : Material.create(toMaterialParams(imdl.material));
|
|
372
380
|
return material ? { isAtlas: false, material } : undefined;
|
|
373
381
|
};
|
|
374
|
-
for (const
|
|
375
|
-
const primitive = this.parseNodePrimitive(docPrimitive);
|
|
376
|
-
if (!primitive)
|
|
377
|
-
continue;
|
|
382
|
+
for (const primitive of primitives) {
|
|
378
383
|
switch (primitive.type) {
|
|
379
|
-
case "pattern":
|
|
380
|
-
// ###TODO
|
|
381
|
-
|
|
384
|
+
case "pattern": {
|
|
385
|
+
// ###TODO splitting area patterns
|
|
386
|
+
getPrimitivesNode(undefined).primitives.push(primitive);
|
|
382
387
|
break;
|
|
388
|
+
}
|
|
383
389
|
case "mesh": {
|
|
384
390
|
const mesh = primitive.params;
|
|
385
391
|
const texMap = mesh.surface.textureMapping;
|
|
@@ -416,8 +422,9 @@ class Parser {
|
|
|
416
422
|
}
|
|
417
423
|
}
|
|
418
424
|
assert(p.surface.textureMapping === undefined || p.surface.textureMapping.texture instanceof Texture);
|
|
419
|
-
|
|
425
|
+
getPrimitivesNode(nodeId).primitives.push({
|
|
420
426
|
type: "mesh",
|
|
427
|
+
modifier: primitive.modifier,
|
|
421
428
|
params: {
|
|
422
429
|
vertices: fromVertexTable(p.vertices),
|
|
423
430
|
surface: {
|
|
@@ -445,8 +452,9 @@ class Parser {
|
|
|
445
452
|
};
|
|
446
453
|
const split = splitPointStringParams({ ...splitArgs, params });
|
|
447
454
|
for (const [nodeId, p] of split) {
|
|
448
|
-
|
|
455
|
+
getPrimitivesNode(nodeId).primitives.push({
|
|
449
456
|
type: "point",
|
|
457
|
+
modifier: primitive.modifier,
|
|
450
458
|
params: {
|
|
451
459
|
vertices: fromVertexTable(p.vertices),
|
|
452
460
|
indices: p.indices.data,
|
|
@@ -468,8 +476,9 @@ class Parser {
|
|
|
468
476
|
};
|
|
469
477
|
const split = splitPolylineParams({ ...splitArgs, params });
|
|
470
478
|
for (const [nodeId, p] of split) {
|
|
471
|
-
|
|
479
|
+
getPrimitivesNode(nodeId).primitives.push({
|
|
472
480
|
type: "polyline",
|
|
481
|
+
modifier: primitive.modifier,
|
|
473
482
|
params: {
|
|
474
483
|
...p,
|
|
475
484
|
vertices: fromVertexTable(p.vertices),
|
|
@@ -486,6 +495,52 @@ class Parser {
|
|
|
486
495
|
}
|
|
487
496
|
}
|
|
488
497
|
}
|
|
498
|
+
groupPrimitiveNodes(inputNodes, imdlFeatureTable) {
|
|
499
|
+
const modelGroups = this._options.modelGroups;
|
|
500
|
+
if (!modelGroups?.length)
|
|
501
|
+
return inputNodes;
|
|
502
|
+
const groupNodes = [];
|
|
503
|
+
let orphanNode;
|
|
504
|
+
const getGroupNode = (groupId) => {
|
|
505
|
+
assert(groupId <= modelGroups.length);
|
|
506
|
+
if (groupId === modelGroups.length) {
|
|
507
|
+
// This would happen if:
|
|
508
|
+
// - The tile contains geometry from a model not present in modelGroups (should never occur); or
|
|
509
|
+
// - The tile contains an area pattern (we haven't yet implemented splitting for them).
|
|
510
|
+
// In either case, orphaned geometry will end up getting discarded.
|
|
511
|
+
return orphanNode ?? (orphanNode = { groupId, nodes: [] });
|
|
512
|
+
}
|
|
513
|
+
let groupNode = groupNodes[groupId];
|
|
514
|
+
if (!groupNode)
|
|
515
|
+
groupNodes[groupId] = groupNode = { groupId, nodes: [] };
|
|
516
|
+
return groupNode;
|
|
517
|
+
};
|
|
518
|
+
const featureTable = convertFeatureTable(imdlFeatureTable, this._options.batchModelId);
|
|
519
|
+
const modelIdPair = { lower: 0, upper: 0 };
|
|
520
|
+
const computeNodeId = (featureIndex) => {
|
|
521
|
+
featureTable.getModelIdPair(featureIndex, modelIdPair);
|
|
522
|
+
const modelId = Id64.fromUint32PairObject(modelIdPair);
|
|
523
|
+
for (let i = 0; i < modelGroups.length; i++) {
|
|
524
|
+
if (modelGroups[i].has(modelId))
|
|
525
|
+
return i;
|
|
526
|
+
}
|
|
527
|
+
return modelGroups.length;
|
|
528
|
+
};
|
|
529
|
+
for (const inputNode of inputNodes) {
|
|
530
|
+
// Indexed by model group index.
|
|
531
|
+
const splitNodes = [];
|
|
532
|
+
const getSplitNode = (groupIndex) => {
|
|
533
|
+
groupIndex = groupIndex ?? modelGroups.length;
|
|
534
|
+
if (!splitNodes[groupIndex]) {
|
|
535
|
+
const splitNode = splitNodes[groupIndex] = { ...inputNode, primitives: [] };
|
|
536
|
+
getGroupNode(groupIndex).nodes.push(splitNode);
|
|
537
|
+
}
|
|
538
|
+
return splitNodes[groupIndex];
|
|
539
|
+
};
|
|
540
|
+
this.splitPrimitives(inputNode.primitives, featureTable, computeNodeId, getSplitNode);
|
|
541
|
+
}
|
|
542
|
+
return groupNodes.filter((x) => undefined !== x);
|
|
543
|
+
}
|
|
489
544
|
parseTesselatedPolyline(json) {
|
|
490
545
|
const indices = this.findBuffer(json.indices);
|
|
491
546
|
const prevIndices = this.findBuffer(json.prevIndices);
|