Fork me on Bolg '◡'

3D点云图俯视图360度旋转的问题解决

背景

当前我们已经实现的3D点云效果是,在平行相机模式下 不允许旋转,透视相机下的旋转如下:

原因是我们的点云设置的是俯视图。

问题

用户要求,左右滑动鼠标的时候可以360旋转,而不是左右摆动

解决方案

经过不断的测试,发现three.js的OrbitControls在某个视角下是360度旋转的,如果我们相机的视角不能改的话,可以修改相机的另外一个参数up。默认情况下,我们的眼睛就相当于camera,此时Y轴是向上的,也就是cameara.up.set(0,1,0),X轴向上,camera.up.set(1,0,0),这时我们是侧视物体,低下头时,Z轴向上.camera.up.set(0,0,1),这时我们是俯视物体。有些博主说的,up值决定了你是躺着看,还是站着看还是倒立着看

// 摄像机重置
    this.camera = this[this.cameraFlag];
    this.camera.position.set(position.x, position.y, position.z);
    this.camera.lookAt(this.scene.position);

    this.camera.up = new THREE.Vector3(0, 0, 1);
    this.camera.zoom = zoom;
    this.camera.updateProjectionMatrix(); // 更新相机的投影矩阵
posted @ 2022-09-13 16:32  webhmy  阅读(464)  评论(0编辑  收藏  举报