Пишем портальный рендерер (часть 11)

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

Несложно добавить в полученный тест обработку силы тяжести. Для этого достаточно лишь на каждом кадре модифицировать вектор скорости объекта при помощи вектора силы тяжести.

Описанный метод определеггия был разработан Паулем Неттле и может быть найден по адресу www.fluidstudios.com/publications.hlml.

ПИШЕМ ПОРТАЛЬНЫЙ РЕНДЕРЕР (часть III)

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

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

Рассмотрим процесс отражения подробнее. Пусть задано плоское зеркало М и камера, расположенная в точке С (рис. 9.1).

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


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