Raycasting («бросание лучей») — техника, которая используется в видеоиграх для рендеринга трёхмерных сцен на двухмерный экран. 13 В основе системы лежит идея испускать лучи из «глаз» наблюдателя (один луч на пиксель) и находить самый близкий объект, который блокирует путь распространения этого луча. 1
Процесс работы системы raycasting: 4
- Карта представляет собой двухмерную квадратную сетку, каждый квадрат может быть либо 0 (нет стены), либо положительным значением (стена с определённым цветом или текстурой). 4
- Для каждого столбца экрана (вертикальной полосы) отправляется луч, который начинается в месте расположения игрока и имеет направление, зависящее от направления взгляда игрока и координаты по оси X экрана. 4
- Луч движется вперёд по двухмерной карте, пока не столкнётся с квадратом карты, который является стеной. 4
- Если луч столкнулся со стеной, вычисляется расстояние от точки столкновения до игрока, и с помощью этого расстояния рассчитывается, какой высоты должна быть стена на экране: чем дальше стена, тем меньше она на экране, и чем ближе, тем выше она кажется. 4
Raycasting чаще всего используется в шутерах от первого лица, где основная камера (персонаж) является источником луча, а луч отбрасывается для взаимодействия с другими объектами в игре, которые могут соприкасаться с лучом. 5