Пишем портальный рендерер (часть 11)
Для того чтобы не проверять на столкновение все грани сцены (или текущей комнаты), удобно ввести в модель получение потенциальных объектов столкновения. А именно определяется область пространства, захватываемая объектом при движении (в виде ААВВ) и сцене передается запрос на определение всех объектов, находящихся в этой области. После чего проверка на столкновение осуществляется только с ними. Именно для этого и служит метод getColliders.
Несложно добавить в полученный тест обработку силы тяжести. Для этого достаточно лишь на каждом кадре модифицировать вектор скорости объекта при помощи вектора силы тяжести.
Описанный метод определеггия был разработан Паулем Неттле и может быть найден по адресу www.fluidstudios.com/publications.hlml.
ПИШЕМ ПОРТАЛЬНЫЙ РЕНДЕРЕР (часть III)
В этой главе мы добавим в наш рендерер поддержку зеркал и так называемых порталов с преобразованиями - порталов, способных из одного места вести в совершенно другое место, зачастую достаточно удаленное от данного портала. Подобные эффекты встречаются в играх Unreal, Serious Sam и ряде других и выглядят весьма впечатляюще, несмотря на то что их идея и реализация довольно просты.
В основе всех этих эффектов лежит простая модификация метода порталов -с порталом связывается аффинное преобразование, искажающее траектории лучей, проходящих сквозь него. Одним из самых простых примеров этого является зеркальное отражение относительно плоскости портала (или грани).
правильные комбинации в покере.
Рассмотрим процесс отражения подробнее. Пусть задано плоское зеркало М и камера, расположенная в точке С (рис. 9.1).
Тогда можно рассматривать зеркало как портал, который отражает всю сцену (т. е. за ним находится отраженная копия сцены) и показывает ее видимую сквозь себя часть. Однако явное отражение всей сцены зачастую является неудобным, поэтому вместо того, чтобы отражать всю сцену, можно отразить только саму камеру (вместе с пирамидой видимости) и построить изображение неотраженной сцены, видимой сквозь зеркало через отраженную камеру С (рис. 9.2). Таким образом, обработка зеркал становится крайне простой - и камера и область видимости, соответствующая камере, отражаются относительно плоскости, проходящей через зеркало. После этого строится изображение, видимое из отраженной камеры через видимую часть зеркала (которая определяет область видимости).
