3D-графика
В 3D всё зависит от используемого инструмента. Для создания 3D-моделей в редакторе вам вряд ли понадобится оперировать матрицами. Однако, если вы делаете какую-то игру, симуляцию или процедурную анимацию, то потребность в математике значительно возрастает.
Из-за третьей координаты мы не можем просто так отобразить 3D-мир на экране, так как экран двумерный. Нужно как-то проецировать 3D в 2D. Для этого, как и в реальном мире, используется камера, только виртуальная — через неё мы «снимаем» виртуальный 3D-мир, и получаем 2D-картинку. Этот процесс называется рендерингом.
Как правило, рендеринг уже реализован в 3D-редакторах, но иногда для создания некоторых эффектов камеры требуется разбираться в его математике, которая построена на матричных операциях.
Из-за появления камеры возникает ещё одна точка отсчёта — теперь 3D-объекты можно рассматривать как от какой-то фиксированной точки в пространстве (начало отсчёта), так и от положения камеры. В результате появляется необходимость говорить о базисе: у каждого объекта несколько наборов координат в зависимости от того, в каком базисе мы его рассматриваем.
В 3D-редакторах базис обозначен осями, вдоль которых можно двигать и масштабировать объект, часто есть функция переключения между базисами. Иногда работать с координатами в одном базисе гораздо удобнее, чем в другом.
В коде с базисами приходится работать исследователям компьютерного зрения, которые создают 3D-модели по фото и видео — например, эта задача возникает при разработке беспилотных автомобилей и роботов, а также оцифровке помещений.
Вращение объектов в 3D и кватернионы, это отдельный большой топик и камень, о который бьются мизинцем многие начинающие артисты.
Вкратце, для описаний вращений в 3D недостаточно трёх углов, как это может показаться (см. gimbal lock), требуется вводить понятие кватерниона, объекта, который задаётся 4-х мерным вектором и очень плохо интерпретируется человеком. Зато это позволяет легко производить любые вращения и повороты. Например, плавный поворот камеры для записи сцены.
В основном необходимость напрямую взаимодействовать с кватернионами возникает при создании игр или какой-то процедурной графики — там, где приходится управлять 3D-объектами с помощью кода.
Конечно, есть ещё много применений математики в 2D и 3D-графике, которые я не описал, но боюсь что попытка это сделать потребует отдельного блога 🙂
Отдельные богатые математикой смежные направления, на которые я могу указать: симуляции (физики, жидкости, плавучести, объёмного тумана, ...), генерация 3D-моделей через код, создание шейдеров, управление персонажем в играх.
Post #78
3.37K
- 👍 18