我正在创建一个将在画布中显示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
旋转,但它会慢慢靠近它。以下是一些屏幕截图,向您展示它的作用:
没有其他参数会影响相机的位置。我不明白为什么会这样做以及问题可能是什么。
答案 0 :(得分:2)
我找到了造成这个问题的原因:我改变了相机的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;