Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Телков всё вместе.doc
Скачиваний:
31
Добавлен:
17.04.2019
Размер:
4.94 Mб
Скачать

19. Формирование изображений трехмерного пространства методом отсечения лучей.

Алгоритм отсечения лучей (Ray Casting) - простейшим вариантом алг-в обеспечивающих виртуальную реальность. Наиболее известно использование этого алгоритма в качестве графического ядра первых 3D игровых программ. Идея АОЛ: при построении каждого очередного кадра по направлению взгляда наблюдателя в этом пространстве отсекается сектор лучей (600-900). Все остальные лучи, выходящие за поле просмотра, не рассматриваются, то есть отсекаются. В алгоритме не учитываются источники света и отражательные характеристики поверхности объекта.

Динамические объекты сцены (движущиеся персонажи) реализованы в виде спрайтов. -

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

Поэтому данное графическое ядро относят к 2,5D графическим программам. АОЛ за цикл своей работы автоматики выполняет следующие операции:

1. Удаление невидимых поверхностей;

2. Создание перспективы;

3. Образование теней и освещения;

4. Отображение текстуры объекта.

В общем случае АОЛ состоит из семи этапов:

1. Предварительный;

2. Вычисление координат первого пересечения с координатной сеткой;

3. Вычисление последних пересечений с координатной сеткой;

4. Определение расстояний до точек пересечения;

5. Масштабирование;

6. Устранение проекционного искажения;

7. Отображение линии развертки.

Этап 1

На предварительном этапе осуществляются следующие операции:

1) формирование табличных значений тригонометрических функций;

2) выделение в оперативной памяти рабочего пространства;

3) формирование начального заполнения кадра развертки;

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

В данном случае для проведения геометрических построений требуется определить синус, косинус, тангенс при угле от 00 до 3600. Количество элементов таблиц легко определить по следующей формуле:

где L - ширина кадра, α - угол наблюдения.

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

1) координаты текущего куба;

2) координаты объекта внутри этого куба.

3)Начальное заполнение кадра. Формирование фона в простейшем случае осуществляется делением экрана на две половины: пол/потолок или земля/небо.

Этап 2

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

где α - угол наклона относительно горизонта,

xн,yн – положение наблюдателя, xi, yi – искомая точка.

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

Этап 3

Возможны два варианта пересечений луча-наблюдателя с координатной сеткой с меридианами и параллелями. Пересечение с вертикальными гранями будем называть пересечением с Х-гранями, с горизонтальными – пересечением с Y-гранями. Согласно вышеприведенным рисункам последовательные вычисления производятся через приращение координат.

Здесь: m - размер сетки, k – наклон луча наблюдения относительно координатной сетки.

После определения очередной координаты x или y необходимо проверить наличие в этом кубе объекта. Если на пути следования луча такой объект есть, то переходим к этапу 4. В противном случае этап 3 повторяем.

Этап 4

Расстояние от наблюдателя до ближайшего объекта по направлению следования луча определяется по одной из формул:

Lx=(yi-yH)/sinα

Ly=(xi-xH)/cosα

Этап 5

Определив расстояние до точки пересечения, можно определить масштаб ее отображения в кадре: где k - коэффициент, подбирающийся эмпирически, L(x,y) – значение Lx или Ly в зависимости от ориентации объекта.

Этап 6

Необходимость устранения искажений объясняется тем, что при формировании кадра, содержащего объекты, находящиеся на малом расстоянии друг от друга, возникает эффект рыбьего глаза. Для устранения искажения масштаб S делят на cosβ: , где β - отклонение луча от нормального изображения.

Этап 7.

Если для отображения куба используются не текстурированные объекты (одного цвета), то вертикальная линия развертки определяется следующим образом:

где h0- линия горизонта, S’ – величина, полученная на предыдущем этапе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]