Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ponimayka1

.pdf
Скачиваний:
131
Добавлен:
07.06.2015
Размер:
37.11 Mб
Скачать

Пытливые умы, конечно, обнаружат в Option Box операции Reverse и в атрибутах ноды polyNormal параметр Normal Mode. Если изменить его с Reverse and Extract на просто Reverse, вершины не будут дублироваться при переворачивании нормали. Однако MAYA все равно будет рисовать граничные ребра, сигнализируя о проблеме.

Выберите другую грань и переверните нормаль с опцией Reverse.

В данном случае вы получите действительно плохую геометрию. Плохую с точки зрения математики. Из одного ребра торчат две грани, нормали которых направлены в разные стороны. Важное замечание. Самый главный детектор проблем и плохой геометрии - это конвертация полигональной поверхности в сабдивы. Для быстрой проверки качества поверхности используйте стандартную горячую клавишу «Alt-`» в сочетании с Undo. В случае ошибки читайте Script Editor, там будет диагноз и даже рецепт лечения.

Если попытаться сконвертировать плоскость с плохой гранью в сабдив (Modify=>Convert =>Polygons to Subdiv), MAYA будет «ругаться», указывая на то, что некоторые ребра являются неманифолдными (nonmanifold), то есть они не связывают грани гладко:

//Error: line 2: polyToSubdivl (Poly To Subdiv Node): One or more edges is nonmanifold.

Вданном случае, лекарство очевидно: надо просто развернуть нормаль обратно с той же опцией Reverse. Однако, чтобы найти все такие неманифолдные ребра на поверхности, проще воспользоваться универсальным чистящим средством - операцией Cleanup.

Выберите саму поверхность и откройте Option Box операции Cleanup.

Включите галку Nonmanifold Geometry. По умолчанию выбран метод лечения Normals and

351

Geometry, пользуясь которым MAYA сначала пытается развернуть нормали, чтобы избавиться от плохих ребер, а если это не помогает, то дублирует эти ребра, делая их граничными и разрезая соседние грани. Если выбрана опция Geometry Only, она не трогает нормали , а сразу дублирует плохие ребра .

Поэкспериментируйте с обеими опциями, нажимая Apply и Undo. Посмотрите, как MAYA после этого конвертирует поверхность в сабдив.

Понятие «неманифолдная геометрия» можно перевести так: сетка, которая не может быть развернута в один плоский неперекрывающийся лоскут.

Приведу дополнительные примеры неманифолдной геометрии.

Если вы убили грани в «шахматном порядке», оставшиеся грани соединяются вершинами, а не ребрами. Такая геометрия тоже не может быть сконвертирована в сабдив, и любое сглаживание на ней не работает, хотя рендериться и анимироваться она будет без проблем. В этом случае операция Cleanup просто дублирует угловые вершины.

Еще один пример неманифолдной сетки - это результат работы операции Extrude Edge на внутренних ребрах, когда из одного ребра торчит более двух граней. Такая конструкция никак не

352

может быть развернута в плоский лоскут и сконвертирована в сабдивы.

В то же время, она может быть сглажена и не должна давать проблем при просчете.

Операция Cleanup в этом случае дублирует проблемное ребро, чтобы у каждой грани, торчащей из него, было свое индивидуальное ребро.

Основные поставщики плохой геометрии - это немытые руки пользователя, хронический недосып, операции Extrude Edge, Normals=>Reverse, Delete Face, Collapse, Reduce.

Приведу еще один пример, часто встречающийся по первым двум причинам.

Создайте плоскость.

Скопируйте ее, как бы случайно, не заметив копирования. Выберите обе плоскости и сделайте Combine.

Как примерные мальчики, выполните после этого Merge Vertices.

Теперь вы имеете визуально пристойную поверхность, у которой двойные грани. Причем

353

обнаружить это довольно сложно. Таская за вершины, вы синхронно меняете эти двойные грани, у которых все ребра - общие. Такие грани называются lamina faces. Выбрав любую грань и потащив ее, вы одновременно потащите все ребра, и, как следствие, вторую грань. И только лишь выбрав грань не щелчком, а обведя ее центр рамкой, вы можете заметить (что маловероятно) в заголовке окна MAYA, что выбрано две грани.

Совет. Включайте отображение полигональной статистики на экране; Disptay=>Heads Up Display. Это позволит вам контролировать, сколько и каких компонент выбрано в каждый момент времени.

Лечение такого «ламинарного» вируса довольно затейливо.

Попытайтесь сконвертировать полученную плоскость в сабдив. Вы получите стандартное сообщение об ошибке (о том, что геометрия неманифолдная):

//Error: line 2: polyToSubdivl (Poly То Subdiv Node): One or more edges is nonmanifold.

//Nonmanifold geometry cannot be converted to a subdivision surface.

//To clean up nonmanifold edges, use Polygons->Cleanup with the nonmanifold option. / /

Тут вы, конечно, позовете «антивирус», то есть в Option Box операции Cleanup включите галку Nonmanifold Geometry.

Однако в данном случае это не та опция, которую следует использовать. Впрочем, вы этого можете и не знать и поэтому, выбрав по умолчанию опцию Normal and Geometry и нажав кнопку Apply, получите довольно странный набор выбранных граней. Если вам повезет и вы догадаетесь показать нормали, вы увидите, что поверхность имеет нормали с обеих сторон!

354

Если не догадаетесь, то увидите: MAYA просто разрезала поверхность на отдельные грани. Если вы не будете окончательно обескуражены результатом, то наверняка подвигаете вершины или грани, чтобы узнать в чем дело, и наконец-то обнаружите, что поверхность - двойная!

Как только увидите двойную слоенную поверхность, жмите Undo нужное количество раз, чтобы вернуться к «непропеченной» поверхности.

Откройте снова Option Box операции Cleanup, снимите галку Nonmanifold Geometry и в самом низу включите галку Lamina Faces.

Теперь лечение будет более эффективным.

В разделе Remove Geometry также находятся опции, позволяющие удалять грани, которые меньше определенного порога по площади, или ребра, которые меньше по длине, чем заданная

355

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

Вразделе Tessetate Geometry находятся параметры, не относящиеся собственно к чистке

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

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

Конечно, двойные вершины или грани - это в любом случае брак. Но остальные типы неманифолдной геометрии могут вызывать только частные проблемы при сглаживании поверхности Поэтому если эти проблемы вас не касаются, можете не тратить время на их решение.

Однако популярность Subdivision Surfaces в настоящее время такова, что отмахнуться от них будет довольно легкомысленно (я говорю в основном от имени лагеря любителей органического моделирования). Делайте выводы сами.

Примечание. Грани с дырками «официально» не считаются браком, и некоторые операции поддерживают их. Однако операции сглаживания работают на них некорректно, и при переводе в сабдивы дырки просто будут проигнорированы. Hо самое главное: на таких гранях не работает Split Polygon Tool. Поэтому грани с дырками запрещены к использованию в большинстве школ Полидзен.

Совсем хорошая геометрия. О пользе прямоугольников и вреде треугольников. Откровен* мастеров Полидзен

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

Побеседовав с мастерами Полидзен, я обнаружил, что абсолютно все из них мистически избегают треугольников. Не удовлетворившись ответом, что треугольники плохо влияют на карму, а число «четыре» является символом устойчивости, я провел некоторые собственные расследования, которые и обобщил в нижеследующем материале.

Есть три технических причины, по которым мастера избегают треугольников и стараются работать только с четырехугольниками. А еще - несколько эзотерических причин, о которых чуть позже. Первая причина основана на популярности сабдивов для органического моделирования Именно сабдивы сильно недолюбливают треугольные грани. Проделайте следующее упражнение. Возьмите поликуб. Выделите одну из вершин и срежьте ее операцией Chamfer Vertex.

356

Удалите историю. Скопируйте куб и отодвиньте копию вправо.

Выберите срезанную грань и распилите ее на три четырехугольника операцией Subdivide. Затем возьмите Split Polygon Tool, и три грани, примыкающие к срезанной, разрежьте пополам, от середины срезанного ребра по диагонали. Удалите историю.

Теперь выберите оба куба и сконвертируйте их в сабдивы, нажав «Alt-'». Поиграйте со сглаженностью отображения, нажимая «0,1,2,3».

Нажмите «0» и обратите внимание на то, что куб имевший больше граней, превратился в более «легкий» сабдив. Это произошло именно из-за того, что он был грамотно разбит на четырехугольники.

Кроме того, сетки содержащие треугольники, пятиугольники и другие многоугольники плохо поддаются параметризации, да еще порождают на сабдивах «особые» точки («звездочки»), где сходятся три, пять и более «изопарм». Эти точки являются потенциальным источником проблем, так как при деформациях в их окрестности могут появляться всяческие «вспучивания».

357

Четырехугольники изначально склонны к хорошей параметризации ведь это кусочки прямоугольной сетки, поэтому сабдивы очень «любят» четырехугольники.

Чтобы окончательно убедиться в этом, проделайте завершающий эксперимент. Выберите оба сабдива и сконвертируйте их в NURBS-поверхности: Modify«Convert=>Subdiv

to NURBS.

Теперь посчитайте количество сплайновых лоскутов на каждом из бывших кубиков. На первом кубике их будет 27, а на распиленном - всего 9.

Итак, четырехугольники - залог качества и легкости сконвертированнои в сабдива поверхности.

Вторая техническая причина связана с тем, что мастера Полидзен, часто используют Renderman для просчета персонажей. А он, ох, как не любит треугольники! Да и не только Renderman: ведь до последнего времени и Mental Ray, встроенный в MAYA, не умел рендерить Subdivision Surfaces, которые не состояли из одних четырехугольников, и любая треугольная грань в базовой сетке вызывала у него аллергию. Конечно, сейчас появились эффективные методы просчета треугольников в составе сабдивов (типа Loop Scheme), но осадок, как вы понимаете, остался, и треугольники до сих пор имеют репутацию помехи для рендеринга сабдивов.

Третья причина не относится к сабдивам, а имеет отношение к анимации персонажей. Очень часто нечетырехугольные грани, расположенные в местах сгибов поверхности вызывают непредсказуемые деформации. Также в этих же местах нежелательно иметь точку схода нескольких "патчей", то есть такую вершину, из который выходят больше четырех ребер. Все это приводит к неприятным последствиям в виде "возмущений", стяжек, заломов и пр. Конечно, если без треугольников совсем не обойтись, можно оставить их в некоторых местах, пользуясьI следующим правилом: главное чтобы данный не-четырехугольник (треугольник, пятиугольник и т.д.) не вызывал возмущений на поверхности после сглаживания или при переводе в subdiv. И вел себя прилично во время анимации. Практика показывает, что такие нечетырехугольные полигоны нельзя оставлять в тех местах, которые активно растягиваются, сжимаются во время анимации. Особенно, если кожа персонажа не прикрыта мехом. Грубо переформулировать это правило можно так: хотите эффективно гнуть или как-то ещё деформировать поверхность - держите ее грани четырехугольными. Пусть это понадобится лишняя цепочка рёбер.

Существуют также некоторые экзистенциальные предпосылки для избегания нечетырехугольников. Если посмотреть вокруг, можно найти массу примеров того, что в природе часто отдается предпочтение четырехугольным патчам, если говорить о поверхностях, а не об объемах. Взять хотя бы ткани: их волокнистая структура представляет собой прямоугольную сетку. В подтверждение этой, без сомнения, спорной гипотезы я бы хотел привести историю, которую мне рассказал один из мастеров Полидзен Сергей Луценко. История весьма поучительная

358

и одновременно непонятная для тех, кто еще не прочувствовал, что значит «форма не живет» Читайте и попробуйте почувствовать это.

«Своё личное открытие по поводу того, как должны распределяться ребра и грани модели я сделал, когда однажды пришлось моделировать фуражку американского полицейского. Я застрял на моделировании тульи (самой верхней части этого головного убора|. Попытка просто формально задрать вверх переднюю часть тульи ни к чему хорошему не привела. Фуражка все равно не была фуражкой. На помощь пришла жена, занимавшаяся моделированием одежды. Она, глядя со стороны, сразу указала на ошибку и предложила обратить внимание именно на то, как располагается ткань на реальном объекте, из каких и скольких лоскутов ткани состоит фуражка? Как и где она сшита. И когда я воспроизвел все эти фрагменты, точно по оригиналу, фуражка «ожила». Конструкция заработала!»

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

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

Triangulate, Quadrangulate и Subdivide

Чтобы испортить модель и превратить в треугольники все ее грани (или не все, но выбранные), существует специальная операция: Triangulate. (Это - шутка, и часто эта операция бывает нужна, чтобы экспортировать модель в игровой движок или скормить ее на вход программе, которая, кроме треугольников, ничего не понимает - есть ведь еще и такие).

Когда я начал изучать MAYA, то ожидал, что операция Quadrangulate выполняет аналогичные, а не противоположные действия, то есть находит все нечетырехугольные грани и сечет их на четыре вершины. Ан нет, эта операция служит противоположностью Triangulate: она ищет только треугольные грани, и если угол между соседними треугольниками меньше заданного, эти два треугольника превращаются в четырехугольник удалением общего ребра. Процесс, как вы понимаете, не очень предсказуемый.

А вот если вы хотите гарантированно превратить выбранные грани в четырехугольники, вам следует использовать операцию Subdivide. Она разбивает грани нужным образом. Кроме того, она работает и для выбранных ребер.

Выбрать только треугольные или только четырехугольные грани можно воспользовавшись окном Edit Polygons=>Selection=>Selection Constraints. Имейте также в виду, что его содержимое зависит от активных компонент.

359

Кроме того, не забывайте: один из дополнительных бонусов операции Smooth - то, что в процессе сглаживания она создает только четырехугольные грани (для метода Exponent).

Еще немного о нормалях

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

В принципе, если вы собираетесь конвертировать поверхность в сабдивы, вершинные нормали не должны вас беспокоить вообще: в этом случае они игнорируются. Однако они часто настолько обезображивают внешний вид поверхности на экране, что бывает полезно найти на них какую-нибудь управу. Очень часто модель «приезжает» в сцену с плохими вершинными нормалями при импорте из других пакетов. В этом случае полезно сделать следующую процедуру для лечении испорченных вершинных нормалей.

Проще всего выбрать всю поверхность и выполнить операцию Edit Polygons=>Normals=>Sеt Vertex Normal, причем в Option Box надо включить галку Unlock Normals.

Эта галка с нелогичным и непонятным названием, говорит о том, что нужно не только разблокировать вершинные нормали, но и пересчитать их в значения по умолчанию (эти значения определяются мягкостью/жесткостью ребер, установленной ранее).

После этого вы можете устанавливать жесткость/мягкость ребер операцией Soften/Hard еn. Механизм блокировки вершинных нормалей не очевиден, так как на экране нигде явно НЕ отображено, заблокированы вершинные нормали или нет.

360

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]