0 / 0 / 1
Регистрация: 09.11.2008
Сообщений: 87
|
||||||
1 | ||||||
OpenGL и материалы20.04.2012, 16:18. Показов 4571. Ответов 13
Метки нет Все метки)
(
Здравствуйте. Есть программа:
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
20.04.2012, 16:18 | |
Ответы с готовыми решениями:
13
Perl + OpenGL Как избавиться от повторного подключения библиотеки OpenGL в модулях
Создаю игру с научным уколоном на C++/opengl. Как подключить openGL и добиться кроссплатформенности Чем отличаются готовые сборки Qt под Win + MSVC с OpenGL и без OpenGL? |
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
|
|
20.04.2012, 16:24 | 2 |
воспользуйтесь glColor4f. Четвертым параметром идет прозрачность.
0
|
![]() 1671 / 1043 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
20.04.2012, 17:54 | 3 |
У стекла хорошая отражательная способность (надо установить белый цвет реакции на Specular и высокое значение экспоненты блеска) и одновременно слабая реакция на диффузное освещение. Разумеется, надо ещё и установить параметры источника света и вообще настроить работу освещения. Чтобы блеск выглядел нормально, надо пользоваться объектами, составленными из достаточно мелких треугольников.
1
|
0 / 0 / 1
Регистрация: 09.11.2008
Сообщений: 87
|
||||||
20.04.2012, 22:01 [ТС] | 4 | |||||
Добавил я источник света, почему объекты не сохраняют свои цвета? И как правильно настроить параметры материалов?
0
|
![]() 1671 / 1043 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
21.04.2012, 10:08 | 5 |
Во-первых, источнику света надо настроить не только Diffuse, но и Specular. Не помешает настроить и глобальный Ambient. Во-вторых, надо пользоваться уже не glColor, а glMaterial, для чего попутно включить GL_LIGHTING и выключить GL_COLOR_MATERIAL. Основные компоненты материала настраиваются так же, как и цвет (заметим, в массиве надо указывать 4 компонента, не 3), но каждый имеет свою роль: Ambient - интенсивность "захвата" фонового освещения, Diffuse - обычное рассеянное освещение, Specular - цвет бликов. Кроме того, материалу задаётся экспонента Shininess exponent, которая отвечает за свойства "зеркальности" - чем больше экспонента, тем более узкие блики (что соответствует гладким зеркальным поверхностям).
0
|
0 / 0 / 1
Регистрация: 09.11.2008
Сообщений: 87
|
||||||
22.04.2012, 18:25 [ТС] | 6 | |||||
Ну, я что-то попытался настроить. Добавил параметры материала. Но я не совсем понял что значит
0
|
![]() 1671 / 1043 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
23.04.2012, 18:44 | 7 |
Это эквивалентно заданию позиции источника света в координатах (100, 200, 200). Советую внимательнее изучить смысл однородных координат и способы задания параллельных и точечных источников света.
Это ярко-жёлтый цвет, светить лучше белым. Надо задать источнику света ещё и бликовую яркость, GL_SPECULAR. И тоже белым цветом. Эта компонента освещения считается отдельно. По умолчанию эта компонента в источниках света загнана в ноль. В этом нет необходимости, по умолчанию материалы сами не светятся. Эта фигура состоит из нескольких треугольников и будет выглядеть очень так себе. Рекомендую составить фигуру хотя бы из нескольких сотен треугольников (а лучше - больше). Совсем выключать фоновое освещение не очень хорошо, так неосвещённые участки скатываются в непроглядную черноту. Лучше оставить некоторую небольшую интенсивность.
0
|
0 / 0 / 1
Регистрация: 09.11.2008
Сообщений: 87
|
||||||
24.04.2012, 22:43 [ТС] | 8 | |||||
0
|
![]() 1671 / 1043 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
24.04.2012, 22:51 | 9 |
С прозрачностью - вопрос отдельный, а для натуральных бликов надо или составлять фигуру из большого количества мелких треугольников (GL_TRIANGLES, GL_TRIANGLE_STRIP), либо вообще на шейдеры переходить. Первое намного проще.
Например, у нас есть куб. Самое простое - представить каждую его грань в виде квадрата и разделить по диагонали на два треугольника. Но если мы хотим бликов, то надо разбить каждую грань на сеточку из квадратов (скажем, 20*20) и уже каждый такой маленький квадратик представить как два мелких треугольничка. Это можно выполнить циклами. При этом надо задавать в каждой вершине нормаль (glNormal3f) как перпендикуляр к грани куба, причём единичной длины. На таком кубике блеск будет уже неплохо смотреться. Ну а чтобы совсем хорошо - рисовать шейдеры, рассчитывать в них попиксельное освещение по Фонгу и всё такое...
0
|
0 / 0 / 1
Регистрация: 09.11.2008
Сообщений: 87
|
|
27.04.2012, 20:42 [ТС] | 10 |
Может, можете показать какой-то пример? Я как-то не понимаю, как это все реализовать?
0
|
![]() 1671 / 1043 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
||||||
28.04.2012, 17:23 | 11 | |||||
Ну вот, например, процедурное рисование кубика, каждая грань которого поделена на энное число квадратиков.
0
|
0 / 0 / 1
Регистрация: 09.11.2008
Сообщений: 87
|
|
08.05.2012, 22:13 [ТС] | 12 |
Все равно не понимаю как нарисовать многоугольники таким способом и как сделать это все похожем на стекло
![]()
0
|
![]() 1671 / 1043 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
09.05.2012, 12:12 | 13 |
Ну я уж и не знаю, как ещё доступней объяснить... Разбить многоугольник на большое количество треугольников, что может быть непонятного-то?
А это уже зависит от того, какая именно степень похожести требуется. Характеристики освещения подобрать - это одно дело, это несложно. Прозрачность уже похитрее делается, рефракция требует уже серьёзных усилий, а уж какие-нибудь эффекты высшей категории вроде caustic - сам понимаешь...
0
|
0 / 0 / 1
Регистрация: 09.11.2008
Сообщений: 87
|
||||||
09.05.2012, 18:23 [ТС] | 14 | |||||
Ну похожесть мне нужна довольно примитивное, вот я немного поигрался, и в принципе добился того чего хотел, добавить бы немного глянца, может немного поможете?
0
|
09.05.2012, 18:23 | |
Помогаю со студенческими работами здесь
14
OpenGL Ваша текущая конфигурация рабочего стола не поддерживает OpenGL Аппаратное ускорение. (2 главы перевода книги доступно) OpenGL Programming Guide, Version 4.3, 8th Edition - OpenGL Ошибки при подключение opengl, немного не связанные с opengl Не загружается текстура в OpenGL (OpenGL + Классы) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |