@jdultra/threedtiles 5.1.2 → 5.1.3
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/package.json
CHANGED
|
@@ -8,10 +8,15 @@ const dracoLoader = new DRACOLoader();
|
|
|
8
8
|
const tempMatrix = new THREE.Matrix4();
|
|
9
9
|
dracoLoader.setDecoderPath('https://www.gstatic.com/draco/versioned/decoders/1.4.3/');
|
|
10
10
|
gltfLoader.setDRACOLoader(dracoLoader);
|
|
11
|
+
const zUpToYUpMatrix = new THREE.Matrix4();
|
|
12
|
+
zUpToYUpMatrix.set(1,0,0,0,
|
|
13
|
+
0,0,-1,0,
|
|
14
|
+
0,1,0,0,
|
|
15
|
+
0,0,0,1);
|
|
11
16
|
|
|
12
17
|
//const legacyGLTFLoader = new LegacyGLTFLoader();
|
|
13
18
|
|
|
14
|
-
function parseB3DM(arrayBuffer, meshCallback) {
|
|
19
|
+
function parseB3DM(arrayBuffer, meshCallback, zUpToYUp) {
|
|
15
20
|
const dataView = new DataView(arrayBuffer);
|
|
16
21
|
|
|
17
22
|
const magic =
|
|
@@ -68,7 +73,11 @@ function parseB3DM(arrayBuffer, meshCallback) {
|
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
model.scene.traverse((o) => {
|
|
76
|
+
|
|
71
77
|
if (o.isMesh) {
|
|
78
|
+
if(zUpToYUp){
|
|
79
|
+
o.applyMatrix4(zUpToYUpMatrix);
|
|
80
|
+
}
|
|
72
81
|
if (!!meshCallback) {
|
|
73
82
|
meshCallback(o);
|
|
74
83
|
}
|
|
@@ -84,9 +93,9 @@ function parseB3DM(arrayBuffer, meshCallback) {
|
|
|
84
93
|
|
|
85
94
|
const B3DMDecoder = {
|
|
86
95
|
parseB3DM: parseB3DM,
|
|
87
|
-
parseB3DMInstanced: (arrayBuffer, meshCallback, maxCount) => { // expects GLTF with one node level
|
|
96
|
+
parseB3DMInstanced: (arrayBuffer, meshCallback, maxCount, zUpToYUp) => { // expects GLTF with one node level
|
|
88
97
|
|
|
89
|
-
return parseB3DM(arrayBuffer, meshCallback).then(mesh => {
|
|
98
|
+
return parseB3DM(arrayBuffer, meshCallback, zUpToYUp).then(mesh => {
|
|
90
99
|
let instancedMesh;
|
|
91
100
|
mesh.updateWorldMatrix(false, true)
|
|
92
101
|
mesh.traverse(child => {
|
package/src/index.js
CHANGED
|
@@ -23,7 +23,7 @@ const domContainer = initDomContainer("screen");
|
|
|
23
23
|
const camera = initCamera(domContainer.offsetWidth, domContainer.offsetHeight);
|
|
24
24
|
const stats = initStats(domContainer);
|
|
25
25
|
const renderer = initRenderer(camera, domContainer);
|
|
26
|
-
const ogc3DTiles = initTileset(scene,
|
|
26
|
+
const ogc3DTiles = initTileset(scene, 4.0);
|
|
27
27
|
|
|
28
28
|
//const instancedTileLoader = createInstancedTileLoader(scene);
|
|
29
29
|
//initInstancedTilesets(instancedTileLoader);
|
|
@@ -236,8 +236,8 @@ function initLODMultiplierSlider(instancedTilesets) {
|
|
|
236
236
|
function initController(camera, dom) {
|
|
237
237
|
const controller = new OrbitControls(camera, dom);
|
|
238
238
|
|
|
239
|
+
//controller.target.set(4629210.73133627, 435359.7901640832, 4351492.357788198);
|
|
239
240
|
controller.target.set(0,0,0);
|
|
240
|
-
//controller.target.set(0,0,0);
|
|
241
241
|
|
|
242
242
|
|
|
243
243
|
controller.minDistance = 0.1;
|
package/src/tileset/OGC3DTile.js
CHANGED
|
@@ -11,11 +11,7 @@ const tempVec2 = new THREE.Vector3(0, 0, 0);
|
|
|
11
11
|
const upVector = new THREE.Vector3(0, 1, 0);
|
|
12
12
|
const rendererSize = new THREE.Vector2();
|
|
13
13
|
const tempQuaternion = new THREE.Quaternion();
|
|
14
|
-
|
|
15
|
-
zUpToYUp.set(1,0,0,0,
|
|
16
|
-
0,0,-1,0,
|
|
17
|
-
0,1,0,0,
|
|
18
|
-
0,0,0,1);
|
|
14
|
+
|
|
19
15
|
|
|
20
16
|
class OGC3DTile extends THREE.Object3D {
|
|
21
17
|
|
|
@@ -220,14 +216,14 @@ class OGC3DTile extends THREE.Object3D {
|
|
|
220
216
|
if (!!url) {
|
|
221
217
|
if (url.includes(".b3dm")) {
|
|
222
218
|
self.contentURL = url;
|
|
223
|
-
|
|
219
|
+
if(!!self.json.boundingVolume.region){
|
|
220
|
+
//self.applyMatrix4(zUpToYUp);
|
|
221
|
+
}
|
|
224
222
|
self.tileLoader.get(self.abortController, this.uuid, url, mesh => {
|
|
225
223
|
if (!!self.deleted) return;
|
|
226
224
|
mesh.traverse((o) => {
|
|
227
225
|
if (o.isMesh) {
|
|
228
|
-
|
|
229
|
-
o.applyMatrix4(zUpToYUp);
|
|
230
|
-
}
|
|
226
|
+
|
|
231
227
|
o.layers.disable(0);
|
|
232
228
|
if (self.occlusionCullingService) {
|
|
233
229
|
const position = o.geometry.attributes.position;
|
|
@@ -250,7 +246,10 @@ class OGC3DTile extends THREE.Object3D {
|
|
|
250
246
|
self.meshContent = mesh;
|
|
251
247
|
}, !self.cameraOnLoad ? () => 0 : () => {
|
|
252
248
|
return self.calculateDistanceToCamera(self.cameraOnLoad);
|
|
253
|
-
}, () => self.getSiblings(),
|
|
249
|
+
}, () => self.getSiblings(),
|
|
250
|
+
self.level,
|
|
251
|
+
!!this.json.boundingVolume.region
|
|
252
|
+
);
|
|
254
253
|
} else if (url.includes(".json")) {
|
|
255
254
|
self.tileLoader.get(self.abortController, this.uuid, url, json => {
|
|
256
255
|
if (!!self.deleted) return;
|
|
@@ -142,7 +142,7 @@ class TileLoader {
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
|
|
145
|
-
get(abortController, tileIdentifier, path, callback, distanceFunction, getSiblings, level) {
|
|
145
|
+
get(abortController, tileIdentifier, path, callback, distanceFunction, getSiblings, level, zUpToYUp) {
|
|
146
146
|
const self = this;
|
|
147
147
|
const key = simplifyPath(path);
|
|
148
148
|
|
|
@@ -183,7 +183,7 @@ class TileLoader {
|
|
|
183
183
|
|
|
184
184
|
})
|
|
185
185
|
.then(resultArrayBuffer=>{
|
|
186
|
-
return B3DMDecoder.parseB3DM(resultArrayBuffer, self.meshCallback);
|
|
186
|
+
return B3DMDecoder.parseB3DM(resultArrayBuffer, self.meshCallback, zUpToYUp);
|
|
187
187
|
})
|
|
188
188
|
.then(mesh=>{
|
|
189
189
|
self.cache.put(key, mesh);
|
|
@@ -217,7 +217,9 @@ class InstancedTile extends THREE.Object3D {
|
|
|
217
217
|
|
|
218
218
|
self.tileLoader.get(self.abortController, url, self.uuid, self, !self.cameraOnLoad ? () => 0 : () => {
|
|
219
219
|
return self.calculateDistanceToCamera(self.cameraOnLoad);
|
|
220
|
-
}, () => self.getSiblings(),
|
|
220
|
+
}, () => self.getSiblings(),
|
|
221
|
+
self.level,
|
|
222
|
+
!!self.json.boundingVolume.region);
|
|
221
223
|
} else if (url.includes(".json")) {
|
|
222
224
|
self.tileLoader.get(self.abortController, url, self.uuid, self);
|
|
223
225
|
|
|
@@ -68,7 +68,7 @@ class InstancedTileLoader {
|
|
|
68
68
|
|
|
69
69
|
})
|
|
70
70
|
.then(resultArrayBuffer=>{
|
|
71
|
-
return B3DMDecoder.parseB3DMInstanced(resultArrayBuffer, self.meshCallback, self.maxInstances);
|
|
71
|
+
return B3DMDecoder.parseB3DMInstanced(resultArrayBuffer, self.meshCallback, self.maxInstances, nextDownload.zUpToYUp);
|
|
72
72
|
})
|
|
73
73
|
.then(mesh=>{
|
|
74
74
|
nextDownload.tile.setObject(mesh);
|
|
@@ -138,7 +138,7 @@ class InstancedTileLoader {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
get(abortController, path, uuid, instancedOGC3DTile, distanceFunction, getSiblings, level) {
|
|
141
|
+
get(abortController, path, uuid, instancedOGC3DTile, distanceFunction, getSiblings, level, zUpToYUp) {
|
|
142
142
|
const self = this;
|
|
143
143
|
const key = simplifyPath(path);
|
|
144
144
|
|
|
@@ -156,9 +156,7 @@ class InstancedTileLoader {
|
|
|
156
156
|
if (path.includes(".b3dm")) {
|
|
157
157
|
const tile = new MeshTile(self.scene);
|
|
158
158
|
tile.addInstance(instancedOGC3DTile);
|
|
159
|
-
|
|
160
|
-
console.log("élkbhj")
|
|
161
|
-
}
|
|
159
|
+
|
|
162
160
|
self.cache.put(key, tile);
|
|
163
161
|
|
|
164
162
|
const realAbortController = new AbortController();
|
|
@@ -176,6 +174,7 @@ class InstancedTileLoader {
|
|
|
176
174
|
getSiblings: getSiblings,
|
|
177
175
|
level: level,
|
|
178
176
|
uuid: uuid,
|
|
177
|
+
zUpToYUp: zUpToYUp,
|
|
179
178
|
shouldDoDownload: () => {
|
|
180
179
|
return true;
|
|
181
180
|
},
|