假设我们有一个对象,它只由三维点和三角形面组成,每个三角形面都包含这些3d点的子集。我怎样才能插值法向量,得到Phong平滑的阴影呢?实际的算法似乎不可能找到,但每个人都在这样做。
这里有一个帖子,但我仍然不知道如何实现它:Phong阴影的法向插值
而且,在我看来,这个假定的公式只考虑了两个法线,这似乎是错误的。如果你有一个由其他三个三角形包围的三角形呢?那你怎么把法线混在一起?
发布于 2023-02-12 10:26:06
我将假设你对每个点都有法线,并且你的顶点传递不是为你做的。对于每个像素,您将有一个交点p,它存在于由3点p_i、p_j和p_k定义的最近的三角形曲面上,其中包含相应的法线n_i、n_j和n_k。Phong阴影是归一化内插法线,可通过以下方法找到:
发布于 2023-03-14 13:17:53
一种可能的方法是使用双线性插值。假设你知道三角形顶点的法线,当你做光栅扫描转换时,你把三角形投影和水平投影相交,每次都得到两个交点。然后用进一步插值的数据填充它们之间的段。
因此,插值首先在三角形顶点之间进行,然后在交点之间进行,在这两种情况下都可以使用线性插值。无论如何,为了应用Phong模型,结果向量应该归一化为单位范数。
注意,由于第一次插值是在两个顶点之间进行的,法线向量的连续性被隐式地保证在两个面共有的边上。
https://computergraphics.stackexchange.com/questions/9199
复制相似问题