@itwin/core-frontend 3.7.0-dev.5 → 3.7.0-dev.6
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/ElementLocateManager.js +1 -1
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/SpatialViewState.d.ts.map +1 -1
- package/lib/cjs/SpatialViewState.js +2 -0
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +2 -0
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +2 -0
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +10 -6
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +1 -0
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +1 -0
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/gltf/GltfModel.d.ts +91 -0
- package/lib/cjs/gltf/GltfModel.d.ts.map +1 -0
- package/lib/cjs/gltf/GltfModel.js +10 -0
- package/lib/cjs/gltf/GltfModel.js.map +1 -0
- package/lib/cjs/gltf/GltfParser.d.ts +26 -0
- package/lib/cjs/gltf/GltfParser.d.ts.map +1 -0
- package/lib/cjs/gltf/GltfParser.js +357 -0
- package/lib/cjs/gltf/GltfParser.js.map +1 -0
- package/lib/cjs/gltf/GltfSchema.d.ts +557 -0
- package/lib/cjs/gltf/GltfSchema.d.ts.map +1 -0
- package/lib/cjs/gltf/GltfSchema.js +138 -0
- package/lib/cjs/gltf/GltfSchema.js.map +1 -0
- package/lib/cjs/render/GraphicBuilder.d.ts +5 -2
- package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +12 -3
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/MockRender.d.ts +4 -4
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/Pixel.d.ts +13 -4
- package/lib/cjs/render/Pixel.d.ts.map +1 -1
- package/lib/cjs/render/Pixel.js +20 -13
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +2 -2
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.js +2 -2
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/webgl/BatchState.d.ts +3 -2
- package/lib/cjs/render/webgl/BatchState.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BatchState.js +4 -3
- package/lib/cjs/render/webgl/BatchState.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +4 -2
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +3 -3
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +24 -28
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts +3 -3
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +13 -4
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +2 -2
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/VisibleTileFeatures.js +6 -7
- package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/cjs/tile/B3dmReader.d.ts +2 -1
- package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/B3dmReader.js +2 -1
- package/lib/cjs/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +13 -420
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +121 -192
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +3 -2
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +34 -25
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts +5 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +2 -0
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +14 -2
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/Tile.d.ts +10 -1
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +22 -2
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/esm/ElementLocateManager.js +1 -1
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/SpatialViewState.d.ts.map +1 -1
- package/lib/esm/SpatialViewState.js +2 -0
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/ViewState.d.ts +2 -0
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts +2 -0
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +10 -6
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +1 -0
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +1 -0
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/gltf/GltfModel.d.ts +91 -0
- package/lib/esm/gltf/GltfModel.d.ts.map +1 -0
- package/lib/esm/gltf/GltfModel.js +9 -0
- package/lib/esm/gltf/GltfModel.js.map +1 -0
- package/lib/esm/gltf/GltfParser.d.ts +26 -0
- package/lib/esm/gltf/GltfParser.d.ts.map +1 -0
- package/lib/esm/gltf/GltfParser.js +334 -0
- package/lib/esm/gltf/GltfParser.js.map +1 -0
- package/lib/esm/gltf/GltfSchema.d.ts +557 -0
- package/lib/esm/gltf/GltfSchema.d.ts.map +1 -0
- package/lib/esm/gltf/GltfSchema.js +131 -0
- package/lib/esm/gltf/GltfSchema.js.map +1 -0
- package/lib/esm/render/GraphicBuilder.d.ts +5 -2
- package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +13 -4
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/MockRender.d.ts +4 -4
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/Pixel.d.ts +13 -4
- package/lib/esm/render/Pixel.d.ts.map +1 -1
- package/lib/esm/render/Pixel.js +21 -14
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +2 -2
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/VisibleFeature.js +2 -2
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/render/webgl/BatchState.d.ts +3 -2
- package/lib/esm/render/webgl/BatchState.d.ts.map +1 -1
- package/lib/esm/render/webgl/BatchState.js +4 -3
- package/lib/esm/render/webgl/BatchState.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +4 -2
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +3 -3
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +24 -28
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +3 -3
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +1 -1
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +14 -5
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +2 -2
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/VisibleTileFeatures.js +7 -8
- package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/esm/tile/B3dmReader.d.ts +2 -1
- package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/B3dmReader.js +2 -1
- package/lib/esm/tile/B3dmReader.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +13 -420
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +78 -149
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +3 -2
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +35 -26
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts +5 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +2 -0
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +14 -2
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/Tile.d.ts +10 -1
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +22 -2
- package/lib/esm/tile/Tile.js.map +1 -1
- package/package.json +20 -20
|
@@ -16,102 +16,7 @@ import { RealityMeshParams } from "../render/RealityMeshParams";
|
|
|
16
16
|
import { DisplayParams } from "../render/primitives/DisplayParams";
|
|
17
17
|
import { Mesh } from "../render/primitives/mesh/MeshPrimitives";
|
|
18
18
|
import { Triangle } from "../render/primitives/Primitives";
|
|
19
|
-
|
|
20
|
-
/** Enumerates the types of [[GltfMeshPrimitive]] topologies. */
|
|
21
|
-
var GltfMeshMode;
|
|
22
|
-
(function (GltfMeshMode) {
|
|
23
|
-
GltfMeshMode[GltfMeshMode["Points"] = 0] = "Points";
|
|
24
|
-
GltfMeshMode[GltfMeshMode["Lines"] = 1] = "Lines";
|
|
25
|
-
GltfMeshMode[GltfMeshMode["LineStrip"] = 3] = "LineStrip";
|
|
26
|
-
GltfMeshMode[GltfMeshMode["Triangles"] = 4] = "Triangles";
|
|
27
|
-
/** Not currently supported. */
|
|
28
|
-
GltfMeshMode[GltfMeshMode["TriangleStrip"] = 5] = "TriangleStrip";
|
|
29
|
-
/** Not currently supported. */
|
|
30
|
-
GltfMeshMode[GltfMeshMode["TriangleFan"] = 6] = "TriangleFan";
|
|
31
|
-
})(GltfMeshMode || (GltfMeshMode = {}));
|
|
32
|
-
/** Enumerates the basic data types supported by accessors, material values, technique uniforms, etc.
|
|
33
|
-
* @internal
|
|
34
|
-
*/
|
|
35
|
-
export var GltfDataType;
|
|
36
|
-
(function (GltfDataType) {
|
|
37
|
-
GltfDataType[GltfDataType["SignedByte"] = 5120] = "SignedByte";
|
|
38
|
-
GltfDataType[GltfDataType["UnsignedByte"] = 5121] = "UnsignedByte";
|
|
39
|
-
GltfDataType[GltfDataType["SignedShort"] = 5122] = "SignedShort";
|
|
40
|
-
GltfDataType[GltfDataType["UnsignedShort"] = 5123] = "UnsignedShort";
|
|
41
|
-
GltfDataType[GltfDataType["UInt32"] = 5125] = "UInt32";
|
|
42
|
-
GltfDataType[GltfDataType["Float"] = 5126] = "Float";
|
|
43
|
-
GltfDataType[GltfDataType["Rgb"] = 6407] = "Rgb";
|
|
44
|
-
GltfDataType[GltfDataType["Rgba"] = 6408] = "Rgba";
|
|
45
|
-
GltfDataType[GltfDataType["IntVec2"] = 35667] = "IntVec2";
|
|
46
|
-
GltfDataType[GltfDataType["IntVec3"] = 35668] = "IntVec3";
|
|
47
|
-
GltfDataType[GltfDataType["FloatVec2"] = 35664] = "FloatVec2";
|
|
48
|
-
GltfDataType[GltfDataType["FloatVec3"] = 35665] = "FloatVec3";
|
|
49
|
-
GltfDataType[GltfDataType["FloatVec4"] = 35666] = "FloatVec4";
|
|
50
|
-
GltfDataType[GltfDataType["FloatMat3"] = 35675] = "FloatMat3";
|
|
51
|
-
GltfDataType[GltfDataType["FloatMat4"] = 35676] = "FloatMat4";
|
|
52
|
-
GltfDataType[GltfDataType["Sampler2d"] = 35678] = "Sampler2d";
|
|
53
|
-
})(GltfDataType || (GltfDataType = {}));
|
|
54
|
-
/** @internal */
|
|
55
|
-
var GltfMagFilter;
|
|
56
|
-
(function (GltfMagFilter) {
|
|
57
|
-
GltfMagFilter[GltfMagFilter["Nearest"] = 9728] = "Nearest";
|
|
58
|
-
GltfMagFilter[GltfMagFilter["Linear"] = 9729] = "Linear";
|
|
59
|
-
})(GltfMagFilter || (GltfMagFilter = {}));
|
|
60
|
-
/** @internal */
|
|
61
|
-
var GltfMinFilter;
|
|
62
|
-
(function (GltfMinFilter) {
|
|
63
|
-
GltfMinFilter[GltfMinFilter["Nearest"] = 9728] = "Nearest";
|
|
64
|
-
GltfMinFilter[GltfMinFilter["Linear"] = 9729] = "Linear";
|
|
65
|
-
GltfMinFilter[GltfMinFilter["NearestMipMapNearest"] = 9984] = "NearestMipMapNearest";
|
|
66
|
-
GltfMinFilter[GltfMinFilter["LinearMipMapNearest"] = 9985] = "LinearMipMapNearest";
|
|
67
|
-
GltfMinFilter[GltfMinFilter["NearestMipMapLinear"] = 9986] = "NearestMipMapLinear";
|
|
68
|
-
GltfMinFilter[GltfMinFilter["LinearMipMapLinear"] = 9987] = "LinearMipMapLinear";
|
|
69
|
-
})(GltfMinFilter || (GltfMinFilter = {}));
|
|
70
|
-
/** Describes how texture coordinates outside of the range [0..1] are handled.
|
|
71
|
-
* @internal
|
|
72
|
-
*/
|
|
73
|
-
export var GltfWrapMode;
|
|
74
|
-
(function (GltfWrapMode) {
|
|
75
|
-
GltfWrapMode[GltfWrapMode["ClampToEdge"] = 33071] = "ClampToEdge";
|
|
76
|
-
GltfWrapMode[GltfWrapMode["MirroredRepeat"] = 33648] = "MirroredRepeat";
|
|
77
|
-
GltfWrapMode[GltfWrapMode["Repeat"] = 10497] = "Repeat";
|
|
78
|
-
})(GltfWrapMode || (GltfWrapMode = {}));
|
|
79
|
-
/** Describes the intended target of a [[GltfBufferViewProps]]. */
|
|
80
|
-
var GltfBufferTarget;
|
|
81
|
-
(function (GltfBufferTarget) {
|
|
82
|
-
GltfBufferTarget[GltfBufferTarget["ArrayBuffer"] = 34962] = "ArrayBuffer";
|
|
83
|
-
GltfBufferTarget[GltfBufferTarget["ElementArrayBuffer"] = 24963] = "ElementArrayBuffer";
|
|
84
|
-
})(GltfBufferTarget || (GltfBufferTarget = {}));
|
|
85
|
-
function* dictionaryIterator(dict) {
|
|
86
|
-
if (Array.isArray(dict)) {
|
|
87
|
-
for (const elem of dict)
|
|
88
|
-
yield elem;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
for (const key of Object.keys(dict)) {
|
|
92
|
-
const value = dict[key];
|
|
93
|
-
if (undefined !== value)
|
|
94
|
-
yield value;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
function getNodeMeshIds(node) {
|
|
99
|
-
if (undefined !== node.meshes)
|
|
100
|
-
return typeof node.meshes === "string" ? [node.meshes] : node.meshes;
|
|
101
|
-
else if (undefined !== node.mesh)
|
|
102
|
-
return [node.mesh];
|
|
103
|
-
return [];
|
|
104
|
-
}
|
|
105
|
-
/** GL states that can be enabled by a [[GltfTechnique]]. Only those queried by this implementation are enumerated. */
|
|
106
|
-
var GltfTechniqueState;
|
|
107
|
-
(function (GltfTechniqueState) {
|
|
108
|
-
/** Enables alpha blending. */
|
|
109
|
-
GltfTechniqueState[GltfTechniqueState["Blend"] = 3042] = "Blend";
|
|
110
|
-
})(GltfTechniqueState || (GltfTechniqueState = {}));
|
|
111
|
-
function isGltf1Material(material) {
|
|
112
|
-
const mat1 = material;
|
|
113
|
-
return undefined !== mat1.technique || undefined !== mat1.values;
|
|
114
|
-
}
|
|
19
|
+
import { getGltfNodeMeshIds, GltfDataType, gltfDictionaryIterator, GltfMeshMode, GltfTechniqueState, GltfWrapMode, isGltf1Material, traverseGltfNodes, } from "../gltf/GltfSchema";
|
|
115
20
|
/**
|
|
116
21
|
* A chunk of binary data exposed as a typed array.
|
|
117
22
|
* The count member indicates how many elements exist. This may be less than this.buffer.length due to padding added to the
|
|
@@ -350,20 +255,6 @@ class TransformStack {
|
|
|
350
255
|
this._stack.pop();
|
|
351
256
|
}
|
|
352
257
|
}
|
|
353
|
-
function* traverseNodes(ids, nodes, traversed) {
|
|
354
|
-
for (const id of ids) {
|
|
355
|
-
if (traversed.has(id))
|
|
356
|
-
throw new Error("Cycle detected while traversing glTF nodes");
|
|
357
|
-
const node = nodes[id];
|
|
358
|
-
if (!node)
|
|
359
|
-
continue;
|
|
360
|
-
traversed.add(id);
|
|
361
|
-
yield node;
|
|
362
|
-
if (node.children)
|
|
363
|
-
for (const child of traverseNodes(node.children, nodes, traversed))
|
|
364
|
-
yield child;
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
258
|
function compareTextureKeys(lhs, rhs) {
|
|
368
259
|
const cmp = compareBooleans(lhs.isTransparent, rhs.isTransparent);
|
|
369
260
|
if (0 !== cmp)
|
|
@@ -438,7 +329,7 @@ export class GltfReader {
|
|
|
438
329
|
* @throws Error if a node appears more than once during traversal
|
|
439
330
|
*/
|
|
440
331
|
traverseNodes(nodeIds) {
|
|
441
|
-
return
|
|
332
|
+
return traverseGltfNodes(nodeIds, this._nodes, new Set());
|
|
442
333
|
}
|
|
443
334
|
/** Traverse the nodes specified by their scene, recursing into their child nodes.
|
|
444
335
|
* @throws Error if a node appears more than once during traversal
|
|
@@ -561,7 +452,7 @@ export class GltfReader {
|
|
|
561
452
|
let thisBias;
|
|
562
453
|
if (undefined !== pseudoRtcBias)
|
|
563
454
|
thisBias = (undefined === thisTransform) ? pseudoRtcBias : thisTransform.matrix.multiplyInverse(pseudoRtcBias);
|
|
564
|
-
for (const meshKey of
|
|
455
|
+
for (const meshKey of getGltfNodeMeshIds(node)) {
|
|
565
456
|
const nodeMesh = this._meshes[meshKey];
|
|
566
457
|
if (nodeMesh === null || nodeMesh === void 0 ? void 0 : nodeMesh.primitives) {
|
|
567
458
|
const meshes = this.readMeshPrimitives(node, featureTable, thisTransform, thisBias);
|
|
@@ -782,7 +673,7 @@ export class GltfReader {
|
|
|
782
673
|
}
|
|
783
674
|
readMeshPrimitives(node, featureTable, thisTransform, thisBias) {
|
|
784
675
|
const meshes = [];
|
|
785
|
-
for (const meshKey of
|
|
676
|
+
for (const meshKey of getGltfNodeMeshIds(node)) {
|
|
786
677
|
const nodeMesh = this._meshes[meshKey];
|
|
787
678
|
if (nodeMesh === null || nodeMesh === void 0 ? void 0 : nodeMesh.primitives) {
|
|
788
679
|
for (const primitive of nodeMesh.primitives) {
|
|
@@ -839,30 +730,43 @@ export class GltfReader {
|
|
|
839
730
|
quantizePositions: true,
|
|
840
731
|
});
|
|
841
732
|
const mesh = new GltfMeshData(meshPrimitive);
|
|
842
|
-
//
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
733
|
+
// ###TODO_GLTF: There can be more than one color attribute; COLOR_0 might not be the one we want.
|
|
734
|
+
if (!this.readColors(mesh, primitive.attributes, "COLOR_0")) {
|
|
735
|
+
// We don't have real colormap - just load material color. This will be used if non-Bentley
|
|
736
|
+
// tile or fit the color table is uniform. For a non-Bentley, non-Uniform, we'll set the
|
|
737
|
+
// uv parameters to pick the colors out of the color map texture.
|
|
738
|
+
meshPrimitive.colorMap.insert(displayParams.fillColor.tbgr); // White...
|
|
739
|
+
// _COLORINDEX is an ancient holdover from glTF 1.0 and Bimium...unlikely to actually encounter it in the wild.
|
|
740
|
+
const colorIndices = this.readBufferData16(primitive.attributes, "_COLORINDEX");
|
|
741
|
+
if (undefined !== colorIndices && material) {
|
|
742
|
+
let texStep;
|
|
743
|
+
if (isGltf1Material(material))
|
|
744
|
+
texStep = (_b = material.values) === null || _b === void 0 ? void 0 : _b.texStep;
|
|
745
|
+
else
|
|
746
|
+
texStep = (_e = (_d = (_c = material.extensions) === null || _c === void 0 ? void 0 : _c.KHR_techniques_webgl) === null || _d === void 0 ? void 0 : _d.values) === null || _e === void 0 ? void 0 : _e.u_texStep;
|
|
747
|
+
if (texStep) {
|
|
748
|
+
const uvParams = [];
|
|
749
|
+
for (let i = 0; i < colorIndices.count; i++)
|
|
750
|
+
uvParams.push(new Point2d(texStep[1] + texStep[0] * colorIndices.buffer[i], .5));
|
|
751
|
+
const paramList = QPoint2dList.fromPoints(uvParams);
|
|
752
|
+
mesh.uvs = paramList.toTypedArray();
|
|
753
|
+
mesh.uvQParams = paramList.params;
|
|
754
|
+
}
|
|
860
755
|
}
|
|
861
756
|
}
|
|
862
757
|
const draco = (_f = primitive.extensions) === null || _f === void 0 ? void 0 : _f.KHR_draco_mesh_compression;
|
|
863
758
|
if (draco)
|
|
864
759
|
return this.readDracoMeshPrimitive(mesh.primitive, draco) ? mesh : undefined;
|
|
865
760
|
this.readBatchTable(mesh.primitive, primitive);
|
|
761
|
+
if (mesh.primitive.features) {
|
|
762
|
+
const features = this.readPrimitiveFeatures(primitive);
|
|
763
|
+
if (features) {
|
|
764
|
+
if (features instanceof Feature)
|
|
765
|
+
mesh.primitive.features.add(features, 1);
|
|
766
|
+
else
|
|
767
|
+
mesh.primitive.features.setIndices(features);
|
|
768
|
+
}
|
|
769
|
+
}
|
|
866
770
|
if (!this.readVertices(mesh, primitive, pseudoRtcBias))
|
|
867
771
|
return undefined;
|
|
868
772
|
switch (primitiveType) {
|
|
@@ -1000,6 +904,7 @@ export class GltfReader {
|
|
|
1000
904
|
* capacity of 32 bit integers. This is essentially an ad hoc RTC applied at read time.
|
|
1001
905
|
*/
|
|
1002
906
|
readVertices(mesh, primitive, pseudoRtcBias) {
|
|
907
|
+
var _a;
|
|
1003
908
|
const view = this.getBufferView(primitive.attributes, "POSITION");
|
|
1004
909
|
if (undefined === view)
|
|
1005
910
|
return false;
|
|
@@ -1025,14 +930,12 @@ export class GltfReader {
|
|
|
1025
930
|
else {
|
|
1026
931
|
if (GltfDataType.UnsignedShort !== view.type)
|
|
1027
932
|
return false;
|
|
1028
|
-
const
|
|
1029
|
-
const
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
const rangeMin = JsonUtils.asArray(quantized.decodedMin);
|
|
1033
|
-
const rangeMax = JsonUtils.asArray(quantized.decodedMax);
|
|
1034
|
-
if (undefined === rangeMin || undefined === rangeMax)
|
|
933
|
+
const quantized = (_a = view.accessor.extensions) === null || _a === void 0 ? void 0 : _a.WEB3D_quantized_attributes;
|
|
934
|
+
const rangeMin = quantized === null || quantized === void 0 ? void 0 : quantized.decodedMin;
|
|
935
|
+
const rangeMax = quantized === null || quantized === void 0 ? void 0 : quantized.decodedMax;
|
|
936
|
+
if (!rangeMin || !rangeMax) // required by spec...
|
|
1035
937
|
return false;
|
|
938
|
+
// ###TODO apply WEB3D_quantized_attributes.decodeMatrix? Have not encountered in the wild; glTF 1.0 only.
|
|
1036
939
|
const buffer = view.toBufferData(GltfDataType.UnsignedShort);
|
|
1037
940
|
if (undefined === buffer || !(buffer.buffer instanceof Uint16Array))
|
|
1038
941
|
return false;
|
|
@@ -1069,6 +972,9 @@ export class GltfReader {
|
|
|
1069
972
|
}
|
|
1070
973
|
readBatchTable(_mesh, _json) {
|
|
1071
974
|
}
|
|
975
|
+
readPrimitiveFeatures(_primitive) {
|
|
976
|
+
return undefined;
|
|
977
|
+
}
|
|
1072
978
|
readMeshIndices(mesh, json) {
|
|
1073
979
|
var _a;
|
|
1074
980
|
if (undefined !== json.indices) {
|
|
@@ -1124,7 +1030,29 @@ export class GltfReader {
|
|
|
1124
1030
|
return false;
|
|
1125
1031
|
}
|
|
1126
1032
|
}
|
|
1033
|
+
readColors(mesh, attribute, accessorName) {
|
|
1034
|
+
const view = this.getBufferView(attribute, accessorName);
|
|
1035
|
+
if (!view || (GltfDataType.Float !== view.type && GltfDataType.UnsignedByte !== view.type && GltfDataType.SignedByte !== view.type))
|
|
1036
|
+
return false;
|
|
1037
|
+
const data = view.toBufferData(view.type);
|
|
1038
|
+
if (!data)
|
|
1039
|
+
return false;
|
|
1040
|
+
const hasAlpha = "VEC4" === view.accessor.type;
|
|
1041
|
+
const factor = view.type === GltfDataType.Float ? 255 : 1;
|
|
1042
|
+
const rgbt = new Uint8Array(4);
|
|
1043
|
+
const color = new Uint32Array(rgbt.buffer);
|
|
1044
|
+
for (let i = 0; i < data.count; i++) {
|
|
1045
|
+
const index = view.stride * i;
|
|
1046
|
+
rgbt[0] = data.buffer[index] * factor;
|
|
1047
|
+
rgbt[1] = data.buffer[index + 1] * factor;
|
|
1048
|
+
rgbt[2] = data.buffer[index + 2] * factor;
|
|
1049
|
+
rgbt[3] = hasAlpha ? (255 - data.buffer[index + 3] * factor) : 0;
|
|
1050
|
+
mesh.primitive.colors.push(mesh.primitive.colorMap.insert(color[0]));
|
|
1051
|
+
}
|
|
1052
|
+
return true;
|
|
1053
|
+
}
|
|
1127
1054
|
readUVParams(mesh, json, accessorName) {
|
|
1055
|
+
var _a;
|
|
1128
1056
|
const view = this.getBufferView(json, accessorName);
|
|
1129
1057
|
if (view === undefined)
|
|
1130
1058
|
return false;
|
|
@@ -1148,12 +1076,9 @@ export class GltfReader {
|
|
|
1148
1076
|
return true;
|
|
1149
1077
|
}
|
|
1150
1078
|
case GltfDataType.UnsignedShort: {
|
|
1151
|
-
const
|
|
1152
|
-
const
|
|
1153
|
-
|
|
1154
|
-
return false;
|
|
1155
|
-
const rangeMin = JsonUtils.asArray(quantized.decodedMin);
|
|
1156
|
-
const rangeMax = JsonUtils.asArray(quantized.decodedMax);
|
|
1079
|
+
const quantized = (_a = view.accessor.extensions) === null || _a === void 0 ? void 0 : _a.WEB3D_quantized_attributes;
|
|
1080
|
+
const rangeMin = quantized === null || quantized === void 0 ? void 0 : quantized.decodedMin;
|
|
1081
|
+
const rangeMax = quantized === null || quantized === void 0 ? void 0 : quantized.decodedMax;
|
|
1157
1082
|
if (undefined === rangeMin || undefined === rangeMax)
|
|
1158
1083
|
return false;
|
|
1159
1084
|
const qData = view.toBufferData(GltfDataType.UnsignedShort);
|
|
@@ -1214,7 +1139,7 @@ export class GltfReader {
|
|
|
1214
1139
|
// If any meshes are draco-compressed, dynamically load the decoder module and then decode the meshes.
|
|
1215
1140
|
const dracoMeshes = [];
|
|
1216
1141
|
for (const node of this.traverseScene()) {
|
|
1217
|
-
for (const meshId of
|
|
1142
|
+
for (const meshId of getGltfNodeMeshIds(node)) {
|
|
1218
1143
|
const mesh = this._meshes[meshId];
|
|
1219
1144
|
if (mesh === null || mesh === void 0 ? void 0 : mesh.primitives)
|
|
1220
1145
|
for (const primitive of mesh.primitives)
|
|
@@ -1238,14 +1163,14 @@ export class GltfReader {
|
|
|
1238
1163
|
// be required for the scene.
|
|
1239
1164
|
const promises = [];
|
|
1240
1165
|
try {
|
|
1241
|
-
for (const buffer of
|
|
1166
|
+
for (const buffer of gltfDictionaryIterator(this._buffers))
|
|
1242
1167
|
if (!buffer.resolvedBuffer)
|
|
1243
1168
|
promises.push(this.resolveBuffer(buffer));
|
|
1244
1169
|
await Promise.all(promises);
|
|
1245
1170
|
if (this._isCanceled)
|
|
1246
1171
|
return;
|
|
1247
1172
|
promises.length = 0;
|
|
1248
|
-
for (const image of
|
|
1173
|
+
for (const image of gltfDictionaryIterator(this._images))
|
|
1249
1174
|
if (!image.resolvedImage)
|
|
1250
1175
|
promises.push(this.resolveImage(image));
|
|
1251
1176
|
await Promise.all(promises);
|
|
@@ -1268,8 +1193,11 @@ export class GltfReader {
|
|
|
1268
1193
|
this._dracoMeshes.set(ext, mesh);
|
|
1269
1194
|
}
|
|
1270
1195
|
resolveUrl(uri) {
|
|
1196
|
+
var _a, _b;
|
|
1271
1197
|
try {
|
|
1272
|
-
|
|
1198
|
+
const resolved = new URL(uri, this._baseUrl);
|
|
1199
|
+
resolved.search = (_b = (_a = this._baseUrl) === null || _a === void 0 ? void 0 : _a.search) !== null && _b !== void 0 ? _b : "";
|
|
1200
|
+
return resolved.toString();
|
|
1273
1201
|
}
|
|
1274
1202
|
catch (_) {
|
|
1275
1203
|
return undefined;
|
|
@@ -1400,7 +1328,8 @@ export class GltfReader {
|
|
|
1400
1328
|
* @public
|
|
1401
1329
|
*/
|
|
1402
1330
|
export async function readGltfGraphics(args) {
|
|
1403
|
-
const
|
|
1331
|
+
const baseUrl = typeof args.baseUrl === "string" ? new URL(args.baseUrl) : args.baseUrl;
|
|
1332
|
+
const props = GltfReaderProps.create(args.gltf, true, baseUrl); // glTF supports exactly one coordinate system with y axis up.
|
|
1404
1333
|
const reader = props ? new GltfGraphicsReader(props, args) : undefined;
|
|
1405
1334
|
if (!reader)
|
|
1406
1335
|
return undefined;
|