gpt4 book ai didi

floating-point - Unity3d 浮点精度限制

转载 作者:行者123 更新时间:2023-12-04 23:55:40 24 4
gpt4 key购买 nike

我收到来自 Unity3D Pro 的警告,我不太明白。
我在 GUI 中将我的玩家的 Transform.position.x 设置为 1000000,它给了我这个警告:

"Due to floating-point precision limitations, it is recommended to bring the world coordinates of the GameObject within a smaller range."



这是否意味着我的单个场景必须小于 1000000*1000000*1000000。这被认为足够大吗?如果我想要更大的世界,我需要多个场景吗?加载新场景时,我的播放器位置会重置吗?如何管理位置数据以使其不超出范围?

最佳答案

对于数量级为 1,000,000 的数字,IEEE-754 32 位二进制浮点数的步长为 1/16 (.0625)。所以下一个可表示的大于 1,000,000 的数字是 1,000,000.0625。

如果您有一个肉眼看不到 0.0625 变化的 View ,那可能没问题。如果世界中对象的比例使得 0.0625 比任何对象特征都小得多,并且 View 永远不会放大到人眼可以注意到 0.0625 差异的地方,那么可能没有问题。 (但是,您可能需要更多的余地。即使该大小的对象特征不可见,某些数学计算也可能会受到影响,因为速度、位置等的任何计算都不能使用小于 0.0625 的增量,而您正在对数量级为 1,000,000 的数字进行 32 位算术运算。)

将其与原点附近的数字进行比较,例如数量级为 100 的数字。在 100 处,步长为 1/131072 (.00000762939453125)。如果您正在绘制利用这种精分割辨率的对象,只要它们靠近原点,它们就会看起来很好。但是,当它们通过场景移动到坐标具有较大量级的位置时,它们会失去分辨率。

这里的基本问题是场景的大小与场景中细节的大小之间的比例。这就是有限的。只要对象特征也很大,您就可以拥有大坐标。但是当坐标很大时,您无法保持精细的对象特征。

关于floating-point - Unity3d 浮点精度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16879654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com