Форум: Форум C++Разное
Новые темы: 00
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Освещение
 
 автор: alex19921992   (08.03.2007 в 16:37)   письмо автору
 
 

Не могу справиться с освещением в опенгл! И так, и сяк его направляю - ну все равно не так светит!

float dir[]={0,-1,0};
float pos[]={0,1,0,1};
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);


вроде должен сверху вниз светить, а светит как-то по диагонали. че за фигня?

  Ответить  
 
 автор: -=Art=-   (08.03.2007 в 17:40)   письмо автору
 
   для: alex19921992   (08.03.2007 в 16:37)
 

Возможно, направление источника света трансформируется текущей видовой матрицей.

  Ответить  
 
 автор: alex19921992   (09.03.2007 в 05:27)   письмо автору
 
   для: -=Art=-   (08.03.2007 в 17:40)
 

эээээээ........ не совсем понятно конечно..... А ведь если я задам такой материал, чтобы он излучал свет и поставлю излучаемость на максимум... то он будет реальным источником света и причем видимым! Правильно ли я рассуждаю???
Кстати, тени будут автоматически отбрасываться или это надо тоже настраивать?

  Ответить  
 
 автор: -=Art=-   (09.03.2007 в 07:32)   письмо автору
 
   для: alex19921992   (09.03.2007 в 05:27)
 

>эээээээ........ не совсем понятно конечно.....
попробуй перед вышеприведенным кодом
glLoadIdentity()

>А ведь если я задам такой материал, чтобы он излучал свет и поставлю излучаемость на максимум...
>то он будет реальным источником света и причем видимым!
> Правильно ли я рассуждаю???
нет

>Кстати, тени будут автоматически отбрасываться или это надо тоже настраивать?
писать самому

  Ответить  
 
 автор: alex19921992   (09.03.2007 в 07:47)   письмо автору
 
   для: -=Art=-   (09.03.2007 в 07:32)
 

>попробуй перед вышеприведенным кодом
та строка уже была

>нет
но ведь в играх дофига источников света, а не восемь, как тут..

>писать самому
а нет ли готовых движков?

--------------------
может, попробуете отладить:
надо чтоб в комнате свет падал с потолка комнаты на пол.

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); // это уже давно стояло

glTranslated(0,0,-3.5);
//glRotated(rot1,0,1,0);
//glRotated(rot2,1,0,0);

glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_DEPTH_TEST);
    
float dir[]={0,-1,0};    //настраиваем источник света
float pos[]={0,1,0,1};
float sp[4] = {1,1,1,1};
                     float color[4]={1,1,1,0};
glLightfv(GL_LIGHT0, GL_POSITION, pos);   
glLightfv(GL_LIGHT0, GL_SPECULAR, sp);
glLightfv(GL_LIGHT0, GL_DIFFUSE, color);
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 45.0);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);
glBegin(GL_TRIANGLES); //тут мы рисуем комнату
glColor3d(1,0,0);
glVertex3d(-1,1,1);
glVertex3d(-1,-1,-1);
glVertex3d(-1,-1,1);
glVertex3d(-1,1,1);
glVertex3d(-1,-1,-1);
glVertex3d(-1,1,-1);
glColor3d(0,1,0);
glVertex3d(1,1,1);
glVertex3d(1,-1,-1);
glVertex3d(1,-1,1);
glVertex3d(1,1,1);
glVertex3d(1,-1,-1);
glVertex3d(1,1,-1);
glColor3d(0.5,0.5,0);
glVertex3d(-1,-1,-1);
glVertex3d(1,1,-1);
glVertex3d(1,-1,-1);
glVertex3d(-1,-1,-1);
glVertex3d(1,1,-1);
glVertex3d(-1,1,-1);
glColor3d(0.5,0,0.5);
glVertex3d(1,1,1);
glVertex3d(-1,1,-1);
glVertex3d(-1,1,1);
glVertex3d(1,1,1);
glVertex3d(-1,1,-1);
glVertex3d(1,1,-1);
glColor3d(0,0.5,0.5);
glVertex3d(1,-1,1);
glVertex3d(-1,-1,-1);
glVertex3d(-1,-1,1);
glVertex3d(1,-1,1);
glVertex3d(-1,-1,-1);
glVertex3d(1,-1,-1);
glEnd();

  Ответить  
 
 автор: -=Art=-   (09.03.2007 в 10:30)   письмо автору
 
   для: alex19921992   (09.03.2007 в 07:47)
 


glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); // это уже давно стояло

float dir[]={0,-1,0};    //настраиваем источник света
float pos[]={0,1,0,1};
float sp[4] = {1,1,1,1};
                     float color[4]={1,1,1,0};
glLightfv(GL_LIGHT0, GL_POSITION, pos);   
glLightfv(GL_LIGHT0, GL_SPECULAR, sp);
glLightfv(GL_LIGHT0, GL_DIFFUSE, color);
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 45.0);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);

glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_DEPTH_TEST);
 
glTranslated(0,0,-3.5);
//glRotated(rot1,0,1,0);
//glRotated(rot2,1,0,0);   
glBegin(GL_TRIANGLES); //тут мы рисуем комнату
glColor3d(1,0,0);
glVertex3d(-1,1,1);
glVertex3d(-1,-1,-1);
glVertex3d(-1,-1,1);
glVertex3d(-1,1,1);
glVertex3d(-1,-1,-1);
glVertex3d(-1,1,-1);
glColor3d(0,1,0);
glVertex3d(1,1,1);
glVertex3d(1,-1,-1);
glVertex3d(1,-1,1);
glVertex3d(1,1,1);
glVertex3d(1,-1,-1);
glVertex3d(1,1,-1);
glColor3d(0.5,0.5,0);
glVertex3d(-1,-1,-1);
glVertex3d(1,1,-1);
glVertex3d(1,-1,-1);
glVertex3d(-1,-1,-1);
glVertex3d(1,1,-1);
glVertex3d(-1,1,-1);
glColor3d(0.5,0,0.5);
glVertex3d(1,1,1);
glVertex3d(-1,1,-1);
glVertex3d(-1,1,1);
glVertex3d(1,1,1);
glVertex3d(-1,1,-1);
glVertex3d(1,1,-1);
glColor3d(0,0.5,0.5);
glVertex3d(1,-1,1);
glVertex3d(-1,-1,-1);
glVertex3d(-1,-1,1);
glVertex3d(1,-1,1);
glVertex3d(-1,-1,-1);
glVertex3d(1,-1,-1);
glEnd();

Попробуй так.

Куда тебе больше 8 источников? Странный ты...
Готовые движки есть. Blitz3D, например

  Ответить  
 
 автор: alex19921992   (09.03.2007 в 11:39)   письмо автору
 
   для: -=Art=-   (09.03.2007 в 10:30)
 

То есть ты хочешь сказать, что во всех играх, использующих опенгл, на всех уровнях не больше восьми источников света? Кстати, как настроить мощность источников света?

  Ответить  
 
 автор: alex19921992   (09.03.2007 в 12:53)   письмо автору
 
   для: alex19921992   (09.03.2007 в 11:39)
 

Кстати, почему-то при движении камеры освещение вообще непонятно себя ведет... как-то по-другому светит... wtf?

  Ответить  
 
 автор: -=Art=-   (09.03.2007 в 17:14)   письмо автору
 
   для: alex19921992   (09.03.2007 в 12:53)
 

направление источника света трансформируется текущей видовой матрицей.
Можно получить больше 8 ис , но тебе не об этом париться надо.

  Ответить  
 
 автор: alex19921992   (09.03.2007 в 17:24)   письмо автору
 
   для: -=Art=-   (09.03.2007 в 17:14)
 

Я понял... просто интересно было... Вот про матрицу я вообще ничего не знаю. Просто вот я снчала хотел сделать камеру, чтоб просто леталапо пространству, как в играх, но че-то впал в ступор(((( Проблема: как лучше хранить камеру: 3-мя координатами и 3-мя поворотами вокруг осей или 2-мя точками и поворотом вокруг этой оси.. или еще как-то? после этого я понял что здесь математику надо знать очень хорошо. Потому как в обоих случаях проблема: как стандартными ф-ями опенгл по этим данным поставить как надо камеру? Даже не знаю, что делать...

  Ответить  
 
 автор: alex19921992   (11.03.2007 в 16:53)   письмо автору
 
   для: alex19921992   (09.03.2007 в 17:24)
 

Вообще, как лучше сделать камеру? Я нашел ф-ю, которая переносит камеру в определенную точку. Но как сделать, чтобы юзер мог ей управлять? Наверное вы такое делали, может поможете?

  Ответить  
 
 автор: -=Art=-   (11.03.2007 в 18:56)   письмо автору
 
   для: alex19921992   (11.03.2007 в 16:53)
 

Можно задавать камеру 3 углами(между направлением взгляда и осями координат) и координатами точки, в которой находится набюдатель.

  Ответить  
 
 автор: alex19921992   (14.03.2007 в 08:53)   письмо автору
 
   для: -=Art=-   (11.03.2007 в 18:56)
 

Мне тут сказали, что камеру лучше считать в сферических координатах, а я даже не знаю, че это... может подскажете?

  Ответить  
 
 автор: -=Art=-   (14.03.2007 в 11:10)   письмо автору
 
   для: alex19921992   (14.03.2007 в 08:53)
 

www.justfuckinggoogleit.com
http://www.exponenta.ru/educat/class/courses/an/theme4/theory.asp

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования