Вполне вероятно, что через несколько лет спросят: а зачем нам вообще полигональное моделирование? И во многом окажутся правы.
На самом деле обсуждаемая проблема является достаточно весомой, особенно в силу последних событий с технологиями. Полигональное моделирование вводилось давно и, прежде всего, для аппроксимации (упрощения) вычислений. И действительно, даже в играх первые миры из цветных многоугольников смотрелись не то чтобы угловато... Конечно, если бы тогда начали стремиться к идеалу, то, наверное, и Doom бы не сделали.
Сейчас ситуация обстоит несколько иначе. Во-первых, в промышленных системах в качестве устройств трёхмерного сканирования начали активно использовать лазерный вариант, что отличается от старой технологии, где по линиям через определённые отсчёты отмерялись точки практически механическим путём.
Во-вторых, модели в играх стали приобретать высокую реалистичность, что связано с увеличением количества полигонов и расчётных мощностей видеоадаптеров и компьютеров как таковых. Детализация начала приближаться к идеалу, а что такое идеал? Практически точечное моделирование.
Что такое NURBS?
NURBS - аббревиатура от Non-Uniform Rational B-Splines (классический перевод - неоднородные рациональные В-сплайны). "Spline" - математическое представление плавных кривых (в математике есть и такое понятие, как сплайн). При расчётах в NURBS-моделировании на данный момент оперируют не полигонами, а кривыми, в результате чего можно создавать уникальные поверхности, приближённые к природным органическим формам. Причём сейчас мы имеем переходный вариант, поскольку для удобства, хоть у NURBS-моделирования на голову больше возможностей и реализма, но их как-то нужно подогнать под общепринятые стандарты, поэтому на определённом этапе их переводят в полигональные модели, а дальше всё вычисляется стандартными методами. Оные поддерживаются как программно, так и аппаратно видеоадаптерами.
Для примера современного конвейера визуализации возьмём стандартную последовательность действий.
Полигональный конвейер визуализации
Всё поэтапно, в нашем списке сверху-вниз:
- Локальное пространство. Моделирование каждого объекта в его системе координат.
- Мировое пространство. Сборка множества моделей в рамках мировой системы координат.
- Преобразование в пространство вида. Переход к системе координат, связанной с видом проекции (расположением виртуальной камеры, которая становится началом координат, причём ось Z становится прямо направленной от зрителя).
- Удаление невидимых поверхностей.
- Освещение.
- Отсечение в рамках видимой области экрана. То есть, убираются те треугольники, которые находятся вне поля видимости виртуальной камеры, а те, через которые проходит граница зоны видимости, разбиваются на части (видимую и не видимую).
- Переход от 3D-представления к 2D. Эта операция называется "проекцией" (projection).
- Преобразование порта просмотра, а именно - переход в систему координат вывода на экран. Например, если у вас не полноэкранный режим, а оконный, либо предусмотрена специальная клиентская область.
- Растеризация, то есть, закрашивание двухмерных треугольников.
Теперь внимательно остановимся на пункте 4. Дело в том, что отсечение невидимого может происходить несколькими принципиально отличными методами. Одни основаны на отсечении невидимых граней по принципу лицевая/не лицевая (делается либо по порядку обхода вершин полигонов, либо с вычислением нормалей граней). Другие варианты предусматривают растеризацию и определение ближайших пикселов к зрителю (z-буферизация, построчное сканирование). Иногда используют и то, и другое в гибриде.
Исходя из полигонального представления рассчитывается и освещение. Всё кажется достаточно простым.
Но представьте себе ситуацию, когда вместо полигонов будет оставаться NURBS-представление. На самом деле, это реально сделать, только нужна новая, особенная алгоритмическая база. В этом заключается основная сложность.
О не-Евклиде и подготовке
специалистов
В биографии Юрия Борисовича Румера (М.П. Кемоклидзе "Квантовый возраст") интересны его воспоминания о лекциях Поля Дирака. "А на семинаре... выходит Дирак, ни улыбки, ни энтузиазма. Берёт мел своими длинными пальцами и начинает молча писать на доске формулы. Борн не выдерживает: "Поль, расскажите нам, что вы пишете?", и Дирак, продолжая писать, начинает неохотно говорить: "Даблъю минус альфа эр пи эр минус альфа ноль эм це, и всё это на пси, потом альфа мю на альфа ню...".
Это очень напоминает нынешние, не редкие в своей массе принципы обучения трёхмерному моделированию - заучивание без буквального понимания происходящего.
Не так давно я вёл семинар, начав его с вопроса: куда мы придём, если будем двигаться на северо-восток? Большинство ответов склонилось к тому, что пешеход вернётся в ту же точку, обойдя земной шар. Неправильно, потому как человек начнёт по спирали идти к северному полюсу.
Это одна из частых ошибок, которая имеет прямое происхождение от евклидовой геометрии и её пятого постулата о том, что параллельные линии не пересекаются (в т.ч. и что сумма углов треугольника равна 180 градусов). Одним из первых такую "несостыковку" отметил Гаусс (два меридиана и экватор создают треугольник, но при этом сумма углов у его основания равна 180), практически параллельно с ним Лобачевский, Боайи и Риман. Причём Гаусс в письмах своим друзьям писал, что не решается вносить изменения в классическую евклидову геометрию, что многие учёные приняли не очень адекватно.
Сейчас, в 3D-моделировании, такой дуализм нужно понимать, тем более что очень многое в действительности базируется на кривых и неровных поверхностях. Многие, к примеру, очень редко прибегают к NURBS-моделированию, предпочитая работать только с полигонами и "сглаживающими" модификаторами. На самом деле этот подход можно оправдать лишь тем, что он подразумевает работу, направленную на конечный результат, поскольку последний так или иначе будет выводиться на полигональном уровне. Но с внутренней структурой гораздо удобнее работать на уровне математических конструкций в виде кривых. С помощью NURBS можно моделировать более органические природные формы, и вся "угловатость" виртуальных миров исчезает. Появляется естественность.
В завершение
Сейчас может наступить тот критический момент, когда очень глубокая полигональная детализация может оказаться менее эффективной, по сравнению с тем, что может дать использование NURBS, только нужно менять алгоритмическую базу. Есть над чем поработать математикам и инженерам. Хотя не секрет, что возможен вариант, что всё спустят на тормозах, а потом, когда представится возможность, сделают уникальный "прорыв в технологиях". На самом деле уже многие пакеты 3D-моделирования изначально используют NURBS и пытаются сохранить модели в таком состоянии как можно дольше, а есть и вообще уникальные, которые используют только NURBS.
Кристофер
Горячие темы