浏览代码

fix: done后transformChanged发送时间调整

xzw 8 小时之前
父节点
当前提交
361e9456f8
共有 4 个文件被更改,包括 1180 次插入878 次删除
  1. 1129 830
      pnpm-lock.yaml
  2. 7 3
      public/lib/potree/potree.js
  3. 1 1
      public/lib/potree/potree.js.map
  4. 43 44
      src/sdk/cover/index.js

文件差异内容过多而无法显示
+ 1129 - 830
pnpm-lock.yaml


+ 7 - 3
public/lib/potree/potree.js

@@ -79683,9 +79683,7 @@
 
 	    if (Potree.settings.isOfficial) {
 	      viewer.modules.MergeEditor.bus.addEventListener('changeSelect', () => {
-	        var targetObject = viewer.modules.MergeEditor.selected;
-	        targetObject = this.ifContainsModel(targetObject) ? targetObject : null;
-	        this.setCameraFollow(targetObject);
+	        this.updateCameraFollow();
 	      });
 	    }
 	  }
@@ -79701,6 +79699,7 @@
 	    keys = [...keys.slice(0, index), key, ...keys.slice(index, keys.length)];
 	    this[keyType + 'Keys'].set(model, keys);
 	    this.updateTimeRange();
+	    this.updateCameraFollow();
 	  }
 	  removeKey(model, keyType, key) {
 	    var keys = this[keyType + 'Keys'].get(model);
@@ -80088,6 +80087,11 @@
 	      }
 	    });
 	  }
+	  updateCameraFollow() {
+	    var targetObject = viewer.modules.MergeEditor.selected;
+	    targetObject = this.ifContainsModel(targetObject) ? targetObject : null;
+	    this.setCameraFollow(targetObject);
+	  }
 	  updateTimeRange() {
 	    var maxTime = 0;
 	    for (var [model, keys] of this.poseKeys) {

文件差异内容过多而无法显示
+ 1 - 1
public/lib/potree/potree.js.map


+ 43 - 44
src/sdk/cover/index.js

@@ -162,7 +162,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
     Potree.settings.compassDom = dom.querySelector('#direction') 
     Potree.settings.mergeType2 = true //标识新版
     Potree.settings.modelSkybox = true //是否将全景图贴在模型上(会导致卡顿)。若不显示模型将不显示Reticule
-    Potree.settings.tiles3DMaxMemory = 300 //稍微增加点
+    Potree.settings.tiles3DMaxMemory = 250 //稍微增加点
     Potree.settings.mergeTransCtlOnClick = true
     Potree.settings.canWalkThroughModel = true
     window.cesErrorWords = '内存占用过高,建议关闭部分场景或升级显卡。'
@@ -1059,69 +1059,68 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 }
                 model.showInPano = /* !model.is4dkkModel// */props.raw.showInPano  //现在不用这个,所有模型都可见,非is4dkkModel的还显示原本的贴图
                 props.opacity < 100 && result.changeOpacity(props.opacity)
+ 
+                spliceFromArr(model, props, true)
+  
 
-                model.addEventListener('changeSelect', (e) => {
-                    
+                MergeEditor.modelAdded(model) 
+                load4dkkMedias(model)    
+                
+                if (props.mode == 'single') {//模型查看页
+                    MergeEditor.noNeedSelection = true
+                    setTimeout(() => {
+                        MergeEditor.focusOn([model], 1000, true, true)
+                    }, 1)
+                }
+                if(ModelTypes[props.fromType].panos4dkk){
+                    Potree.load4dkkPanos(props.raw.num, model, getBaseRotation(), () => {
+                        bus.emit('loadDone',model)
+                    },    props.fromType == 0 ? '2k' : '4k' ) //看看场景是2k
+                } else { 
+                    bus.emit('loadDone',model)
+                }
+                
+                model.finalLoaded = true
+                console.log('loadDone', model.name )
+                
+                model.addEventListener('changeSelect', (e) => { 
                     bus.emit('changeSelect', !!e.selected)
+                    MergeEditor.transformControls.visible && e.selected && MergeEditor.transformControls.attach(model, e.clickPos) //: MergeEditor.transformControls.detach()
                 })
+                
                 let lastState = {}
-                model.addEventListener('transformChanged', (e) => {
+                let emitTran = (e)=>{
                     let msg = {byControl:!!e.byControl}  //byControl代表是手动用控制轴修改 动画文件要改帧
                     if (!lastState.position || !model.position.equals(lastState.position)) {
                         lastState.position = msg.position = model.position.clone()
-                        //console.log('change pos', model.name, model.position.toArray())
-                        //msg.posChanged = true
+                        //console.log('change pos', model.name, model.position.toArray()) 
                     }
                     if (!lastState.rotation || !model.rotation.equals(lastState.rotation)) {
                         lastState.rotation = model.rotation.clone()   
-                        msg.rotation = model.rotation.toObject()
-                        //msg.rotChanged = true
+                        msg.rotation = model.rotation.toObject() 
                         if(model.atPath && e.byControl){
                             msg.quaAtPath = AnimationEditor.getModelQuaAtPath(model)
                             msg.quaAtPath && (msg.quaAtPath = msg.quaAtPath.toObject())
                         }
                     }
                     if (lastState.scale == void 0 || model.scale.x * 100 != lastState.scale) {
-                        lastState.scale = msg.scale = model.scale.x * 100
-                        //msg.scaleChanged = true
+                        lastState.scale = msg.scale = model.scale.x * 100 
                     }
 
-                    msg = Potree.Common.CloneObject(msg)
-                    
-                    
-                    
-                    
-                    //console.log(model.name, msg)
+                    msg = Potree.Common.CloneObject(msg) 
+                    console.log(model.name, msg)
                     bus.emit('transformChanged', msg)
-                })
-                spliceFromArr(model, props, true)
- 
-                model.addEventListener('changeSelect', (e) => {
-                    MergeEditor.transformControls.visible && e.selected && MergeEditor.transformControls.attach(model, e.clickPos) //: MergeEditor.transformControls.detach()
-                }) 
-
-                MergeEditor.modelAdded(model)
-                
-                load4dkkMedias(model)    
-                
-                if (props.mode == 'single') {//模型查看页
-                    MergeEditor.noNeedSelection = true
-                    setTimeout(() => {
-                        MergeEditor.focusOn([model], 1000, true, true)
-                    }, 1)
                 }
-                if(ModelTypes[props.fromType].panos4dkk){
-                    Potree.load4dkkPanos(props.raw.num, model, getBaseRotation(), () => {
-                        bus.emit('loadDone',model)
-                    },    props.fromType == 0 ? '2k' : '4k' ) //看看场景是2k
-                } else {
-                    bus.emit('loadDone',model)
-                }
-                
-                
-                
-                //console.log('loadDone' )
+                model.addEventListener('transformChanged', (e) => {
+                    emitTran(e)
+                })
+                emitTran({byControl:true}) //保存初始
             }
+            
+            
+            
+            
+            
             let progressFun = (progress) => {
                 bus.emit('loadProgress', progress)
             }
@@ -1203,7 +1202,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                     let size = Math.max(1, new THREE.Vector2().copy(model.boundSize).length() * 0.7 ) 
                     let vec = viewer.mainViewport.view.direction.clone().setZ(0).multiplyScalar(size)
                     let pos = new THREE.Vector3().addVectors(viewer.mainViewport.view.position, vec)
-                    MergeEditor.moveBoundCenterTo(model, pos)  
+                    MergeEditor.moveBoundCenterTo(model, pos)   
                     model.dispatchEvent({type:"position_changed", byControl:true}) 
                 },