Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js threejs:旋转全景以查看摄影机方向_Three.js_360 Panorama - Fatal编程技术网

Three.js threejs:旋转全景以查看摄影机方向

Three.js threejs:旋转全景以查看摄影机方向,three.js,360-panorama,Three.js,360 Panorama,我有两个球体,上面有全景图像。我想在两个具有淡入效果的全景之间进行平滑过渡。对于两个全景图,我都设置了初始相机方向以获得最佳视图。 现在的问题是,如果用户在第一个全景图中观察某个相机角度,然后单击某个按钮切换全景图,我希望提供淡入淡出效果,并直接降落到另一个全景图的初始相机角度。 但由于两个pano都共用一个摄像头,我无法使用摄像头来实现它,所以我设计了以下解决方案- 旋转目标球体,使其朝向所需的摄影机方向 旋转目标球体,使其查看现有摄影机方向 淡出源球 摄像头查看新的全景摄像头方向 将“全景

我有两个球体,上面有全景图像。我想在两个具有淡入效果的全景之间进行平滑过渡。对于两个全景图,我都设置了初始相机方向以获得最佳视图。 现在的问题是,如果用户在第一个全景图中观察某个相机角度,然后单击某个按钮切换全景图,我希望提供淡入淡出效果,并直接降落到另一个全景图的初始相机角度。 但由于两个pano都共用一个摄像头,我无法使用摄像头来实现它,所以我设计了以下解决方案-

  • 旋转目标球体,使其朝向所需的摄影机方向
  • 旋转目标球体,使其查看现有摄影机方向
  • 淡出源球
  • 摄像头查看新的全景摄像头方向
  • 将“全景”旋转回初始方向
  • 在这里,我无法找到旋转全景图的公式来观看相机。(就像照相机是静止的,而全景是旋转的,以获得类似的效果,就像我们在移动照相机一样)。
    谁能帮我找到相对于相机旋转全景(球体)的公式。

    矩阵是解决旋转问题的一个非常强大的工具。我做了一个简单的解释。 开始时,相机位于左侧球体的中心,面向初始视点,然后,相机面向另一点,现在,相机的旋转已更改,接下来,相机移动到右侧球体的中心并保持其方向。我们需要旋转正确的球体。如果C是我们想让相机面对的点,首先,我们旋转A到B,然后,我们旋转θ等于C到A的角度

    那么,如何做到这一点呢?我使用了矩阵,因为A是一个初始点,矩阵在一个单位矩阵中,从A到C的旋转可以用一个矩阵表示,由three.js函数
    matrix4计算。lookAt(eye,center,up)
    哪个“eye”是相机位置,“center”是C的坐标,“up”是相机的上方向向量。然后,从C到A的旋转矩阵是从A到C的矩阵的逆矩阵。因为相机现在面向B,所以相机的矩阵等于从A到B的旋转矩阵

    最后,我们把它们放在一起,最终的旋转矩阵可以写成:
    rotationMatrix=matrixAtoB.multiply(新的THREE.Matrix4().getInverse(matrixAtoC))


    这种方法是一种矩阵方法,你也可以解决球面极坐标系的问题。

    perfect。。谢谢