xzw 2 viikkoa sitten
vanhempi
commit
85125bd377

+ 1 - 1
src/custom/objects/TextSprite.js

@@ -52,7 +52,7 @@ export class TextSprite extends THREE.Object3D{
         if(text == void 0)text = ''
         if (this.text !== text) {
             if (!(text instanceof Array)) {
-                this.text = text.split('\n')  //如果是input手动输入的\n这里会是\\n且不会被拆分, 绘制的依然是\n。
+                this.text = (text + '').split('\n')   //如果是input手动输入的\n这里会是\\n且不会被拆分, 绘制的依然是\n。
                 //this.text = [text + '']
             } else this.text = text
             this.updateTexture() 

+ 6 - 4
src/custom/utils/SplitScreen.js

@@ -7,10 +7,10 @@ import * as THREE from "../../../libs/three.js/build/three.module.js";
 class SplitScreen extends THREE.EventDispatcher{
     constructor (args = {}) {
 		super();
-        
+        this.noRotSide = args.noRotSide
     }
     /* 
-        viewport.targetPlane  // bound中心点处的plane,方向和view一致
+        viewport.targetPlane  // bound中心点处的plane,朝向view的方向
         viewport.shiftTarget  // camera的位置project在targetPlane上的位置
         这两个参数的主要目的是为了getPosOutOfModel,以及rotateSideCamera时保持相对位置
     */
@@ -77,7 +77,7 @@ class SplitScreen extends THREE.EventDispatcher{
         let view = viewport.view
         let info = {bound} 
          
-        let {boundSize, boundCenter} = this.getViewBound(viewport, bound )
+        let {boundSize, boundCenter} = this.getViewBound(viewport/* , bound */ )// 去掉bound是因为需要在所有点云的一侧才能都看到
         
         //this.setShiftTarget(viewport, boundCenter)
      
@@ -122,7 +122,9 @@ class SplitScreen extends THREE.EventDispatcher{
         //let {boundSize, center} = viewer.bound
         boundSize = boundSize || this.getViewBound(viewport).boundSize
         let expand = 10; 
-        let radius = boundSize.length() * 2 
+        
+       
+        let radius = (this.noRotSide ? boundSize.clone().projectOnVector(viewport.view.direction).length() : boundSize.length() ) * 2 
         let position = viewport.shiftTarget.clone().sub(viewport.view.direction.clone().multiplyScalar(radius + expand))  
          
         return position 

+ 1 - 1
src/custom/utils/SplitScreen4Views.js

@@ -55,7 +55,7 @@ const viewportProps = [
 
 
 
-var SplitScreen4Views = new SplitScreen()
+var SplitScreen4Views = new SplitScreen({noRotSide:true})
 
   
 

+ 2 - 2
src/custom/viewer/ViewerNew.js

@@ -4830,9 +4830,9 @@ export class Viewer extends ViewerBase{
                 let point = new THREE.Vector3(posArr[index*3+0],posArr[index*3+1],posArr[index*3+2]) 
                 //point.applyMatrix4(pointcloud.root.pointcloud.matrixWorld)
                 point.applyMatrix4(pointcloud.root.sceneNode.matrixWorld)
-                viewer.focusOnObject({position:point},'point',duration,{dontChangeCamDir:true, distance:15})
+                viewer.focusOnObject({position:point},'point',duration,{dontMoveMap:o.dontMoveMap, dontChangeCamDir:true, distance:15})
 
-                o.dontMoveMap || viewer.mapViewer.fitToPointcloud(pointcloud, duration)           
+                //o.dontMoveMap || viewer.mapViewer.fitToPointcloud(pointcloud, duration)           
                 console.log('flyToDataset focusOnPoint done')
                 return
             }