ponimayka1
.pdf
А теперь попробуйте просчитать с помощью mental ray.
Собрезанием разберемся позже, а сейчас стоит подивиться на разницу в картинках. Игра
сSample Count ни к чему не приведет.
Переключаем метод в Uniform. Уводим Depth в ноль (mental ray его игнорирует) и тихонько задаем Sample Count=5.
Картина радикально изменилась, притом в лучшую сторону. Однако побороть глюк с отрезанием кончика не так то просто. Используем партизанский метод (логика его использования недоступна - на то он и партизанский). Открываем в Attribute Editor закладку initialShadingGroup и набрасываем пустой дисплейсмент материал на канал Displacement Mat.
Считаем. Теперь мы увидим кончик.
431
Однако тесселяция опять съехала. Безумные игры в разделе Tesselation ни к чему похоже не приведут: mental ray их просто игнорирует. Тогда применим еще один партизанский трюк, для того чтобы побороть артефакты: надо создать специальную тесселяцию для нулевого(!) дисплейсмента. Выбираем сабдив и идем в Window->Rendering Editors->mental ray->Approximation Editor. Напротив поля DisplaceApprox нажимаем кнопку Create. Идем в Attribute Editor и выбираем Presets=Fine View High Quality. Считаем. Ждем.
И ни в коем случае не создавайте новую аппроксимацию для Subdivision Approximation. Иначе вы опять не сможете влиять на тесселяцию.
Описанное «шаманство» было проделано для MAYA версии 7.0. Возможно, что в других версиях все будет (или было) иначе. Этот пример лишь призван показать, что иерархические сабдивы и mental ray - довольно веселая комбинация. Если вы являетесь счастливым обладателем плагина Renderman for Maya, можете попробовать просчитать упомянутую сцену с помощью него,
Просто откройте файл, выберите рендерер и нажмите кнопку Render Current Frame.
Никаких артефактов, никаких обрезаний, никакого разбиения на полигоны! Renderman не использует тесселяцию вообще, поэтому вы можете приближаться к поверхности как угодно близко.
432
Обратите также внимание на скорость просчета.
Практические советы по использованию сабдивов
Основная масса советов касается улучшения производительности и интерактивности работы с сабдивами. Когда вы переходите в режим Polygon, выключите в Attribute Editor (в закладке для ноды polyToSubdiv) обработку UV-координат. Для этого установите UV Treatment=No UVs On Sub div.
Помните: если вы залезаете на верхние уровни, надо время от времени выполнять Clean Topology.
Используйте опцию Normal в настройках Move Tool. У сабдивов хорошие нормали.
Чем меньше граней будет на нулевом уровне, тем быстрее можно редактировать и деформировать всю поверхность. Делайте привязку к скелету на нулевом уровне. Если вам очень хочется сделать это на первом уровне, выполните Collapse и привязывайте получившийся нулевой уровень. Добавляйте кризы (Crease) в самом конце, когда будете уверены, что больше не будете менять топологию (то есть экструдить, сплитить, удалять грани). Кризы привязаны к нумерации вершин, которая может измениться, вследствие чего, кризы перескочат на другие компоненты. Вы можете использовать Isolate Select при работе в режиме Polygon. Если вы хотите, чтобы масштабирование вершин на нижних уровнях вызывало также растяжения на верхних, установите Scaling Hierarchy=Propagate в Attribute Editor для сабдива. Но учтите, что такая «супер-резиновость» может сыграть плохую шутку при анимации. Я намеренно, не стал включать в книгу практический пример на моделирование чего-нибудь в сабдивах. Дело в том, что 95 процентов работы, как правило, проводится в полигонах, после чего нужно проделать чистку и конвертацию в сабдив для добавления некоторых деталей. Делать упражнение на добавление некоторых деталей я считаю бессмысленным, ибо это сводится к выбору нужных вершин на нужных участках и перетаскиванию их в нужные места.
Интернет кишит примерами на моделирование ногтя большого пальца руки с помощью сабдивов, и они достаточно наглядны.
433
Если вы смоделировали умопомрачительный шедевр и думаете, что основная часть работы позади, вы очень наивны и жестоко ошибаетесь. Если вас вдруг посетит ничем не объяснимое желание отрендерить свою шедевральную модель, и не просто так, а с феерическими текстурами, то основная (и не самая приятная) часть работы еще впереди. При этом чем умопомрачительнее ваша модель, тем больше времени вам придется потратить на подготовку ее к просчету.
В среднем по статистике (происхождение которой неизвестно) на текстурирование - даже нет, на подготовку модели к текстурированию - уходит примерно столько же времени, сколько на изготовление самой модели. Что же это за ужасающая подготовка? Зачем и когда она нужна?
Начнем с вопроса, когда нужно создавать текстурные координаты. А точнее: когда этого можно избежать.
Если текстуру, нарисованную в Фотошопе, Пейнтере или Пейнтбраше, на модель (на ее цвет, прозрачность, бамп и пр.), то, соответственно, текстурные координаты вам ни к чему. Если ваша модель будет полированно-стальной, стеклянно-прозрачной или матово-серой, настроек материала будет вполне достаточно, чтобы добиться нужного эффекта без применения текстур.
Если для задания бампа или цвета вы будете использовать только процедурные трехмерные текстуры (например, Marble или Stucco, UV-координаты вам не понадобятся. Напомню: трехмерные текстуры не обтягивают модель, а «проступают» на ней в виде узора - там, где поверхность пересекается с объемом текстуры. Процедурные текстуры задаются не картинкой на диске, а некоторой формулой-узором (типа шашек или сетки).
Непроцедурную, то есть обычную, битмапную, текстуру можно превратить в трехмерную, если накладывать ее не обычным, «обтягивающим» способом, а как проекцию. Для этого в МАУА есть довольно обильные возможности, поддерживающие всевозможные виды проекций.
436
В этом случае UV-координаты также не понадобятся, ведь текстуру проецируют на поверхность, как кинофильм на экран. Неискушенные умы часто путают проецирование текстур и проецирование текстурных координат. В первом случае на поверхность проектируется изображение, независимо от того, есть на объекте текстурные координаты или нет, и никаких новых координат не появляется. Во втором случае на поверхности создаются текстурные координаты методом проектирования их с плоскости (плоскостей), сферы или цилиндра, и при этом на поверхности не появляется никакой текстуры или изображения.
Если вы работает с NURBS-объектами, то текстурные координаты у вас уже есть, они автоматически порождаются параметризацией и представляют собой идеальную прямоугольную сетку.
И только в том случае (а это примерно 98 процентов из общего числа случаев), если вам нужно обтянуть полигональную поверхность (или сабдив) обычной текстурой, вам следует быть готовым «замапить» или «расшить» вашу модель.
Надо сказать, что создание UV-координат одна из самых черновых и низкооплачиваемых работ. Поэтому, если вам обещают интересную творческую работу с использованием программы MAYA, скромно поинтересуйтесь о характере этой работы.
«Замапливание» терминологии
В понятие текстурирование обычно входит и создание текстурных координат и отрисовка самих текстур. Я не буду здесь обсуждать приемы рисования феерических текстур и принципы работы Фотошопа. Основное внимание будет уделено принципам создания текстурных координат, по которым эти гениальные текстуры лягут на поверхность.
Вот как еще называют создание текстурных координат на поверхности: «создание UVкоординат», «замапливание», «размапливание», «маппинг», «расшивка», «раскройка», «раскладка UV». А также многими другими, не всегда уместными терминами. В рамках данной главы я буду использовать «текстурные координаты» и «UV-координаты» как синонимы, отдавая предпочтение последним.
Компоненты полигональной поверхности типа UV в майском сообществе принято любовно называть «ювишками». «Правильная» фраза - типа «выберите UV-компоненту» или «перетащите UV-координаты» - воспринимается как тяжеловесная, а не то и вообще непонятная. Ну нет для них нормального перевода, как, например, «вершина» для термина «vertex»! Поэтому я, под страхом обструкции буду так и писать «ювишки». Смотрится чудовищно, но ничего другого я непридумал. Не писать же «юви-вершины» или «ув-точки»...
Термин shell можно перевести как «замкнутая область в UV-пространстве». Но это громоздко, поэтому придется как-нибудь выкручиваться, объясняя «на пальцах». Texture Border будут у нас, так и быть, «границы текстурных областей».
Далее я буду говорить о текстурах, имея в виду, как правило, растровые изображения где-нибудь нарисованные, сфотографированные или отсканированные.
Создание UV-координат на поверхности
Теперь вернемся к вопросу, зачем нужно создавать текстурные координаты. Если вы смоделировали, например, стену, вопрос о том, как положить на нее текстуру, надеюсь, не стоит... Но если модель - это клешня краба, кактус или даже банальный тор? Как «натянуть» на нее прямоугольную текстуру. Иначе говоря, как расположить прямоугольную область на произвольноизогнутой поверхности. Как ее повернуть, растянуть или деформировать?
Представьте себе: у вас в руках переводная картинка (довольно внушительного размера и прямоугольной формы), и вы собрались приложить ее к поверхности и получить узор. Если
437
поверхность это бутылка, |
то никаких проблем: |
вы просто |
обернете бумагу |
вокруг бутылки и |
получите ровный узор. Если |
поверхность - сфера, |
придется |
помучиться, ибо |
завернув сферу в |
прямоугольный лист, вам придется зажать верхний и нижний край, изрядно их помяв. Если же взять тор, захочется, чтобы бумага была «резиновой» и растягивалась в нужных местах, чтобы можно было ею «обклеить» тороидальную поверхность. Если это поверхность куба, вообще непонятно, как быть... Можно, конечно, упаковать куб в бумагу, «как в магазине», но удастся ли перевести узор на боковые грани, вообще непонятно. Проще всего разрезать бумагу на несколько кусков и каждый кусок прилепить к нужной грани. Именно о таком разрезании и пойдет речь в данной главе.
В реальности (то есть в нереальности, то есть в MAYA...) все происходит, как правило, в такой последовательности: сначала создаются UV-раскладки, а уже потом по ним рисуются текстуры. (Случаи, когда готовую фотографию надо натянуть на объект, редактируя UV-координаты, мы рассмотрим отдельно.)
Эти нарисованные текстуры часто напоминают разрезанные и уложенные на квадратный лист кусочки некоторой картинки. Когда текстура натянется на объект, эти кусочки лягут строгое нужные места.
Итак, как же создаются (лучше сказать: порождаются) UV-координаты на поверхности? (Я не буду рассматривать случаи использования готовых UV на примитивах.) Можно, конечно, создавать текстурные координаты вручную, вбивая цифры в клетки, а точнее в Script Editor. Но стандартный метод генерации UV-координат -спроецировать (или, что то же самое, спроектировать) их откуданибудь.
Представьте себе, что у вас есть сплайновая плоскость, на которой существуют идеальные текстурные координаты в виде сетки с диапазоном от нуля до единицы. Далее, вы берете эту плоскость и проектируете ее на ваш полигональный объект, как бы светите сквозь нее кинопроектором. Вся текстурная сетка спроектируется на полигональную поверхность, точнее, на ее вершины. Таким образом, в вершинах полигонального объекта появится новая информация - текстурные координаты, или UV-координаты.
Конечно, если вы возьмете полигональную сферу и спроектируете на нее текстурные координаты с плоскости точно сверху, вершины на нижней полусфере и на верхней полусфере получат одинаковые UV-значения. Ведь проекция параллельная. Если вы положите текстуру на такую сферу, рисунок будет одинаковый и сверху и снизу.
Поэтому существует еще два типа проекционного маппинга текстурных координат. Можно создать вокруг объекта сферу и спроектировать ее текстурную сетку на поверхность в направлении к центру сферы. Точно так же можно поступить с цилиндром, проектируя UV-координаты в направлении оси цилиндра. Значения, которые спроектируются в вершины объекта, и будут UVкоординатами.
438
Для начального варианта, естественно, разумно подобрать версию маппинга, наиболее подходящую форме вашей модели. Для головы, например, это цилиндрический маппинг (ведь голова, как известно, кубик, а кубик - это цилиндр, только негладкий). Для конечностей - тоже. Для передней и задней части тела чаще используется пленарный маппинг (проектирование с плоскости). Сферический маппинг не слишком популярен и используется для текстурирования, например, воздушных шаров или мыльных пузырей.
Здесь следует сделать важное уточнение. UV-координаты проектируются и создаются не в самих вершинах поверхности, а в углах граней, примыкающих к этим вершинам. Можно сказать, что UV-координаты создаются на гранях, но это будет не совсем корректно, ибо они находятся в углах граней. Точно так же, как вершинные нормали, по одной для каждой грани, примыкающей к вершине.
Например, в углах куба находятся сразу три пары текстурных координат, по одной для каждой грани. Эти пары могут быть сшиты (склеены, синхронизированы) в одну пару, а могут быть разрезаны на индивидуальные пары. (Тут полная аналогия с мягкими и жесткими ребрами.) К этому мы еще вернемся, а сейчас имейте в виду: выбирать грани поверхности и проектировать текстурные координаты можно только на них. На соседних гранях могут быть совсем другие UVкоординаты, хотя у этих граней могут быть общие вершины. Сшивка и разрезание текстурных координат в вершинах - наиболее частое занятие любого текстурного «закройщика». Забегая вперед, скажу, что текстурные координаты можно разделять на слои (UV-sets), и создавать несколько таких слоев, чтобы текстура цвета могла лежать в соответствии с одним набором координат, а текстура бампа в соответствии с другим.
Немного практики. Освежевание утки. Texture Editor
Не желая сухо описывать все подряд инструменты для раскладывания UV-координат, решил я, что для вводного знакомства с основными инструментами лучше привести небольшой пример потрошения утки. Те, кто уже имеет опыт работы с текстурированием (или уже выполнил пару упражнений из Интернета - http://www.highend3d.com/maya/tutorials/textunng/), могут, в принципе, пропустить этот пример: он приводится, во-первых, для начинающих, во-вторых из некоего чувства приличия. Хотя, в-третьих, я попытался сделать его не совсем тривиальным, так что если некое любопытство вас гложет, все же пробегите его глазами. А после него будет немало небесполезной информации.
Итак, откройте файл duckUVstart.ma. Там находится тушка утки (селезня, лебедя, журавля, птеродактиля). Лапы у птички я предусмотрительно отрезал, ибо их явно можно текстурировать отдельно, а тратить на них время, мне представляется неразумным. (Модель для издевательств любезно предоставил Стас Глазов.)
Главный инструмент для работы с UV-координатами |
это окно UV Texture Editor, его можно |
найти в меню Window. Однако я вам советую располагать |
его в панели, рядом с перспективной |
439
камерой - для этого достаточно щелкнуть правой кнопкой мыши на полоскесосхемами расположения окон и выбрать Persp/UV Texture Editor.
Если объект выбран, в Texture Editor отображаются его текстурные координаты. Как видите, утка имеет какой-то набор координат, сделанный по цилиндрической проекции. Эти координаты проще удалить и сделать заново.
Выполните в меню Texture Editor операцию Polygons=>Delete UVs.
Примечание. Далее я буду ссылаться на операции из меню Polygons оина Texture Edi tor. Все эти команды доступны также в основном меню Polygon UVs.
Texture Editor очистится, ибо ему нечего показывать: UV-координат больше нет. Основная идея изготовления UV-раскладок в том, чтобы найти нужные участки поверхности, выделитьсоответствующие грани и проектировать на них UV-координаты с помощью планарной или цилиндрической проекции. Потом, возможно, потребуется сшить некоторые куски, чтобы избежать швов на рисунке поверхности.
Беглый взгляд на несчастное животное позволяет выделить верхние и нижние плоскости крыльев, их переднюю и заднюю кромки. Эти участки проще замапить планарной проекцией. Туловище с шеей и ноги лучше обработать цилиндрическим маппингом.
Совет. Очень хорошая идея - создать Quick Select Sets, для последующего быстрого выбора нужных граней.
Создание Quick Select Sets
Выберите грани на верхней поверхности крыльев и создайте для них Quick Select Set, назовите его UpWing.
440
