xzw 4 月之前
父节点
当前提交
4ab530eae3
共有 3 个文件被更改,包括 31 次插入14 次删除
  1. 19 9
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 11 4
      src/sdk/cover/index.js

+ 19 - 9
public/lib/potree/potree.js

@@ -74256,7 +74256,7 @@
 	    viewer.updateFpVisiDatasets();
 	    var mapViewport = viewer.mapViewer.viewports[0];
 	    this.SplitScreen.split({
-	      siteModel: true /* , viewports:[{name:'Top',viewport : mapViewport  }] */
+	      siteModel: true
 	    });
 	    viewer.viewports.forEach(e => {
 	      if (e.name != 'mapViewport') {
@@ -75743,12 +75743,14 @@
 	    }
 	  },
 	  removeModel(model) {
-	    var _model$panos;
+	    var _model$titleLabel, _model$panos;
 	    if (this.selected == model) this.selectModel(null);
 	    var dispose = e => {
 	      e.geometry && e.geometry.dispose();
 	      e.material && e.material.dispose();
 	    };
+	    model.skeletonHelper && model.add(model.skeletonHelper); //打包一起dispose
+	    (_model$titleLabel = model.titleLabel) === null || _model$titleLabel === void 0 || _model$titleLabel.dispose();
 	    if (model.isPointcloud) {
 	      dispose(model);
 	      viewer.scene.removePointCloud(model);
@@ -81988,7 +81990,7 @@
 	    this.removeKey(model, keyType, key);
 	    this.addKey(model, keyType, key);
 	  }
-	  at(time, delta) {
+	  at(time, delta, force) {
 	    var _this = this;
 	    this.dispatchEvent({
 	      type: 'atTime',
@@ -82002,7 +82004,7 @@
 	    }
 	    var maxTime = this.duration + maxClipFadeTime / 2;
 	    if (time >= maxTime) time = maxTime;
-	    if (this.time == time) return;
+	    if (this.time == time && !force) return;
 	    this.time = time; //真实值
 
 	    var transitionRatio = 0.05 * delta * 60; //渐变系数,越小缓动程度越高,越平滑 //假设标准帧率为60fps,当帧率低时(delta大时) 降低缓动。速度快时缓动太高会偏移路径
@@ -82188,10 +82190,11 @@
 	    this.playing && this.pause();
 	    var maxTime = this.duration + maxClipFadeTime / 2;
 	    this.playing = true;
+	    this.cursorTime = time;
 	    this.onUpdate = e => {
-	      time += e.delta;
-	      if (!Potree.settings.isOfficial && time >= maxTime) time = maxTime;
-	      this.at(time, e.delta);
+	      this.cursorTime += e.delta;
+	      if (!Potree.settings.isOfficial && time >= maxTime) this.cursorTime = maxTime;
+	      this.at(this.cursorTime, e.delta);
 	      if (!Potree.settings.isOfficial && time >= maxTime) {
 	        this.dispatchEvent('stop');
 	        this.pause();
@@ -82242,6 +82245,10 @@
 	    } */
 	  }
 
+	  /* removeModelCallback(model){
+	      this.poseKeys.get
+	  } */
+
 	  /////////////////////////////////
 
 	  addPoseKey() {
@@ -91542,6 +91549,10 @@
 
 	          boundingBox_.min.set(-radius, -radius, -radius);
 	          boundingBox_.max.set(radius, radius, radius);
+
+	          //boundingBox_.translate(center)
+
+	          //2025:很少有模型用这个,之前是哪个模型有的?目前看到cesium的模型有 'http://192.168.0.25/oss/manage/media-library/result/test/tileset.json',
 	        } else {
 	          return console.error('json boundingVolume 缺少信息');
 	        }
@@ -91712,10 +91723,9 @@
 	        var model = gltf.scene;
 	        if (gltf.animations.length) {
 	          var skeleton = new SkeletonHelper(model);
-	          //skeleton.visible = false; 
 	          viewer.scene.scene.add(skeleton);
 	          model.skeletonHelper = skeleton; //注意:不能覆盖model.skeleton,因其另有 */
-	          skeleton.material.opacity = 0.1;
+	          Potree.Utils.updateVisible(skeleton, 'hide', false); //skeleton.material.opacity = 0.1
 	          var mixer = new AnimationMixer(model);
 	          model.actions = [];
 	          gltf.animations.forEach(ani => {

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


+ 11 - 4
src/sdk/cover/index.js

@@ -1376,15 +1376,16 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
             let funs = {
                 bus,
                 play(){
-                    //console.log('play')
+                    console.log('play ani,  time:', AnimationEditor.cursorTime)
                     AnimationEditor.play({time:AnimationEditor.cursorTime})
                 },
                 pause(){
-                    //console.log('pause')
+                    console.log('pause ani')
                     AnimationEditor.pause()
                 },
                 setCurrentTime(s){// 设置当前时间, 单位为秒 
-                    AnimationEditor.playing || AnimationEditor.at(s)
+                    //console.log('setCurrentTime',s, AnimationEditor.playing)
+                    (!AnimationEditor.playing || s == 0) && AnimationEditor.at(s) //除非s==0否则一定要先pause后才能设置时间
                 }, 
                 addAnimationModel(data){// 添加动画模型
                    /*  title: string;   模型名称
@@ -1406,7 +1407,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                     
                     let modelFuns = sdk.addModel(prop)
                     
-                     
+                    
                     let visibleRange 
                     let updateVisiByRange = ()=>{//可见范围
                         let visi = true
@@ -1423,6 +1424,9 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                         MergeEditor.addTitleForModel(model)
                         model.addEventListener('transformChanged',updateVisiByRange)
                         model.result_ = result
+                        setTimeout(e=>{
+                           AnimationEditor.at(AnimationEditor.cursorTime || 0,null,true)  //计算下默认姿态
+                        },1)
                     }) 
                     
                     
@@ -1613,6 +1617,9 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 },
                 
             }
+            
+             
+            
             return funs