Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Освещение в OpenGl, Проблемы :((( 
:(
    Опции темы
Sheff
Дата 27.7.2002, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 503
Регистрация: 25.3.2002
Где: Зеленоград

Репутация: 3
Всего: 3



У меня проблема с освещением в OpenGl, короче так, я задаю источник света:
Код
glLightfv(GL_LIGHT0,GL_POSITION,позиция);

Потом рисую сферу с помощью gluSphere и плоскость с помощью glBegin(GL_QUADS). Притом сфера освещается нормально, т.е часть её может быть в тени, а чать освещена, всё так как я хотел, но вот с плоскостью проблемы, она всегда либо вся светлая, либо вся в тени. Как сделать так чтобы источник света освещал плоскость так же правильно как и сферу ?


--------------------
--------------------------
Шеф всегда прав :)
PM MAIL WWW ICQ   Вверх
Mikel
  Дата 28.7.2002, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



А в OpenGL такого нету. :(
Попробуй библиотеку glScene(может есть для C++)


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Sheff
Дата 28.7.2002, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 503
Регистрация: 25.3.2002
Где: Зеленоград

Репутация: 3
Всего: 3



Есть, просто надо сначала рисовать объект, а потом свет :D


--------------------
--------------------------
Шеф всегда прав :)
PM MAIL WWW ICQ   Вверх
Mikel
Дата 29.7.2002, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



У меня даже в книге написано, что нету :( . А где есть? :omg


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Sheff
Дата 29.7.2002, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 503
Регистрация: 25.3.2002
Где: Зеленоград

Репутация: 3
Всего: 3



Цитата(Mikel @ 29.7.2002, 19:41)
У меня даже в книге написано, что нету :( . А где есть? :omg

Это есть в стандартном OpenGL, просто сначала надо рисовать объекты,а потом свет с помощью glLight и всё получается :)
А можно ещё разбить плоскость на треугольники, тогда освещение просто абалденное :))) И не нужно никаких дополнений.


--------------------
--------------------------
Шеф всегда прав :)
PM MAIL WWW ICQ   Вверх
Mikel
Дата 30.7.2002, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



OK, попробую. :hehe


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Art926
Дата 23.2.2004, 17:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да всё гораздо проще!
Просто алгоритм освещения в OpenGL расчитывает освещенность ТОЛЬКО В ВЕРШИНАХ многоугольниуков, притом не через сам угол (между нормалью и лучом), а через скалярное произведение векторов (Cos). Поэтому если ты нарисуешь достаточно большой многоугольник и слишком близко к его середине расположишь свет, то он вообще будет черным! (ведь каждая из вершин будет очень далеко от источника)
Способы решения проблемы:
1) Дробить многоугольник - самый немудренный.
2) Вывести и реализовать свой алгоритм освещения (тяжко, но развивает! как у тебя с аналитической геометрией?)
3) Воспользоваться Direct3D - по моему в нем есть альтернативы.
  Вверх
kuzia
Дата 23.2.2004, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 29.1.2004

Репутация: нет
Всего: нет



треогональный способ освещения!
PM MAIL   Вверх
Sat
Дата 15.5.2004, 21:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите, люди добрые!

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
GLfloat coords[]={0,0,0,1};
GLfloat sun[]={1,1,0.8f,1};
GLfloat dark[]={0,0,0,1};
glLightfv(GL_LIGHT0,GL_POSITION,coords);
glLightfv(GL_LIGHT0,GL_DIFFUSE,sun);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,dark);
...
gluLookAt(50,5,5,50,0,0,0,1,0);
glTranslatef(50,0,0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(2,GL_DOUBLE,0,geoSphere[2]->texcoords);
glNormalPointer(GL_DOUBLE,0,geoSphere[2]->normals);
glVertexPointer(3,GL_DOUBLE,0,geoSphere[2]->verts);
glDrawArrays(GL_TRIANGLES,0,geoSphere[2]->numtris*3);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);

Глюк: Куда бы я ни поместил сферу (здесь 50,0,0) видимое 0.5сферие освещается так, будто источник света находится в точке обзора (50,5,5) задаваемой в gluLookAt. При этом если поменять источник света и сферу (сферу - в 0, а свет - в любое другое место), то сфера освещается корректно.

SOS me somebody! А то я уже офигел, пытаясь разобраться в чем тут дело!..
  Вверх
gepard
Дата 16.5.2004, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



С освещением всё много проще!
Идёте на www.gametutorials.com, там ищите пример работы с multitexturing'ом.
И видите, что на один из полигонов накладывается текстура стены и маска освещения. Таким образом создаётся освещение. Эта методика используется в дум3 и не только.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Sat
Дата 16.5.2004, 08:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
С освещением всё много проще!
Идёте на www.gametutorials.com, там ищите пример работы с multitexturing'ом.


Мне все прекрасно известно о MT, но бывают моменты, когда НЕОБХОДИМО использовать стандартное освещение. Мой случай - один из таких.
  Вверх
gepard
Дата 17.5.2004, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Если слишком много думать, то можно стать идиотом.
Не забывайте об этом, кодеры.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Sat
Дата 19.5.2004, 20:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Блин, эти форумы посещает хоть один дееспособный программист? Или все горазды только сыпать третьесортными остротами и СОВЕРШЕННО БЕСПОЛЕЗНЫМИ советами?

withstupid.gif mad.gif
  Вверх
gepard
Дата 20.5.2004, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Я те сказал: Не парься. Почем все любят стандартные функции? Уходить от них надо и делать свои. Берёшь алгоритм отсечения фрустумом, всё что в кадре экрана - анализируешь текстуры, какие надо - увеличваешь яркость. Причём тут не обязательно увеличивать только ту часть текстуры, которую видно, моно всю.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Sat
Дата 20.5.2004, 20:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Аррр! Я же сказал, что мне НЕОБХОДИМО использовать стандартный метод! Мне ничего не стоит провести все вышеописанные операции вручную, но в моей проге это не только не даст прироста скорости, а наоборот, снизит производительность.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0789 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.