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;

这些零点是场景的中心,我将它们留在那里以防我们决定使用另一个基本原点。

此代码将使相机围绕 point 旋转0,0,但它会慢慢地越来越接近它。以下是一些屏幕截图,向您展示它的作用:

点击查看全文

没有其他参数会影响相机的位置。我不明白它为什么这样做以及问题可能是什么。

4

1 回答 1

3

我找到了导致这个问题的原因:我改变了相机的 X 位置,然后我用它的 X 位置的新值改变了相机的 Z 位置。因为这将是不同的,所以两个计算的原点不再相对位于相同的位置。

这很容易解决,只需将它们存储到两个新变量中,然后分配它们

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;
于 2013-07-03T09:56:26.747 回答