【发布时间】:2018-08-28 05:15:48
【问题描述】:
我在threejs中加载了一个全景图像,但它从下面的逻辑开始相机旋转,这是threejs中的默认逻辑
if ( isUserInteracting === false ) {
lon += 0.1;
}
lat = Math.max( - 85, Math.min( 85, lat ) );
phi = THREE.Math.degToRad( 90 - lat );
theta = THREE.Math.degToRad( lon );
camera.target.x = 100 * Math.sin( phi ) * Math.cos( theta );
camera.target.y = 100 * Math.cos( phi );
camera.target.z = 100 * Math.sin( phi ) * Math.sin( theta );
我想要做的是将相机放置在我可以使用的特定点
camera.lookAt( -56.86954186163314, 0, -71.49481268065709 );
现在我想从上面的lookAt 点开始正常的相机旋转。我目前正在做的是
camera.lookAt( -56.86954186163314 + camera.target.x, 0, -71.49481268065709 + camera.target.z);
我认为这是错误的.. PS(我在几何,罪,cos方面很弱)..任何1都可以帮助我吗? PS(我不想改变camera.target.y应该是0)..提前谢谢..
【问题讨论】:
-
@TheJim01 有什么想法吗??
-
相机位置,通常称为Transform,即(x, y, z) LOCATION和(x, y, z) ROTATION是两个不同的东西。您正在将位置
+ camera.target.x放入面向旋转的lookAt()调用中。我认为您应该尝试将camera.target.x放入相机的位置,而不是查看旋转。 -
@jmb.mage 基本上我正在使用 camera.target.x、camera.target.y、camera.target.z 捕获该静态点,并使用 camera.lookAt 将相机放置在同一位置() 并从那里开始旋转。(我的图像是普通的 360 全景图)。我只想让相机像默认的三个 js 代码一样从我的静态点进行正常旋转
-
之所以捕获camera.target是因为默认的三个js代码在
camera.lookAt(camera.target)调用中通过camera.target -
我想要像这里 threejs.org/examples/webgl_panorama_equirectangular.html 这样的正常相机旋转,但从我的静态点开始
标签: javascript three.js