Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

Еще раз по осещение в OPGL   Найти похожие ветки 

 
pr   (2004-04-15 14:54) [0]

Есть сцена размерами 4,4,4 в ней шесть объектов по углам и в т (-2,0,0) и в (2,0,0). Включаю источники света, 2 штуки, типа прожекторов и работает только один, нулевой. Пример кода :

glEnable (GL_DEPTH_TEST);
glEnable (GL_COLOR_MATERIAL);
pos[0]:=0;pos[1]:=0;pos[2]:=3;pos[3]:=1;
pos1[0]:=0;pos1[1]:=0;pos1[2]:=3;pos1[3]:=1;

direct[0]:=0;direct[1]:=0;direct[2]:=-3;direct[3]:=1;
direct1[0]:=1;direct1[1]:=0;direct1[2]:=-3;direct1[3]:=1;

glViewport(0, 0, ClientWidth, ClientHeight);
glMatrixMode (GL_PROJECTION);
glLoadIdentity;

glFrustum (-2, 2, -2, 2, 1, 5);

gltranslate(0,0,-3);
glMatrixMode(GL_MODELVIEW);
glloadidentity;

glenable(gl_lighting);
glenable(gl_light0);
glenable(gl_light1);

gllightfv(gl_light0,gl_position,@pos);
gllightfv(gl_light0,GL_SPOT_DIRECTION,@direct);
gllightf(gl_light0,GL_SPOT_EXPONENT,50);
gllightf(gl_light0,GL_SPOT_CUTOFF,20);

gllightfv(gl_light1,gl_position,@pos1);
gllightfv(gl_light1,GL_SPOT_DIRECTION,@direct1);
gllightf(gl_light1,GL_SPOT_EXPONENT,50);
gllightf(gl_light1,GL_SPOT_CUTOFF,20);

Заранее благодарю за ответ.


 
clover ©   (2004-04-15 17:04) [1]

Позиции у осветителей в одной точке, направления у осветителей 18 с небольшим градусов. Как ты там заметил, что один только работает? они почти в одну сторону светят ;)


 
pr   (2004-04-21 08:18) [2]

Задал направление от оси первого источника на 45 градусов, не видно.
Потом нариовал сферу и поставил два точечных источника по разную сторону сферы. например координаты (-2,0,0) и (2,0,0) освещена сторона на которую падают лучи от нулевого источника.
Заранее благодарю за ответ.
PS. Дублировать вопросы больше не буду.


 
Regis ©   (2004-04-25 00:29) [3]

По умолчанию LIGHT0 задан как белый свет, а все остальные как чёрный, поэтому при включении их надо задавать св-ва источника:
gllightfv(gl_light1,GL_DIFFUSE, @diffuse) к примеру. Сам когда-то долго голову ломал :)


 
pr   (2004-04-28 09:58) [4]

Great thx


 
pr   (2004-05-12 07:57) [5]

Еще вопрос по освещению. Если использовать примитивы Quads, polygon, и направить на них луч прожектора, то на поверхности этих примитивов не видно пятна света, хотя на Quadric-объектах пятно появляется. Подскажите в чем у меня проблема.


 
Дм   (2004-05-12 08:38) [6]

Как это появляется? Блики вообще надо накладывать в виде второй тексуры. Насколько мне известно.


 
pr   (2004-05-12 08:58) [7]

Я говорю не про блики а про освещение от источника типа прожектора.


 
Alexander S.F.   (2004-05-12 09:48) [8]

у меня был другой прикол: когда на низкополигональную модель объекта (например модель судна, сделанную в 3dsmax, и импортированную в свою сцену) направлял луч прожектора, то пятно было не круглой формы, а ломаной, по границам полигонов..

Ты проверь, сколько вершин треугольников, а следовательно и нормалей, используемых при растеризации полигона для расчета цвета, в quadric-модели попадает в желаемое пятно света, и сколько треугольников в твоих quads-примитивах.. и проверь, правильно ли ты считаешь для них нормали.. особо для смежных вершин


 
pr   (2004-05-12 10:51) [9]

Когда я рисую плоскость я использую примитив Opengl quads, т.е четырехугольник. Для него задаются 4 вершины. Я конечно думал о том чтобы плоскость создать из множества четырехуольников, для получения пятна света, даже сделал это. Пятно на стенке появилось. Но может как-то можно получить пятно от прожектора на плоскость заданую одним примитивом. Вродебы логично рисовать стену одним плоским примитивом - четырехугольником.


 
Sapersky ©   (2004-05-13 16:56) [10]

Писали уже (Дм   (12.05.04 08:38) [6]) - текстурой.

Т.е. нужно заранее подготовить текстуру с пятном, а при выводе проверять, какие полигоны будут освещены, и в зависимости от положения/ориентации источника по отношению к ним считать текстурные координаты. В первом Half-Life так был сделан фонарик... интересно, как во втором? Шейдерами, наверное. Тоже вариант :)

Можно ещё использовать режим автоматического расчёта текстурных координат (у Краснова был пример). Хотя это больше для неплоских объектов и глобального освещения (не узкого луча) - текстура будет лепиться на весь объект.



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
14-1089558048
homo sapiens
2004-07-11 19:00
2004.08.01
Как вспомнить пароль?


3-1089169402
Jedu
2004-07-07 07:03
2004.08.01
DBGridEh - поля в записи?


1-1089898891
DSKalugin
2004-07-15 17:41
2004.08.01
закраска в StringGrid


1-1090288396
НовиЧок
2004-07-20 05:53
2004.08.01
Манифест XP


14-1089885307
Artem123
2004-07-15 13:55
2004.08.01
как вставить запись в таблицу из DBGrid и ....