【发布时间】:2017-07-06 06:55:25
【问题描述】:
我有一个很大的世界,大约有 5,000,000 x 1,000,000 个单位。相机可以靠近某个物体,也可以远到足以看到整个世界。
我通过不投影(Z 来自深度缓冲区)获得世界坐标中的鼠标位置。
问题是它涉及到一个逆矩阵。当同时使用大小数字(例如从原点平移和缩放以查看更多世界)时,计算变得不稳定。
试图查看此逆矩阵的准确性,我查看了行列式。理想情况下,由于变换矩阵的性质,它永远不会为零。我知道'det'一个小值本身并不意味着什么,这可能是由于矩阵中的小值。但这也可能是数字出错的迹象。
我也知道我可以通过反转每个变换并将它们相乘来计算逆。它是否提供更高的准确性?
我如何判断我的矩阵是否正在退化,是否出现数值问题?
【问题讨论】:
-
如何设置远近剪裁平面?
-
@Malcom
near = distance(camera, centerOfWorld) - radusOfWorld和far = distance(camera, centerOfWorld) + radusOfWorld都在舍入框之外。在里面时,near=nearMin(说 = 1 个单位,以查看详细信息)和far= 2*radiusOfWorld在这种情况下,我不会为 Z 战斗而烦恼。 -
可以看条件数,也就是矩阵的最大特征值与最小特征值的比值。具有高条件数的矩阵将表现不佳。 en.wikipedia.org/wiki/Condition_number
-
@duffymo 我喜欢衍生品的想法......会玩它。