2013-07-03 24 views
1

我正在创建一个将在画布中显示3D对象的Web应用程序。现在我遇到了这个问题:围绕某个点旋转越来越近

我正在慢慢地旋转相机周围的场景,以便可以从各个方面看3D对象。为此,我用这个代码(JavaScript的):

var step = 0.1*Math.PI/180; 
scene.camera.position.x = Math.cos(step) * (scene.camera.position.x - 0) - Math.sin(step) * (scene.camera.position.z - 0) + 0; 
scene.camera.position.z = Math.sin(step) * (scene.camera.position.x - 0) + Math.cos(step) * (scene.camera.position.z - 0) + 0; 

那些零是场景的中心,我离开他们那里情况下,我们决定将其它基地产。

此代码将使相机围绕点0,0旋转,但它会逐渐靠近它。下面是一些截图给你看它做什么:

Click for full view

有迹象表明,对摄像机的位置影响的其他参数。我不明白为什么会这样做,问题可能是什么。

+0

为什么您使用的ž代替ÿ? –

+0

@ IgnacioVazquez-Abrams我们使用的y-as与[library](http://www.kevs3d.co.uk/dev/phoria/)一致: – Broxzier

回答

2

我发现是什么导致了这个问题:我改变了相机的X位置,然后我改变相机的Z位置与它的X位置的新值。因为这将是不同的,两个计算的原点不再处于相同的位置。

这是很容易解决,只需将它们存储到两个新的变量,那么为他们分配

var posx = Math.cos(step) * (scene.camera.position.x - 0) - Math.sin(step) * (scene.camera.position.z - 0) + 0; 
var posz = Math.sin(step) * (scene.camera.position.x - 0) + Math.cos(step) * (scene.camera.position.z - 0) + 0; 
scene.camera.position.x = posx; 
scene.camera.position.z = posz;