for i:=0 to n-2 do
for j:=0 to n-2 do
begin
glBegin(GL_TRIANGLES);
glVertex3f(i/n,j/n,a[i,j]);
glVertex3f((i+1)/n,j/n,a[i+1,j]);
glVertex3f((i+1)/n,(j+1)/n,a[i+1,j+1]);
glVertex3f(i/n,j/n,a[i,j]);
glVertex3f((i+1)/n,(j+1)/n,a[i+1,j+1]);
glVertex3f(i/n,(j+1)/n,a[i,j+1]);
glEnd;
end;
OpenGL и поверхности
Мне нужно построить 3хмерную поверхность по данным из массива а размером n*n, каждая из йачеек содержит высоту по оси Z. Я строил поверхность треугольничками.
Код:
Перед 1й и 2й тройкой вертексов еще ставил glNormal3f с заранее вычесленными значениями нормалей для каждого треугольника.
Вобщем результат - негладкая поверхность.
Подскажите плз как сгладить поверхность или как правильно строить поверхности по массиву? Ток попроще - я еще даж текстуры накладывать неумею.
Можно сделать это следующим образом:
1) Сначала посчитать нормали для всех треугольников
2) Для каждой вершины (i,j) вычислить нормаль как среднее из нормалей всех треугольников, в которые она входит. И не забыть нормализовать ее, если не стоит соответствующего флага.
Тогда поверхность будет гладкой.