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

ponimayka1

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

После операции Rebuild контрольные точки и Hulls равномерно покрывают поверхность.

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

Если выбрать изопарму, идущую вдоль ребра, то в Script Editor, можно увидеть запротоколированную команду типа

select-г nurbsCone2.v[25.2] ;

Имя конуса, естественно, может отличаться от вышеприведенного. Число 25.2 соответствует значению параметра V, определяющему именно эту изопарму.

251

Если же выбрать две изопармы рядом с предыдущей, то в Script Editor появятся команды типа

Если мы хотим строго симметрично выбрать две таких изопармы рядом с угловой, мы должны отредактировать и выполнить эти две команды, так, чтобы значения в квадратных скобках были «симметричны» относительно 25.2. Например 25.2±0.05.

Выделяем две последние команды в верхней части Script Editor и перетаскиваем их в нижнюю часть Script Editor.

Редактируем:

И выполняем (Ctrl+Enter).

После этого выполняем операцию Insert Isoparm (At Selection, Set to, Multiplicity=1). Теперь можно поднаехать на ребро, выбрать при помощи Hull угловой ряд точек и удалить

252

его. Ряд точек удаляется просто нажатием клавиши Delete.

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

На данном этапе сцена сохранена как trainNew2.ma.

Поработаем с историей.

Надо заметить, что заглянув в Outliner можно обнаружить некоторое количество пустых групп, оставшихся от Bevel и других операций. Однако эти группы, несмотря на отсутствие видимых форм внутри них, не пустые. Они содержат так называемые intermediate objects, то есть невидимые промежуточные объекты, не удаленные ради сохранения Construction History.

Примечание. В Attribute Editor в разделе Object Display для ноды nurbsSurface есть атрибут определяющий «промежуточность» объекта. Не надо его трогать! Он устанавливается автоматически.

253

Если удалить историю для всех объектов в сцене, а это то, что мы хотим сделать прямо сейчас (Edit>>Delete All by Type=>History), все пустые группы исчезнут автоматически. Если что-то и останется, можно «добить» это вручную. Останется всего четыре поверхности и две «поверхностные» кривые, которые тоже следует удалить.

Это несколько проще (по крайней мере понятнее), чем борьба с объектами-мутантами, порождаемыми Round Tool и Circular Fillet.

Сцена после удаления Construction History сохранена как trainNew2noHistory.ma.

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

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

Моделирование хорошего сплайнового куба

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

Предвижу упреки в непрактичности. Как можно тратить на простой кубик десятки страниц Может, лучше построить человеческую голову?

Во-первых, лучше кубик. Во-вторых, кубик совсем непростой.

В-третьих, вы можете прочитать документацию и даже сделать массу упражнений на применение операций Fillet или Square, однако вы практически нигде вы не обнаружите акцентирование на информации о том, что первая создает кривую параметризацию, а вторая не обеспечивает произвольную точность. Или сведений о том, как с этим бороться.

254

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

Выполните Modify=>Center Pivot.

Выберите Scale Tool и сожмите немного все плоскости одновременно.

Далее надо сделать Freeform Fillet между всеми соседними краями плоскостей.

Для того, чтобы удобно было выбирать соседние изопармы, нажмите F8, отключите выбор точек в Selection Masks и включите выбор изопарм.

Выбирайте последовательно пары соседниех изопарм и применяйте к ним операцию Freeform Fillet.

Меню Edit NURBS=>Surface Fillet удобно при этом оторвать.

Старайтесь двигаться по часовой стрелке и от боковых граней к горизонтальным для единообразного направления поверхностей.

Для закрытия «уголков» используется операция построения поверхности Square.

255

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

Выбирайте изопармы на краях «уголков» и применяйте Surfaces=>Square.

Особенность построения состоит в том, что построение Square зависит от порядка выбора кривых. Иногда поверхность просто «переглючивает» (точнее, перекручивает). В этом случае надо просто выбрать изопармы в противоположном направлении. Кроме того, методом тыка старайтесь выбирать изопармы так, чтобы поверхность строилась полюсом вверх. (Я выбирал, начиная c левой изопармы, по часовой стрелке для верхних углов и против часовой стрелки, для нижних).

Впринципе куб готов. Благодаря Construction History, можно даже регулировать радиус скругления и размер куба.

ВOutliner выберите шесть плоскостей входящих в группу куба и при помощи Scale Tool порегулируйте зазор между плоскостями и, как следствие, радиус склеивания. Если же выбрать куб как группу, то можно менять размеры и пропорции самого куба.

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

Дело в том.что операция Freeform Fillet создает поверхности с Chord Length параметризацией.

256

Поэтому значение параметра для крайних изопарм Fillet-поверхностей, по которым строится Square, постоянно меняется при масштабировании плоскостей. Construction History не может работать в таких постоянно меняющихся условиях. Рецепт состоит в том, чтобы перестроить все Fillet-поверхности и задать им Uniform параметризацию. К сожалению, все «уголковые» Squareповерхности не выдержат такого обращения и их придется удалить и построить заново.

Выбираем все Fillet-поверхности и делаем Rebuild (Uniform, Keep CV, Parameter Range=0 to #Spans), чтобы задать Uniform-параметризацию, не трогая контрольные вершины.

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

Теперь при масштабировании плоскостей все остается в порядке. Если вдруг на совсем узких зазорах углы начинает «скручивать», это можно исправить уменьшением значения атрибута End Point Tolerance (точность построения) ноды squareSrf.

Итак, построенный куб

состоит из

шести плоскостей, двенадцати Fillet-скруглений,

к которым применена операция

Rebuild,

и восьми Square-уголков, проведенных через края

округлений. Construction History не удалена и позволяет регулировать зазор и масштаб куба.

Сохраняем файл как roundedCubel .ma.

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

Если отрендерить крупным планом угол такого куба, то обнаружатся некоторые дырки на швах между поверхностями.

257

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

Кстати, Maya Software Render и Mental Ray for Maya используют различные методы теселяции объектов. Mental Ray производит более интеллектуальный анализ кривизны поверхности, и зачастую дополнительное вмешательство не требуется.

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

Совет. При слишком близких подъездах к объекту MAYA начинает отсекать детали, находящиеся очень близко к камере. Точнее отсекать начинает сама камера, которая имеет соответствующие атрибуты, определяющие дальнюю и переднюю плоскости отсечения. Чтобы видеть близлежащие детали, выберите камеру, откройте Attribute Editor и в закладке для shape, уменьшите значение а т р и б у т а Near Clip Plane до 0.001.

Теселяция

Полигоны, на которые NURBS-объект разбивается при рендеринге, можно увидеть прямо на экране. Для этого в Attribute Editor надо открыть во второй закладке раздел Tesellation и ВКЛЮЧИТЬ галку Display Render Tessellation. К сожалению, отображаются только полигоны для Maya Software Render. Для каждого объекта, степень теселяции задается индивидуально, то есть локально Чтобы определить критерии разбивки на полигоны для всей сцены целиком, то есть глобально есть пункт меню Render=>Set NURBS Tessellation.

258

По умолчанию, для каждого объект качество теселяции, то есть степень подробности разбиения на полигоны, задается в условных единицах «лучше-хуже», определяемых атрибутами U/V Division Factor, а необходимость добавлять больше полигонов в местах большей кривизны управляется предустановками атрибута Curvature Tolerance. (Mental Ray использует только этот атрибут).

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

Для того, чтобы управлять, как именно происходит разбиение на полигоны, можно включить метод неавтоматической теселяции (раздел Advanced Tessellation, галка Enable Advanced Tessel­ lation). Используя этот метод, можно задать, на сколько полигонов разбивается каждая ячейка сетки из изопарм. Другими словами, на сколько отрезков разбивается каждый сегмент между соседними изопармами. (Дополнительные подразбиения производятся после этого на основе критериев из раздела Secondary Tessellation Attributes.)

В нашем случае поверхности будем называть их теперь Fillet (продольные скругления) и Square(углы) построены таким образом, что изопармы соседних объектов как бы «втекают» друг в друга. Это показатель хорошего качества стыковки поверхностей, и надо всегда стремиться обеспечить такое совпадение изопарм на краях.

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

Будем использовать число 3 по умолчанию для атрибутов Number U/V, поэтому просто включите галку Enable Advanced Tessellation для всех поверхностей.

259

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

Совет. Чтобы быстро установить значение атрибута, доступного только в Attribute Editor сразу для многих поверхностей, можно использовать редактор Window=>Ceneral Editors=>Attribute Spread Sheet.

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

260

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