最近在看退化四边形的描边算法,其中提到了轮廓边缘的计算方式是(N1·V) * (N2·V),其中N1和N2是平面法线,V是视角方向。
假设Y = (N1·V) * (N2·V),如果Y>=0,那么就不是轮廓边,如果Y<0,那么就是轮廓边。
这里引用下灵刃的图,外加自己的图来理解。
这是各种边缘的详细解释,我们只讨论轮廓边缘
然后是发挥想象环节
取N1和N2所在平面构成一个平面坐标系,然后将V投影在该平面上。这里V的方向为坐标轴Y的正方向,蓝色和紫色为平面,红色和绿色为垂直的法线。(这里这么做是因为,看不看到两个面和这个平面坐标系的Z轴,即第三个坐标轴是无关的,除了垂直的情况)
会发现当不能同时看到两个面的时候,法线N1和N2在Y轴正方向上的投影是相反方向的,当能看到两个面的时候,法线N1和N2在Y轴正方向上的投影是相同方向的。这也很好的解释了(N1·V) * (N2·V)为什么能判断是否是轮廓边缘。
灵刃的描边算法——https://blog.youkuaiyun.com/lht748/article/details/88680146