xzw hai 4 meses
pai
achega
4e308752f0
Modificáronse 3 ficheiros con 25 adicións e 24 borrados
  1. 16 13
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 8 10
      src/sdk/cover/index.js

+ 16 - 13
public/lib/potree/potree.js

@@ -82467,6 +82467,10 @@
 	        posePathModels.includes(model) || posePathModels.push(model);
 	      });
 	    });
+	    /* 
+	        路径>关键帧。但是如果每条路径开头和结尾以及过渡时没有关键帧,保持路径开头和结尾的姿态
+	        
+	     */
 	    posePathModels.forEach(model => {
 	      var pathKeys = this.pathKeys.get(model) || [];
 	      var poseKeys = this.poseKeys.get(model) || [];
@@ -82489,13 +82493,10 @@
 	      if (poseKeys.length) {
 	        tweens.scale = new Tween$1(poseKeys.map(e => e.time), poseKeys.map(e => e.scale));
 	        model.scale.copy(tweens.scale.lerp(time));
-	        tweens.qua = new Tween$1(poseKeys.map(e => e.time), poseKeys.map(e => e.qua));
-	        model.quaternion.copy(tweens.qua.lerp(time));
 	      } else {
-	        if (pathKeys.length) {
-	          var _model$defaultAniPose;
-	          model.quaternion.copy(((_model$defaultAniPose = model.defaultAniPose) === null || _model$defaultAniPose === void 0 ? void 0 : _model$defaultAniPose.quaternion) || new Quaternion()); //设置路径朝向前要先还原
-	        }
+	        /* if(pathKeys.length){
+	            model.quaternion.copy(model.defaultAniPose?.quaternion || new THREE.Quaternion()) //设置路径朝向前要先还原
+	        } */
 	      }
 	      if (atPath) {
 	        //沿着curve行走,目视curve前方  (参照CameraAnimationCurve,搜quaFromCurveTan)  
@@ -82533,11 +82534,13 @@
 	        if (poseKeys.length) {
 	          tweens.pos = new Tween$1(poseKeys.map(e => e.time), poseKeys.map(e => e.pos));
 	          model.position.copy(tweens.pos.lerp(time));
-	          var poseKeys2 = poseKeys.filter(e => e.isPath);
-	          if (poseKeys2.length) {
-	            tweens.qua = new Tween$1(poseKeys2.map(e => e.time), poseKeys2.map(e => e.qua));
-	            model.quaternion.copy(tweens.qua.lerp(time));
-	          }
+	          tweens.qua = new Tween$1(poseKeys.map(e => e.time), poseKeys.map(e => e.qua));
+	          model.quaternion.copy(tweens.qua.lerp(time));
+	          /* let poseKeys2 = poseKeys.filter(e=>e.isPath)//妈呀为什么这么写我忘了
+	          if(poseKeys2.length ){
+	              tweens.qua = new Tween(poseKeys2.map(e=>e.time), poseKeys2.map(e=>e.qua))
+	              model.quaternion.copy(tweens.qua.lerp(time))
+	          }   */
 	        }
 	      }
 	      if (poseKeys.length || pathKeys.length) {
@@ -82610,8 +82613,8 @@
 	      animateActions.forEach(action => {
 	        action.setEffectiveTimeScale(action.tempSW_.scale); //speed  只有没paused时有效
 	        action.setEffectiveWeight(action.tempSW_.weight);
-	        action.time = action.tempSW_.time % ((action.clipDur_ || action._clip.duration) / action.tempSW_.scale) * action.tempSW_.scale; //只有paused时有效
-	        action.tempSW_.weight < 1 && console.log('action', action._clip.name, action.time, action.weight);
+	        action.time = action.tempSW_.time % (action._clip.duration / action.tempSW_.scale) * action.tempSW_.scale; //只有paused时有效
+	        //action.tempSW_.weight < 1 && console.log('action', action._clip.name, action.time, action.weight )
 	      });
 
 	      //model.mixer.timeScale = 1 ;

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
public/lib/potree/potree.js.map


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

@@ -601,12 +601,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
             /* if (tagLimitDis != void 0) {
                 if (camera.position.distanceToSquared(worldPos) > Math.pow(tagLimitDis, 2)) return false
             } */
-
-
-
-
-            //console.log('getScreenByPoint ' + pos3d.toArray())
-            return Potree.Utils.getPos2d(worldPos, viewport, dom)
+ 
+            let result = Potree.Utils.getPos2d(worldPos, viewport, dom)
+            if(!result.trueSide)return null
+            return result
         },
 
         setCameraFov(fov) {
@@ -1576,8 +1574,8 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                         getSupportActions(){
                             return model.actions?.map(e=>{return {name:e._clip.name, duration:e._clip.duration}}) //界面上的一次循环时长保留小数位方式为floor,为了避免超出时间使动作回到开头
                         },
-                        setDefaultPose(pose){
-                            model.defaultAniPose = pose
+                        setDefaultPose(pose){//没用了
+                            model.defaultAniPose = pose //不在关键帧和路径时transformChanged后记录的
                         },
                         addAction(frame){// 添加模型动作
                             //console.log('addAction',frame)
@@ -1708,8 +1706,8 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                             {//判断遮挡 暂时计算全部八个顶点,以后再改。如延时(不过ifPointBlockedByIntersect本身就有延迟,每帧计算一点点),每帧判断不同的点,直到全部顶点都算完都被遮挡了才隐藏。且如果离得很远,pos2d像素差距很小的话,只判断中心点即可。
                                 //let boundingBox = model.boundingBox.
                                 let boundPointsShrink = [...boundPoints]   //Potree.Common.getBoundPoints(boundingBox) 先用这个测试 
-                                let visi = boundPointsShrink.some(p=>!viewer.ifPointBlockedByIntersect( p ))  //viewer.addEventListener('shelterComputed')
-                                if(!visi)return console.log('被遮挡')
+                                let visi = boundPointsShrink.some(p=>!viewer.ifPointBlockedByIntersect( p ))  //若模型刚好为长方体,自身可能遮挡顶点,可能需要先过滤自身
+                                if(!visi)return //console.log('被遮挡')
                             }
                             //console.log('getCurrentSubtitlePixel')