Parcourir la source

fix: 删除model后退出黑屏的bug

xzw il y a 2 ans
Parent
commit
ddfd306abb
3 fichiers modifiés avec 9851 ajouts et 8394 suppressions
  1. 9820 8367
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 30 26
      src/sdk/cover/index.js

Fichier diff supprimé car celui-ci est trop grand
+ 9820 - 8367
public/lib/potree/potree.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
public/lib/potree/potree.js.map


+ 30 - 26
src/sdk/cover/index.js

@@ -7,7 +7,7 @@ export const enter = (dom, isLocal) => {
     
     Potree.settings.isOfficial = true //标记为正式、非测试版本 
     //Potree.fileServer = axios 
-    Potree.settings.libsUrl =  isLocal ? './lib/' : '../lib/'  //local的话只有从本地那个页面进入才能访问
+    Potree.settings.libsUrl = /*  isLocal ? './lib/' : */ '../lib/'  //local的话只有从本地那个页面进入才能访问
     
     Potree.settings.notAdditiveBlending = true
     
@@ -60,14 +60,14 @@ export const enter = (dom, isLocal) => {
                 if(hopeModelId != void 0){//隐藏其他的模型
                     let models = MergeEditor.getAllObjects()
                     models.forEach(model=>{
-                        viewer.updateVisible(model, 'forPick', model.dataset_id == hopeModelId)
+                        Potree.Utils.updateVisible(model, 'forPick', model.dataset_id == hopeModelId)
                     }) 
                 }
                 let intersect2 = Handler.onMouseMove(pos2d)
                 if(hopeModelId != void 0){//恢复
                     let models = MergeEditor.getAllObjects()
                     models.forEach(model=>{
-                        viewer.updateVisible(model, 'forPick', true)
+                        Potree.Utils.updateVisible(model, 'forPick', true)
                     }) 
                 }
                 if(intersect2 && intersect2.location){
@@ -133,21 +133,22 @@ export const enter = (dom, isLocal) => {
         
         screenshot: (width, height) => {
             //截图 
-            var promise = viewer.startScreenshot({ type: 'default' }, width, height)
-            promise.done(() => {
- 
+            var {getImagePromise, finishPromise} =  viewer.startScreenshot({ type: 'default' }, width, height) 
+            var deferred = $.Deferred();
+            finishPromise.done(({dataUrl}) => {
+               deferred.resolve(dataUrl)
             })
-            return promise
+            return deferred.promise()  
         },
         getPose() {//获取当前点位和朝向
             const camera = viewer.scene.getActiveCamera()
             const target = viewer.scene.view.getPivot().clone()
             const position = viewer.scene.view.position.clone() 
-            console.log('getPose',position, target)
+            //console.log('getPose',position, target)
             return { position, target }
         }, 
         comeTo(o = {}) {
-            console.log('comeTo',o.position, o.target)
+            //console.log('comeTo',o.position, o.target)
             //飞到某个点  
             if(o.modelId){ 
                 ['position','target'].forEach(e=>{
@@ -304,7 +305,7 @@ export const enter = (dom, isLocal) => {
             } 
             */
             
-            console.log('enterSceneGuide',pathArr)
+            //console.log('enterSceneGuide',pathArr)
             
             let data = {
                 duration: pathArr.slice(0,pathArr.length-1).reduce(function(total, currentValue ){return total+currentValue.time}, 0), //总时长(要去掉最后一个,因为已到终点,该点time无意义)
@@ -364,11 +365,18 @@ export const enter = (dom, isLocal) => {
         
         addModel(props){ 
             
+
             let bus = mitt()  
             //console.log('addModel',props)
             props.isFirstLoad = props.bottom == void 0 //在编辑时用户添加的
             if(props.opacity == void 0)  props.opacity = 1
+            if(props.type == 'obj') props.type = 'glb'
             props.scale /= 100
+            if(props.rotation){
+                if(props.rotation._x == void 0 && props.rotation.x != void 0){
+                    props.rotation = new THREE.Euler().setFromVector3(props.rotation)
+                }
+            }
             
             
             
@@ -378,7 +386,7 @@ export const enter = (dom, isLocal) => {
                         let sizes = autoLoads.map(e=>e.size)
                         console.log('需要请求加载的模型大小为', sizes, '总大小', sizes.reduce(function(total, currentValue ){
                             let current = parseFloat(currentValue)
-                            return total + (currentValue.includes('M') ? current : current / 1024)
+                            return total + ((typeof currentValue == 'number' || currentValue.includes('M')) ? current : current / 1024)
                         }, 0))
                          
                         readyToAddModel = true  //准备开始加载
@@ -386,6 +394,7 @@ export const enter = (dom, isLocal) => {
                     },30) 
                 }
                 autoLoads.push(props) 
+                readyToAddModel = false               
             }else{
                 readyToAddModel = true
             }
@@ -399,7 +408,7 @@ export const enter = (dom, isLocal) => {
             
                 Potree.addModel(prop,  prop.done , prop.progressFun, prop.onError)
                 prop.loading = true
-                console.log('startLoad',getName(prop.url),  prop ) 
+                console.log('-------开始加载 id:', prop.id, 'title:', prop.title, ', filename:', getName(prop.url),  prop ) 
             }
             
             let spliceFromArr = (model,loaded)=>{
@@ -421,11 +430,12 @@ export const enter = (dom, isLocal) => {
                     //this.addModel(autoLoads[0])
                 }else if(autoLoads.filter(e=>!e.loadFinish).length == 0 && autoLoads.filter(e=>e.loaded).length>0 && !props.isFirstLoad){//设置相机位置:当自动开始加载第一个模型时(其余的也跟着自动加载),等这批加载完后;  
                     let autoLoadsDone = autoLoads.filter(e=>e.loaded).map(e=>e.model)
-                    console.log('所有模型加载完毕')
-                    autoLoads.filter(e=>e.loaded && e.show).forEach(e=>e.visible = true)
+                    console.
+                    log('所有模型加载完毕')
+                    autoLoads.filter(e=>e.loaded && e.show).forEach(e=>e.model.visible = true)
                     
                     MergeEditor.focusOn(autoLoadsDone, 1000, true, true)
-                    
+                    autoLoads.length = 0
                     
                 }  
             }
@@ -464,15 +474,7 @@ export const enter = (dom, isLocal) => {
                 spliceFromArr(model,false)
             }
             
-            if(props.type == "glb"){////////////////////////////test
-                if(props.url.includes('coffeemat')){
-                    props.url = '/lib/potree/resources/models/glb/coffeemat.glb' 
-                                     
-                }
-                //props.url += '5'
-                //props.url = 'http://localhost:5173/api/profile/datav1/1537680519838306304/data/glb/cloud_glb_24.glb'   
-            }
-            
+        
             
             props.done = done; props.progressFun = progressFun; props.onError = onError
             
@@ -491,7 +493,8 @@ export const enter = (dom, isLocal) => {
                 changeShow(show){ 
                     props.show = show  //for autoLoads show model
                     if(model){ 
-                        viewer.updateVisible(model, 'changeShow', show) 
+                        Potree.Utils.updateVisible(model, 'changeShow', show) 
+                        viewer.dispatchEvent('content_changed')
                     } 
                 },
                 changeSelect(state){
@@ -549,6 +552,7 @@ export const enter = (dom, isLocal) => {
                  
                 destroy(){
                     model && MergeEditor.removeModel(model) 
+                    viewer.dispatchEvent('content_changed')
                 }
                  
             } 
@@ -569,7 +573,7 @@ export const enter = (dom, isLocal) => {
     }
      
     
-    console.log('版本: 2022.9.27-0')
+    console.log('版本: 2023.3.24-0')
      
     return sdk 
 }