}

Для повышения качества анимации желательно воспользоваться каким-либо многостраничным ЛГ-режимом адаптера VGA.

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

Для представления различных объектов в лабиринте в Wolfenstein 3-D используются спрайты, в частности даже светлое пятно под лампами делается как спрайт.

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

Тогда такому объекту приписывается определенный угол - направление, куда смотрит (направлен) соответствующий объект.

Картинка выбирается с того направления, которое определяется разностью углов между направлением взгляда объекта и взгляда игрока на объект (рис. 13.8).

Как нетрудно убедиться, а - 7Г + (D ~ш .

Путем несложных модификаций программы реально добавить в нее возможность работы со спрайтами. Для этого при трассировании лучей пометим все видимые клетки и для каждого луча запомним расстояние до ближайшей стены, затем составим список всех спрайтов, находящихся в помеченных клетках (можно клетки и не помечать, а использовать полный список спрайтов), отсортируем его по расстоянию до игрока и выведем спрайты в порядке близости к игроку (Ьаск-ю-ггоп1). Каждый спрайт масштабируется и выводится по столбцам, при этом для каждого столбца перед выводом необходимо сравнить расстояние до спрайта с расстоянием до ближайшей стены - своего рода одномерный аналог 2-буфера.

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


⇐ Предыдущая| |Следующая ⇒