xzw 1 year ago
parent
commit
376d1cda86
2 changed files with 12 additions and 6 deletions
  1. 3 1
      src/custom/mergeStartTest.js
  2. 9 5
      src/custom/viewer/ViewerNew.js

+ 3 - 1
src/custom/mergeStartTest.js

@@ -321,8 +321,10 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
              
          
     let tilesetUrls = [   
-        'https://testgis.4dage.com/LVBADUI_qp/tileset.json', //村庄   含rtcCenter      
+            
         'http://4dkk.4dage.com/fusion/test/b3dm/modelId_1075/tileset.json', //depth 11 较高  ,为了防止卡顿需要提高maximumScreenSpaceError
+        'https://testgis.4dage.com/LVBADUI_qp/tileset.json', //村庄   含rtcCenter  
+        
         //'https://4dkk.4dage.com/scene_view_data/SG-t-hFdFM1eCYs6/images/3dtiles/tileset.json?_=1716879888240',
         //(`scene_view_data/{num}/images/3dtiles/tileset.json?_=${Date.now()}`),
         'https://4dkk.4dage.com/fusion/test/b3dm/tileset.json',  //高层小区  模型无问题

+ 9 - 5
src/custom/viewer/ViewerNew.js

@@ -5189,6 +5189,7 @@ export class Viewer extends ViewerBase{
           
            
         if(fileInfo_.fileType == '3dTiles'){
+            let isGroup = !object.runtime  
             let children = object.runtime ? [object] : object.children
             
             
@@ -5215,14 +5216,17 @@ export class Viewer extends ViewerBase{
 
                     const scaleX = vecX.length();
                     const scaleY = vecY.length();
-                    const scaleZ = vecZ.length();
-                    /* boundingBox.expandByPoint(center);
-                    boundingBox.expandByVector(new THREE.Vector3(scaleX,scaleY,scaleZ)) */
-                     
+                    const scaleZ = vecZ.length(); 
                     
                     boundingBox_.min.set( - scaleX, - scaleY, - scaleZ );
                     boundingBox_.max.set( scaleX, scaleY, scaleZ );
                     
+                    if(isGroup){//如果是多个拼成的,每个都保留原先在parent中的offset。 如果是外层,作为独立个体,不用理会位置信息,直接放中央。
+                        object.position.copy(center)
+                        object.position.z *= -1
+                        boundingBox_.translate(object.position) //由于是内层,其位移会改变整体的boundingbox
+                    }
+                    
                 }else if(json.root.boundingVolume.sphere){
                     let sphereData = json.root.boundingVolume.sphere
                     let center = new THREE.Vector3(...sphereData)
@@ -5421,7 +5425,7 @@ export class Viewer extends ViewerBase{
                     maximumScreenSpaceError: fileInfo.maximumScreenSpaceError || 80,  //越小越清晰。           如果本身tiles很密很小这个值就不能很大。
                     //maxDepth: 100, 
                     maximumMemoryUsage: 200, //缓存大小。单位M(但实际结果是 2.5*maximumMemoryUsage + 750  。超过2G会崩, 所以应该小于540) 若太小,密集的tile反复加载很卡. (任务管理器刷新网页后若内存不掉就要结束进程否则虚高)
-                    //debug:true, //show box  
+                    debug:false, //show box  
                     parent: this.scene.scene, 
                     is4dkk: fileInfo.is4dkk,//是否是4dkk中的模型. 通常maximumScreenSpaceError需要10
                     updateTime: fileInfo.updateTime, //加后缀防止缓存