Здраствуйте!!! ВОзникла следующая проблема. Не получается настроить освещение для поверхности в OpenGL.какието проблемы с нормалями.
Ниже привожу фрагмент кода для прорисовки каждой грани(четырёхугольника) из которых она строится.Можно, конечно, включить автонормализацию, но тогда грани
освещаются только с лицевой стороны. Помогите разобраться с проблемой. Заранее Спасибо!!!
for i:=1 to 10 do
for j:=1 to 10 do begin
glbegin(gl_quads)
VekX:=ctrlpoints[i][j][0]-ctrlpoints[i][1+j][0];VekY:=ctrlpoints[i][j][1]-ctrlpoints[i][1+j][1];VekZ:
=ctrlpoints[i][j][2]-ctrlpoints[i][1+j][2];
VekX1:=ctrlpoints[i][+j][0]-ctrlpoints[1+i][+j][0];VekY1:=ctrlpoints[i][+j][1]-ctrlpoints[1+i][j][1];
VekZ1:=ctrlpoints[i][+j][2]-ctrlpoints[1+i][+j][2];
NormalX:=(VekY*VekZ1-VekZ*VekY1);
NormalY:=(VekZ*VekX1-VekX*VekZ1);
NormalZ:=(VekX*VekY1-VekY*VekX);
DLin:=SQRT(SQR(NormalX)+SQR(NormalY)+SQR(NormalZ));
glNormal3f((NormalX)/Dlin,(Normaly)/Dlin,(NormalZ)/Dlin);
glVertex3f(ctrlpoints[i][j][0],ctrlpoints[i][j][1],ctrlpoints[i][+j][2]);//1
glVertex3f(ctrlpoints[i+1][+j][0],ctrlpoints[i+1][+j][1],ctrlpoints[i+1][+j][2]);//2
glVertex3f(ctrlpoints[i+1][1+j][0],ctrlpoints[i+1][1+j][1],ctrlpoints[i+1][1+j][2]); //3
glVertex3f(ctrlpoints[i][1+j][0],ctrlpoints[i][1+j][1],ctrlpoints[i][1+j][2]); //4
glend;
end;
Страница 1 из 1
OpenGL
Поделиться темой:
Страница 1 из 1