【发布时间】:2009-05-26 19:59:04
【问题描述】:
我正在做一个幕后 3d 模拟,同时在我的 2d 等距引擎中渲染世界。我以前从未做过等距引擎,而且我的矩阵数学一般都生锈了,所以我遇到了问题。
我有一个投影矩阵,最简单的形式是这样的:
0.7 0.35 0
0 -0.87 0
-0.71 0.35 1
由于我的引擎坐标系是左上角的 0,0,+X 向右/东,+Z 向南,所以有几个符号被翻转。
现在,它的反面是:
1.4080 0.5670 0.0000
0.0000 -1.1490 0.0000
1.0000 0.8050 1.0000
现在,这些矩阵大部分都有效。
例如
WC: 500,0,500 = 屏幕: -1.44, 350, 500(X 和 Y 正确)
WC: 0,0,500 = 屏幕: -355、175、500(X 和 Y 再次正确)
但是,现在如果你需要走另一条路,你不再有那个方便的 Z 值,所以
屏幕: -1.44, 350, 0 = WC: -2, -402.97, 0(所以,垃圾。)
还有更多——一旦我不再拥有那个 Z 值,我就无法从屏幕坐标中检索世界坐标。
这里有什么解决方法?
编辑
我应该指出,unproject 的重点是获得用于鼠标拾取的光线..
似乎只是我对自己所做的事情的误解让我在这里搞砸了。
【问题讨论】:
-
任何关于你如何到达这里的参考资料都会非常有帮助!我自己也在尝试找出一些类似的东西——在渲染 2D 时进行幕后 3D 模拟。
-
我想通了 - 在 XNA 内部,您可以使用 Matrix.CreateOrthographic 等函数轻松创建这些矩阵。
标签: math 3d linear-algebra matrix isometric