Свойства материала | MetodPro.ru

Реклама на сайте

Свойства материала


Прежде, чем переходить к описанию способов задания свойств материалов, отметим различный смысл похожих параметров у источников света и материалов. В обоих случаях мы определяем цветовые характеристики. Однако у источников света эти характеристики соответствуют процентному отношению цветов в конкретной составляющей светового потока, испускаемого источником. Например, если мы определили диффузную составляющую источника как (1,1,1,0), то это означает, что в световом потоке, исходящем от источника, присутствует свет, способный диффузно отразиться от поверхности. В его состав входят красный, синий и зеленый цвета в равных пропорциях и при максимальной интенсивности. В общем, такой свет можно охарактеризовать как белый.

У материалов аналогичные характеристики определят степень отражения составляющих цветов. Так если мы зададим диффузную компоненту материала как (0.5,0,0,0), то данное определение будет означать, что данный материал диффузно отражает только красный свет и с половинной интенсивностью. А зеленый и синий цвета будут полностью поглощены поверхностью объекта. В результате освещения этого объекта рассмотренным источником поверхность объекта будет выглядеть темно-красной.

Если осветить данный объект источником с диффузной составляющей равной (0,1,1,0), то он будет выглядеть черным.

Таким образом, общая, диффузная и зеркальная составляющие отраженного поверхностью света будут рассчитываться по следующей схеме (LR*MR, LG*MG, LB*MB). Где (LR, LG, LB) – цветовые характеристики составляющей падающего света, а (MR, MG, MB) – характеристики отражения поверхностью данной составляющей.

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

Рассмотрим команду:

glMaterial[i f] [v]( face GLenum, pname GLenum, params GLtype).

Параметры материала, как и во многих других случаях, различаются для лицевой и обратной поверхностей. Параметры лицевой грани используются для точек, линий, битовых массивов и всех многоугольников, когда заблокировано двустороннее освещение, или только для лицевых, если двустороннее освещение разрешено. К каким поверхностям применяются задаваемые параметры, определяется аргументом face, который может принимать следующие значения: GL_FRONT, GL_BACK, GL_FRONT_AND_BACK.

Аргумент pname определяет, какие параметры материала будут обновляться. Для скалярной версии команды он может принимать только одно значение — GL_SHININESS, задающее степень зеркального отражения материала. Для векторной версии можно использовать следующие значения:

GL_AMBIENT - Параметр params содержит четыре целых или вещественных значения цветов RGBA, которые определяют рассеянный цвет материала. По умолчанию значение рассеянного цвета равно (0.2, 0.2, 0.2, 1.0);

GL DIFFUSE - Параметр params содержит четыре целых или вещественных значения RGBA, которые определяют цвет диффузного отражения материала. По умолчанию значение диффузного цвета равно (0.8, 0.8, 0.8,1.0); эта составляющая оказывает наибольшее влияние на результирующий цвет объекта. Обратите внимание. При смешивании цветов значения альфа компоненты всех других параметров игнорируется. Учитывается только альфа компонента, заданная для диффузного отражения.

GL SPECULAR - Параметр params содержит четыре целых или вещественных значения RGBA, которые определяют цвет зеркального отражения материала. По умолчанию значение зеркального цвета равно (0.0, 0 0, 0.0, 1.0).

GL_EMISSION - Параметр params содержит четыре целых или вещественных значения RGBA, которые определяют интенсивность излучаемого света материалом. По умолчанию значение излучаемого света равно (0.0, 0.0, 0.0, 1.0). Данное свойство используется для имитации фосфора и люминофоров, а так же для отображения источников света.

GL_SHININESS - Параметр params содержит одно целое или вещественное значение, которые определяют степень зеркального отражения материала. Можно использовать только значения от 0 до 128. По умолчанию установлено значение 0. Напомним что интенсивность зеркального отражения расчитывается на основе модели Фонга Is = Ilw(q,l)cosna и данный параметр определяет n — степень, аппроксимирующую пространственное распределение зеркально отраженного света.

GL_AMBIENT_AND_DIFFUSE - Эквивалентно двум вызовам команды с аргументами рnате, равными GL_AMBIENT и GL_DIFFUSE, и одинаковыми значениями параметра params

GL_COLOR_INDEXES - Параметр params содержит три целых или вещественных значения, определяющих индексы цветов для рассеянного, диффузного и зеркального отражения соответственно.

Из приведенного описания видно, что, задавая параметры материала, можно управлять тем, насколько блестящим будет выглядеть материал, и будет ли он самостоятельно излучать свет. Другими словами, можно определять отражающие свойства материала. Наиболее часто учитываемыми в различных моделях являются диффузный и зеркальный отраженный свет, поскольку диффузное отражение придает объекту его естественный цвет, а зеркальное определяет отражающие свойства поверхности: на очень блестящей поверхности зеркальное отражение приводит к появлению резко очерченных бликов, а для менее блестящих объектов выглядит более тускло. Таким образом, чтобы объект выглядел блестящим, необходимо сузить угол зеркального отражения, а для тусклых поверхностей наоборот расширить его.

Наряду с только что рассмотренной командой, для установки параметров материала в OpenGL реализована еще одна:

glColorMaterial(face GLenum, mode GLenum)

У этой команды аргумент face может принимать те же значения, что и в команде gIMaterial, а аргумент mode — только значения GL_AMBIENT_AND_DIFFUSE,   GL_AMBIENT,   GL_EMISSION, GL_DIFFUSE  и GL_SPECULAR. По умолчанию используется GL_AMBIENT_AND_DIFFUSE. Если разрешен режим GL_COLOR_MATERIAL (вызовом команды glEnable с соответствующим аргументом), то параметры поверхностей материала, заданные аргументами mode и face, принимают значения текущего цвета. В этом случае можно изменять параметры материала для каждой вершины, используя только команду glColor, без дополнительного вызова gIMaterial, что в некоторых случаях является более удобным.

Определение нормалей и функции закрашивания



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем