Переглянути джерело

Merge branch 'master' of http://192.168.0.115:3000/bill/fuse-code

bill 3 роки тому
батько
коміт
24bf4c20ce
3 змінених файлів з 41 додано та 30 видалено
  1. 30 24
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 10 5
      src/sdk/cover/index.js

+ 30 - 24
public/lib/potree/potree.js

@@ -37569,8 +37569,8 @@
     					for ( let i = 0, il = callbacks.length; i < il; i ++ ) {
 
     						const callback = callbacks[ i ];
-    						if ( callback.onLoad ) callback.onLoad( response );
-
+    						if ( callback.onLoad ) callback.onLoad( response, event.total); //xzw add event.total
+      
     					}
 
     					scope.manager.itemEnd( url );
@@ -63788,11 +63788,10 @@ void main() {
         
         let modelType,  modelEditing, MergeEditor = viewer.modules.MergeEditor;
         Potree.addModel = function(prop, done, onProgress, onError){ //加载模型
-            let isFirstLoad = !prop.position; //在编辑时用户添加的
+            let isFirstLoad = prop.bottom == void 0;//在编辑时用户添加的
         
             let loadDone = (model)=>{ 
-                model.dataset_id = prop.id;
-                
+                 
                 if(isFirstLoad){
                     modelEditing = model;
                     MergeEditor.setModelBtmHeight(model, 0); //默认离地高度为0
@@ -63909,6 +63908,7 @@ void main() {
                 
                 let info = {
                     name: prop.type, 
+                    id: prop.id,
                     transform : { 
                         position : prop.position,
                         rotation : new Euler().setFromVector3(prop.rotation), 
@@ -84043,9 +84043,9 @@ void main() {
                                 return PanoEditor.rotateSideCamera(-e.drag.pointerDelta.x)
                             }
                         }else if(Potree.settings.editType == 'merge'){ 
-                            if(e.buttons === Buttons.LEFT && viewport.alignment.rotateSide){ 
+                            if(e.buttons === Buttons.LEFT && viewport.alignment && viewport.alignment.rotateSide){ 
                                 return MergeEditor.rotateSideCamera(-e.drag.pointerDelta.x)
-                            }
+                            }  
                         
                         }else { 
                             /* if(Alignment.selectedClouds && Alignment.selectedClouds.length){
@@ -85972,7 +85972,7 @@ void main() {
             //add for测量线,在检测到sphere时优先选中sphere而非线
             intersections = intersections.sort(function(a,b){return b.object.renderOrder-a.object.renderOrder}); // 降序
      
-
+            //console.log('getHoveredElement ', intersections)
     		return intersections;
     	}
 
@@ -105901,13 +105901,13 @@ ENDSEC
     			loader.setRequestHeader( this.requestHeader );
     			loader.setWithCredentials( this.withCredentials );
 
-    			loader.load( url, function ( data ) {
+    			loader.load( url, function ( data, total ) {// xzw add total 
 
     				try {
 
     					scope.parse( data, resourcePath, function ( gltf ) {
 
-    						onLoad( gltf );
+    						onLoad( gltf, total );
 
     						scope.manager.itemEnd( url );
 
@@ -115072,9 +115072,9 @@ ENDSEC
                 let ground = this.ground = new InfiniteGridHelper(1, 10000, new Color('#fff'), 10000, 0.2, 0.3);
                 viewer.scene.scene.add(ground); 
                 //再加两条线否则在正侧边看不到
-                let line1 = LineDraw.createLine([new Vector3(-10000, 0, 0),new Vector3(10000, 0, 0) ], {color:'#666'});
-                let line2 = LineDraw.createLine([new Vector3(0, -10000, 0),new Vector3(0, 10000, 0) ], {color:'#666'});
-                ground.renderOrder = line1.renderOrder + 1;
+                let line1 = LineDraw.createLine([new Vector3(-10000, 0, 0),new Vector3(10000, 0, 0) ], {color:'#666', dontAlwaysSeen:true});
+                let line2 = LineDraw.createLine([new Vector3(0, -10000, 0),new Vector3(0, 10000, 0) ], {color:'#666', dontAlwaysSeen:true});
+                ground.renderOrder = line1.renderOrder + 1;  //要比模型低,否则模型透明时效果不对
                 ground.add(line1);
                 ground.add(line2);
             }
@@ -118911,7 +118911,7 @@ ENDSEC
                 
                 
                 
-                this.switchView('right'/* 'top' */);
+                this.switchView('top');
                 
                 SiteModel$1.bus.addEventListener('initDataDone',()=>{ 
                     this.gotoFloor(SiteModel$1.entities.find(e=>e.buildType == 'floor'));  //任意一层
@@ -120294,11 +120294,11 @@ ENDSEC
     			loader.setPath( this.path );
     			loader.setRequestHeader( this.requestHeader );
     			loader.setWithCredentials( this.withCredentials );
-    			loader.load( url, function ( text ) {
+    			loader.load( url, function ( text , total ) {// xzw add total 
 
     				try {
 
-    					onLoad( scope.parse( text ) );
+    					onLoad( scope.parse( text ) , total );
 
     				} catch ( e ) {
 
@@ -127357,13 +127357,17 @@ ENDSEC
                boundingBox.min.set(-0.5,-0.5,-0.5); boundingBox.max.set(0.5,0.5,0.5); 
             } 
             let fileType =  fileInfo.objurl ? 'obj' : 'glb';
-            let loadDone = (object)=>{
+            let loadDone = (object, total)=>{
                 //object.scale.set(1,1,1);//先获取原始的大小时的boundingBox
                 object.updateMatrixWorld();
+                let weight = Math.round((total / 1024 / 1024) * 100) / 100;
+                if(fileInfo.id != void 0)object.dataset_id = fileInfo.id;
                 
+                console.log(  fileInfo.name , fileInfo.id + '加载完毕, 模型数据量:' + weight + 'M');
                 
                 object.traverse( ( child )=>{ 
                     if ( child instanceof Mesh ) { 
+                        child.renderOrder = 10;
                         if(Potree.settings.boundAddObjs){
                             child.geometry.computeBoundingBox();
                             //console.log(child.matrixWorld.clone())
@@ -127442,22 +127446,23 @@ ENDSEC
                     console.log( item, loaded, total );
                 }; */
                 
+                
+                
                 /* let onError = function ( xhr ) { 
                 }; */
                 
                 loaders.mtlLoader.load( fileInfo.mtlurl , (materials)=>{ 
                     materials.preload(); 
             
-                    loaders.objLoader.setMaterials( materials ).load(fileInfo.objurl, (object)=>{   
-                        loadDone(object);
+                    loaders.objLoader.setMaterials( materials ).load(fileInfo.objurl, (object, total)=>{  
+                        loadDone(object, total);
                     });
                 } , onProgress,  onError  );  
                 
             }else if(fileType == 'glb'){
-                loaders.glbLoader.load(fileInfo.glburl,  ( gltf )=>{     //.setPath( Potree.resourcePath + '/models/glb/'  );
-                 
-                    console.log('loadGLTF', gltf);
-                    loadDone(gltf.scene); 
+                loaders.glbLoader.load(fileInfo.glburl,  ( gltf, total )=>{     //.setPath( Potree.resourcePath + '/models/glb/'  );
+                    //console.log('loadGLTF', gltf)
+                    loadDone(gltf.scene, total); 
                 }, onProgress, onError);
                 
             }
@@ -128235,13 +128240,14 @@ ENDSEC
 
     //add: 
 
+     
 
 
     async function loadFile(path, callback, onError){
         if(Potree.fileServer){
             Potree.fileServer.get(path).then(data=>{ 
                 callback && callback(data);
-            }).fail(onError);
+            }).catch(onError); 
         }else {
             try{
                 let response = await fetch(path); 

Різницю між файлами не показано, бо вона завелика
+ 1 - 1
public/lib/potree/potree.js.map


+ 10 - 5
src/sdk/cover/index.js

@@ -22,7 +22,7 @@ export const enter = (dom) => {
         } 
     })
     
-    
+    window.THREE = THREE
      
   
     let sdk = {
@@ -318,12 +318,12 @@ export const enter = (dom) => {
         addModel(props){ 
             let bus = mitt()  
             console.log('addModel',props)
-            
+            if(props.opacity == void 0)  props.opacity = 1
             
             let model
             let done = (model_)=>{
                 model = model_
-                props.opacity != void 0 && result.changeOpacity(props.opacity) 
+                props.opacity < 1 && result.changeOpacity(props.opacity) 
                 
                 model.addEventListener('changeSelect',(e)=>{
                     bus.emit('changeSelect',e.selected)
@@ -339,7 +339,7 @@ export const enter = (dom) => {
                 
                 
                 bus.emit('loadDone')
-                console.log('loadDone' )
+                //console.log('loadDone' )
             }
             let progressFun = (progress)=>{
                 bus.emit('loadProgress',progress)
@@ -352,9 +352,14 @@ export const enter = (dom) => {
             
             if(props.type == "glb"){////////////////////////////test
                 if(props.url.includes('coffeemat')){
-                    props.url = '/lib/potree/resources/models/glb/coffeemat.glb'  
+                    //props.url = '/lib/potree/resources/models/glb/coffeemat.glb' 
+                                     
                 }
+                
+                props.url = 'http://localhost:5173/api/profile/datav1/1537680519838306304/data/glb/cloud_glb_24.glb'   
             }
+           
+            
             Potree.addModel(props,  done , progressFun, onError)
             
             let result = {