Для многих из нас первым по-настоящему удачным опытом 3D-игр стал Super Mario 64. В отличие от предыдущих проектов, камера там была управляемым игроком объектом, а не жёстко заданным видом. Сегодня мы принимаем эту механику как должное, но когда-то 3D было новой технологией, требовавшей экспериментов. С точки зрения программиста трёхмерная графика способна поставить в тупик, однако разработчик Gabriel показывает, что перспектива и камера умещаются в несколько строк математики.

Иллюстрация принципа перспективной проекции в 3D-графике

реклама кормит Уточку 🦆

Начиная путь, Gabriel пользовался инструментами, которые давали камеру почти автоматически. Но, упёршись в пределы таких фреймворков, он решил разобраться, как всё устроено с нуля. Оказалось, речь о матричной математике со значениями для ближней и дальней плоскостей отсечения, соотношения сторон, угла обзора и позиции.

По сути, это воспроизводит усечённую пирамиду — то, как наблюдатель видит сцену через камеру. Чтобы получить эффект глубины, координаты X и Y делятся на координату Z: далёкие объекты становятся меньше, и возникает трёхмерность.

реклама кормит Уточку 🦆

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

реклама кормит Уточку 🦆

Камера — лишь часть истории. Генерация самих 3D-объектов опирается на собственный набор математических уравнений, не менее любопытных для изучения. Вместе эти основы дают понимание того, что стоит за привычной картинкой в любой современной игре.