平滑锥法线

时间:2012-08-26 06:35:52

标签: opengl mesh surface smooth normals

我正在尝试计算圆锥的平滑法线。在寻找代码示例和解释时,我始终遇到面部法线的方向。我在下面发布了几张我正在做的照片。第一个 - 它基本上只是标准化顶点位置 - 给我相当平滑的阴影,但边缘“缺失”,底面不是实心。第二个有边缘,但阴影是平的(面法线),我的光线没有正确反射。

圆锥是由GL_TRIANGLES构建的。

点击图片查看大图。

http://bantherewind.com/uploads/cone_smooth_incorrect_sm.jpg

http://bantherewind.com/uploads/cone_flat_incorrect_sm.jpg

2 个答案:

答案 0 :(得分:2)

在除了顶点之外的圆锥表面上的任何点处,有两种明显的切向量:一个与横截面圆相切,或者一个在斜率上。如果将曲面表示为具有两个参数的参数方程,则可以将这些切向量作为两个偏导数。取切线的叉积,得到一个法线向量。产品的顺序决定了法线是向内还是向外。当然,底面必须单独处理。

答案 1 :(得分:1)

除了我想指出的answer by JWWalker之外,一个顶点是一个完整的向量元组,其中包括位置和法线。因此,如果您在一个位置有不同的法线,那么您会得到不同的多个顶点。

在锥体的情况下,这很重要,因为锥体的尖端不是一个单独的顶点,而是它们的整个集合(每个三角形的一个尖端顶点是锥体的外套。然后对于基本圆圈,你得到在每个位置有两个顶点,一个用于三角形到顶端,一个用于底面。

尖端和边缘都是不连续的,因此需要使用单独的顶点绘制。