我正在做一个幕后 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 值,我就无法从屏幕坐标中检索世界坐标。
这里有什么解决方法?
编辑
我应该指出,取消项目的目的是为鼠标拾取获得光线..
似乎只是我对自己所做的事情的误解让我在这里搞砸了。