具有大坐标x / y / z的位置

时间:2015-01-19 16:59:11

标签: javascript three.js

http://jsfiddle.net/eho5g2go/

 var offset=10000000;
...
 camera.position.set(offset,offset,400);
 mesh.position.set(offset-300,offset,0);
 camera.lookAt(mesh.position);
...
animate();

变量“offset”,用于指示摄像机和网格的位置。 如果将其值设置为100000000,则在动画期间会出现奇怪的行为 如果你设置了10000000,那么一切都很好

为什么这样?如何指定坐标超过100000000的对象的位置,例如?

1 个答案:

答案 0 :(得分:0)

这些数字比我预期的要小一点,但我想我可以放心地认为这是一个经典的浮点精度误差问题。

使用浮点运算时,计算机通常不是非常大或非常小。

我真的只能建议您适当缩放场景,以使数字保持在更合理的范围内。

请参阅https://stackoverflow.com/a/26090323/868679了解相关答案

编辑:阅读http://www.songho.ca/opengl/gl_projectionmatrix.html#perspective后,您可以看到用于投影相机矩阵的近端和远端值会影响精度误差。要减少错误,请尽量保持近距离和远距离值。