半角矢量和屏幕转换

时间:2016-12-12 08:43:16

标签: opengl graphics

说,我在3D模型空间中给出两条光线,从相同的中心P开始,但方向D和E不同:

A =(P,D)

B =(P,E)

我从这两个角度形成半角射线:

H =(P,(D + E)/ 2)

现在说A'和B'是相同的光线,但转换为屏幕空间(MVP矩阵乘法,透视分割,视口缩放等)。光线H'分别指屏幕空间中的半角矢量。

现在我的问题: 矢量H'可以仅使用上述操作从矢量H导出,还是我必须计算A'和B'并从中计算H'?

此致

1 个答案:

答案 0 :(得分:0)

你必须计算A'和B'并从中计算H'。原因是3D空间中的两个点的中点不一定是这些点的2D投影之间的中点(在2D中)。半角射线是根据D和E的中点定义的。

例如,将你的A和B矢量想象成一个V的两面画在墙上,你站在旁边,往下看。由于透视,当投影到2D时,V的两个尖端的3D中点将更接近另一个尖端。