Сплайны и NURBS или полигоны?

Вполне вероятно, что через несколько лет спросят: а зачем нам вообще полигональное моделирование? И во многом окажутся правы.

На самом деле обсуждаемая проблема является достаточно весомой, особенно в силу последних событий с технологиями. Полигональное моделирование вводилось давно и, прежде всего, для аппроксимации (упрощения) вычислений. И действительно, даже в играх первые миры из цветных многоугольников смотрелись не то чтобы угловато... Конечно, если бы тогда начали стремиться к идеалу, то, наверное, и Doom бы не сделали.

Сейчас ситуация обстоит несколько иначе. Во-первых, в промышленных системах в качестве устройств трёхмерного сканирования начали активно использовать лазерный вариант, что отличается от старой технологии, где по линиям через определённые отсчёты отмерялись точки практически механическим путём.

Во-вторых, модели в играх стали приобретать высокую реалистичность, что связано с увеличением количества полигонов и расчётных мощностей видеоадаптеров и компьютеров как таковых. Детализация начала приближаться к идеалу, а что такое идеал? Практически точечное моделирование.


Что такое NURBS?

NURBS - аббревиатура от Non-Uniform Rational B-Splines (классический перевод - неоднородные рациональные В-сплайны). "Spline" - математическое представление плавных кривых (в математике есть и такое понятие, как сплайн). При расчётах в NURBS-моделировании на данный момент оперируют не полигонами, а кривыми, в результате чего можно создавать уникальные поверхности, приближённые к природным органическим формам. Причём сейчас мы имеем переходный вариант, поскольку для удобства, хоть у NURBS-моделирования на голову больше возможностей и реализма, но их как-то нужно подогнать под общепринятые стандарты, поэтому на определённом этапе их переводят в полигональные модели, а дальше всё вычисляется стандартными методами. Оные поддерживаются как программно, так и аппаратно видеоадаптерами.

Для примера современного конвейера визуализации возьмём стандартную последовательность действий.

Полигональный конвейер визуализации

Всё поэтапно, в нашем списке сверху-вниз:

  1. Локальное пространство. Моделирование каждого объекта в его системе координат.
  2. Мировое пространство. Сборка множества моделей в рамках мировой системы координат.
  3. Преобразование в пространство вида. Переход к системе координат, связанной с видом проекции (расположением виртуальной камеры, которая становится началом координат, причём ось Z становится прямо направленной от зрителя).
  4. Удаление невидимых поверхностей.
  5. Освещение.
  6. Отсечение в рамках видимой области экрана. То есть, убираются те треугольники, которые находятся вне поля видимости виртуальной камеры, а те, через которые проходит граница зоны видимости, разбиваются на части (видимую и не видимую).
  7. Переход от 3D-представления к 2D. Эта операция называется "проекцией" (projection).
  8. Преобразование порта просмотра, а именно - переход в систему координат вывода на экран. Например, если у вас не полноэкранный режим, а оконный, либо предусмотрена специальная клиентская область.
  9. Растеризация, то есть, закрашивание двухмерных треугольников.

Теперь внимательно остановимся на пункте 4. Дело в том, что отсечение невидимого может происходить несколькими принципиально отличными методами. Одни основаны на отсечении невидимых граней по принципу лицевая/не лицевая (делается либо по порядку обхода вершин полигонов, либо с вычислением нормалей граней). Другие варианты предусматривают растеризацию и определение ближайших пикселов к зрителю (z-буферизация, построчное сканирование). Иногда используют и то, и другое в гибриде.

Исходя из полигонального представления рассчитывается и освещение. Всё кажется достаточно простым.

Но представьте себе ситуацию, когда вместо полигонов будет оставаться NURBS-представление. На самом деле, это реально сделать, только нужна новая, особенная алгоритмическая база. В этом заключается основная сложность.


О не-Евклиде и подготовке специалистов

В биографии Юрия Борисовича Румера (М.П. Кемоклидзе "Квантовый возраст") интересны его воспоминания о лекциях Поля Дирака. "А на семинаре... выходит Дирак, ни улыбки, ни энтузиазма. Берёт мел своими длинными пальцами и начинает молча писать на доске формулы. Борн не выдерживает: "Поль, расскажите нам, что вы пишете?", и Дирак, продолжая писать, начинает неохотно говорить: "Даблъю минус альфа эр пи эр минус альфа ноль эм це, и всё это на пси, потом альфа мю на альфа ню...".

Это очень напоминает нынешние, не редкие в своей массе принципы обучения трёхмерному моделированию - заучивание без буквального понимания происходящего.

Не так давно я вёл семинар, начав его с вопроса: куда мы придём, если будем двигаться на северо-восток? Большинство ответов склонилось к тому, что пешеход вернётся в ту же точку, обойдя земной шар. Неправильно, потому как человек начнёт по спирали идти к северному полюсу.

Это одна из частых ошибок, которая имеет прямое происхождение от евклидовой геометрии и её пятого постулата о том, что параллельные линии не пересекаются (в т.ч. и что сумма углов треугольника равна 180 градусов). Одним из первых такую "несостыковку" отметил Гаусс (два меридиана и экватор создают треугольник, но при этом сумма углов у его основания равна 180), практически параллельно с ним Лобачевский, Боайи и Риман. Причём Гаусс в письмах своим друзьям писал, что не решается вносить изменения в классическую евклидову геометрию, что многие учёные приняли не очень адекватно.

Сейчас, в 3D-моделировании, такой дуализм нужно понимать, тем более что очень многое в действительности базируется на кривых и неровных поверхностях. Многие, к примеру, очень редко прибегают к NURBS-моделированию, предпочитая работать только с полигонами и "сглаживающими" модификаторами. На самом деле этот подход можно оправдать лишь тем, что он подразумевает работу, направленную на конечный результат, поскольку последний так или иначе будет выводиться на полигональном уровне. Но с внутренней структурой гораздо удобнее работать на уровне математических конструкций в виде кривых. С помощью NURBS можно моделировать более органические природные формы, и вся "угловатость" виртуальных миров исчезает. Появляется естественность.


В завершение

Сейчас может наступить тот критический момент, когда очень глубокая полигональная детализация может оказаться менее эффективной, по сравнению с тем, что может дать использование NURBS, только нужно менять алгоритмическую базу. Есть над чем поработать математикам и инженерам. Хотя не секрет, что возможен вариант, что всё спустят на тормозах, а потом, когда представится возможность, сделают уникальный "прорыв в технологиях". На самом деле уже многие пакеты 3D-моделирования изначально используют NURBS и пытаются сохранить модели в таком состоянии как можно дольше, а есть и вообще уникальные, которые используют только NURBS.

Кристофер

Версия для печатиВерсия для печати

Номер: 

07 за 2009 год

Рубрика: 

Графика
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!