【发布时间】:2016-01-04 10:47:37
【问题描述】:
我正在做一个项目,我必须计算给定世界点的屏幕坐标。
我阅读了一些材料并将这个任务组织成四个子任务:
- 将世界点与我相机的逆TRS矩阵相乘以接收相机坐标中的点。
-
将相机坐标中的点与投影矩阵相乘,得到裁剪坐标中的点。投影矩阵是这样的
(1 / tan (fov * 0.5 * PI / 180)), 0, 0, 0; 0, (1 / tan (fov * 0.5 * PI / 180)), 0, 0; 0, 0, - ((f + n) / (f - n)), - (2 * f * n / (f - n)); 0, 0, -1, 0; - 将 剪切坐标中的点乘以 1/w 以接收 ndc 中的点。
- 将ndc转换成屏幕坐标。
这工作正常,但我遇到了一些奇怪的结果和错误。事实证明,如果相机坐标中的点的z值为0,则裁剪坐标中的点的w值为0。 这导致在第 3 步中除以 0。
是我忽略了什么还是这正常?有没有办法计算相机 z 轴上点的屏幕位置,或者我应该只检查 (z == 0) 并返回屏幕中间?
【问题讨论】:
-
最有效的方法是添加支票
标签: math projection rasterizing