我有关于相机重定向的问题,很长一段时间未解决。简而言之,我有一个摄像头,其向上矢量始终为(0,1,0)
。我想移动相机的位置,同时保持某个3D点出现在屏幕的同一位置。
例如,让P
成为相机的位置,T
是相机的外观,F
是(x,y)
中出现的点的屏幕。现在P
已更改为P'
(相机的新职位);为了使F
仍显示在屏幕的(x,y)
中,必须更改T
。
问题是,T
的新值是什么?
我认为这个问题需要很多数学。如果您有任何想法,请告诉我。非常感谢!
答案 0 :(得分:0)
考虑使用对象层次结构,而不是将数学应用于相机。
var cNull = new THREE.Object3D();
var camera == new THREE.PerspectiveCamera();
cNull.add(camera);
scene.add(cNull);
如果你这样做,那么你可以将相机转到一个角度,只需使用你的点F(x,y,z)作为.lookAt()
的{{1}}点。 cNull
会将其中心对准cNull
,并且F
坐标系内相机的角度偏移将使cNull
点保持在恒定的屏幕位置。