на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Построение реалистических изображений поверхности океана с 3-х мерной лодки, которая плавает по поверхности океана
p align="left">На рис. 2.4 изображена функция . Видно, что чем больше коэффициент p, тем меньше по размерам будет блик и тем ближе визуально будет материал к идеальному зеркалу.

2.2.3 Стохастический суперсэмплинг

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

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

Этот метод получил название суперсэмплинга (supersampling - название пришло из области обработки сигналов и означает повышение частоты дискретизации для получения более качественных результатов). На рис. 2.5 видно, что через каждый пиксел пропускается 9 лучей, что означает увеличение времени вычисления в 9 раз.

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

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

Интересен тот факт, что данный метод дает положительные результаты даже при использовании его при пропускании только одного луча на пиксел - в этом случае «лестничный» эффект все равно устраняется. Хотя при внимательном рассмотрении видны неровности на границах перехода цветов, но зрительно изображение выглядит качественней, чем при построении без использования этого метода.

2.2.4 Шум Перлина

Данный алгоритм используется для моделирования неровностей водной п
оверхности. Шум Перлина генерирует процедурную фактуру, которая затем накладывается на поверхность.

Функция шума

Рис 2.7

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

Интерполирование функции

Рис 2.8

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

Для водной поверхности нам нужна 2х мерная функция шума /9/:

(2.6)

Для интерполяции используем косинусную интерполяцию:

, (2.7)

где a,b - два параметра, между которыми мы производим интерполяцию

x - число, от которого зависит результат, если x=0 то возвращается

a, если x=1, то возвращается b

2.3 Система координат

В программе принята следующая система координат: ось (ох) показывает на север, ось (oy) направлена вертикально вверх, ось (oz) направлена на запад.

2.4 Объекты сцены

2.4.1 Солнце

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

Определение единичного направляющего вектора углового положения Солнца происходит на основе даты, времени, широты и угла между осью Х и направлением на юг. Учитывая, что Земля совершает сложное движение, которое складывается из вращательного движения вокруг своей оси и движения вокруг Солнца по почти круговой орбите, можно получить следующие соотношения для координат искомого вектора /7/:

(2.8)

где , здесь ,

, n - число дней, прошедших с 21 марта,

, здесь k - число часов, прошедших с 700,

д - широта,

и - угол между осью Х и направлением на юг.

Для определения максимальной интенсивности солнца используется следующая формула:

(2.9)

где y -ордината единичного направляющего вектора положения солнца.

Данная формула получена чисто императивно.

2.4.2 Лодка

Параметры лодки

Рис. 2.9

Лодка задается следующими параметрами: длина, ширина, высота борта, длина носа, высота мачты, ширина и высота паруса (см. рис. 2.9).

Мачта лодки имеет квадратное сечение, с длиной стороны равной длины лодки. Мачта смещена от середины лодки назад на половину ширины паруса.

Перемещение лодки определяется по следующей формуле:

(2.10)

где - скорость ветра

t - интервал времени между кадрами

- угол между направлением лодки и направлением ветра.

Если ветер дует в другую сторону <0, то лодка стоит и не двигается.

2.4.3 Водная поверхность

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

2.5 Базовые трехмерные объекты

2.5.1 Сфера

Сфера является одной из наиболее просто аналитически задаваемых объектов. В программе для ее определения хранятся координаты ее центра и длина радиуса.

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

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

Нахождение точки пересечения луча со сферой

Рис. 2.10

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

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

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

Нормаль к поверхности в любой точке сферы вычисляется тривиальным образом как вектор, соединяющий центр сферы с точкой на поверхности.

2.5.2 Треугольник

Треугольник
является примитивом, посредством которого могут быть составлены практически любые многогранные тела. Он задается точкой - одной из вершин треугольника - и двумя векторами и , определяющими ориентацию и длины его сторон (см. рис. 2.11).

Треугольник

Рис.2.11 Пересечение луча с плоскостью

Рис. 2.12

Поиск пересечения луча с треугольником состоит из двух этапов: поиск пересечения луча с плоскостью треугольника и определение нахождения точки внутри него.

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

Таким образом, расстояние от источника луча до точки пересечения равно:

(2.11)

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

Локальная система координат

Рис. 2.12 Введем локальную систему координат , в которой оси направлены вдоль сторон, причем в пределах треугольника координаты меняются на величину в диапазоне от 0 до 1 и лежат в заштрихованной области (см. рис. 2.12)

Для этого введем дополнительные переменные:

(2.12)

(2.13)

(2.14)

(2.15)

(2.16)

На основании формул (2.13) и (2.14) введем значение координат в точке плоскости треугольника следующим образом:

(2.17)

где - радиус-вектор точки на плоскости, содержащей треугольник. Тогда координаты в исходной точке будут равны:

(2.18)

где - радиус-вектор точки .

В силу того, что радиус-вектор точки внутри треугольника может быть представлен в виде суммы радиус-вектора точки и линейной комбинации векторов и , можем записать разницу координат между произвольной точкой внутри треугольника и исходной точкой :

Окончательно:

(2.19)

Аналогичным образом можно получить:

(2.20)

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

(2.21)

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

Окончательно имеем формулы для относительных локальных координат:

(2.22)

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

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

2.6 Текстура и фактура

2.6.1 Общие сведения

В данной программе предусмотрено наложение на трехмерные объекты текстур и имитация шероховатостей поверхностей. Для этого предусмотрена загрузка битовых карт формата *.bmp из внешних файлов.

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

2.6.2 Наложение текстуры на треугольник

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

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

(2.23)

где - радиус-вектор точки .

2.6.3 Фактура

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

Фактически метод фактурирования заключается в изменении направления нормали в точке на определенное значение, которое позволяет зрительно исказить поверхность, направив в другую сторону отражение, преломление и блики. Изначальный алгоритм фактурирования предусматривал влияние на результирующую нормаль источника света, однако в данной программе сделано приближение, давшее результат, близкий к реальности: в нормаль вносятся изменения только по осям (ox) и (oz) на величины, не зависящие от источника света.

Для нахождения этих величин сначала необходимо установить соответствие между точкой на поверхности объекта и точкой на битовой карте высот, это осуществляется по алгоритмам, описанным в разделах 2.5.2 - 2.5.3. Затем определяются интенсивности пикселов карты высот, соседних с полученным: , , , . Теперь можно определить значения смещений по осям:

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.