@threepipe/plugin-3d-tiles-renderer 0.2.1 → 0.3.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/dist/TilesRendererPlugin.d.ts +2 -2
- package/dist/TilesRendererPlugin.d.ts.map +1 -1
- package/dist/index.js +51 -36
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +51 -36
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/TilesRendererPlugin.ts +68 -44
package/package.json
CHANGED
|
@@ -2,27 +2,35 @@ import {
|
|
|
2
2
|
AViewerPluginEventMap,
|
|
3
3
|
AViewerPluginSync,
|
|
4
4
|
Box3B,
|
|
5
|
+
DropzonePlugin,
|
|
5
6
|
EventListener2,
|
|
6
7
|
generateUUID,
|
|
7
8
|
IAssetImporter,
|
|
8
9
|
ILoader,
|
|
10
|
+
ImportAddOptions,
|
|
9
11
|
Importer,
|
|
10
12
|
IObject3D,
|
|
11
13
|
iObjectCommons,
|
|
12
14
|
IRenderManager,
|
|
13
15
|
IRenderManagerEventMap,
|
|
14
|
-
IScene,
|
|
15
|
-
ISceneEventMap,
|
|
16
16
|
Loader,
|
|
17
|
-
ImportAddOptions,
|
|
18
17
|
LoadingManager,
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
Object3D,
|
|
19
|
+
Sphere,
|
|
20
|
+
ThreeViewer,
|
|
21
|
+
uiButton,
|
|
22
|
+
uiFolderContainer,
|
|
23
|
+
IObjectExtension,
|
|
21
24
|
} from 'threepipe'
|
|
22
25
|
import {TilesGroup, TilesRenderer} from '3d-tiles-renderer'
|
|
23
26
|
import {gltfCesiumRTCExtension, gltfMeshFeaturesExtension, gltfStructuralMetadataExtension} from './gltf'
|
|
27
|
+
import {
|
|
28
|
+
CesiumIonAuthPlugin,
|
|
29
|
+
ImplicitTilingPlugin,
|
|
30
|
+
TilesFadePlugin,
|
|
31
|
+
UpdateOnChangePlugin,
|
|
24
32
|
// @ts-expect-error moduleResolution issue
|
|
25
|
-
|
|
33
|
+
} from '3d-tiles-renderer/plugins'
|
|
26
34
|
|
|
27
35
|
export type TilesRendererGroup = TilesGroup & IObject3D
|
|
28
36
|
|
|
@@ -93,7 +101,8 @@ export class TilesRendererPlugin extends AViewerPluginSync<TilesRendererPluginEv
|
|
|
93
101
|
viewer.assetManager.registerGltfExtension(gltfStructuralMetadataExtension)
|
|
94
102
|
viewer.assetManager.registerGltfExtension(gltfMeshFeaturesExtension)
|
|
95
103
|
viewer.assetManager.importer.addImporter(this._importer)
|
|
96
|
-
viewer.
|
|
104
|
+
viewer.object3dManager.registerObjectExtension(this._objectExt)
|
|
105
|
+
// viewer.scene.addEventListener('addSceneObject', this._addSceneObject)
|
|
97
106
|
// viewer.scene.addEventListener('mainCameraChange', this._mainCameraChange)
|
|
98
107
|
// viewer.scene.addEventListener('mainCameraUpdate', this._mainCameraUpdate)
|
|
99
108
|
viewer.renderManager.addEventListener('preRender', this._preRender) // note - adding to renderManager preRender, not viewer. So its fired for each camera render
|
|
@@ -105,7 +114,8 @@ export class TilesRendererPlugin extends AViewerPluginSync<TilesRendererPluginEv
|
|
|
105
114
|
viewer.assetManager.unregisterGltfExtension(gltfCesiumRTCExtension.name)
|
|
106
115
|
viewer.assetManager.unregisterGltfExtension(gltfStructuralMetadataExtension.name)
|
|
107
116
|
viewer.assetManager.unregisterGltfExtension(gltfMeshFeaturesExtension.name)
|
|
108
|
-
viewer.
|
|
117
|
+
viewer.object3dManager.unregisterObjectExtension(this._objectExt)
|
|
118
|
+
// viewer.scene.removeEventListener('addSceneObject', this._addSceneObject)
|
|
109
119
|
// viewer.scene.removeEventListener('mainCameraChange', this._mainCameraChange)
|
|
110
120
|
// viewer.scene.removeEventListener('mainCameraUpdate', this._mainCameraUpdate)
|
|
111
121
|
viewer.renderManager.removeEventListener('preRender', this._preRender)
|
|
@@ -159,46 +169,47 @@ export class TilesRendererPlugin extends AViewerPluginSync<TilesRendererPluginEv
|
|
|
159
169
|
|
|
160
170
|
private _cachedRefs?: Pick<TilesRenderer, 'lruCache' | 'downloadQueue' | 'parseQueue'/* | 'processNodeQueue'*/>
|
|
161
171
|
|
|
162
|
-
private
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
private _objectExt: IObjectExtension = {
|
|
173
|
+
uuid: 'TilesRendererPluginObjectExt',
|
|
174
|
+
isCompatible: (o)=>!!(o as TilesRendererGroup).tilesRenderer,
|
|
175
|
+
onRegister: (group: TilesRendererGroup)=>{
|
|
176
|
+
if (!group || !group.tilesRenderer || !this._viewer) return
|
|
177
|
+
|
|
178
|
+
// set the second renderer to share the cache and queues from the first
|
|
179
|
+
if (!this._cachedRefs) {
|
|
180
|
+
this._cachedRefs = {
|
|
181
|
+
lruCache: group.tilesRenderer.lruCache,
|
|
182
|
+
downloadQueue: group.tilesRenderer.downloadQueue,
|
|
183
|
+
parseQueue: group.tilesRenderer.parseQueue,
|
|
184
|
+
// @ts-expect-error not in ts
|
|
185
|
+
processNodeQueue: group.tilesRenderer.processNodeQueue,
|
|
186
|
+
}
|
|
187
|
+
} else {
|
|
188
|
+
group.tilesRenderer.lruCache = this._cachedRefs.lruCache
|
|
189
|
+
group.tilesRenderer.downloadQueue = this._cachedRefs.downloadQueue
|
|
190
|
+
group.tilesRenderer.parseQueue = this._cachedRefs.parseQueue
|
|
174
191
|
// @ts-expect-error not in ts
|
|
175
|
-
|
|
192
|
+
group.tilesRenderer.processNodeQueue = this._cachedRefs.processNodeQueue
|
|
176
193
|
}
|
|
177
|
-
} else {
|
|
178
|
-
group.tilesRenderer.lruCache = this._cachedRefs.lruCache
|
|
179
|
-
group.tilesRenderer.downloadQueue = this._cachedRefs.downloadQueue
|
|
180
|
-
group.tilesRenderer.parseQueue = this._cachedRefs.parseQueue
|
|
181
|
-
// @ts-expect-error not in ts
|
|
182
|
-
group.tilesRenderer.processNodeQueue = this._cachedRefs.processNodeQueue
|
|
183
|
-
}
|
|
184
194
|
|
|
185
|
-
|
|
195
|
+
this.objects.push(group)
|
|
186
196
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
197
|
+
group.tilesRenderer.registerPlugin({
|
|
198
|
+
dispose: () => {
|
|
199
|
+
const index = this.objects.indexOf(group)
|
|
200
|
+
if (index !== -1) this.objects.splice(index, 1)
|
|
201
|
+
this.dispatchEvent({type: 'removeTile', group})
|
|
202
|
+
},
|
|
203
|
+
})
|
|
204
|
+
group.tilesRenderer.setCamera(this._viewer.scene.mainCamera)
|
|
205
|
+
group.tilesRenderer.setResolutionFromRenderer(this._viewer.scene.mainCamera, this._viewer.renderManager.webglRenderer)
|
|
206
|
+
group.tilesRenderer.update()
|
|
207
|
+
group.addEventListener('dispose', ()=>{
|
|
208
|
+
group.tilesRenderer.dispose()
|
|
209
|
+
})
|
|
200
210
|
|
|
201
|
-
|
|
211
|
+
this.dispatchEvent({type: 'addTile', group})
|
|
212
|
+
},
|
|
202
213
|
}
|
|
203
214
|
|
|
204
215
|
@uiButton()
|
|
@@ -288,7 +299,20 @@ export class TilesRendererLoader extends Loader implements ILoader<TilesRenderer
|
|
|
288
299
|
})
|
|
289
300
|
tiles.addEventListener('load-tile-set', (e) => {
|
|
290
301
|
const isRoot = e.tileSet === tiles.rootTileSet
|
|
291
|
-
if (isRoot && resolve)
|
|
302
|
+
if (isRoot && resolve) {
|
|
303
|
+
resolve()
|
|
304
|
+
}
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
group.userData.rootPathRefresh = true // when next loaded from gltf, the object will be refreshed based on rootPath
|
|
308
|
+
group._rootPathRefreshed = true // so that it doesn't do it this time
|
|
309
|
+
group._sChildren = [] // so that it's children are not saved in the gltf exporter.
|
|
310
|
+
tiles.registerPlugin({
|
|
311
|
+
processTileModel: (model: Object3D, tile: any) => {
|
|
312
|
+
if (tile === (tiles.rootTileSet as any)?.root) {
|
|
313
|
+
group._sChildren = [model] // the root tileset will be saved inside the gltf on export
|
|
314
|
+
}
|
|
315
|
+
},
|
|
292
316
|
})
|
|
293
317
|
|
|
294
318
|
const ai = this.ai
|