Главная страница
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.055 c
3-1089353432
jenbond
2004-07-09 10:10
2004.08.01
Работа с Interbase


4-1087395044
Erik1
2004-06-16 18:10
2004.08.01
Теория загрузки упакованого файла?


14-1089786998
Ozone
2004-07-14 10:36
2004.08.01
Настройки Excel я


14-1089463017
AlexG
2004-07-10 16:36
2004.08.01
Разработка программ на маленьком PC (корманном)


1-1090141899
Larisa
2004-07-18 13:11
2004.08.01
Подскажите, пожалуйста, как сделать, чтобы приложение само