我正在尝试使用 marching cubes 算法对来自 volvis.org 的 3D 模型进行 Gouraud 阴影处理。到目前为止,我已经得到了每个顶点的法线:
GetNormalForVertex(vertex &b, vertex &a, vertex &c) {
u.X = a.X - b.X;
u.Y = a.Y - b.Y;
u.Z = a.Z - b.Z;
v.X = c.X - b.X;
v.Y = c.Y - b.Y;
v.Z = c.Z - b.Z;
return Cross(u,v);
}
当渲染时,我可以看到一个漂亮的平面阴影。据我所知,为了获得高洛德着色效果,我需要插值这些顶点法线以找到交点处的法线。如何插值顶点法线呢?