Первые шаги в Maya. Урок 6. Основы NURBS-моделирования. Часть 1
NURBS-кривые и NURBS-поверхности
Метод получения плоских поверхностей
Методы NURBS-моделирования
Метод вращения
Пожалуй, самым простым способом моделирования NURBS-поверхностей является вращение NURBS-кривых вокруг опорной точки, что приводит к получению тел вращения, то есть моделей, имеющих центральную осевую симметрию. Данный метод используется для создания таких объектов, как бутылки, рюмки, ручки и т.п.
Попробуем для начала получить методом вращения обычный цилиндр. Активируйте режим создания кривой по управляющим вершинам, применив команду Create=>CV Curve Tool, и создайте кривую как на рис. 30. По умолчанию NURBS-кривая всегда состоит из криволинейных отрезков — в нашем случае необходима ломаная, для ее получения примените команду Edit Curves=>Rebuild Curve (Редактировать кривые=>Перестроить кривую), установив ее параметры в соответствии с рис. 31 (обратите внимание, что пришлось изменить характер кривой, установив для параметра Degree вариант Linear (вместо Cubic, применяемого для криволинейных контуров) и задав количество отрезков ломаной в параметре Number of Spans). После этого отрегулируйте положение начальной и конечной точек, которые должны быть строго друг под другом и находиться на оси Y (рис. 32) Стоит заметить, что можно было поступить и проще, указав, что кривая должна быть представлена линейными сплайнами сразу при ее создании — для этого следовало щелкать не на команде Create=>CV Curve Tool, а на квадратике справа от нее, а затем установить для параметра Curve Degree вариант 1 Linear. Тогда бы операция по изменению типа кривой и последующее перемещение ее вершин не потребовались. Независимо от того, каким способом вы воспользовались при создании ломаной, выделите ее и примените к ней операцию Revolve (Вращение), выбрав соответствующую команду из меню Surfaces (Поверхности), что и приведет к получению цилиндра (рис. 33).
Рис. 30. Исходная кривая
Рис. 31. Окно Rebuild Curve Options
Рис. 32. Ломаная
Рис. 33. Цилиндр
А теперь смоделируем фужер для шампанского. Создайте новую сцену и сформируйте кривую типа CV Curve Tool (рис. 34). Если кривая получилась не совсем такой, как была задумана, то переключитесь в режим редактирования вершин, нажав клавишу F9, и отрегулируйте положение вершин. Вернитесь в режим работы на уровне объектов (клавиша F8), выделите кривую и примените к ней операцию Revolve (Вращение). В итоге увидите примерно такой же фужер, как представлен на рис. 35.
Рис. 34. Исходная кривая
Рис. 35. Фужер
Учитывая, что по умолчанию история создания любого объекта в Maya сохраняется (поскольку кнопка Construction History (История конструирования), расположенная в строке состояния, нажата), то любая модель вращения может быть отредактирована после своего создания, для чего достаточно изменить вид соответствующей кривой. Это можно сделать в режиме работы с подобъектами, например перетащив отдельные точки кривой (управляющие вершины или точки редактирования), удалив некоторые из них или создав новые. Для примера при выделенной кривой нажмите клавишу F9 и попробуйте изменить форму кривой, отрегулировав положение вершин, в соответствии с рис. 36 — и округлый фужер превратится в узкую рюмку (рис. 37). Стоит заметить, что при большом числе объектов выделить нужную кривую непосредственно в окне проекции может оказаться сложно — удобнее выделять кривые через окно Outliner (Структура), открываемое из меню Window (Окно) — рис. 38. Для тренировки смоделируйте еще несколько поверхностей методом вращения, например обычную вазу и вазу для фруктов, и сохраните их (они нам потребуются потом для оформления сцены) — рис. 39 и 40.
Рис. 36. Исходная кривая
Рис. 37. Рюмка
Рис. 38. Выделение кривой в окне Outliner
Рис. 39. Обычная ваза (кривая и визуализированная модель)
Рис. 40. Ваза для фруктов (кривая и визуализированная модель)
Немного усложним задачу и попробуем смоделировать флакон (например, для крема) с крышкой (флакон и крышка образуют один объект) также как тело вращения. Для этого вначале инструментом Create=>CV Curve Tool создайте кривую, последовательно указав все ее управляющие точки (рис. 41). Как и следовало ожидать, контур получился криволинейным, поэтому превратите его в ломаную командой Edit Curves=>Rebuild Curve (Редактировать кривые=>Перестроить кривую) — рис. 42. Затем инструментом Move Tool переместите вершины так, чтобы они заняли предназначенное им положение (рис. 43), нажмите клавишу F8, чтобы вернуться в режим работы на уровне объектов, и создайте на основе кривой тело вращения, применив команду Surfaces=>Revolve (Поверхности=>Вращение), — рис. 44. Присвойте полученному флакону подходящий материал и визуализируйте сцену — возможный вариант представлен на рис. 45.
Рис. 41. Исходная кривая
Рис. 42. Превращение криволинейного контура в ломаную
Рис. 43. Корректировка положения вершин
Рис. 44. Результат применения к кривой операции Revolve
Рис. 45. Флакон с крышкой
И наконец, более сложная задача — смоделируем резную ножку для стола. Для этого в новой сцене инструментом Create=>CV Curve Tool создайте примерно такую же кривую, как представлена на рис. 46. В режиме редактирования подобъектов выделите указанные на рис. 47 вершины и примените к ним операцию Edit Curves=>CV Hardness (Редактировать кривые=>Заострить), поскольку необходимо будет заострить соответствующие фрагменты профиля. Переместите заостренные вершины так, чтобы добиться примерно такого же вида кривой, как на рис. 48. Учитывая, что в нижней части ножки для придания ей устойчивости будет крепиться крестовина (ее мы смоделируем немного позже), замените криволинейный участок кривой в этой части профиля на прямолинейный обычным перемещением вершин (рис. 49). Преобразуйте кривую-профиль в тело вращения командой Surfaces=>Revolve (Поверхности=>Вращение). Сгладьте полученную поверхность при помощи команды Display=>NURBS Smoothness=>Fine (Отображение=>NURBS-сглаживание=>Высокое) — рис. 50. Создайте для стола столешницу из обычного полигонального цилиндра, назначьте созданным элементам стола подходящий материал и сохраните сцену, так как мы вернемся к ней чуть позже для доработки ножки стола. Возможный вариант сцены представлен на рис. 51.
Рис. 46. Исходная кривая
Рис. 47. Применение команды CV Hardness к части вершин
Рис. 48. Заострение некоторых фрагментов профиля
Рис. 49. Окончательный вид кривой
Рис. 50. Результат применения к кривой операции Revolve
Рис. 51. Стол (пока без крестовины)
Метод получения плоских поверхностей
Формирование плоских поверхностей заключается в вырезании области плоскости, заданной некоторой NURBS-кривой. Такие поверхности незаменимы для закрытия торцов моделируемых объектов и могут применяться при создании текста. Получение плоских поверхностей не составляет ни малейшего труда, нужно только соблюдать два правила: NURBS-кривые должны лежать на плоскости (поэтому создавать их лучше в проекциях Top или Persrective) и быть замкнутыми.
Для того чтобы разобраться с данным способом создания NURBS-поверхностей, проведем небольшой эксперимент. Создайте новую сцену и в проекции Top сформируйте произвольную кривую (рис. 52). Выделите кривую и примените команду Surfaces=>Planar (Поверхности=>Планарный) — появится двумерная поверхность, соответствующая форме кривой (рис. 53). Чтобы удостовериться в том, что поверхность действительно была создана, откройте окно Outliner (Структура), выделите добавившуюся в нем поверхность, поверните ее по оси X на 90°, по оси Z на –90° и немного переместите (рис. 54). А затем назначьте материал и визуализируйте сцену (рис. 55).
Рис. 52. Исходная кривая
Рис. 53. Появление полоской NURBS-поверхности
Рис. 54. Изменение положения плоской поверхности
Рис. 55. Визуализированная плоская поверхность
Метод выдавливания со скосом
Данная технология позволяет формировать NURBS-поверхности с разнообразными фасками и базируется на применении одного из двух инструментов: Bevel (Скос) или Bevel Plus (Улучшенный скос). Первый позволяет создавать поверхности на основе как открытых, так и замкнутых кривых, а второй — только замкнутых (поэтому чаще всего требуется предварительное закрытие контура кривой при помощи команды Open/Close Curves). Размер скоса и глубина выдавливания, а также вид фаски (только при использовании инструмента Bevel Plus) регулируются. Сформированные операцией Bevel поверхности получаются открытыми с торцов, но эти отверстия несложно закрыть специально вырезанными плоскими поверхностями, созданными с помощью инструмента Planar (Планарный). Поверхности, полученные при помощи команды Bevel Plus, с торцов закрыты, потому для них подобных преобразований не требуется.
Начнем эксперименты с моделирования поверхностей командой Bevel Plus. Создайте NURBS-кривую в виде многоугольника (рис. 56). В данном случае удобнее воспользоваться инструментом Create=>CV Curve Tool, но только щелкнуть нужно на квадратике справа от инструмента, чтобы установить для параметра Degree вариант Linear — рис. 57. Выделите кривую, сделайте ее замкнутой, применив команду Open/Close Curves (Открыть/Закрыть кривые), а затем осуществите выдавливание поверхности из данной кривой, воспользовавшись командой Surfaces=>Bevel Plus (Поверхности=>Улучшенный скос) при параметрах как на рис. 58 (не забывайте, что для указания параметров команды необходимо щелкать на квадратике, находящемся справа от команды). В итоге будет создана поверхность с фаской, сечением которой и будет исходная кривая (рис. 59). Возможный вид визуализированной сцены с созданной поверхностью представлен на рис. 60.
Рис. 56. Исходная кривая
Рис. 57. Определение параметров инструмента Create=>CV Curve Tool
Рис. 58. Настройка параметров команды Bevel Plus
Рис. 59. Появление поверхности с фаской
Рис. 60. Визуализированная поверхность с фаской
А теперь с помощью операции Bevel Plus попробуем получить эффектный объемный текст. Создайте произвольный текстовый элемент, щелкнув на квадратике справа от команды Create=>Text (Создать=>Текст) и настроив в открывшемся диалоговом окне параметры текста (рис. 61). Если сцену сразу же визуализировать, то текст не произведет впечатления (рис. 62). Выделите NURBS-кривую для первой буквы (рис. 63) — плоский текст, созданный автоматически вместе с контуром при применении команды Create=>Text, выделять не следует, также не нужно выделять контуры всех букв одновременно, иначе операция Bevel Plus окажется недопустимой. Примените к выделенному элементу команду Surfaces=>Bevel Plus (Поверхности=>Улучшенный скос), настроив ее параметры в соответствии с рис. 64, — текст станет объемным (рис. 65). Назначьте созданному тексту подходящий материал, и вполне возможно, что в окончательном виде текст будет напоминать представленный на рис. 66.
Рис. 61. Исходный текст
Рис. 62. Рендеринг сцены сразу после создания текста
Рис. 63. Выделение первого контура
Рис. 64. Настройка параметров команды Bevel Plus
Рис. 65. Объемный текст (материал Lambert1)
Рис. 66. Объемный текст после назначения материалов
Перейдем к более сложной задаче. Довольно часто при моделировании используют комбинирование методов генерации плоских поверхностей и выдавливания посредством операции Bevel (Скос). Рассмотрим подобный случай на примере получения модели обычной гитары, для чего нам вначале потребуется создать контур гитары, сформировать на его основе две плоские поверхности (они потребуются для закрывания ее торцов), а затем к тому же самому контуру применить метод выдавливания, чтобы получить боковую поверхность гитары. Начнем с контура — создать его можно и на глаз, но гораздо удобнее воспользоваться подходящим снимком гитары (вид сверху): его можно загрузить в окно проекции Top и затем обвести. Создайте новую сцену, активируйте проекцию Top и для загрузки снимка выберите в меню View (Вид) окна проекции команду Image Plane=>Import Image (Плоскость изображения=>Импортировать изображение) — рис. 67 и 68.
Рис. 67. Растровое изображение
Рис. 68. Появление снимка в окнах проекций
В проекции Top создайте NURBS-кривую, совпадающую с контуром гитары (рис. 69). Сделать это лучше инструментом EP Curve Tool, который формирует точки редактирования кривой точно там, где были сделаны щелчки мышью. На основе данной кривой инструментом Planar (команда Surfaces=>Planar — Поверхности=>Планарный) смоделируйте две плоские поверхности (рис. 70). В окне Outliner (Структура) выделите исходную кривую и смоделируйте криволинейную поверхность, соответствующую контуру гитары, воспользовавшись командой Surfaces=>Bevel (Поверхности=>Скос) и настроив ее параметры в соответствии с рис. 71. Это приведет к появлению выдавленной из контура боковой поверхности гитары (рис. 72 и 73). Совместите поверхности так, чтобы торцы гитары оказались закрытыми, объедините их в группу (команда Edit=>Group) и установите для группы высокий уровень сглаживания (команда Display=>NURBS Smoothness=>Fine) — рис. 74. Назначьте объектам сцены подходящие материалы и проведите рендеринг — возможный результат представлен на рис. 75.
Рис. 69. Создание контура гитары
Рис. 70. Появление плоской поверхности
Рис. 71. Настройка параметров команды Bevel
Рис. 72. Результат применения операции Bevel
Рис. 73. Вид сцены после создания всех трех поверхностей
Рис. 74. Гитара (материал Lambert1)
Рис. 75. Вид гитары после назначения материалов
Вернемся к сохраненной модели стола, у которой нам осталось смоделировать крестовину. Для ее создания временно выключите отображение полигональных объектов и NURBS-поверхностей в проекциях Top и Persrective, отключив соответствующие флажки в меню View окон проекций (рис. 76). В принципе, этого можно и не делать, просто в противном случае работать будет очень неудобно. Перейдите в окно Top и создайте примерно такую же NURBS-кривую (рис. 77) — это будет базовый элемент для одного из четырех фрагментов крестовины. Обратите внимание, что данная кривая обязательно должна лежать на плоскости и быть замкнута.
Рис. 76. Отключение отображения NURBS-поверхностей
Рис. 77. Исходная кривая
Вначале получите на основе данной кривой плоскую поверхность с помощью инструмента Planar (команда Surfaces=>Planar — Поверхности=>Планарный) — рис. 78. Это будет один из двух торцов фрагмента крестовины. Поскольку торцов должно быть два, то сделайте копию полученной плоской поверхности. Вновь выделите исходную кривую и теперь на ее основе смоделируйте криволинейную поверхность, соответствующую контуру создаваемого фрагмента, применив команду Surfaces=>Bevel — Поверхности=>Скос) при параметрах как на рис. 79. В итоге на основе одной и той же кривой будут получены три NURBS-поверхности (рис. 80). Откройте окно Outliner (Структура), выделите поверхность, полученную при помощи Bevel-операции, и поверните ее на 90° по оси X (так удобнее будет закрывать торцы) и затем, предварительно развернув плоские поверхности, закройте торцы (рис. 81). Выделите все три NURBS-поверхности и объедините их в группу командой Edit=>Group (Редактировать=>Группа). Сгладьте полученную поверхность командой Display=>NURBS Smoothness=>Fine (Отображение=>NURBS-сглаживание=>Высокое).
Рис. 78. Появление плоской поверхности
Рис. 79. Настройка параметров операции Bevel
Рис. 80. NURBS-поверхности (одна из плоских поверхностей не видна, так как они лежат друг на друге)
Рис. 81. Фрагмент крестовины
Включите отображение полигональных объектов и NURBS-поверхностей в проекциях Top и Persrective и разместите созданный фрагмент крестовины нужным образом. Затем сделайте его копию, разверните ее на 180° по осям X и Z и поместите на нужное место. Аналогичным образом получите еще два фрагмента и также разместите их на модели. Назначьте всем четырем объектам тот же самый материал, что был использован для текстурирования других элементов стола, сохраните сцену и проведите рендеринг. Возможный вид сцены представлен на рис. 82 и 83. Напоследок дополните сцену созданными в данном уроке объектами, импортировав их из других сцен командой File=>Import (Файл=>Импорт) и разместив, например, так, как показано на рис. 84.
Рис. 82. Размещение крестовины
Рис. 83. Стол с крестовиной
Рис. 84. Визуализированная сцена