{{notification.text}}

MirGames

DIN
09.02.09 18:57
0
Уже 3 дня пытаюсь настроить освещение и перспективу. :wacko:
если с перспективой и светом по отдельности всё понятно, то вместе они не дружат.

использую gluPerspective(60,1.25,1,150);(gl_modelview)
после етого устанавливаю лампу и рисуюобъекты.

свет чудит очень сильно... не знаю что делать.

нужно для курсовой, помогите.
Отредактировано: 09.02.09 19:39
#1
11.02.09 00:34
0
DIN а ты не копал в сторону нормалей?
#2
Студент
11.02.09 00:43
0
lans, нормаль изменяется вместе с перспективой? :)
#3
11.02.09 07:44
0
Вообще, неплохо бы скрин и описание как именно чудит. А то ничего не понятно.
Цитата(lans @ Вчера, 22:34)
[snapback]92917[/snapback]
DIN а ты не копал в сторону нормалей?

А кстати да, веселуха с нормалями при преобразованиях бывает.
#4
12.02.09 03:37
0
ая хз))))прсто лично я
Цитата(DIN @ 9.02.2009 - 14:57)
[snapback]92829[/snapback]
gluPerspective

вот эту функцию использую GL_PROJECTION))))так что не знаю как там и преобразовавыется)))
#5
аксакал
12.02.09 03:48
0
lans
Очень смешно? )

DIN
В приведённом коде ошибок нет, покажи больше.
#6
12.02.09 04:23
0
оффтоп....)))
Цитата(XProger @ Вчера, 23:48)
[snapback]92986[/snapback]
В приведённом коде ошибок нет, покажи больше.

жжёшь)))я так понял это он показал знания гл-функций)))
#7
DIN
17.02.09 23:42
0
вот функция прорисовки:
Код

procedure Draw;
var a,b:integer;i:integer;quadObj:gluquadricobj;
begin
glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);

glloadPMatrix(29,false);
glloadMVMatrix(29,false);
   material(GL_AMBIENT_AND_DIFFUSE,1,1,1,1);
glRotatef(g.AngleX,1,0,0);
glRotatef(g.AngleY,0,1,0);
glTranslatef(-g.Position.x,-g.Position.Y,-g.Position.Z);

//параметры ламп:
   svetv(2,GL_DIFFUSE,1,1,1,1);
   svetv(2,GL_AMBIENT,0,0,0,1);
   svetv(2,GL_SPECULAR,1,1,1,1);
   svetv(2,GL_POSITION,11+quadsize,12+quadsize,11+quadsize,1);

//Quadsize - размер куба
//DrawQuad - рисует куб, или 6 полигонов, или много (разбивает (QuadSize/0.05)^2 каждую сторону)


   if Svetstat>1 then glenable(gl_light0);
   if Svetstat=1 then
    begin
    gltranslatef(11+quadsize,12+quadsize,11+quadsize);
    quadObj:=gluNewQuadric;
    gluQuadricDrawStyle(quadObj, GLU_FILL);
    glColor3f(1,1,1);
    gluSphere(quadObj, 0.05,10,10);
    gltranslatef(-11-quadsize,-11-quadsize,-11-quadsize);
    glenable(gl_light1);
    end;
   a:=glSaveMVMatrix;
   gltranslatef(10,10,10);
   SphereRoot:=SphereRoot+1;
   glRotatef(SphereRoot,0,1,0);

   glColor3f(0,0,1);
   DrawQuad(QuadSize);
   gldisable(gl_Texture_2d);

   {quadObj:=gluNewQuadric;
   gluQuadricDrawStyle(quadObj, GLU_FILL);
   glColor3f(0,0.8,0);
   gluSphere(quadObj, 5,10,10);}

   glLoadMVMatrix(a,true);
   gldisable(gl_light0);
   gldisable(gl_light1);
end;


прога сделанна для проверки освещения, цифры 1.2.3.4.5 - режимы
1 - без освещения
2 - лампа около куба
3 - лампа около головы
4 - направленная лампа по направлению взгляда
5 - -/- +текстура на кубе
можно передвигаться (фцыв+мышь)
"num+" - увеличить размер куба
"num-" - уменьшить размер куба
"Enter" - сменить число полигонов (6/много);

N5____________.rar - ето вся прога, если кому надо, то скину '_____*' модули (для компиляции)

на шаре вообще чёт не пашет, а на кубе... всё кроме зеркального освещения, он нормально прорисовывается, но внутри куба, а нормали всех сторон направил от куба по 6и направлениям.

#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}