Попытайтесь создать на поверхности чайника дополнительные детали или даже изменить его конструкцию. Например, можно добавить свисток. Или создать набор чашек с блюдцами на основе поверхностей с иерархическим разбиением. Благодаря полученному в этой главе опыту вы сможете смоделировать целую кухню!
Кроме того, попробуйте, используя изученные техники, создать кисть руки из главы 5.
Моделирование с помощью деформатора Lattice
Создание решетки
Поверхности с иерархическим разбиением
Создание морской звезды
Преобразование в поверхность с иерархическим разбиением
Построение металлического чайника
Создание базовой полигональной модели
Преобразование в поверхность с иерархическим разбиением
Преобразование в сетку полигонов
Дальнейшее редактирование модели чайника
Подведем итоги
Как вы имели возможность убедиться в предыдущих главах при изучении полигонального моделирования и моделирования на основе неоднородных рациональных сплайнов Безье, деформаторы играют большую роль при создании и редактировании формы объектов. Например, нелинейный деформатор Bend (Изгиб) вызывает изгиб объекта, к которому он присоединен. Это простая деформация. Более сложное воздействие можно получить, например, с помощью деформатора Lattice (Решетка).
Этот деформатор, как следует из его названия, создает вокруг объекта решетку, контролирующую вид геометрии. Перемещения точек решетки сопровождаются изменением формы объекта. Чем больше количество этих точек, тем выше контроль.
Деформатор Lattice (Решетка) особенно полезен при редактировании сложной полигональной сетки или слишком плотной NURBS-поверхности. Непосредственная работа с такими объектами обычно затруднена. Поэтому воздействие на них осуществляется перемещением точек решетки.
Деформатор Lattice (Решетка) применим к поверхности любого типа, кроме того, одна решетка может воздействовать на несколько поверхностей одновременно. Перемещая объект сквозь решетку или, наоборот, двигая решетку вдоль поверхности объекта, можно получить анимированную деформацию.
Теперь, когда вы получили представление о процессе создания и редактирования поверхностей с иерархическим разбиением, попробуем смоделировать еще один объект — металлический чайник. В главе 12 вам предстоит создать пар, выходящий из его носика. В данном случае моделирование начнется с простой полигональной формы, которая затем будет преобразована в поверхность с иерархическим разбиением.
Поверхности с иерархическим разбиением соединили в себе лучшие черты полигональных и NURBS-поверхностей. Они превосходно подходят для создания персонажей, ведь вы можете получить объекты с гладкими поверхностями, которые являются неотъемлемой частью NURBS-моделирования, сохранив возможность создавать их из объектов-примитивов, как это принято в полигональном моделировании.
Как и в случае с деформатором Lattice (Решетка), основной упор делается на различные уровни редактирования деталей. Это дает возможность менять вид поверхности как в глобальном смысле, так и на микроуровне, манипулируя наиболее плотными скоплениями управляющих точек.
Типичный сценарий работы с поверхностями данного типа начинается с создания простой полигональной сетки. Затем полигоны преобразуются в поверхность с иерархическим разбиением, любой участок которой вы можете редактировать, разбив его предварительно до нужного уровня. В большинстве случаев полученная таким способом модель затем преобразовывается обратно в сетку полигонов. Кроме того, вы можете преобразовывать поверхности с иерархическим разбиением в NURBS-куски.
Базовая полигональная форма будущего объекта готова. Пришла пора преобразовать ее в поверхность с иерархическим разбиением. 1. Выделите звезду и выберите в меню Modify (Изменить) команду Convert > Polygons to Subdiv (Преобразовать > Полигоны в поверхность с иерархическим разбиением). Результат этого преобразования показан на рис. 6.6.
Рис. 6.6. Результат преобразования сетки полигонов в поверхность с иерархическим разбиением
2. После преобразования объект потерял свою исходную форму, зато вы получили дополнительный контроль над его состоянием. Нажмите клавишу 3, чтобы увеличить детализацию модели. В данном случае, как и при работе с NURBS-поверхностями, детализацией управляют клавиши 1, 2 и 3.
3. Убедитесь в том, что звезда все еще выделена, и выберите в меню Subdiv Surfaces (Поверхности с иерархическим разбиением) команду Polygon Proxy Mode (Режим полигональной аппроксимации). Это даст доступ к редактированию на низком уровне и восстановит исходную форму объекта. Впрочем, звезда, которую вы увидите, не является поверхностью модели — это всего лишь решетка, позволяющая менять форму поверхности с иерархическим разбиением. Перейдите в режим редактирования подобъектов, нажав клавишу F8, и вы увидите вершины полигональной аппроксимирующей модели, перемещение которых влияет на форму сглаженного объекта.
4. Впрочем, полигональная аппроксимация хороша для нанесения «широких мазков» на заключительной стадии работы над моделью, но сама по себе она не даст вам возможности получить нужный результат. Поэтому снова нажмите клавишу F8 и вернитесь в стандартный режим, выбрав в меню Subdiv Surfaces (Поверхности с иерархическим разбиением) команду Standard Mode (Стандартный режим). Убедитесь в том, что модель по-прежнему выделена, и нажмите клавишу F8. Вершины модели окажутся на том же самом месте, что и вершины полигональной аппроксимации, только в этом случае они имеют вид малиновых кружков (рис. 6.7).
Рис. 6.7. Нолики представляют нулевой уровень детализации поверхности с иерархическим разбиением и располагаются в тех же местах, что и вершины аппроксимирующей сетки полигонов
5. Щелкните на модели правой кнопкой мыши и выберите в появившемся меню команду Display Level > 1 (Уровень отображения > 1). На этом уровне мы придадим звезде нужную форму. Выделяйте вершины, расположенные между «остриями» звезды, и перемещайте их по направлению к центру. Уровни детализации автоматически создаются в момент преобразования объекта в поверхность с иерархическим разбиением. Следующую операцию вам предстоит проделать уже на втором уровне.
СОВЕТ
Для увеличения уровня детализации достаточно выделить все вершины объекта на самом высоком уровне и выбрать в меню Subdiv Surfaces (Поверхности с иерархическим разбиением) команду Refine Selected Components (Уточнить выделенные компоненты). После этого в меню Display Level (Уровень отображения) появится номер следующего уровня.
6. Сохраните сцену. При желании вы можете сравнить полученный результат с нашей версией, загрузив файл Starfish_v02.ma с прилагаемого к книге компакт-диска.
Рис. 6.8. Морская звезда после придания ей формы
7. Щелкните на объекте правой кнопкой мыши и выберите в появившемся меню команду Display Level > 2 (Уровень отображения > 2). Вершины следующего, более высокого уровня имеют вид цифры 2. Теперь вы можете придать морской звезде характерный вид. Попытайтесь сгладить области между «остриями» (рис. 6.8). Также попытайтесь переместить вершины первого или второго уровня таким образом, чтобы нижняя поверхность модели стала плоской.
8. Для получения формы, показанной на рис. 6.8, может потребоваться увеличение детализации отдельных областей. На данный момент максимальным уровнем редактирования является второй. Выделите вершины, расположенные в промежутках между «остриями» звезды (рис. 6.9).
Рис. 6.9. Выделение областей, для которых требуется увеличить детализацию
9. Щелкните на любой группе выделенных вершин правой кнопкой мыши и выберите в появившемся меню команду Refine (Уточнить). Это приведет к увеличению детализации в выделенных областях. Постарайтесь придать объекту форму, близкую к показанной на рис. 6.8.
ПРИМЕЧАНИЕ
Щелчок на выделенном наборе вершин с последующим выбором в появившемся меню команды Refine (Уточнить) является аналогом выбора в меню Subdiv Surfaces (Поверхности с иерархическим разбиением) команды Refine Selected Components (Уточнить выделенные компоненты). Выполнение данных операций для выделенного набора вершин приводит к появлению дополнительного разбиения исключительно в этой области. При этом в любой момент вы можете перейти к аппроксимирующей полигональной сетке и отредактировать общую форму модели.
10. Сохраните сцену и сравните полученный результат с авторским, загрузив файл Starfish_v03.ma с прилагаемого к книге компакт-диска.
СОВЕТ
Вы можете воспользоваться описанной техникой для создания кисти руки, над которой вы работали в главе 5.
Базовая полигональная модель чайника готова. Теперь ее можно сгладить преобразованием в поверхность с иерархическим разбиением:
1. Выделите чайник и выберите в меню Modify (Изменить) команду Convert > Polygons to Subdiv (Преобразовать > Полигоны в поверхность с иерархическим разбиением). Затем выделите крышку и повторите эту операцию.
2. Выделите оба объекта и нажмите клавишу 3, чтобы максимально увеличить их детализацию. Поместите крышку поверх чайника (рис. 6.17).
Рис. 6.17. Результат преобразования чайника и крышки в поверхность с иерархическим разбиением
3. Осталось смоделировать носик и ручку. Выберите в меню Create > Subdiv Primitives (Создать > Примитивы на основе поверхностей с иерархическим разбиением) команду Torus (Top). Измените масштаб тора, поверните его и поместите поверх чайника.
4. Убедитесь в том, что ручка по-прежнему выделена, и выберите в меню Subdiv Surfaces (Поверхности с иерархическим разбиением) команду Polygon Proxy Mode (Режим полигональной аппроксимации). Перемещая вершины полигональной-аппроксимирующей модели, сделайте ручку тоньше и удлините ее (рис. 6.18).
5. Не снимая выделения с ручки, вернитесь в стандартный режим, выбрав в меню Subdiv Surfaces (Поверхности с иерархическим разбиением) команду Standard Mode (Стандартный режим). Теперь нужно сгладить ручку — для этого создадим дополнительные разбиения. Перейдите в режим редактирования подобъектов, щелкните на ручке правой кнопкой мыши и выберите в появившемся контекстном меню команду Refine (Уточнить). Теперь вершины будут иметь вид единиц. По мере необходимости переходя с нулевого уровня на первый и обратно, отредактируйте вид ручки по своему вкусу. Для перехода используйте команду Display Level (Уровень отображения) из меню, вызываемого щелчком правой кнопкой мыши.
6. Создание носика начните с объекта-примитива Cylinder (Цилиндр) из группы Subdiv Primitives (Примитивы на основе поверхностей с иерархическим разбиением). Перейдите в режим редактирования подобъектов и выделите все грани цилиндра. Щелкните на нем правой кнопкой мыши и выберите в появившемся меню команду Display Level > 2 (Уровень отображения > 2). Выделите внутренний круг граней на верхней поверхности цилиндра и опустите их вниз (рис. 6.19).
Рис. 6.18. Ручка чайника
7. Расположите носик на поверхности чайника. Переместите вершины нижней поверхности цилиндра таким образом, чтобы они совпали с поверхностью чайника. Готовый объект показан на рис. 6.20.
Сохраните сцену. Созданный вами чайник будет использован в главе 12 при изучении динамики частиц.
Большинство моделей, созданных на основе поверхностей с иерархическим разбиением, после завершения работы преобразуются в сетку полигонов. Сами по себе подобные поверхности требуют значительного количества ресурсов, соответственно, упомянутое преобразование способствует повышению производительности дальнейшей работы, например анимации модели. Именно такой подход обычно демонстрируют профессионалы.
Рис. 6.19. Создание носика
Рис. 6.20. Чайник, полученный на основе поверхностей с иерархическим разбиением
Процедура преобразования в сетку полигонов у поверхностей с иерархоческим разбиением и NURBS-поверхности практически одинаковы:
1. Выделите все объекты сцены, выберите в меню Modify (Изменить) команду Convert (Преобразовать) и щелкните на квадратике, расположенном справа от команды Subdiv to Polygons (Поверхности с иерархическим разбиением в полигоны). Появится окно диалога, показанное на рис. 6.21.
2. Установите переключатель Tessellation Metod (Метод разбиения) в положение Adaptive (Адаптивный). Именно такой способ разбиения обычно дает самые лучшие результаты. В этом случае для каждого уровня разбиения создается равное число полигональных граней. Чем выше уровень разбиения области, тем больше количество граней будет для нее создано.
Рис. 6.21. Окно диалога Convert Subdiv To Polygons Options
3. Параметр Divisions Per Face (Разбиений на одну грань) управляет степенью сглаживания итоговой полигональной поверхности. При заданном по умолчанию значении 1 чайник будет выглядеть разбитым на отдельные грани. Присвойте этому параметру значение 2.
4. Но самые лучшие результаты можно получить, преобразовывая объект по частям и регулируя значение параметра Divisions Per Face (Разбиений на одну грань) по обстоятельствам. Вы увидите, что значение 2 подходит ко всем частям, кроме ручки. В процессе преобразования ручки присвойте этому параметру значение 3.
1. Построение чайника мы начнем с полигонального цилиндра. Выберите в меню Create (Создать) команду Polygon Primitives (Полигональные примитивы) и щелкните на квадратике, расположенном справа от команды Cylinder (Цилиндр). Введите в поля Subdivisions Around Axis (Разбиение вдоль оси) и Subdivisions Along Height (Разбиений по высоте) появившегося окна диалога значения 8 и 4 соответственно и щелкните на кнопке Create (Создать).
2. Для создания крышки чайника вам потребуется еще один цилиндр. В данном случае параметры Subdivisions Around Axis (Разбиение вдоль оси) и Subdivisions Along Height (Разбиений по высоте) должны иметь значения 8 и 2 соответственно. Площади оснований обоих цилиндров должны совпадать.
3. По очереди выделяя горизонтальные ряды ребер, двигайте и масштабируйте их таким образом, чтобы придать крышке форму, показанную на рис. 6.10. Затем выделите четыре ребра на верхней поверхности и удалите их. В итоге эта поверхность должна приобрести вид, показанный на рис. 6.11.
Рис. 6.10. Результат перемещения и масштабирования горизонтальных наборов ребер
Рис. 6.11. Результат удаления лишних ребер с верхней поверхности
4. По очереди выделяйте горизонтальные наборы ребер основного цилиндра и увеличивайте их масштаб, чтобы получить объект, расширяющийся книзу.
5. Теперь займемся созданием ручки для крышки. Для этого выделите четыре грани на верхней поверхности. Если теперь выбрать в меню Edit Polygons (Правка полигонов) команду Extrude Face (Выдавить грань), а затем воспользоваться манипулятором преобразования Scale (Масштабировать), произойдет разделение граней (рис. 6.12).
Поэтому выберите в меню Polygons (Полигоны) команду Tool Options > Keep Faces Together (Параметры инструмента > Объединить грани). Теперь щелкните на квадратике, расположенном справа от команды Extrude Face (Выдавить грань) в меню Edit Polygons (Правка полигонов), и выберите в меню Edit (Правка) появившегося окна диалога команду Reset Settings (Сбросить настройки). Щелкните на кнопке Extrude Face (Выдавить грань). Уменьшите масштаб выделенных граней (рис. 6.13). В данном случае грани будут масштабироваться как единое целое.
6. Не снимая выделения с граней, выдавите их еще раз, но в этот раз слегка приподнимите и уменьшите масштаб, как показано на изображении слева.
Рис. 6.12. По умолчанию выдавливание граней происходит по отдельности
Рис. 6.13. Команда Keep Faces Together позволяет выдавливать грани как единое целое
7. Выделите боковые грани ручки и выдавите вовнутрь, слегка уменьшив их размер, как показано на изображении справа.
8. Переместите ребра, расположенные на верхней границе ручки, таким образом, чтобы получить округлый контур (рис. 6.14).
Рис. 6.14. Результат скругления ручки чайника путем перемещения ребер
9. Выделите четыре грани на верхней поверхности чайника и выдавите их. Уменьшите их масштаб, а затем немного приподнимите вверх, чтобы получить округлую форму.
10. Выделите чайник и выберите в меню Deform (Деформация) команду Create Lattice (Создать решетку). Введите в поля S Divisions (Разбиений по S), Т Divisions (Разбиений по Т) и U Divisions (Разбиений по U) окна диалога Channel Box (Окно каналов) значения 2, 3 и 2 соответственно. Отрегулируйте положение решетки, как показано на рис. 6.15. После получения данной формы выделите чайник и удалите историю его конструирования. После этого удалите решетку.
Рис. 6.15. Изменение формы чайника с помощью деформатора Lattice
11. Перед преобразованием объекта в поверхность с иерархическим разбиением потребуется создать еще одну деталь, которая гарантирует наличие плоского днища после преобразования. Выделите чайник в окне проекции Side (Вид сбоку) или Front (Вид спереди) и выберите в меню Edit Polygons (Правка полигонов) команду Cut Faces Tool (Инструмент разрезания граней). Желательно открыть окно диалога с параметрами данного инструмента и выбрать в меню Edit (Правка) этого окна команду Reset Setting (Сбросить настройки). Создайте набор новых граней, идущих параллельно нижней поверхности чайника (рис. 6.16).
Рис. 6.16. С помощью инструмента Cut Faces Tool создайте набор граней, параллельных нижней поверхности чайника, сформировав тем самым небольшую кромку
12. Выделите все полученные таким способом грани и выдавите их немного вперед. Перед этой операцией выберите в меню Polygons (Полигоны) команду Tool Options (Параметры инструмента) и убедитесь в наличии флажка рядом с командой Keep Faces Together (Объединить грани). В противном случае грани будут выдавлены по отдельности.
13. Сохраните сцену. Для сравнения загрузите файл Kettle_Model_v01.ma с прилагаемого к книге компакт-диска.
Создание морской звезды начнется с полигональной сетки, как у моделей, с которыми вы познакомились в главе 5. Затем эта сетка будет преобразована в поверхность с иерархическим разбиением, чтобы облегчить процесс придания объекту нужной формы.
1. Создайте новую сцену и нажмите клавишу F3 для перехода в режим Modeling (Моделирование). Создайте полигональный куб и введите в поля Scale X (Масштабирование по оси X), Scale Y (Масштабирование по оси Y) и Scale Z (Масштабирование по оси Z) окна диалога Channel Box (Окно каналов) значения 8,1,2 несоответственно.
2. Воспользуйтесь инструментом Split Polygon Tool (Инструмент разбиения полигонов), вызываемым одноименной командой меню Edit Polygons (Правка полигонов), чтобы разделить одну из боковых сторон полученного параллелепипеда пополам.
3. Превратите параллелепипед в неправильный пятиугольник (рис. 6.5). Для этого нужно перейти в режим редактирования подобъектов и, по очереди выделяя полигональные ребра, перемещать их в нужное место. В данном случае точный размер сторон пятиугольника не имеет значения. Важно только, чтобы перемещение происходило строго в одной плоскости.
4. Снова воспользуйтесь инструментом Split Polygon Tool (Инструмент разбиения полигонов), чтобы разделить каждую из сторон пополам. Это необходимо для создания звезды, которая будет преобразована в поверхность с иерархическим разбиением.
Рис. 6.5. После создания пятиугольника разделите каждую из его сторон пополам
5. Переместите вновь созданные ребра к центру, чтобы получить звезду. В результате вы получите основу моделируемого объекта.
6. Сохраните сцену. Для сравнения загрузите файл Starfish_v01.ma, расположенный в папке ChapterFHes\Starfish\scenes прилагаемого к книге компакт-диска.
Убедитесь в том, что вы находитесь в режиме Animation (Анимация). В противном случае нажмите клавишу F2. Выделите модель или группу, предназначенную для
Рис. 6.1. Решетка, назначенная полигональной модели руки
редактирования, и выберите в меню Deform (Деформация) команду Create Lattice (Создать решетку). На рис. 6.1 показана детализированная полигональная модель руки, которой назначена решетка с заданными по умолчанию параметрами. Назначению решетки предшествовало выделение верхнего узла рассматриваемой модели.
В качестве практического примера работы с деформатором Lattice (Решетка) предлагаем вам отредактировать детализированную модель руки. Для этого потребуется несколько вариантов решеток. Перед вами стоит задача — получить руку инопланетянина, удлинив пальцы и сделав их более тонкими. Выполнение подобного преобразования путем перемещения вершин требует времени и значительных усилий. Намного проще реализовать его с помощью деформатора.
Загрузите файл detailed_poly_hand.ma из папки \ChapterFiles\Poly_Hand\scenes прилагаемого к книге компакт-диска.
1. Выделите верхний узел руки (он называется poly_hand) и выберите в меню Deform (Деформация) команду Create Lattice (Создать решетку). Появится решетка с заданными по умолчанию параметрами, воздействующая одновременно на всю руку. Именно она показана на рис. 6.1. Вы можете вызвать окно диалога с параметрами деформатора непосредственно перед созданием решетки, но в данном случае редактирование параметров отложено на более позднее время.
2. Сейчас в сцене выделена только что созданная решетка. Откройте для нее окно диалога Attribute Editor (Редактор атрибутов) и перейдите на вкладку ffdlLat-ticeShape. Здесь нас интересуют три атрибута: S Divisions (Разбиений по S), Т Divisions (Разбиений по Т) и U Divisions (Разбиений по U)1, определяющие число разбиений решетки. Присвойте им значения 2, 3 и 2 соответственно, чтобы получить решетку, показанную на рис. 6.2. Цифры 3x2x3 обозначают количество составляющих решетку линий, а не число сечений. В противном случае решетка описывалась бы цифрами 2 х 1 х 2.
3. Нажмите клавишу F8, чтобы сделать видимыми точки пересечения линий решетки. Эти точки являются аналогом вершин полигональной сетки. Именно с их помощью вам предстоит поменять форму объекта, не прибегая к перемещению вершин его сетки. Выделите точки со стороны большого пальца и с помощью преобразования Scale (Масштабировать) переместите их таким образом, чтобы сжать руку в этой области.
4. Вернитесь в режим редактирования объектов, еще раз нажав клавишу F8,
Рис. 6.2. Результат изменения числа разбиений решетки
и поменяйте масштаб решетки сначала по оси Z, чтобы рука стала более тонкой, а потом по оси X, чтобы она стала длиннее. В данном случае масштабирование решетки приведет к деформации всей руки.
Итак, вы изменили форму руки. Больше эта решетка не понадобится. Но если ее просто удалить, рука вернется в исходное состояние. Поэтому сначала нужно удалить историю конструирования объекта.
5. Выделите верхний узел руки и выберите в меню Edit (Правка) команду Delete by Type > History (Удалить объекты типа > История).
Теперь нужно удлинить пальцы и сделать более широкими их суставы. Начнем с указательного пальца:
1. Выделите верхний узел руки и создайте для него решетку.
2. Теперь можно разбить ее, получив тем самым возможность влиять на вид каждого из пальцев, но мы воспользуемся другим способом. Намного проще уменьшить масштаб решетки таким образом, чтобы она располагалась точно вокруг указательного пальца.
3. Чтобы преобразование масштабирования не повлияло на вид руки, выделите не только решетку воздействия, но и невидимую, базовую, решетку. Для этого в окне диалога Outliner (Структура) вам потребуется выделить строчки ffdl-LattkenffdlBase.
4. Измените положение, ориентацию и масштаб решетки таким образом, чтобы она окружила указательный палец (рис. 6.3). Снимите, выделение с базовой решетки и введите в поля S Divisions (Разбиений по S),T Divisions (Разбиений по Т) и U Divisions (Разбиений по U) значения 7, 2 и 3 соответственно.
Рис. 6.3. Размещение решетки воздействия и базовой решетки вокруг указательного пальца
5. Перемещая точки решетки, удлините указательный палец и расширьте его в области суставов.
6. Чтобы сохранить форму пальца после удаления решетки, выделите верхний узел руки и удалите историю его конструирования.
СОВЕТ
Перед тем как удалить последнюю решетку, подвигайте сквозь нее палец и обратите внимание на то, как при этом меняется его вид. Попытайтесь представить, как этот эффект можно использовать в анимации. Скажем, таким способом можно создать шарик, проталкиваемый сквозь трубу.
Рука инопланетянина (рис. 6.4) создана исключительно с помощью деформатора Lattice (Решетка).
Рис. 6.4. Человеческая рука превращена в руку инопланетянина с помощью деформатора Lattice
Как вы уже убедились, решетки позволяют подробно редактировать объекты без непосредственного перемещения управляющих вершин поверхности. С их помощью вы можете поменять форму как объекта в целом, так и его отдельных элементов.
Деформатор Lattice (Решетка) работает не только с полигональными сетками, но и со всеми остальными типами поверхностей в Maya. С его помощью вы можете придать модели определенную форму, а также создать эффект изменения формы во времени.