Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Свет, материя, её свойства, прозрачность...


Автор: gepard 16.3.2004, 10:34
Свет, материя, её свойства, прозрачность, отражение…
В этой статье я попытался обобщить физические сведения о материалах и свете. Под словом материал я подразумеваю поверхность с особыми свойствами.
Надо знать, что все предметы окружающего нас пространства либо отражают свет, либо излучают его, а некоторые и то и другое одновременно. Так же необходимо знать, что то, что мы видим в данный момент основывается на сотнях различных операций со светом(отражение, преломление, искажение, поглощение спектра). Как раз об этих свойствах материи мы сейчас и поговорим.
Основы световой физики и прозрачность.

Наверное, физику света будет проще всего продемонстрировать на краске. Что такое красная краска? Многие убеждены, что это жидкость красного света, которая размазывается по белому листу бумаги. Они конечно же ошибаются. Краска – это действительно жидкость(кто бы мог подумать?), но цвет её определятся непоглощенными цветами спектра света, попавшего в краску. Разберёмся подробнее: спектр – по сути, луч белого света(белый цвет – это когда ни один цвет спектра не поглощён(цвета спектра – цвета радуги)). Итак, спектр попал в красную краску, соответственно все цветовые лучи поглотились, а красный луч преломился, отразился и попал нам в глаз. По этому нам и кажется, что красная краска – красная. Теперь стоит разобраться с прозрачностью. Что же это такое с физического взгляда? Если материал прозрачный, значит он пропускает лучи света через себя(в большинстве случаев преломляя его(например стекло) или рассеивая(например, посмотрите на свет сквозь шторину)).

Зеркальное отражение.

Что есть отражение? Рассмотрим отражение в зеркале – это когда лучи разложившихся спектров, отражённых от различных предметов, попадают на поверхность зеркала, а оно в свою очередь отражает нам всё это в глаз. Надо заметить, что зеркало, при попадании на него этих самых отражённых разложившихся спектров часть световой энергии тоже поглощает(т.е. ещё немного поглощает цвета разложившихся спектров).

Диффузное отражение.

Диффузное отражение это, когда свет, падая на поверхность, рассеивается относительно равномерно в различных направлениях. Такое отражение характерно, например, для стен зданий(позже я упомяну с чем это связано).

Преломление.

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

Общие сведения об источниках света.

Как мы уже упомянули, все предметы либо излучают(Солнце), либо отражают свет(Луна), но есть и такие, которые одновременно отражают и излучают свет(обычная лампочка). Среди источников света, осуществляемых программно можно обозначить три основных типа: фоновый, точечный и так называемый прожектор.

Фоновый.

Если понаблюдать за организацией освещения, то вы заметите, что в большей части домов, учебных заведений и т.п. помещениях освещение равномерно. Люди пытаются устанавливать источники света, так чтобы освещение было мягким и приятным. Допустим, что нам надо равномерно осветить большую комнату. Как это реализовать? Можно сделать большое количество различных источников света, но, в виду человеческой несовершенности, мы не сможем разместить источники так, чтобы всё было освещено одинаково мягко. Именно для таких освещений и требуется фоновое освещение. По сути – это источник света, который задаёт яркость каждого пикселя поверхности равной какому-то определённому значению.

Точечный.

Точечный источник света, в идеале – источник света, который распространяет свет во всех направлениях с одинаковой интенсивностью. Освещённость некоторой точки поверхности светом от этого источника обратно пропорционально квадрату расстояния между этой точкой и источником света. Этот тип источника света является самым распространённым в играх, ввиду своей простоты. Но не стоит забывать, что: “Просто не значит лучше.”. Этот тип освещения имеет существенный недостаток – изображение сцены, сформированное с учётом только точечных источников, получается либо очень ярким, либо слишком тёмным.

Прожектор.

Принцип работы источника света типа прожектор прост и понятен даже пятикласснику. Достаточно представить фонарик и то, как распространяется свет от его лампочки.

Освещение по Фонгу.

Естественно, что если бы мы задали компьютеру на вычисление источники света, в которых был бы реализован алгоритм освещения такой же, как и в нашей жизни, то ни один компьютер не сумел бы просчитать простейших поверхностей, с учётом их рельефа, типа материала(даже, если бы таковых было ограниченное количество, а в природе их огромное множество) и остальных параметров объектов. Для того, чтобы упростить все вычисления начали создавать различные модели освещения, одна из них – Модель отражения Фонга.
Практика использования этой модели во множестве графических систем доказала её эффективность и достаточно близкое приближение к реальным физическим процессам, что позволяет формировать полутоновые изображения высокого качества при самых различных условиях освещения и свойствах материалов.
Для вычисления цвета произвольной точки поверхности используется четыре вектора, берущие начало в этой точке:
1)Нормаль к поверхности в рассматриваемой точки. Надо сказать, что нормаль – линия, берущая начало из середины полигона под углом в 90 градусов, она указывает в каком направлении у полигона лицевая часть, какое направление верхнее(это требуется для корректного освещения).
2)Вектор направленный от рассматриваемой точки к наблюдателю.
3)Вектор, задающий направление от рассматриваемой точки к произвольной точке источника распределённого света.
4)Направление идеального отражения луча, падающего на поверхность вдоль вектора 2).
Сейчас стоит отметить, что для имитации эффектов, которые по самой своей природе носят глобальный характер, в модели Фонга пытаются использовать локальные модели. Т.е. при расчёте цвета какой-либо точки поверхности, модель Фонга учитывает параметры всех трёх типов источников света, естественно, если таковые имеют воздействие на цвет рассматриваемой точки поверхности. Таким образом освещённость различных точек поверхности будет вычисляться по матрице размеров 3х3:


L(ira) L(iga) L(iba)
L(i)= L(ird) L(igd) L(ibd)
L(irs) L(igs) L(ibs)


Где, элементы первой строки – интенсивность фонового света, соответственно для красного, зелёного и синего, поступающ. от источника i; элементы второй строки – цветовые компоненты интенсивности диффузного света; ну и третей – зеркального.

Теперь, наверное, стоит поговорить об отражениях различных типов света.
Отражение фонового света.

По сути, отражение этого света можно опустить, дабы сохранить драгоценные нано-секунды по прохождению алгоритма программой. Фоновый свет используется для создания мягкого освещения. Но, если вы всё-таки решили делать отражение фонового света, тогда вам надо помнить, что частично энергия этого света поглощается материалом, а частично – отражается. Отражение характеризуется коэффициентом R=k, где 0<=k<=1.

Диффузное отражение.

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

Зеркальное отражение.

Именно благодаря этому типу отражения мы с вами можем видеть блестящие предметы. Если бы не было этого типа отражения, то все предметы были монотонные, матовые. Этот тип отражения характерен для гладких поверхностей. Чем глаже поверхность, тем меньше угол преломления лучей, попадающих на поверхность, а, соответственно, тем меньше рассеивание света, а, следовательно, всё большая часть лучей, отражаясь, попадает нам в глаз. Отсюда и появляется блеск различных предметов.
Фонг предложил приближённую модель, в которой учёт зеркального отражения очень незначительно увеличивает объём вычислений по сравнению с моделью, учитывающей только диффузное отражение. Вся фишка заключается в вводе нового аддитивного члена, который указывает на степень шероховатости поверхности, таким образом экономя время на обработку двух способов отражения, вычисляется только один, хотя и с небольшое нагрузкой, плюс дополнительный параметр.

Автор: gepard 16.3.2004, 12:12
Ну вы бы хоть отзывы ставляли.

Автор: bagira 16.3.2004, 12:26
adv/idea.gif Gepard, очень хорошая статья! С нетерпением жду следующих! adv/72.gif

Автор: gepard 17.3.2004, 17:41
Мда, не велика публика.sad.gif
Ну, буду писать хотя бы для тебя.

Автор: Vit 17.3.2004, 17:51
Интересно!

Автор: gepard 17.3.2004, 18:00
Ну вот уже два читателя. Аудитория стекается в одну канаву smile.gif

Автор: Vit 17.3.2004, 19:31
Читали статью многие, просто не все оставляют заметки.

М
 
gepard, сделай чуть по-короче свою подпись, за ней обсуждения форума не видно, да и трафик по пусту гоняет, не все сидят на гигабитном канале...


Автор: p0s0l 17.3.2004, 22:08
gepard, написано доступно и по-русски smile.gif. Хотя очень похожее я читал в руководстве толи по OpenGL, толи D3D или 3D max?
Только хотелось бы видеть практическое применение, например, освещение по Фонгу - расписал бы формулы, может даже сбацал бы прогу для рисования какого-нибудь кубика с различными освещениями/отражениями...

Автор: December 17.3.2004, 22:56
Цитата
Только хотелось бы видеть практическое применение
А мне и так интересно. Я, скорее всего, этим профессионально заниматься не буду, но для общего развития - занимательно! Будет, что детям рассказать.

Автор: Kesh 17.3.2004, 23:00
Спасибо, статья хорошая, но про текстурирование мне больше понравилась... Почему не знаю...

Автор: gepard 18.3.2004, 09:48
Цитата
отя очень похожее я читал в руководстве толи по OpenGL, толи D3D или 3D max?

Ну не знаю. Это как сказать, что есть только один человек написавший программу Hello World, а все остальные(особенно новички) её списали. ИМХО - законы физики едины во всей вселенной. Хотя, а что вы скажите о чёрных дырах? Там-то законы другие из-за действия огромного давления.

Автор: Guest 18.3.2004, 13:39
Цитата
Хотя, а что вы скажите о чёрных дырах? Там-то законы другие из-за действия огромного давления.

Там законы не другие, просто они изменены как раз под действием можных магнитных полей и давления ... или чего тв них там... но это уже отдельный топик...

Автор: gepard 18.3.2004, 15:03
Цитата
Там законы не другие, просто они изменены

А "изменённые" это разве не "другие"? wow.gif

Автор: chipset 22.6.2004, 19:52
Обалдеть! Статья гораздо лучше чем про текстурирование имхо... biggrin.gif biggrin.gif biggrin.gif biggrin.gif

Автор: LSD 22.6.2004, 20:16
Продолжай одназаначна!!!
Сам я читать руководства по OpenGL, D3D, 3D max и т.д. не сяду, а вот твои статьи с удовольствием почитаю. smile.gif smile.gif

Автор: gepard 23.6.2004, 04:37
Ну раз такие дела, то буду писать.

Автор: IZ@TOP 23.6.2004, 16:36
Ага, мне тоже для общего развития пригодится, будет что девушке своей рассказать tounge.gif

PS Пиши, пиши. Очень хорошо.

Автор: Albinos_x 23.6.2004, 19:26
Полезная инфа, но было бы не плохо если бы был примерчик использования описанного.


IZ@TOP
У неё уши не завернутся???

Автор: neutrino 24.6.2004, 01:40
Слушай, есть вопрос: как можно узнать угол преломления при переходе из одной среды в другую, если есть плотности двух сред, коэффициент прозрачности... Что еще нужно? температура ...

Автор: LSD 24.6.2004, 20:28
Насколько я помню физику нужны коэффициенты преломления двух сред отностительно ваккума и все.
Добавлено @ 20:29
Относительный показатель преломления двух сред равен отношению их абсолютных показателей преломления:
n = n2 / n1.

Автор: neutrino 25.6.2004, 00:07
прозрачный сосуд с водородом - одна среда, вторая ваккуум.

Автор: LSD 25.6.2004, 22:32
Тут будет преломление 2 раза: первый водород-стекло (или из чего там сосуд), второй стекло-ваккум. коэффициент преломления это отношение синусов угла падения к синусу угла преломления. Все а дальше надо смотреть в справочниках, особенно на стекло у него показатели преломления могут вариироваться в огромных пределах.

Автор: batigoal 14.3.2005, 13:39
gepard
Спасибо, было интересно!

Автор: gepard 15.3.2005, 11:39
Lamer George
К вашим услугам smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)