Что можно почитать про цвета? Ambient, Diffuse, Specular, Emission ...
Что они все означают, и какие есть ещё?
Я только про Emission понял, что это значит светится изнутри. А остальные чего? И зачем вообще столько напридумывали?
Цитата OpenGL Red Book (русская версия):
5.2.1 Фоновый (ambient), диффузный (diffuse), зеркальный (specular) и исходящий свет (emission)
Фоновоее излучение – это свет, который настолько распределен средой (предметами, стенами и так далее), что его направление определить невозможно – кажется, что он исходит отовсюду. Лампа дневного света имеет большой фоновый компонент, поскольку большая часть света, достигающего вашего глаза, сначала отражается от множества поверхностей. Уличный фонарь имеет маленький фоновый компонент: большая часть его света идет в одном направлении, кроме того, поскольку он находится на улице, очень небольшая часть света попадает вам в глаз после того, как отразится от других объектов. Когда фоновый свет падает на поверхность, он одинаково распределяется во всех направлениях.
Диффузный компонент – это свет, идущий из одного направления, таким образом, он выглядит ярче, если падает на поверхность под прямым углом, и выглядит тусклым, если касается ее всего лишь вскользь. Однако, когда он падает на поверхность, он распределяется одинаково во всех направлениях, то есть его яркость одинакова вне зависимости от того, с какой стороны вы смотрите на поверхность. Вероятно, любой свет, исходящий из определенного направления или позиции, имеет диффузный компонент.
Зеркальный свет исходит из определенного направления и отражается от поверхности в определенном направлении. При отражении хорошо сфокусированного лазерного луча от качественного зеркала происходит почти 100 процентное зеркальное отражение. Блестящий метал или пластик имеет высокий зеркальный компонент, а кусок ковра или плюшевая игрушка – нет. Вы можете думать о зеркальности как о том, насколько блестящим выглядит материал.
Помимо фонового, диффузного и зеркального цветов, материалы могут также иметь исходящий цвет, имитирующий свет, исходящий от самого объекта. В модели освещения OpenGL исходящий свет поверхности добавляет объекту интенсивности, но на него не влияют никакие источники света, и он не производит дополнительного света для сцены в целом.
Хотя источник света излучает единое распределение частот, фоновый, диффузный и зеркальный компоненты могут быть различны. Например, если в вашей комнате красные стены и белый свет, то этот свет, отражаясь от стен будет скорее красным, чем белым (несмотря на то, что падающий на стену свет -- белый). OpenGL позволяет устанавливать значения красного, зеленого и синего независимо для каждого компонента света.
deni
Честно сказать, не понял разницу между диффузным и зеркальным. Оба отражённые. Это не одно и тоже случайно? Или в чём разница?
Ау !
Петька
Думай проще. Дифузный - это цвет предмета. А Зеркальный - цвет блика на нём. Но если ты любопытный могу всё подробнее объяснить.
Black Angel
> Дифузный - это цвет предмета. А Зеркальный - цвет блика на нём.
Цвет придемта - это эмбиент.
> Но если ты любопытный могу всё подробнее объяснить.
А ты уверен, что можешь точно объяснить?
Петька
Амбиент - это цвет предмета, освещённого только рассеяным светом.
А объяснить могу достаточно подробно, до физических свойств материалов. Кстати такой параметр как амбиент чисто виртуальный, в реальной физике ему нет места.
Black Angel
> Амбиент - это цвет предмета, освещённого только рассеяным светом.
А какого цвета при этом свет?
И что значит рассеянным? Свет и есть свет.
Петька
точные формулы применения света в моделях освещения OGL или D3D можно найтив их документации в том же MSDN.
если вкратце.
Фоновый (ambient) просто складывается с цветами всех точек на сцене
диффузный (diffuse) тоже складывается, но его интенсивность уменьшается на коэффициент угла падения на триангл (а на самом деле - на нормаль в точке). если направление от источника света смотрит прямо на нормлаль - коэффициент = 1, если перпендикулярно - коэффициент = 0. из-за этого освещенный таким способом шар имеет мягкое освещение
зеркальный (specular) - с ним всё сложнее. справедливо сказанное для диффузного, но кроме всего прочего учитывается направление взгляда игрока. луч света как бы отражают от точки и проверяют - если отраженный луч попадает в камеру, то коэффициент = 1, если отклоняется от неё более чем на допустимый угол (задается в опциях источника освещения), то коэффициент = 0, и интерполированноезначение в средних случаях. таким способом имитируют блики на поверхностях.
=A=L=X=
Ну ты и объяснил :)
Петька
>> Амбиент - это цвет предмета, освещённого только рассеяным светом.
>А какого цвета при этом свет?
Какого задашь, такого и будет.
>И что значит рассеянным?
Значит равномерно светит со всех сторон. Ambient light - не признаёшь?
>Свет и есть свет.
В КГА свет свету рознь.
Петька> не понял разницу между диффузным и зеркальным
Зеркальный работает по правилам геометрической оптики. Отражение, преломление, поглощение, граница сред с разной плотностью.
Диффузный вариант - интегральный. Если поверхность шершавая, геометрическая оптика требует рассматриваить поверхность каждого бугорка и считать преломление-отражение. Однако, если бугоркастость поверхности регулярная и нам необходим суммарный результат, появляется понятие диффузной составяляющей оптических свойств материала. Можно считать, что мы заранее проинтегрировали множество зеркальных лучей.
=A=L=X=
> зеркальный (specular) - с ним всё сложнее. справедливо сказанное для диффузного, но кроме всего прочего учитывается направление взгляда игрока. луч света как бы отражают от точки и проверяют - если отраженный луч попадает в камеру, то коэффициент = 1,
А если не попадает в камеру, то его не видно, и чему равен коэффициент - не важно. Иными словами, он всегда равен 1, верно?
Zab
> Можно считать, что мы заранее проинтегрировали множество зеркальных лучей.
А попроще можно?
И почему если объект покрашен в один цвет, то у бугорков должен быть какой то другой цвет? Вы в реальной жизни такое видели, где нибудь? Как это вообще?
У объекта один цвет, а не четыри.
Краска которой его красят - у неё какой цвет?
Вот это превый. А второй цвет - это цвет лампочки которая светит. Он где задаётся?
А третий и четвёртый - я вообще не понимаю.
Сами то вы, кстати, как программируете?
Петька
> А если не попадает в камеру, то его не
> видно, и чему равен коэффициент - не важно.
Коэффициент как раз равен нулю. :) Это и значит что "его не видно".
> Иными словами, он всегда равен 1, верно?
Нет, неверно. Кроме 0 и 1 коэффициент спекуляра может принимать промежуточные значения. У спекулярной модели освещения есть один дополнительный параметр - угол (вернее его какой то там приведенный экспоненциальный коэффициент. в OGL меняется от 0 до 32.) между камерой и отраженным лучем при котором спекулярный цвет еще видно.
каков физический смысл спекулярного освещения? в реальной жизни это то что мы называем бликами на поверхностях.
блики появляются там где лучи света от источника отражаются от поверхности так под углом отражения = углу падения и попадают нам в глаза. у таких лучей цвет и интенсивность как правило сильно отличаются от остального (диффузного) освещения. диффузное освещение в свою очередь это освещение в свою очередь это те лучи света которые отражаются под углом отражение сильно отличающимся от угла падения. в основном мы видим именно эти лучи.
Петька
> И почему если объект покрашен в один цвет, то у бугорков
> должен быть какой то другой цвет? Вы в реальной жизни
> такое видели, где нибудь? Как это вообще?
Да в реальной жизни мы это постоянно видим и называем бликами. Вспомни как выглядит машина под солнечным светом - на красной феррари к примеру отчетливо видны ярко-белые пятна бликов от солнца. Кстати способность к "бликам" их величине и отличию в цвете от диффузной составляющей - это свойства материала. У разных материалов разные способности. Например зеркало имеет диффузную составляющую = 0, весь отражаемый свет у него идет как спекулар. Нередки материалы у которых наоборот практически отсутствует спекулярная составляющая.
> У объекта один цвет, а не четыри.
> Краска которой его красят - у неё какой цвет?
Во во. Оптика как раз выделяет как минимум 2 цвета у одного и того же материала/краски - диффузный и спекулярный. В OGL для удобства введено еще 2. Эмиссия - это просто читерство для получения эффекта самосвечения.
> А второй цвет - это цвет лампочки которая светит. Он где задаётся?
В параметрах источника цвета.
Нужно понимать какие объекты учавствуют в модели освещения современных 3D API (в D3D ситуация аналогичная):
1. источник света. задается своим цветом и интенсивностью (дальностью освещения). направленные источники так же имеют параметр-направления и конуса освещения.
2. полигоны. очень важно правильно задать нормали в каждой точке для просчета освещения.
3. материал из которых как бы "сделаны" полигоны. в материале задаются 4 вышеупомянутых цвета и 1 угловой коэффициент для спекулярной модели освещения.
Петька
4-ре параметра материала заданы потому что _реальное_ освещение сделать нельзя, а с ними можно сделать хоть какое-то подобие.
если тебе интересно как их изменение влияет на результат напиши простенькую демку.
знаешь пословицу: "лучше один раз увидеть, чем сто раз услышать"?
вот она как раз про твой случай, на словах не объяснишь.
Тема в архиве.