Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

617_Zabelin_L.JU._Osnovy_komp'juternoj_grafiki_

.pdf
Скачиваний:
41
Добавлен:
12.11.2022
Размер:
8.13 Mб
Скачать

Рисунок 15.1.3. –Идеализированные случаи преломления

Некоторые реальные объекты преломляют лучи гораздо более сложным образом, например, обледеневшее стекло.

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

15.2. Метод прямой трассировки лучей

Теперь рассмотрим то, как формируется изображение некоторой сцены, включающей в себя несколько пространственных объектов. Будем полагать, что из точек поверхности (объема) излучающих объектов исходят лучи света. Можно назвать такие лучи первичными – они освещают все остальное. Важным моментом является предположение, что световой луч в свободном пространстве распространяется вдоль прямой линии (хотя в специальных разделах физики изучаются также и причины возможного искривления). Но в геометрической оптике полагают, что луч света распространяется прямолинейно до тех пор, пока не встретится отражающая поверхность или граница среды преломления. Так будем полагать и мы.

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

Можно сказать, что в результате действия на объекты первичных лучей возникают вторичные лучи. Бесчисленное множество вторичных лучей уходит в свободное пространство, но некоторые из них попадают на другие объекты.

101

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

Непосредственная реализация данной лучевой модели формирования изображения представляется затруднительной. Можно попробовать построить алгоритм построения изображения указанным способом. В таком алгоритме необходимо предусмотреть перебор всех первичных лучей и определить те из них, которые попадают в объекты и в камеру. Затем выполнить перебор всех вторичных лучей, и также учесть только те, которые попадают в объекты и в камеру. И так далее. Можно назвать такой метод прямой трассировкой лучей. Как учитывать бесконечное множество лучей, идущих во все стороны? Полный перебор бесконечного числа лучей в принципе невозможен. Даже если какимто образом свести это к конечному числу операций (например, поделить всю сферу направлений на угловые секторы и оперировать уже не вековечно тонкими линиями, а секторами), все равно остается главный недостаток метода – много лишних операций, связанных с расчетом лучей, которые затем не используются. Так, во всяком случае, это представляется в настоящее время.

Коротко расчет освещения сцены методом прямой трассировки лучей можно описать следующими этапами:

от всех источников света испускаются лучи во всех направлениях;

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

часть лучей, попавшая в глаз наблюдателя, сформирует в нем изображение сцены.

Изображение формирует только малая часть лучей.

Обобщая вышесказанное, можно записать недостатки прямой трассировки лучей.

А) Проблемы с моделированием диффузного отражения и преломления. Б) Для каждой точки изображения необходимо выполнять много вычис-

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

15.3. Метод обратной трассировки лучей

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

102

Рассмотрим, как можно получить растровое изображение некоторой трехмерной сцены методом обратной трассировки. Предположим, что плоскость проецирования разбита на множество квадратиков – пикселей. Выберем центральную проекцию с центром схода на некотором расстоянии от плоскости проецирования. Проведем прямую линию из центра схода через середину квадратика (пикселя) плоскости проецирования. Это будет первичный луч обратной трассировки. Если прямая линия этого луча попадает в один или несколько объектов сцены, то выбираем ближайшую точку пересечения. Для определения цвета пикселя изображения нужно учитывать свойства объекта, а также то, какое световое излучение приходится на соответствующую точку объекта.

Если объект зеркальный (хотя бы частично), то строим вторичный луч – луч падения, считая лучом отражения предыдущий, первичный трассируемый луч. Выше мы рассматривали зеркальное отражение и получили формулы для вектора отраженного луча по заданным векторам нормали и луча падения. Но здесь нам известен вектор отраженного луча, а как найти вектор падающего луча? Для этого можно использовать ту же самую формулу зеркального отражения, но определяя необходимый вектор луча падения как отраженный луч. То есть отражение наоборот.

При практической реализации метода обратной трассировки вводят ограничения. Некоторые их них необходимы, чтобы можно было в принципе решить задачу синтеза изображения, а некоторые ограничения позволяют значительно повысить быстродействие трассировки.

Примеры таких ограничений:

1.Среди всех типов объектов выделим некоторые, которые назовем источниками света. Источники света могут только излучать свет, но не могут его отражать или преломлять. Будем рассматривать только точечные источники света.

2.Свойства отражающих поверхностей описываются суммой двух компонент – диффузной и зеркальной.

3.В свою очередь, зеркальность также описывается двумя составляющими. Первая (reflection) учитывает отражение от других объектов, не являющихся источниками света. Строится только один зеркально отраженный луч для дальнейшей трассировки. Вторая компонента (specular) означает световые блики от источников света. Для этого направляются лучи на все источники света и определяются углы, образуемые этими лучами с зеркально отраженным лучом обратной трассировки. При зеркальном отражении цвет точки поверхности определяется цветом того, что отражается. В простейшем случае зеркало не имеет собственного цвета поверхности.

4.При диффузном отражении учитываются только лучи от источников света. Лучи от зеркально отражающих поверхностей игнорируются. Если луч, направленный на данный источник света, закрывается другим объектом, значит, данная точка объекта находится в тени. При диффузном отражении цвет освещенной точки поверхности определяется собственным цветом поверхности и цветом источников света.

103

5.Для прозрачных (transparent) объектов обычно не учитывается зависимость коэффициента преломления от длины волны. Иногда прозрачность вообще моделируют без преломления, то есть направление преломленного луча совпадает с направлением падающего луча.

6.Для учета освещенности объектов светом, рассеиваемым другими объектами, вводится фоновая составляющая (ambient).

7.Для завершения трассировки вводят некоторое пороговое значение освещенности, которое уже не должно вносить вклад в результирующий цвет, либо ограничивают количество итераций.

15.4. Алгоритм обратной трассировки лучей для расчета освещения сцены

отслеживаются лучи, проходящие из глаза наблюдателя через каждый пиксель экрана в сцену;

на каждой поверхности сцены, на которую попадает луч, формируются отраженный и преломленный лучи;

каждый такой луч рекурсивно отслеживается, чтобы определить пересекаемые поверхности;

ветвление прекращается если: а) луч вышел за пределы сцены;

б) луч пришел на источник света; в) луч попал на непрозрачный диффузный рассеиватель; г) исчерпана память;

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

закраска пикселя определяется прохождением по дереву и вычислением

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

Основные характеристики обратной трассировки.

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

Б) Учет отражения, преломления, затухания.

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

Г) Большой объем вычислений.

104

Д) Интенсивность точки и глобальная освещенность вычисляются совместно, поэтому при смене точки наблюдений сцена должна быть вычислена заново.

Е) Затруднено моделирование распределенных источников света, т.к. расчет поточечный.

16.РАБОТА В 3D MAX

16.1.Interface (Пользовательская Среда)

Главное окно 3d MAX выглядит, как показано на рисунке 16.1.1.

Рисунок 16.1.1. – Главное окно 3d MAX

Если панель (например «Стандартная») не умещается по длине экрана, то для доступа к невидимым кнопкам необходимо выполнять прокрутку перетаскиванием мыши. Для входа в этот режим необходимо разместить курсор на панели в месте, свободном от кнопок и, после изменения формы курсора со «стрелки» на «руку» и нажатия левой кнопки мыши, далее просто перемещайте мышь, не отпуская нажатой кнопки [7].

105

 

Рисунок 16.1.2. – Команды строки меню

 

Таблица 16.1.1. – Основные кнопки и команды

 

 

Вид кнопки

Описание кнопки

 

Кнопки отмены и повтора. Работают не всегда однозначно.

 

Использованием лучше не злоупотреблять.

 

Кнопки для выбора объектов. Если объектов мало, можно

 

выбрать объект щелчком. Для добавления объекта к уже выде-

 

ленным нужно нажать Ctrl. Если много и разных, можно выбрать

 

из списка. Можно выбрать выделительной рамкой различной

 

формы.

 

Режим выделения рамкой. Либо полностью попадают в ок-

 

но (рамку), либо частично.

 

Инструменты перемещения, поворота и масштабирования

 

соответственно.

 

Центры трансформации. Определяют точку, относительно

 

которой будет произведен поворот или масштабирование. Это

 

может быть точка привязки, центр выбранных объектов, центр

 

системы координат.

 

 

 

Зеркальное отображение выделенных объектов. Нужно

 

указывать ось или плоскость, относительно которых совершается

 

поворот.

 

Выравнивание объектов относительно друг друга.

 

 

 

Редактор материалов.

 

 

 

Рендеринг. Либо с настройкой параметров, либо быстрый.

 

 

Панель Команд – совокупность наборов инструментов создания и редактирования объектов, настроек параметров анимации и служебных средств среды Мах. Эта панель также представлена в виде закладок по видам действий:

Создание (любых объектов)

Изменение параметров уже созданных объектов

106

Рисунок 16.1.3. – Создание и изменение объектов

Таблица 16.1.2 – Вкладка «Создание»

Вкладка «Создание»

Создание примитивов (трехмерных геометрических тел). Это куб (бокс), сфера, цилиндр, конус, тор и пр.

Создание сплайнов (плоских линий). Это линия, прямоугольник, окружность эллипс и пр.

Создание источников света.

Создание камер.

Создание вспомогательных объектов.

Создание сил. Это ветер, сила гравитации и пр.

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

Настройка Интерфейса

Видовые окна 3D MAX и управление видами [10].

Видовые Окна – основная рабочая область программы, где происходит отображение геометрии объектов сцены, материалов, текстурных карт и служебных данных. Видовые Окна могут использовать набор точек зрения наблюдателя, выбираемый из некоторого числа вариантов. Могут быть активными или пассивными.

Тор (Вид Сверху)

Front (Вид Спереди)

Left (Вид Слева)

Right (Вид Справа)

Bottom (Вид Снизу)

Back (Вид Сзади)

Perspective (Перспектива)

CameraXX (Вид из Камеры)

LightXX (Вид из Источника Света)

107

User (Вид Аксонометрический, Пользовательский)

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

1.Можно менять размер каждого окна в отдельности с помощью стрелок.

2.Можно одно окно расширить на весь экран. Команда . Повторное нажатие возвращает остальные окна.

3.Чтобы сбросить настройки окон, нужно щелкнуть ПКМ по любой разделительной полосе и выбрать Reset Layout.

4.Можно менять расположение окон и их количество. Команда Customize > Viewport Configuration. Вкладка Layout.

5.Чтобы выбрать вид в окне проекции, нужно открыть контекстное меню окна проекции, либо пользоваться горячими клавишами.

6.Чтобы перейти с вида на вид случайно не изменив объекты, нажимать надо на название проекции.

7.Чтобы перемещать вид в окне проекции, используют кнопку .

8.Чтобы вращать вид в окне проекции, используют кнопки группы или

.

9.Кнопки – масштабирование вида без изменения размера объектов.

10.Кнопка – приближение всех существующих объектов в одном окне.

11.Кнопка – Приближение всех существующих объектов во всех окнах.

Единицы Измерения. Сетка Координат. Привязки

Следующие важные настройки интерфейса Мах включают в себя выбор Единиц Измерения, установку режимов Привязок и настройку параметров Сет-

ки Координат.

Для выбора Единиц Измерения следует вызвать пункт Units Setup

(Настройка Единиц Измерения) из падающего меню Customize (Настроить). В

результате возникнет одноименное диалоговое окно с набором переключателей для выбора одной из систем:

Metric (Метрические),

US Standard (Американские),

Custom (Пользовательские),

Generic Units (Общие) (рисунок 16.1.4.) используемые по умолчанию.

108

При работе с конкретной трехмерной сценой следует выбрать требуемые единицы сразу при ее создании, однако и уже готовая сцена может быть сконвертирована из одних единиц в другие. Такая же процедура автоматически производится при объединении сцен с различными установками Единиц Изме-

рения.

Рисунок 16.1.4.– Системные единицы (System unit)

Рабочее поле Видовых Окон для удобства ориентации и отсчетов размеров при создании и редактировании объектов может быть размечено Сеткой Координат – взаимно перпендикулярными служебными линиями. Линии сетки, которые подразделяются на основные и вспомогательные, отстоят друг от друга на расстоянии Grid Spacing (Шага Сетки), задаваемого в закладке Home Grid

(Сетка) диалогового окна Grid and Snap Setting (Установки Сетки и Привязок),

вызываемого через одноименный пункт падающего меню Customize (Настро-

ить).

Сетка может быть включена или выключена командой Show Home Grid (Показать Сетку Координат), действующую по правилу переключателя и вызываемую из падающего меню Views (Виды) и подменю Grids (Сетки). Одно из главных назначений Сетки состоит в использовании ее линий и их пересечений (узлов) для применения режима Привязки.

Snaps (Привязки) являются особым режимом создания и редактирования сцены, при котором произвольное перемещение курсора заменяется «привязан-

109

ным», то есть определенные элементы сцены (вершины сплайнов и каркасных объектов, узлы Сетки, опорные точки и т.п.) могут быть использованы как точные ориентиры для указания. В режиме активизированной Привязки курсор как бы притягивается к характерному ближайшему элементу сцены, включенному в список типов, задаваемый в упоминаемом ранее диалоговом окне Grid and Snap

Setting (Установки Сетки и Привязок) в закладке Snaps (Привязки).

3D / 2.5D / 2D Snap (Трехмерная / Полутрехмерная / Двухмерная Привяз-

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

Angle Snap (Угловая Привязка) режим Привязки, влияющий на транс-

формацию Rotate (Поворота). В результате его включения все операции поворота осуществляются с заданным шагом. Величина шага устанавливается в диалоговом окне Grid and Snap Setting (Установки Сетки и Привязок) в закладке Options (Настройки) счетчиком Angle (deg) (Угол (граду-

сы)).

Percent Snap (Процентная Привязка) определяет величину приращений в любых операциях, связанных с изменением процентов (таких как трансформация масштабирования). Установка процентного шага производится в том же диалоговом окне счетчиком Percent (Процент).

Spinner Snap (Привязка Счетчиков) – настраивает величину изменений счетчиков при их прокрутке мышью.

Для задания этого параметра необходимо вызвать диалоговое окно

Preference Setting (Настройка Параметров), и в закладке General (Об-

щие) установить требуемое значение счетчиком Spinner Snap (Привязка Счетчиков). Количество значащих цифр дробной части числа задается счетчиком Spinner Precision (Точность Счетчиков).

Отображение объектов в Видовых Окнах

При создании и редактировании геометрии сцены, при отладке материалов и настройке параметров анимации необходимо иметь механизм управления отображением объектов сцены в Видовых Окнах. Особенно это становится актуально при внесении изменений в насыщенные, сложные трехмерные сцены. Самый простой способ уменьшить системные издержки – это скрыть или «заморозить» неиспользуемые в данный момент объекты (мы разберем эти команды при рассмотрении режимов выбора объектов). Однако есть возможность управлять отрисовкой и видимой частью сцены. Поэтому рассмотрим режимы отображения объектов и способы его оптимизации подробнее [7].

Для выбора режима отображения любого Видового Окна необходимо выполнить правый щелчок на его названии и указать один из пунктов верхней группы контекстного меню:

110