Первые шаги в Maya. Урок 6. Основы NURBS-моделирования. Часть 1

Светлана Шляхтина

Элементы NURBS-модели

   NURBS-примитивы

   NURBS-кривые и NURBS-поверхности

Методы NURBS-моделирования

   Метод вращения

   Метод получения плоских поверхностей

   Метод выдавливания со скосом

 

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

Элементы NURBS-модели

Любая NURBS-модель представляет собой некий набор NURBS-поверхностей, образованных NURBS-кривыми. Последние, в свою очередь, являются неоднородными рациональными сплайнами Безье (Non-Uniform Rational Bezier Splines, NURBS). Данные кривые описываются математическими формулами — в итоге отпадает необходимость запоминать каждую точку кривой, достаточно знать координаты ее начала и конца и математическую формулу, описывающую кривую. Это позволяет создавать сложные криволинейные поверхности с небольшим числом управляющих вершин (рис. 1) и легко избавляться от грубой огранки объектов, придавая им плавную искривленную форму путем простого увеличения детализации.

 

Рис. 1. Уровень детализации полигонального шара (слева) и NURBS-шара (справа) — видно, что число вершин у первого шара на порядок больше

Рис. 1. Уровень детализации полигонального шара (слева) и NURBS-шара (справа) — видно, что число вершин у первого шара на порядок больше

 

Основой NURBS-поверхности являются сплайны, называемые изопараметрическими кривыми (isoparms — изопармы). Данные кривые определяют кривизну поверхности и внешне представляют собой разнообразные линии (как прямые, так и разного рода кривые, а также контуры текстовых символов), форма которых определяется положением управляющих вершин, через которые она проходит  (рис. 2). Основными элементами таких кривых являются управляющие вершины и редактируемые точки (рис. 3). Управляющие вершины задают форму кривой и именно их чаще всего создают при формировании кривой — эти вершины обычно немного отстоят от поверхности и их можно перемещать, вращать и т.д. Первая вершина, обозначающая начало кривой отмечается кубиком, конечная вершина (последняя точка, в которой завершается создание кривой) никакой отличающей маркировки не имеет. Кроме того, при помощи маркера в виде маленькой буквы «u» отображается направление кривой (указывается не во всех проекциях), которое важно знать при выполнении ряда операций моделирования. При необходимости можно ограничить перечень отображаемых элементов NURBS-поверхности, если воспользоваться командой Display=>NURBS Components (Отображение=>NURBS-компоненты).

 

Рис. 2. NURBS-поверхность с отображением изопараметрических кривых и управляющих вершин

Рис. 2. NURBS-поверхность с отображением изопараметрических кривых и управляющих вершин

 

Рис. 3. Основные элементы кривой

Рис. 3. Основные элементы кривой

 

Для работы с NURBS-кривыми и NURBS-поверхностями предназначены командные меню Edit Curves, Edit Nurbs и Surfaces: первая позволяет редактировать кривые, вторая — создавать из кривых NURBS-поверхности, а третья — редактировать и преобразовывать их.

В начало В начало

NURBS-примитивы

Самый простой вид NURBS-поверхностей — это NURBS-примитивы, представленные объектами Sphere (Сфера), Cube (Куб), Cylinder (Цилиндр), Cone (Конус), Plane (Плоскость) и Torus (Topус). Как и другие типы примитивов, NURBS-примитивы обычно используются в качестве основы для формирования более сложных моделей и создаются командой Create=>NURBS Primitives либо выбором нужного примитива на вкладке Surfaces (Поверхности) панели Shelf. Выполнение многих операций редактирования NURBS-примитивов на уровне объектов очень сильно напоминает соответствующие действия в отношении других типов примитивов, хотя списки параметров для NURBS-примитивов более обширны, да и часть параметров отличается. Для примера сравните списки параметров для полигонального и NURBS-торусов (рис. 4):  для последнего дополнительно можно установить значения параметров Start Sweep и End Sweep (определяют, все ли возможные фрагменты примитива будут созданы), параметра Degree (позволяет выбрать между линейным и криволинейным отображением фрагментов поверхности) и т.д.

 

Рис. 4. Сравнение параметров торусов: полигонального (слева) и NURBS-торуса (справа)

Рис. 4. Сравнение параметров торусов: полигонального (слева) и NURBS-торуса (справа)

 

Более существенные отличия наблюдаются при редактировании примитивов на уровне подобъектов, так как деформация полигональных моделей в первую очередь связана с изменением ориентации граней, а изменение формы NURBS-поверхностей основано на интерполяции кривых. Для примера попробуем создать яйцо, вначале взяв за основу NURBS-шар, а затем полигональный шар. Создайте NURBS-шар, не снимая выделения, перейдите в режим редактирования вершин, нажав клавишу F9, выделите в проекции Side все вершины сечений, расположенных в верхней половине объекта, и инструментом Move Tool переместите их вверх (рис. 5), а затем инструментом Scale Tool слегка уменьшите радиус соответствующих сечений (рис. 6). Сократите число выделенных сечений на одно снизу и вновь проведите те же самые операции перемещения и масштабирования. Результатом станет получение объекта, по форме близкого к яйцу (рис. 7). А теперь попробуем добиться того же результата, но уже на базе полигонального шара. Создайте такой шар и переключитесь в режим редактирования вершин, нажав клавишу F9. Выделите все вершины сечений, расположенных в верхней половине объекта, и переместите их вверх (рис. 8), затем масштабируйте сечения (рис. 9). Уменьшите число выделенных сечений на одно снизу и вновь проведите те же самые операции перемещения и масштабирования (рис. 10). Если после этого провести рендеринг (рис. 11), то форма объекта получается недостаточно гладкой, хотя деформации  были незначительными. До получения формы яйца также еще далеко — придется  дальше кропотливо двигаться, сокращая число сечений и применяя к выделенным подобъектам операции перемещения и масштабирования, а по окончании еще и дополнительно сгладить полученную поверхность. Так что даже на примере столь простого объекта становится очевидным, что применение NURBS-примитивов существенно снижает трудоемкость моделирования гладких поверхностей.

 

Рис. 5. Перемещение вершин NURBS-шара

Рис. 5. Перемещение вершин NURBS-шара

 

Рис. 6. Масштабирование вершин NURBS-шара

Рис. 6. Масштабирование вершин NURBS-шара

 

Рис. 7. Яйцо

Рис. 7. Яйцо

 

Рис. 8. Первое перемещение вершин полигонального шара

Рис. 8. Первое перемещение вершин полигонального шара

 

Рис. 9. Первое масштабирование вершин полигонального шара

Рис. 9. Первое масштабирование вершин полигонального шара

 

Рис. 10. Результат повторного выполнения операций перемещения и масштабирования полигонального шара

Рис. 10. Результат повторного выполнения операций перемещения и масштабирования полигонального шара

 

Рис. 11. Визуализированная сцена после двукратного перемещения и масштабирования вершин полигонального шара

Рис. 11. Визуализированная сцена после двукратного перемещения и масштабирования вершин полигонального шара

 

В случае если речь идет о моделировании объекта с четкими гранями, NURBS-примитивы не помогут — тут требуются приемы полигонального моделирования. Вспомним, например, рассмотренный в 3-м уроке способ моделирования плитки шоколада из полигонального куба, когда достаточно было создать куб (правда, с определенными параметрами — рис. 12), выделить в режиме редактирования граней грани верхней поверхности и применить операцию по их выдавливанию (команда Edit Poligons=>Extrude Face — Редактирование полигонов=>Выдавливание граней) — рис. 13.

 

Рис. 12. Исходный полигональный куб

Рис. 12. Исходный полигональный куб

 

Рис. 13. Плитка шоколада

Рис. 13. Плитка шоколада

 

Если для достижения той же цели взять за основу NURBS-куб с теми же исходными параметрами, то все окажется совсем не так, поскольку граней у него не существует — вместо них вершины и изопараметрические кривые. Любые манипуляции с вершинами приведут к формированию гладкой поверхности (рис. 14), что не подходит для решения задачи. Если перейти к изопармам, к которым может быть применена операция выдавливания со скосом Bevel (Скос), то результат также будет далек от желаемого (рис. 15 и 16), так как выдавливаться будут изопараметрические кривые, а не внутренние фрагменты плоскости, соответствующие граням. Поэтому выбирать тип примитивов  (равно как и подход к моделированию) нужно в зависимости от типа поверхности (гладкая или ограненная), которую требуется получить.

 

Рис. 14. Результат перемещения нескольких вершин верхней поверхности объекта

Рис. 14. Результат перемещения нескольких вершин верхней поверхности объекта

 

Рис. 15. Выделение изопараметрических кривых

Рис. 15. Выделение изопараметрических кривых

 

Рис. 16. Результат применения операции Bevel к изопармам верхней плоскости куба

Рис. 16. Результат применения операции Bevel к изопармам верхней плоскости куба

В начало В начало

NURBS-кривые и NURBS-поверхности

Чаще всего NURBS-поверхности моделируются из NURBS-кривых, которые обычно формируются путем последовательного определения вершин или точек редактирования, хотя есть и другие способы — можно получить кривые из дуг, созданных на основе двух или трех указанных вершин (команда Create=>Arc Tools), или применить команду Create=>Text, поскольку текст также может создаваться как NURBS-кривая. Независимо от способа создания кривые не визуализируются, так как применяются только для создания и редактирования поверхностей.

Учитывая, что в большинстве случаев кривые получают посредством определения их вершин или редактируемых точек, то именно данный способ мы и рассмотрим подробнее. Он предполагает использование одного из следующих инструментов, вызываемых из меню Create (Создать):

Построение кривых с помощью первых двух из названных инструментов осуществляется практически одинаково: нужно последовательно указать точки (управляющие вершины или точки редактирования), при этом установка каждой следующей вершины будет приводить к появлению очередного участка кривой. Завершается создание кривых нажатием клавиши Enter. Карандашные кривые создаются путем перемещения мыши при нажатой левой кнопке (форма кривой будет полностью повторять траекторию движения мыши); отпускание кнопки автоматически означает окончание текущей кривой, и при следующем нажатии будет формироваться уже новая кривая. Довольно часто карандашные кривые содержат слишком много лишних точек,  поэтому их приходится упрощать (то есть сокращать количество управляющих вершин), применяя команду Edit Curves=>Rebuild Curve (Редактировать кривые=>Перестроить кривую). Данная команда может быть применена к любым типам NURBS-кривых.

Особенности создаваемых при помощи названных инструментов кривых определяются параметрами Curve Degree и Knot Spacing. Первый параметр задает степень кривизны кривой, второй указывает интервал между узлами и может быть определен только для кривых типов CV Curve Tool или EP Curve Tool. По умолчанию для данных параметров установлены значения, оптимальные для построения большинства кривых, однако при необходимости они могут быть изменены, для чего, выбирая инструмент построения кривой, нужно щелкать на квадратике, находящемся справа от имени инструмента. Независимо от выбора типа инструмента при создании NURBS-кривой следует ограничиваться необходимым минимумом точек (это значит, что если дуга может быть создана тремя точками, значит, именно на трех точках и следует остановиться), в противном случае редактирование моделей может стать затруднительным, а то и невозможным.

Для наглядности попробуем создать кривую инструментом CV Curve Tool (построение кривых другими инструментами осуществляется примерно так же). Перейдите в режим работы с одной из ортогональных проекций (например, с проекцией Front) и примените команду Create=>CV Curve Tool (Создать=>Кривая по управляющим вершинам). Щелкните в определенной точке для создания первой управляющей вершины, которая отобразится маленьким кубиком, обозначающим начало кривой, укажите местоположение второй управляющей вершины и т.д. — обратите внимание, что сегменты кривой появятся только после указания четвертой вершины (рис. 17). Если очередная вершина поставлена неудачно, то ее можно удалить нажатием клавиши Backspace и продолжить создание кривой. Кроме того, в любой момент можно прервать процесс добавления новых вершин и переключиться в режим редактирования, нажав клавишу Insert (о смене режима работы будет сигнализировать изменения вида манипулятора), в котором любая из вершин может быть перемещена. Переместите вершины примерно так, как показано на рис. 18, а затем вернитесь к процессу создания вершин, вновь нажав Insert, и дополните кривую еще несколькими вершинами (рис. 19), завершите процесс нажатием клавиши Enter. Форму кривой с таким же успехом можно изменить и после завершения ее создания, для чего достаточно выделить ее, переключиться в режим редактирования вершин, нажав клавишу F9, и инструментом Move Tool изменить положение тех вершин, что были поставлены неудачно (рис. 20). Кроме того, можно удалить любой из сегментов кривой, выбрав отвечающую за него управляющую вершину или точку редактирования и нажав клавишу Backspace.

 

Рис. 17. Появление сегментов кривой

Рис. 17. Появление сегментов кривой

 

Рис. 18. Перемещение вершин в процессе создания кривой

Рис. 18. Перемещение вершин в процессе создания кривой

 

Рис. 19. Созданная кривая

Рис. 19. Созданная кривая

 

Рис. 20. Перемещение управляющей вершины

Рис. 20. Перемещение управляющей вершины

 

Созданные NURBS-поверхности в зависимости от установок, могут отображаться с разным уровнем сглаживания. Он определяется в меню Display=>NURBS Smoothness (Отображение=> NURBS-сглаживание)  только для выделенных объектов. Всего предусмотрено четыре типа сглаживания: Hull, при котором отображается только каркас, Rough,  обеспечивающий грубый набросок модели, а также Medium и Fine, отображающие объекты со средним и высоким уровнем детализации. Для трех последних режимов имеются горячие клавиши — 1, 2 и 3 соответственно. Для примера попробуйте сгладить форму созданной выше кривой, применив команду Display=>NURBS Smoothness=>Fine (Отображение=> NURBS-сглаживание=>Высокое) — рис. 21. При необходимости возможна более тонкая настройка уровня сглаживания при помощи команды Display=>NURBS Smoothness=>Custom (Отображение=> NURBS-сглаживание=>Пользовательское) — рис. 22.

 

Рис. 21. Результат сглаживания формы кривой

Рис. 21. Результат сглаживания формы кривой

 

Рис. 22. Настройка параметров сглаживания

Рис. 22. Настройка параметров сглаживания

 

Помимо вышеназванных способов коррекции NURBS-кривых имеется еще масса команд для их редактирования, доступных из меню Edit Curves. Основными среди них можно назвать следующие:

Попробуем немного поэкспериментировать с обычной плоскостью и попытаемся так деформировать ее, чтобы после текстурирования она могла быть использована в качестве куска лежащей складками ткани. Создайте обычную NURBS-плоскость и переключитесь в режим редактирования вершин (клавиша F9) — изначально количество ее управляющих вершин невелико и в нашем случае недостаточно (рис. 23). Поэтому вернитесь в режим работы на уровне объекта (клавиша F8) и добавьте еще группу вершин, применив команду Insert Knot (Вставить узлы), — рис. 24. Отрегулируйте положение вершин при помощи инструментов Move Tool и Scale Tool, руководствуясь видом имеющейся текстуры ткани со складками и тем, как планируете разложить эту ткань (рис. 25 и 26). Пока это будут лишь начальные прикидки, так как вид плоскости зависит также  от поверхности, на которую ткань будет положена, а данной поверхности у нас еще нет.

 

Рис. 23. Исходная плоскость

Рис. 23. Исходная плоскость

 

Рис. 24. Добавление новых вершин

Рис. 24. Добавление новых вершин

 

Рис. 25. Результат деформации плоскости

Рис. 25. Результат деформации плоскости

 

Рис. 26. Визуализация деформированной плоскости

Рис. 26. Визуализация деформированной плоскости

 

Теперь набросим ткань на некоторую поверхность, например на обычный куб (рис. 27). Создайте куб, откорректируйте в сцене положение обоих объектов, а затем подрегулируйте положение управляющих точек плоскости ткани так, чтобы создавалось ощущение, что ткань ниспадает с поверхности куба (рис. 28 и 29).

 

Рис. 27. Появление куба

Рис. 27. Появление куба

 

Рис. 28. Окончательный вид деформированной плоскости

Рис. 28. Окончательный вид деформированной плоскости

 

Рис. 29. Ниспадающая ткань

Рис. 29. Ниспадающая ткань

В начало В начало

Методы 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. Исходная кривая

Рис. 30. Исходная кривая

 

Рис. 31. Окно Rebuild Curve Options

Рис. 31. Окно Rebuild Curve Options

 

Рис. 32. Ломаная

Рис. 32. Ломаная

 

Рис. 33. Цилиндр

Рис. 33. Цилиндр

 

А теперь смоделируем фужер для шампанского. Создайте новую сцену и сформируйте кривую типа CV Curve Tool (рис. 34). Если кривая получилась не совсем такой, как была задумана, то переключитесь в режим редактирования вершин, нажав клавишу F9, и отрегулируйте положение вершин. Вернитесь в режим работы на уровне объектов (клавиша F8), выделите кривую и примените к ней операцию Revolve (Вращение). В итоге увидите примерно такой же фужер, как представлен на рис. 35.

 

Рис. 34. Исходная кривая

Рис. 34. Исходная кривая

 

Рис. 35. Фужер

Рис. 35. Фужер

 

Учитывая, что по умолчанию история создания любого объекта в Maya сохраняется (поскольку кнопка Construction History (История конструирования), расположенная в строке состояния, нажата), то любая модель вращения может быть отредактирована после своего создания, для чего достаточно изменить вид соответствующей кривой. Это можно сделать в режиме работы с подобъектами, например перетащив отдельные точки кривой (управляющие вершины или точки редактирования), удалив некоторые из них или создав новые. Для примера при выделенной кривой нажмите клавишу F9 и попробуйте изменить форму кривой, отрегулировав положение вершин, в соответствии с рис. 36 — и округлый фужер превратится в узкую рюмку (рис. 37). Стоит заметить, что при большом числе объектов выделить нужную кривую непосредственно в окне проекции может оказаться сложно — удобнее выделять кривые через окно Outliner (Структура), открываемое из меню Window (Окно) — рис. 38.  Для тренировки смоделируйте еще несколько поверхностей методом вращения, например обычную вазу и вазу для фруктов, и сохраните их (они нам потребуются потом для оформления сцены) — рис. 39 и 40.

 

Рис. 36. Исходная кривая

Рис. 36. Исходная кривая

 

Рис. 37. Рюмка

Рис. 37. Рюмка

 

Рис. 38. Выделение кривой в окне Outliner

Рис. 38. Выделение кривой в окне Outliner

 

Рис. 39. Обычная ваза (кривая и визуализированная модель)

Рис. 39. Обычная ваза (кривая и визуализированная модель)

 

Рис. 40. Ваза для фруктов (кривая и визуализированная модель)

Рис. 40. Ваза для фруктов (кривая и визуализированная модель)

 

Немного усложним задачу и попробуем смоделировать флакон (например, для крема) с крышкой (флакон и крышка образуют один объект) также как тело вращения. Для этого вначале инструментом Create=>CV Curve Tool создайте кривую, последовательно указав все ее управляющие точки (рис. 41). Как и следовало ожидать, контур получился криволинейным,  поэтому превратите его в ломаную командой Edit Curves=>Rebuild Curve (Редактировать кривые=>Перестроить кривую) — рис. 42. Затем инструментом Move Tool переместите вершины так, чтобы они заняли предназначенное им положение (рис. 43), нажмите клавишу F8, чтобы вернуться в режим работы на уровне объектов, и создайте на основе кривой тело вращения, применив команду Surfaces=>Revolve (Поверхности=>Вращение), — рис. 44. Присвойте полученному флакону подходящий материал и визуализируйте сцену — возможный вариант представлен на рис. 45.

 

Рис. 41. Исходная кривая

Рис. 41. Исходная кривая

 

Рис. 42. Превращение криволинейного контура в ломаную

Рис. 42. Превращение криволинейного контура в ломаную

 

Рис. 43. Корректировка положения вершин

Рис. 43. Корректировка положения вершин

 

Рис. 44. Результат применения к кривой операции Revolve

Рис. 44. Результат применения к кривой операции Revolve

 

Рис. 45. Флакон с крышкой

Рис. 45. Флакон с крышкой

 

И наконец, более сложная задача — смоделируем резную ножку для стола. Для этого в новой сцене инструментом Create=>CV Curve Tool создайте примерно такую же кривую, как представлена на рис. 46. В режиме редактирования подобъектов выделите указанные на рис. 47 вершины и примените к ним операцию Edit Curves=>CV Hardness (Редактировать кривые=>Заострить), поскольку необходимо будет заострить соответствующие фрагменты профиля. Переместите заостренные вершины так, чтобы добиться примерно такого же вида кривой, как на рис. 48. Учитывая, что в нижней части ножки для придания ей устойчивости будет крепиться крестовина (ее мы смоделируем немного позже), замените криволинейный участок кривой в этой части профиля на прямолинейный обычным перемещением вершин (рис. 49). Преобразуйте кривую-профиль в тело вращения командой Surfaces=>Revolve (Поверхности=>Вращение). Сгладьте полученную поверхность при помощи команды Display=>NURBS Smoothness=>Fine (Отображение=>NURBS-сглаживание=>Высокое) — рис. 50. Создайте для стола столешницу из обычного полигонального цилиндра, назначьте созданным элементам стола подходящий материал и сохраните сцену, так как мы вернемся к ней чуть позже для доработки ножки стола. Возможный вариант сцены представлен на рис. 51.

 

Рис. 46. Исходная кривая

Рис. 46. Исходная кривая

 

Рис. 47. Применение команды CV Hardness к части вершин

Рис. 47. Применение команды CV Hardness к части вершин

 

Рис. 48. Заострение некоторых фрагментов профиля

Рис. 48. Заострение некоторых фрагментов профиля

 

Рис. 49. Окончательный вид кривой

Рис. 49. Окончательный вид кривой

 

Рис. 50. Результат применения к кривой операции Revolve

Рис. 50. Результат применения к кривой операции Revolve

 

Рис. 51. Стол (пока без крестовины)

Рис. 51. Стол (пока без крестовины)

В начало В начало

Метод получения плоских поверхностей

Формирование плоских поверхностей заключается в вырезании области плоскости, заданной некоторой NURBS-кривой. Такие поверхности незаменимы для закрытия торцов моделируемых объектов и могут применяться при создании текста. Получение плоских поверхностей не составляет ни малейшего труда, нужно только соблюдать два правила: NURBS-кривые должны лежать на плоскости (поэтому создавать их лучше в проекциях Top или Persrective) и быть замкнутыми.

Для того чтобы разобраться с данным способом создания NURBS-поверхностей, проведем небольшой эксперимент. Создайте новую сцену и в проекции Top сформируйте произвольную кривую (рис. 52). Выделите кривую и примените команду Surfaces=>Planar (Поверхности=>Планарный) — появится двумерная поверхность, соответствующая форме кривой (рис. 53). Чтобы удостовериться в том, что поверхность действительно была создана, откройте окно Outliner (Структура), выделите добавившуюся в нем поверхность, поверните ее по оси X на 90°, по оси Z на –90° и немного переместите (рис. 54). А затем назначьте материал и визуализируйте сцену (рис. 55).

 

Рис. 52. Исходная кривая

 

Рис. 53. Появление полоской NURBS-поверхности

 

Рис. 54. Изменение положения плоской поверхности

Рис. 54. Изменение положения плоской поверхности

 

Рис. 55. Визуализированная плоская поверхность

Рис. 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. Исходная кривая

Рис. 56. Исходная кривая

 

Рис. 57. Определение параметров инструмента Create=>CV Curve Tool

Рис. 57. Определение параметров инструмента Create=>CV Curve Tool

 

Рис. 58. Настройка параметров команды Bevel Plus

Рис. 58. Настройка параметров команды Bevel Plus

 

Рис. 59. Появление поверхности с фаской

Рис. 59. Появление поверхности с фаской

 

Рис. 60. Визуализированная поверхность с фаской

Рис. 60. Визуализированная поверхность с фаской

 

А теперь с помощью операции Bevel Plus попробуем получить эффектный объемный текст. Создайте произвольный текстовый элемент, щелкнув на квадратике справа от команды Create=>Text (Создать=>Текст) и настроив в открывшемся диалоговом окне параметры текста (рис. 61). Если сцену сразу же визуализировать, то текст не произведет впечатления (рис. 62). Выделите NURBS-кривую для первой буквы (рис. 63) — плоский текст, созданный автоматически вместе с контуром при применении команды Create=>Text, выделять не следует, также не нужно выделять контуры всех букв одновременно, иначе операция Bevel Plus окажется недопустимой. Примените к выделенному элементу команду Surfaces=>Bevel Plus (Поверхности=>Улучшенный скос), настроив ее параметры в соответствии с рис. 64, — текст станет объемным (рис. 65). Назначьте созданному тексту подходящий материал, и вполне возможно, что в окончательном виде текст будет напоминать представленный на рис. 66.

 

Рис. 61. Исходный текст

Рис. 61. Исходный текст

 

Рис. 62. Рендеринг сцены сразу после создания текста

Рис. 62. Рендеринг сцены сразу после создания текста

 

Рис. 63. Выделение первого контура

Рис. 63. Выделение первого контура

 

Рис. 64. Настройка параметров команды Bevel Plus

Рис. 64. Настройка параметров команды Bevel Plus

 

Рис. 65. Объемный текст (материал Lambert1)

Рис. 65. Объемный текст (материал Lambert1)

 

Рис. 66. Объемный текст после назначения материалов

Рис. 66. Объемный текст после назначения материалов

 

Перейдем к более сложной задаче. Довольно часто при моделировании используют комбинирование методов генерации плоских поверхностей и выдавливания посредством операции Bevel (Скос). Рассмотрим подобный случай на примере получения модели обычной гитары, для чего нам вначале потребуется создать контур гитары, сформировать на его основе две плоские поверхности (они потребуются для закрывания ее торцов), а затем к тому же самому контуру применить метод выдавливания, чтобы получить боковую поверхность гитары. Начнем с контура — создать его можно и на глаз, но гораздо удобнее воспользоваться подходящим снимком гитары (вид сверху): его можно загрузить в окно проекции Top и затем обвести. Создайте новую сцену, активируйте проекцию Top и для загрузки снимка выберите в меню View (Вид) окна проекции команду Image Plane=>Import Image (Плоскость изображения=>Импортировать изображение) — рис. 67 и 68.

 

Рис. 67. Растровое изображение

Рис. 67. Растровое изображение

 

Рис. 68. Появление снимка в окнах проекций

Рис. 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. Создание контура гитары

Рис. 69. Создание контура гитары

 

Рис. 70. Появление плоской поверхности

Рис. 70. Появление плоской поверхности

 

Рис. 71. Настройка параметров команды Bevel

Рис. 71. Настройка параметров команды Bevel

 

Рис. 72. Результат применения операции Bevel

Рис. 72. Результат применения операции Bevel

 

Рис. 73. Вид сцены после создания всех трех поверхностей

Рис. 73. Вид сцены после создания всех трех поверхностей

 

Рис. 74. Гитара (материал Lambert1)

Рис. 74. Гитара (материал Lambert1)

 

Рис. 75. Вид гитары после назначения материалов

Рис. 75. Вид гитары после назначения материалов

 

Вернемся к сохраненной модели стола, у которой нам осталось смоделировать крестовину. Для ее создания временно выключите отображение полигональных объектов и NURBS-поверхностей в проекциях Top и Persrective, отключив соответствующие флажки в меню View окон проекций (рис. 76). В принципе, этого можно и не делать, просто в противном случае работать будет очень неудобно. Перейдите в окно Top и создайте примерно такую же NURBS-кривую (рис. 77) — это будет базовый элемент для одного из четырех фрагментов крестовины. Обратите внимание, что данная кривая обязательно должна лежать на плоскости и быть замкнута.

 

Рис. 76. Отключение отображения NURBS-поверхностей

Рис. 76. Отключение отображения NURBS-поверхностей

 

Рис. 77. Исходная кривая

Рис. 77. Исходная кривая

 

Вначале получите на основе данной кривой плоскую поверхность с помощью инструмента Planar (команда Surfaces=>Planar — Поверхности=>Планарный) — рис. 78. Это будет один из двух торцов фрагмента крестовины. Поскольку торцов должно быть два, то сделайте копию полученной плоской поверхности. Вновь выделите исходную кривую и теперь на ее основе смоделируйте криволинейную поверхность, соответствующую контуру создаваемого фрагмента, применив команду Surfaces=>Bevel — Поверхности=>Скос) при параметрах как на рис. 79. В итоге на основе одной и той же кривой будут получены три NURBS-поверхности (рис. 80). Откройте окно Outliner (Структура), выделите поверхность, полученную при помощи Bevel-операции, и поверните ее на 90° по оси X (так удобнее будет закрывать торцы) и затем, предварительно развернув плоские поверхности, закройте торцы (рис. 81). Выделите все три NURBS-поверхности и объедините их в группу командой Edit=>Group (Редактировать=>Группа). Сгладьте полученную поверхность командой Display=>NURBS Smoothness=>Fine (Отображение=>NURBS-сглаживание=>Высокое).

 

Рис. 78. Появление плоской поверхности

Рис. 78. Появление плоской поверхности

 

Рис. 79. Настройка параметров операции Bevel

Рис. 79. Настройка параметров операции Bevel

 

Рис. 80. NURBS-поверхности (одна из плоских поверхностей не видна, так как они лежат друг на друге)

Рис. 80. NURBS-поверхности (одна из плоских поверхностей не видна, так как они лежат друг на друге)

 

Рис. 81. Фрагмент крестовины

Рис. 81. Фрагмент крестовины

 

Включите отображение полигональных объектов и NURBS-поверхностей в проекциях Top и Persrective и разместите созданный фрагмент крестовины нужным образом. Затем сделайте его копию, разверните ее на 180° по осям X и Z и поместите на нужное место. Аналогичным образом получите еще два фрагмента и также разместите их на модели. Назначьте всем четырем объектам тот же самый материал, что был использован для текстурирования других элементов стола, сохраните сцену и проведите рендеринг. Возможный вид сцены представлен на рис. 82 и 83. Напоследок дополните сцену созданными в данном уроке объектами, импортировав их из других сцен командой File=>Import (Файл=>Импорт) и разместив, например, так, как показано на рис. 84.

 

Рис. 82. Размещение крестовины

Рис. 82. Размещение крестовины

 

Рис. 83. Стол с крестовиной

Рис. 83. Стол с крестовиной

 

Рис. 84. Визуализированная сцена

Рис. 84. Визуализированная сцена

В начало В начало

 

КомпьютерПресс 1'2007