|
@@ -13,9 +13,13 @@ import {
|
|
|
} from 'three';
|
|
|
import { FlyOrbitControls } from './FlyOrbitControls.js';
|
|
|
import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min.js';
|
|
|
+import { LoadingManager } from 'three';
|
|
|
+import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
|
|
|
+import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
|
|
|
|
let camera, controls, scene, renderer;
|
|
|
let groundTiles, skyTiles;
|
|
|
+let tilesRendererArr = [];
|
|
|
|
|
|
const params = {
|
|
|
|
|
@@ -67,17 +71,24 @@ function init() {
|
|
|
tilesParent.rotation.set( Math.PI / 2, 0, 0 );
|
|
|
scene.add( tilesParent );
|
|
|
|
|
|
- groundTiles = new TilesRenderer( 'https://raw.githubusercontent.com/NASA-AMMOS/3DTilesSampleData/master/msl-dingo-gap/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_colorize_tileset.json' );
|
|
|
+ /*
|
|
|
+ //groundTiles = new TilesRenderer( 'https://raw.githubusercontent.com/NASA-AMMOS/3DTilesSampleData/master/msl-dingo-gap/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_colorize_tileset.json' );
|
|
|
+ groundTiles = new TilesRenderer('https://testgis.4dage.com/LVBADUI_qp/tileset.json');
|
|
|
+
|
|
|
groundTiles.fetchOptions.mode = 'cors';
|
|
|
groundTiles.lruCache.minSize = 900;
|
|
|
groundTiles.lruCache.maxSize = 1300;
|
|
|
groundTiles.errorTarget = 12;
|
|
|
+ */
|
|
|
+ //https://testgis.4dage.com/gaoling0805-qp/
|
|
|
+ loadTileSet('https://testgis.4dage.com/LVBADUI_qp/',camera,renderer);
|
|
|
+ //loadTileSet('https://testgis.4dage.com/gaoling0805-qp/',camera,renderer);
|
|
|
|
|
|
- skyTiles = new TilesRenderer( 'https://raw.githubusercontent.com/NASA-AMMOS/3DTilesSampleData/master/msl-dingo-gap/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_sky/0528_0260184_to_s64o256_sky_tileset.json' );
|
|
|
- skyTiles.fetchOptions.mode = 'cors';
|
|
|
- skyTiles.lruCache = groundTiles.lruCache;
|
|
|
+ // skyTiles = new TilesRenderer( 'https://raw.githubusercontent.com/NASA-AMMOS/3DTilesSampleData/master/msl-dingo-gap/0528_0260184_to_s64o256_colorize/0528_0260184_to_s64o256_sky/0528_0260184_to_s64o256_sky_tileset.json' );
|
|
|
+ // skyTiles.fetchOptions.mode = 'cors';
|
|
|
+ // skyTiles.lruCache = groundTiles.lruCache;
|
|
|
|
|
|
- tilesParent.add( groundTiles.group, skyTiles.group );
|
|
|
+ // tilesParent.add( groundTiles.group, skyTiles.group );
|
|
|
|
|
|
onWindowResize();
|
|
|
window.addEventListener( 'resize', onWindowResize, false );
|
|
@@ -95,6 +106,52 @@ function init() {
|
|
|
|
|
|
}
|
|
|
|
|
|
+function loadTileSet(qzpath,camera,renderer){
|
|
|
+ // 加载json,解析json 取出children中的路径进行拼装加载
|
|
|
+ //const qzpath = 'http://192.168.1.136:8077/sqsftilte/'
|
|
|
+
|
|
|
+ //get(qzpath + 'tileset.json').then((res)=>{
|
|
|
+ //debugger;
|
|
|
+
|
|
|
+ fetch(qzpath + 'tileset.json').then(response => response.json()).then(data => {
|
|
|
+ console.log(data)
|
|
|
+ const tilesetArr = data.root.children
|
|
|
+ for (const tilese of tilesetArr) {
|
|
|
+ // console.log(qzpath + tilese.content.uri)
|
|
|
+ const tilesRenderer = new TilesRenderer( qzpath + tilese.content.uri )
|
|
|
+
|
|
|
+ const gltfLoader = new GLTFLoader( tilesRenderer.manager );
|
|
|
+ const dracoLoader = new DRACOLoader( tilesRenderer.manager );
|
|
|
+ dracoLoader.setDecoderPath( 'https://unpkg.com/three@0.128.0/examples/js/libs/draco/gltf/' );
|
|
|
+ gltfLoader.setDRACOLoader( dracoLoader );
|
|
|
+ tilesRenderer.manager.addHandler( /\.gltf$/, gltfLoader );
|
|
|
+ tilesRenderer.manager.addHandler( /\.glb$/, gltfLoader );
|
|
|
+
|
|
|
+ tilesRenderer.setCamera( camera )
|
|
|
+ tilesRenderer.setResolutionFromRenderer( camera, renderer )
|
|
|
+ const tilesObj = tilesRenderer.group
|
|
|
+ tilesObj.rotation.set(-Math.PI / 2, 0, 0)
|
|
|
+ scene.add( tilesObj )
|
|
|
+ tilesRendererArr.push(tilesRenderer)
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // fetch(qzpath + 'tileset.json').then((res)=>{
|
|
|
+ // // console.log(res)
|
|
|
+ // const tilesetArr = res.root.children
|
|
|
+ // for (const tilese of tilesetArr) {
|
|
|
+ // // console.log(qzpath + tilese.content.uri)
|
|
|
+ // const tilesRenderer = new TilesRenderer( qzpath + tilese.content.uri )
|
|
|
+ // tilesRenderer.setCamera( camera )
|
|
|
+ // tilesRenderer.setResolutionFromRenderer( camera, renderer )
|
|
|
+ // const tilesObj = tilesRenderer.group
|
|
|
+ // tilesObj.rotation.set(-Math.PI / 2, 0, 0)
|
|
|
+ // scene.add( tilesObj )
|
|
|
+ // tilesRendererArr.push(tilesRenderer)
|
|
|
+ // }
|
|
|
+ //})
|
|
|
+}
|
|
|
+
|
|
|
function onWindowResize() {
|
|
|
|
|
|
camera.aspect = window.innerWidth / window.innerHeight;
|
|
@@ -109,18 +166,21 @@ function render() {
|
|
|
requestAnimationFrame( render );
|
|
|
|
|
|
camera.updateMatrixWorld();
|
|
|
-
|
|
|
- groundTiles.errorTarget = params.errorTarget;
|
|
|
- groundTiles.displayBoxBounds = params.displayBoxBounds;
|
|
|
- skyTiles.displayBoxBounds = params.displayBoxBounds;
|
|
|
-
|
|
|
- groundTiles.setCamera( camera );
|
|
|
- groundTiles.setResolutionFromRenderer( camera, renderer );
|
|
|
- groundTiles.update();
|
|
|
-
|
|
|
- skyTiles.setCamera( camera );
|
|
|
- skyTiles.setResolutionFromRenderer( camera, renderer );
|
|
|
- skyTiles.update();
|
|
|
+ for (const tilesRenderer of tilesRendererArr) {
|
|
|
+ tilesRenderer.update()
|
|
|
+ }
|
|
|
+
|
|
|
+ // groundTiles.errorTarget = params.errorTarget;
|
|
|
+ // groundTiles.displayBoxBounds = params.displayBoxBounds;
|
|
|
+ // skyTiles.displayBoxBounds = params.displayBoxBounds;
|
|
|
+
|
|
|
+ // groundTiles.setCamera( camera );
|
|
|
+ // groundTiles.setResolutionFromRenderer( camera, renderer );
|
|
|
+ // groundTiles.update();
|
|
|
+
|
|
|
+ // skyTiles.setCamera( camera );
|
|
|
+ // skyTiles.setResolutionFromRenderer( camera, renderer );
|
|
|
+ // skyTiles.update();
|
|
|
|
|
|
renderer.render( scene, camera );
|
|
|
|