xzw пре 4 месеци
родитељ
комит
ed9e5bc3f6
3 измењених фајлова са 14 додато и 5 уклоњено
  1. 11 3
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 2 1
      src/sdk/cover/index.js

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

@@ -49856,12 +49856,20 @@
 	        var curve = new CatmullRomCurve3(points, false);
 	        curve.UtoTMapArr = []; //用于存储 getSpacedPoints得到的点对应points的百分比对应
 	        //window.arcLengthDivisions  && (curve.arcLengthDivisions = arcLengthDivisions) //默认200,但改为1也没变化呀
+	        var oldCount = count;
 	        count = Math.max(2, Math.round(this.getTotalDistance() * 400)), points = curve.getSpacedPoints(count - 1); //拆分为更密集的点
 	        this.curve = curve;
 	        //减少点数(拐弯的部分紧凑些,直线部分宽松些):
 	        var lastVec;
 	        var newPoints = [];
 	        this.UtoTMapArr = [];
+	        var pointIndexs = []; //找出新点中对应原先控制点的index,这些点必须加入拐点,否则会出现控制点偏移path(当它所在部分接近直线时) 
+	        var _loop = function _loop(n) {
+	          pointIndexs.push(curve.UtoTMapArr.findIndex(e => e >= n / (oldCount - 1)));
+	        };
+	        for (var n = 1; n < oldCount - 1; n++) {
+	          _loop(n);
+	        }
 	        for (var i = 0; i < count; i++) {
 	          var point = points[i];
 	          var last = points[i - 1];
@@ -49875,7 +49883,7 @@
 	            if (!lastVec) lastVec = curVec;
 	            if (i > 1) {
 	              // 和上一个加入点的vec之间的夹角如果过大就加入 
-	              if (curVec.angleTo(lastVec) > 0.05) {
+	              if (pointIndexs.includes(i) || curVec.angleTo(lastVec) > 0.05) {
 	                //最小角度
 	                newPoints.push(point);
 	                this.UtoTMapArr.push(curve.UtoTMapArr[i]);
@@ -50447,7 +50455,7 @@
 	      var arrowCount = sliceCount - 1;
 	      var sliceLen = lineLen / sliceCount;
 	      var j = arrowCount;
-	      var _loop = function _loop() {
+	      var _loop2 = function _loop2() {
 	        var pos = info.line.start.clone().add(info.dir.clone().multiplyScalar(j * sliceLen));
 	        var disSq = pos.distanceToSquared(viewer.mainViewport.view.position);
 	        j--;
@@ -50467,7 +50475,7 @@
 	        waitAdd.length > arrowCountMax && waitAdd.pop();
 	      };
 	      while (j > 0) {
-	        if (_loop()) continue;
+	        if (_loop2()) continue;
 	      }
 	    });
 	    var scaleMap = new Map();

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
public/lib/potree/potree.js.map


+ 2 - 1
src/sdk/cover/index.js

@@ -2142,7 +2142,8 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 },
                 
                 getImageCenter(){  //热点在模型的本地坐标 
-                    return tag.onMesh ? tag.position : new THREE.Vector3().addVectors(tag.position, tag.titleLabel.parent.position)
+                    if(!tag.parent)return new THREE.Vector3
+                    return  tag.onMesh ? tag.position : new THREE.Vector3().addVectors(tag.position, tag.titleLabel.parent.position)
                      
                 },