Моделирование на основе NURBS-кривых
В этой главе
Неоднородные рациональные В-сплайны
Контекстные меню и пользовательский интерфейс
Создание старого дома
Создание крыши
Построение дома
Подведем итоги
Контекстные меню и пользовательский нтерфейс
Работу с Maya можно сделать быстрой и эффективной. Наблюдение за работой опытных пользователей создает впечатление магического действа, потому что сцена, словно по волшебству, возникает из ничего при минимальном количестве нажатий клавиш и использовании мыши. Секрет такой быстрой работы состоит в создании контекстных меню, которые помогают увеличить продуктивность и скорость различных действий. Если нажать и удерживать определенные клавиши, нажимая при этом левую кнопку мыши, то появится меню, похожее на компас. Перетаскивание указателя мыши на любую из его команд приводит к ее выполнению. В случае быстрого выполнения описанных действий вы успеете заметить только линию на экране и быстро промелькнувшее имя выполняемой команды.
После нескольких недель работы вы изучите контекстные меню и сможете мгновенно создавать и редактировать объекты. Так как процесс их использования является двухступенчатым (сначала нужно нажать клавиши, а потом сделать вы-эор при помощи указателя мыши), имеет смысл сгруппировать связанные друг с цругом команды таким образом, чтобы их перечень вызывался нажатием одной и гой же комбинации. Например, можно сделать так, чтобы комбинация клавиш Alt+c приводила к переходу в режим редактирования кривых. При этом две наиболее часто используемые в этом режиме команды можно расположить слева и права. В результате нажатия комбинации клавиш Alt+c, сопровождаемого нажатием левой кнопки мыши и перемещением указателя влево, как показано на рис. 5.1, будет быстро включен требуемый режим редактирования. Со временем подобные действия можно научиться выполнять настолько быстро, что со стороны будет невозможно проследить за ними.
Рис. 5.1. Пример пользовательского контекстного меню
При выполнении как упражнений этой главы, так и остальных упражнений, имеющихся в данной книге, можно воспользоваться набором контекстных меню, адаптированных под стоящие перед вам задачи. Кроме того, такие меню можно использовать в качестве отправной точки для создания своих собственных наборов команд.
Проще всего найти ее, заставив систему искать файл windowprefs.mel Поместите скопированные файлы в найденную папку.
Скопируйте содержимое папки Chapter_05\Hotkeys, расположенной на компакт-диске. Скопируйте их в папку prefs, расположенную по одному из указанных на предыдущем шаге адресов.
Теперь откройте окно программы Maya. Перед загрузкой контекстных меню будет нелишним скрыть практически все элементы интерфейса, освободив тем самым дополнительное место. В меню оперативного доступа выберите команду Display > UI Elements > Hide UI Elements (Отображение > Элементы интерфейса > Скрыть элементы интерфейса). Обратите внимание, сколько свободного пространства появилось в результате выполнения этой команды.
Однако некоторые элементы интерфейса все же желательно иметь перед глазами. Снова выберите команду Display > UI Elements (Отображение интерфейса) и в открывшемся списке установите флажки рядом с названиями элементов Help Line (Строка подсказки) и Command Line (Командная строка). Дело в том, что при создании элементов в этих строках отображаются сообщения об ошибках и вспомогательная информация. Теперь вам осталось скрыть главное меню и меню окна проекции. Для этого используются клавиатурные комбинации Ctrl+m и Shift+m соответственно.
ПРИМЕЧАНИЕ
Альтернативным способом изменения видимости строк меню является окно диалога Preferences (Параметры), для вызова которого используется команда Window > Setting/Preferences > Preferences (Окно > Настройки/Параметры > Параметры). В списке Categories (Категории) выберите вариант Interface (Интерфейс) и снимите или установите флажки Main Window (В главном окне) и In Panels (В окнах проекции) в разделе Show Menubar (Показывать строку меню). Можно пойти дальше и скрыть даже строку заголовка, но имейте в виду, что это осложнит работу с несколькими приложениями одновременно.
7. Выберите в меню оперативного доступа команду File > Save Preferences (Файл > Сохранить настройки). Упрощенный интерфейс, оптимизированный для выполнения упражнений этой главы, готов к использованию.
Настройка меню оперативного доступа
Первый взгляд на новый вид окна программы Maya может привести в недоумение, потому что теперь, когда почти все элементы интерфейса скрыты, возникает ощущение отсутствия контроля над происходящим. Но на самом деле любой командой по-прежнему можно воспользоваться с помощью меню оперативного доступа. Рассмотрим процесс настройки этого меню.
1. Чтобы убедиться, что вы имеете доступ ко всем меню, нажмите и удерживайте клавишу Пробел, щелкните на команде Hotbox Controls (Элементы управления меню оперативного доступа) и затем выберите вариант Show All (Показать все). Для получения доступа к функции, для которой не задана клавиатурная комбинация или контекстное меню, используйте меню оперативного доступа. Если окажется, что вы раз за разом выбираете в этом меню один и тот же набор команд, имеет смысл назначить им клавиатурные комбинации или собрать их в контекстное меню.
ПРИМЕЧАНИЕ
Если вы работаете с пакетом Maya Unlimited, следует скрыть ряд пунктов меню оперативного доступа, оставив только функции, которые вам предстоит использовать. Выберите в меню оперативного доступа команду Hotbox Controls (Элементы управления меню оперативного доступа) и снимите флажки Show Cloth Menus (Показать меню для работы с тканями) и Show Live Menus (Показать меню «живой камеры»).
2. Выберите в меню оперативного доступа команду File > Save Preferences (Файл > Сохранить настройки).
ВНИМАНИЕ
Если хотя бы одно из окон проекции не является активным, нажатие и удер-жание клавиши Пробел не приведет к появлению меню оперативного доступа. Если поверх окон проекции открыто какое-либо окно диалога, нужно щелкнуть на нужном окне проекции правой кнопкой мыши, чтобы перевести его в активное состояние, не снимая при этом выделение с объектов. Обратите внимание, что в результате вокруг окна появляется синяя рамка.
Перечислим клавиатурные комбинации, использование которых в сочетании с нажатием левой кнопки мыши приводит к появлению загруженных вами контекстных меню.
Контекстное меню | Клавиатурная комбинация |
mfNURBSPrimitives_Press | Ctrl+z |
mfNURBSediting_Press | Alt+z |
mfNURBSsurface_Press | Ctrl+Alt+z |
mfPolygonPrimitives_Press | Ctrl+x |
mfPolygonEditing_Press | Alt+x |
mfCurvesCreation_Press | Ctrl+c |
mfCurvesEditing_Press | Alt+c |
А вот перечень клавиатурных комбинаций, которые были добавлены или переназначены.
Функция | Клавиатурная комбинация |
Script Editor (Редактор сценариев) | Shift+S |
Hypergraph (Просмотр структуры) | Shift+H |
Attribute Editor (Редактор атрибутов) | Ctrl+a |
Show/Hide Channel Box (Показать/Скрыть окно каналов) |
Shift+С |
Hypershade (Редактор узлов) | Shift+T |
Outliner (Структура) | Shift+0 |
Toggle the Time Slider on/off (Показать/Скрыть ползунок таймера анимации) |
Alt+t |
Undo (Отменить) | Z |
Visor (Просмотр образцов) | Shift+V |
Первые комбинации клавиш, которые вам предстоит запомнить в этой главе:
Ctrl+z. Дает доступ к меню, которое содержит инструменты создания NURBS-поверхностей.
Alt+z. Вызывает контекстные меню с командами редактирования NURBS-no-верхностей.
Щелчок правой кнопкой мыши на окне проекции, в котором выделен NURBS-объект, приводит к появлению контекстного меню для выделенных элементов NURBS-сетки, например изопараметрических кривых или узловых точек.
Неоднородные рациональные В-сплайны
В компьютерной графике существует два подхода к моделированию объектов: на основе полигональных сеток и на основе NURBS-кривых. Большинство программ для создания трехмерной анимации работает только с полигонами. В Maya кроме этого используется более сложная и мощная система моделирования, которая основана на неоднородных рациональных сплайнах Безье (NURBS, Non-Uniform Rational Bezier Splines). Созданная таким способом поверхность похожа на трехмерный искривленный лист в пространстве. Существуют ограничения на их построение, соединение друг с другом и деление на части, но в принципе это очень гибкие объекты. Основное их преимущество состоит в том, что в Maya они остаются чистыми кривыми, то есть математическими конструкциями. Уровень детализации получаемых на их основе поверхностей можно указывать как в окне проекции, так и при визуализации. Грубую огранку объектов, возникающую при попытке создать искривленную поверхность из полигональной сетки, легко можно убрать при работе с NURBS-поверхностями. Достаточно увеличить уровень детализации.
Моделирование на основе NURBS-кривых не сводится к соединению друг с другом отдельных фрагментов. В отличие от полигонов, имеющих фиксированную форму, в NURBS-моделировании трехмерные объекты создаются из кривых и поверхностей, что предоставляет неограниченные возможности их использования. Если вам нравится проектирование архитектуры и решение различных задач, то вы определенно почувствуете вкус к NURBS-моделированию.
Попробуем дать вам представление о природе неоднородных рациональных В-сплайнов. Их можно рассматривать как разновидность сплайна, используемого для определения кривых, которые лежат в основе математической структуры, задающей вид NURBS-поверхности. В этой главе мы покажем вам основные приемы работы с объектами данного типа, не пускаясь в глубокие теоретические изыскания. Обучаться компьютерному моделированию лучше всего методом проб и ошибок, поэтому в данной главе вы получите возможность на практике исследовать природу изучаемого объекта.
Чтобы облегчить вам запоминание большого количества деталей, мы будем по ходу дела упоминать все команды, клавиатурные комбинации, поля, значения и прочие необходимые подробности. По мере чтения книги такие подсказки будут требоваться вам все реже и реже, но на начальном этапе вряд ли возможно без этого обойтись.
Преимущества моделирования на основе NURBS-кривых
Каждая из методик моделирования имеет свои сильные и слабые стороны, и выбор методики, наилучшим образом соответствующей конкретной задаче, требует немалого опыта в данной области. При выборе метода создания конкретного объекта нужно учитывать несколько факторов. NURBS-кривые хорошо подходят для моделирования объектов органического происхождения, например Животных, растений, фруктов, которые можно строить путем стыковки друг с другом гладких фрагментов поверхности. Также очень удобно использовать NURBS-кривые для построения серийно выпускаемых промышленных изделий, которые одновременно характеризуются точностью исполнения и обтекаемыми формами. К ним относятся транспортные средства, прессованные детали, различные приборы и прочие объекты с искривленными поверхностями, созданные руками человека.
Если вы сомневаетесь в правильности выбора способа моделирования, имейте в виду, что можно начать построение объекта с NURBS-кривых, а затем преобразовать его в сетку полигонов. Эта возможность является одним из основных преимуществ моделирования на основе NURBS-кривых. Например, чтобы освободиться от швов в местах сочленений отдельных частей при создании человеческой фигуры, ее достаточно преобразовать в сетку полигонов и затем связать отдельные фрагменты в единый объект. Благодаря наличию истории создания объекта при редактировании лежащих в основе фигуры NURBS-кривых ее вид будет автоматически изменяться даже после вышеописанного преобразования. Впрочем, моделирование на основе NURBS-кривых имеет и отрицательные стороны. При создании объектов, которые впоследствии должны быть анимированы, можно заметить наличие швов и даже зазоров между отдельными фрагментами NURBS-поверхностей.
В результате этой особенности конструирования практически никогда не удается получить монолитный объект. Чтобы избежать упомянутой выше проблемы, приходится очень тщательно сшивать отдельные фрагменты между собой.
Использование NURBS-кривых также приводит к усложнению модели. Наличие большого числа кривых, определяющих поверхность, может заметно усложнить ее редактирование. Кроме того, иногда такие модели оказываются настолько массивными, что с ними невозможно работать в интерактивном режиме. Конечно, в данном случае все зависит от мощности SD-ускорителя компьютера! Другим недостатком использования NURBS-кривых является увеличение времени визуализации. Идеальная математическая кривая, определяющая форму поверхности, должна быть конкретизирована с помощью полигонов, наличие большого количества которых замедляет визуализацию.
В этой главе будет рассмотрен процесс моделирования домика на основе NURBS-кривых. Дом является первым объектом сцены, которую вам предстоит создать в процессе работы над упражнениями нашей книги.
Подведем итоги
В этой главе на примере были продемонстрированы стандартные подходы к моделированию на основе NURBS-кривых. Вы получили возможность на практике познакомиться со следующими приемами:
Создание и редактирование NURBS-примитивов. В упражнениях этой главы объект-примитив Cube (Куб) использовался в качестве отправной точки для моделирования. Мы продемонстрировали вам процесс удаления частей примитива и редактирования положения узловых точек.
Временное включение режима привязки. Для повышения точности преобразований в процессе редактирования объекта используется привязка к узлам сетки.
Ввод точных данных преобразования в поля окна каналов. Это возможность точно указать размер и величину смещения или поворота объекта.
Создание кривых. Кривые, нарисованные вашими руками, используются в дальнейшем в методах выдавливания, лофтинга и т. п. для получения трехмерных объектов.
Пересечение поверхностей. Существует возможность создавать кривые в местах пересечения двух поверхностей.
Выдавливание кривых. На основе единственной кривой с помощью метода выдавливания можно сформировать поверхность.
Соединение кривых методом лофтинга. Метод лофтинга используется для создания поверхности между любыми двумя кривыми.
Влияние истории создания на редактирование поверхностей. Благодаря наличию истории создания появляется возможность вносить изменения в действия, произведенные ранее. Например, перемещение управляющей точки кривой, на основе которой методом лофтинга была получена поверхность, приводит к изменению формы этой поверхности.
Подрезка. Данная операция позволяет убрать ненужные фрагменты поверхности.
Работа со слоями. Разместив элементы сцены в различных слоях, можно легко сделать видимыми только объекты, редактированием которых вы занимаетесь в данный момент.
Теперь, после создания основных плоских объектов, пришла пора познакомиться с более сложными методами и поработать с искривленными поверхностями. Именно этому посвящена следующая глава «Дополнительные приемы работы с NURBS-объектами». Кроме того, вам предстоит познакомиться с методикой создания различных отверстий, ведь модель дома пока что не имеет ни окон, ни дверей. Также вы закончите моделирование крыльца, добавив к нему ограждение.
Построение дома
Упражнение. Создание стен и фундамента
Начнем с создания стен дома.
Если слой RoofL является видимым, скройте его. Одновременно нажмите клавиши Ctrl+z и левую кнопку мыши, затем выберите в появившемся контекстном меню вариант Square (Квадрат). Присвойте объекту nurbsSquarel имя OuterWallcurvel. Этот квадрат получен путем группировки четырех кривых.
Сформируем на основе квадрата нижний край фундамента дома. В поля Scale X (Масштабирование по оси X), Scale Z (Масштабирование по оси Z) и Translate Y (Смещение по оси Y) окна каналов введите значения 140, 200 и -159 соответственно. Если теперь сделать видимым слой RoofL и посмотреть на вид в окне проекции Тор (Вид сверху), вы увидите, что полученный прямоугольник располагается точно под крышей дома.
ПРИМЕЧАНИЕ
Если при каркасном отображении NURBS-объектов включен режим минимальной детализации, рассмотреть выделенный объект иногда бывает не так-то легко. Помните, что вы всегда можете изменить уровень детализации, нажимая клавиши 1, 2 и 3.
Сформируем контур стен, продублировав квадрат. Впоследствии на основе этих двух кривых можно получить поверхность стен, соединив их друг с другом методом лофтинга. Убедитесь, что у вас выделен объект OuterWallcurvel и выберите в меню оперативного доступа команду Edit > Duplicate with Transform (Правка > Дублирование с преобразованием). Это приведет к появлению дубликата непосредственно поверх исходного объекта. В окне каналов введите в поле Translate Y (Смещение по оси Y) значение -111.
Не снимая выделения с объекта QuterWallcurveZ, снова выполните команду Duplicate with Transform (Дублирование с преобразованием). Для этого дубликата сделайте значение параметра Translate Y (Смещение по оси Y) равным -107, а в поля Scale X (Масштабирование по оси X) и Scale Z (Масштабирование по оси Z) введите значения 136 и 196 соответственно. Еще два раза выполните дублирование с преобразованием, вводя в поле Translate Y (Смещение по оси Y) числа -105 и -33 соответственно. В итоге требуется получить пять прямоугольников, как показано на рис. 5.9.
Теперь пришло время применить метод лофтинга. Щелкните на ближайшей к вам стороне объекта OuterWallcurveS. В окне каналов посмотрите на имя выделенной кривой. Это должна быть кривая leftnurbsSquarel. Нажмите клавишу Shift и щелчком выделите сторону прямоугольника OuterWaltcurve4, расположенную непосредственно под кривой leftnurbsSquarel. Одновременно нажмите комбинацию клавиш Ctrl+Alt+z и левую кнопку мыши. В появившемся контекстном меню щелкните на квадратике, расположенном справа от команды Loft (Лофтинг). В появившемся окне диалога Loft Options (Параметры лофтинга) прежде всего выберите команду Reset Settings (Сбросить настройки) меню Edit (Правка), затем установите переключатель Surface Degree (Кривизна поверхности) в положение Linear (Линейная) и нажмите кнопку Loft (Создать Loft-поверхность). Появится первая стена, вид которой показан на рис. 5.10. Присвойте ей имя WallSide_l. Для перехода в режим показа тонированных оболочек объектов нажмите клавишу 5.
Рис. 5.9. Четырехкратным дублированием лежащего в основании прямоугольника был сформирован контур стен
Двигаясь по часовой стрелке, повторите вышеописанную операцию, формируя остальные стены. Проверьте в окне каналов, что вы начали процесс создания стен с выделения кривой bottomnurbsSquarel. Теперь уже не требуется вызывать окно диалога Loft Options (Параметры лофтинга). После выделения всех нужных кривых достаточно нажать клавишу д, которая инициирует повторное выполнение последней команды. Назовите полученную поверхность WallSide_2. Таким же образом сформируйте поверхности WallSide_3 и WaUSide_4. Этот метод создания поверхностей гарантирует, что все они будут иметь идентичные параметры и им легко будет назначить карту текстуры.
СОВЕТ
Помните, что клавиша g служит для повторного выполнения последней использовавшейся команды. Кроме того, выбрав в меню оперативного доступа команду Recent Commands (Последние команды), вы получите список из нескольких последних команд.
Процесс создания внешней стены дома будет завершен после объединения четырех поверхностей в одну группу.
Чтобы избежать случайного выделения кривых, на основе которых сформированы поверхности, воспользуйтесь окном диалога Outliner (Структура), которое вызывается выбором в меню оперативного доступа команды Window > Outliner (Окно > Структура) или нажатием комбинации клавиш Shift+0. Затем выберите команду Edit > Group (Правка > Группировка). Полученной группе присвойте имя OuterWall.
Создайте еще один слой, назвав его OuterWallsL Выделите группу OuterWall и, щелкнув правой кнопкой мыши на имени слоя, выберите в появившемся меню команду Add Selected Objects (Добавить выделенные объекты). Скройте этот слой, чтобы облегчить процесс выделения кривых.
Рис. 5.10. Первая стена будущего дома, созданная методом лофтинга
Теперь нужно, используя описанный выше метод лофтинга, создать фундамент. Выделите кривую leftnurbsSquarel прямоугольника OuterWallcurve4. Удерживая нажатой клавишу Shift, выделите одноименные кривые расположенных снизу прямоугольников OuterWallcurve3, OuterWallcurve2 и OuterWaUcurve1. Методом лофтинга сформируйте на основе выделенных кривых поверхность и присвойте ей имя FoundationSide_l.
Перемещаясь по часовой стрелке, сформируйте еще три поверхности. Затем сгруппируйте полученные поверхности, присвоив группе имя Foundation. Поместите ее в слой OuterWallsL. Сохраните сцену.
Сделайте видимыми все слои. Теперь остается закрыть треугольные просветы между стенами и крышей, показанные на рис. 5.11.
Рис. 5.11. Стены и фундамент на данный момент установлены должным образом, но остались треугольные просветы между стенами и крышей
ПРИМЕЧАНИЕ
Благодаря наличию истории построения объекта можно изменить форму поверхности, отредактировав лежащие в основе этой поверхности кривые. Ведь они до сих пор присутствуют в сцене и связаны с поверхностью. Попробуйте проделать вышеуказанную операцию с различными объектами. Потом их можно легко вернуть в исходное состояние нажатием клавиши r. Можно получить весьма впечатляющие результаты и открыть для себя многообразие приемов моделирования и анимации на основе NURBS-кривых.
Упражнение. Заполнение просветов и создание внутренней стены
Выделите первую из кривых leftnurbsSquarel, которая использовалась для создания поверхности Wallside_l. Это будет намного проще сделать, скрыв на время слой OuterWallsL. Введите в поле Translate Y (Смещение по оси Y) окна каналов значение 80. Хотя поверхность Waltside_l и не была выделена, в результате она будет продолжена до нового положения кривой. Это связано с наличием истории создания объекта.
Теперь стена проходит сквозь крышу, что дает возможность создания кривой на месте пересечения двух поверхностей, как показано на рис. 5.12. Затем можно просто отрезать лишний фрагмент. Получив такую кривую на пересечении объекта Wallside_l с крышей, вы точно укажете точки, в которых стена прорезает крышу. Выделите объект Wallside_l и затем, нажав клавишу Shift, щелкните на нижней поверхности объекта RoofSlab. Одновременно нажмите комбинацию клавиш Alt+z и левую кнопку мыши. В появившемся контекстном меню щелкните на квадратике, расположенном справа от команды Intersect Surfaces (Пересечь поверхности). Установите переключатель Create Curve For (Создать кривую для) в положение First Surface (Первой поверхности) и нажмите кнопку Intersect (Пересечение). Затем выполните эту операцию для симметричной стороны здания.
Выделите объект Wallside_l. Одновременно нажмите комбинацию клавиш Alt+z и левую кнопку мыши. В появившемся контекстном меню выберите команду Trim Toot (Подрезка). Результатом применения данного инструмента к поверхности будет появление белой сетки. Щелкните в точке той области поверхности, которую требуется сохранить, и нажмите клавишу Enter. Выступающие над крышей края исчезнут. Повторите эту операцию для стены, расположенной с другой стороны дома.
После выполнения всех вышеописанных действий вам не составит труда добавить внутренние стены. Создайте NURBS-примитив Cube (Куб), выбрав в контекстном меню, вызываемом с помощью комбинации клавиш Ctrl+z, команду Cube (Куб), и присвойте ему имя InnerWalls.
В поля Translate Y (Смещение по оси Y), Scale X ( Масштабирование по оси X), Scale Y (Масштабирование по оси Y) и Scale Z ( Масштабирование по оси Z) окна каналов введите значения -89, 132, 112 и 192,5 соответственно. Верхняя грань полученного объекта должна располагаться на линии стыка внешних стен с крышей.
Рис. 5.12. В результате перемещения одной из кривых передняя стена прорезала крышу
Поместите объект InnerWalls в новый слой с именем InnerWallL. Если вы случайно сняли выделение с объекта, откройте окно диалога Outliner (Структура), нажав комбинацию клавиш Shift+0, и выделите там группу InnerWalls. Затем щелкните правой кнопкой мыши на имени слоя, выберите в появившемся меню команду Add Selected Objects (Добавить выделенные объекты), как показано на рис. 5.13
Рис. 5.13. Процесс добавления объекта в слой после его выделения в окне диалога Outliner
Сохраните сцену, выбрав в меню оперативного доступа команду File > Save Scene (Файл > Сохранить сцену).
Упражнение. Создание крыльца
Займемся созданием крыльца в передней части дома.
Скройте слой RoofL, так как в данном упражнении он не понадобится. Нажмите клавишу Пробел для перехода к четырехоконной конфигурации, затем поместите указатель мыши в пространство окна проекции Front (Вид спереди) и снова нажмите клавишу Пробел.
Если координатная сетка в данный момент скрыта, сделайте ее видимой, выбрав в меню оперативного доступа команду Display t Grid (Отображение > Сетка).
Увеличьте масштаб правого нижнего угла дома таким образом, чтобы сделать ячейки сетки легко различимыми.
Для создания досок крыльца вам предстоит воспользоваться инструментом ЕР Curve (Узловые точки кривой). Одновременно нажмите комбинацию клавиш Ctrl+c и левую кнопку мыши. В появившемся контекстном меню щелкните на квадратике, расположенном справа от команды ЕР Curve (Узловые точки кривой). Убедитесь, что переключатель Curve Degree (Порядок кривой) стоит в положении 1 Linear (Линейная) и нажмите кнопку Close (Закрыть).
Каждая ячейка сетки имеет ширину один дюйм.
Нужно создать крыльцо шириной примерно шесть футов. Используя режим привязки к узлам сетки (для его включения нажмите и удерживайте клавишу х), посредством щелчков создавайте точки кривой, которая представляет профиль крыльца, лежащего на земле. Для начала нажмите клавишу х и щелкните и точке, расположенной двумя дюймами выше и двумя дюймами правее нижнего правого угла внутренней стены. Это будет составлять 16 дюймов над фундаментом дома. Следующую точку расположите четырьмя дюймами правее, затем опуститесь на два дюйма ниже, перейдите на один дюйм правее и снова вернитесь на два дюйма вверх. В результате будет сформирован желобок шириной один дюйм и глубиной два дюйма. Повторите эту операцию 14 раз, чтобы создать кривую, подобную показанной на рис. 5.14.
Рис. 5.14. Боковой профиль 14 досок, каждая из которых имеет ширину четыре дюйма. Зазор между досками имеет ширину один дюйм
СОВЕТ
Если вы ошиблись при размещении точки, воспользуйтесь клавишей Backspace для ее удаления. Также можно нажать клавишу Insert и переместить точку в нужное место, не покидая режима создания кривой. По окончании перемещения достаточно снова нажать клавишу Insert, а потом нажать и удерживать клавишу х, чтобы снова получить возможность создания узловых точек кривой.
СОВЕТ
Если в процессе создания кривой вы подошли к краю экрана, одновременно нажмите клавишу Alt и среднюю кнопку мыший перетащите указатель влево, перемещая видимую область экрана.
Закончив создание точек кривой, нажмите клавишу Enter. Форма кривой будет зафиксирована, а сама она станет ярко-зеленой. Присвойте кривой имя porchProfile.
В каком бы месте пространства ни была создана кривая, ее опорная точка будет располагаться в начале координат. Но для удобства выполнения преобразований желательно, чтобы она находилась в геометрическом центре объекта. Для перемещения опорной точки воспользуйтесь командой меню оперативного доступа Modify t Center Pivot (Изменить > Центрировать опорную точку). Если теперь нажать клавишу w для перехода в режим перемещения объекта, вы увидите, что значок преобразования появится в центре кривой.
Нажмите клавишу Пробел для перехода к четырехоконной конфигурации, затем поместите указатель мыши в пространство окна проекции Тор (Вид сверху) и снова нажмите клавишу Пробел, чтобы развернуть это окно на весь экран.
Нужно перенести кривую к нижнему краю дома, но для начала настолько увеличьте масштаб этой области, чтобы отчетливо видеть ячейки сетки. В поле Translate Z (Смещение по оси Z) окна каналов введите значение 94, как показано на рис. 5.15, а затем вернитесь к четырехоконному представлению.
Рис. 5.15. Результат перемещения профиля крыльца на нужное место
Существует несколько способов создания поверхности на основе кривой. В этом упражнении вам предстоит познакомиться с методом выдавливания. Одновременно нажмите комбинацию клавиш Ctrl+Alt+z и левую кнопку мыши и щелкните на квадратике, расположенном справа от команды Extrude (Выдавить). Убедитесь, что переключатель Style (Метод) стоит в положении Distance (Расстояние). В этом случае не требуется вторая кривая, вдоль которой будет происходить выдавливание профиля. Переключатель Direction (Направление) установите в положение Specify (Указать), что позволит вам самостоятельно указать направление выдавливания с помощью расположенного ниже переключателя Direction Vector (Вектор направления). Установите его в положение Free (Свободный). Это даст возможность вручную ввести координаты вектора, определяющего направление. В расположенные ниже текстовые поля введите значения (0, 0, -1). Переключатель Surface Degree (Кривизна поверхности) оставьте в положении Linear (Линейная). В результате формирование поверхности методом выдавливания будет происходить в отрицательном направлении оси Т..
Теперь осталось указать только значение параметра Extrude Length (Длина выдавливания). Полученная в результате выдавливания поверхность должна заканчиваться в шести дюймах от противоположного угла объекта OuterWall. Изме- рить требуемое расстояние можно разными способами, но в этом упражнении будет использоваться инструмент Distance (Рулетка).
На время сверните окно диалога Extrude Options (Параметры выдавливания) и выберите в меню оперативного доступа команду Create > Measure Tools > Distance (Создать > Инструменты измерения > Рулетка). Нажмите и удерживайте клавишу х для временной активизации режима привязки к узлам сетки и щелкните в точке пересечения кривой профиля крыльца с наружной стеной дома. Теперь увеличьте масштаб противоположного угла дома, в шести дюймах от которого должно заканчиваться крыльцо, еще раз включите режим привязки к узлам сетки и щелкните в шести дюймах от края дома. Если теперь уменьшить масштаб таким образом, чтобы в окне проекции была видна вся стена дома, вы обнаружите, что в центре созданной вами линии написана ее длина. В данном случае она составляет 188 дюймов. Теперь, когда требуемое значение параметра известно, инструмент измерения вам больше не нужен. Выделите его и нажмите клавишу Backspace. Откройте окно диалога Outliner (Структура), взгляните на список объектов сцены и, если обнаружите точки, использовавшиеся для фиксации расстояния (их имена начинаются со слова locator), удалите их.
Нажмите клавишу q для выхода из режима измерения расстояний. Выделите объект porchProfile и разверните окно диалога Extrude Options (Параметры выдавливания). Введите полученное значение длины крыльца в поле Extrude Length (Протяженность выдавливания) и нажмите кнопку Extrude (Выдавить). Полученному объекту присвойте имя PorchFloor и с помощью команды меню оперативного доступа Modify > Center Pivot (Изменить > Центрировать опорную точку) переместите опорную точку в геометрический центр объекта.
Создайте новый слой с именем PorchL и поместите в него объект PorchFloor.
Сохраните сцену.
Сделайте видимыми все слои, чтобы посмотреть на полученную конструкцию. Для проверки геометрии объекта можно провести несколько тестовых визуализаций.
ПРИМЕЧАНИЕ
Попробуйте самостоятельно создать сцену с нуля, используя для моделирования объектов методы Loft (Лофтинг) и Extrude (Выдавливание).В упражнениях этой главы переключатели, отвечающие за кривизну, устанавливались в положение Linear (Линейный), тем самым провоцируя создание плоских поверхностей. Посмотрите, как отражается на состоянии поверхностей установка этого переключателя в положение Cubic (Третьей степени).
Создание крыши
Для создания крыши будут использованы два>ШКВ5-примитива — Cube (Куб) и Plane (Плоскость). Как вы, вероятно, помните, куб состоит из шести плоскостей, соединенных в одну группу. В результате щелчок на нем приводит к выделению только одной его грани, а не всего объекта. Чтобы выделить объект целиком, нажмите клавишу
^.
Упражнение. Создание кровельного материала
Для начала нужно создать NURBS-примитив Cube (Куб). Это можно сделать с помощью меню оперативного доступа, но в данном случае наша цель — научить вас работать с новыми контекстными меню. Одновременно нажмите комбинацию клавиш Ctrl+z и левую кнопку мыши. Перетащите указатель влево и отпустите кнопку мыши, чтобы создать куб.
Нажмите комбинацию клавиш Shift+C, чтобы сделать видимым окно каналов, в котором можно будет изменить параметры куба. В текстовое поле Name (Имя) введите имя RoofTile. А в поля Scale X (Масштабирование по оси X), Scale Z (Масштабирование по оси Z) и Rotate X (Поворот относительно оси X) введите значения 150, 12 и -6 соответственно. В итоге получится длинная плоская доска, повернутая под небольшим углом, которую вам предстоит использовать в качестве исходной единицы кровельного материала.
Теперь нужно создать много таких досок, чтобы покрыть ими крышу. Выберите в меню оперативного доступа команду Edit (Правка) и щелкните на квадратике, расположенном справа от названия команды Duplicate (Дублировать). В меню Edit (Правка) окна диалога Duplicate Options (Параметры дублирования) выберите команду Reset Settings (Сбросить настройки). Если ранее дубликаты уже создавались, выполнение этой команды приведет к сбросу предыдущих настроек и восстановлению заданных по умолчанию значений.
В крайнее справа поле Translate (Перемещение) введите значение 8, чтобы каждая следующая копия была сдвинута относительно предыдущей на 8 дюймов вдоль оси Z. В поле Number of Copies (Число копий) введите значение 15. Значения остальных параметров оставьте без изменений и нажмите кнопку Duplicate (Дублировать).
В результате должны появиться 15 досок, сдвинутых друг относительно друга, как показано на рис. 5.2.
Рис. 5.2. Результат дублирования преобразованного куба
Итак, мы получили ряд перекрывающихся объектов. Нажмите клавишу а, чтобы целиком уместить их в границах окна проекции. Все они при этом должны быть выделены. Если вы случайно сняли выделение, нарисуйте рамку, охватывающую все дубликаты, и нажмите клавишу
^. В меню оперативного доступа выберите команду Edit (Правка) и щелкните на квадратике, расположенном справа от названия команды Group (Группировать). В окне диалога Group Options (Параметры группировки) установите переключатель Group Pivot (Опорная точка группы) в положение Center (Геометрический центр) и нажмите кнопку Group (Группировать). В итоге набор досок станет единым объектом, который легко подвергается преобразованиям перемещения и поворота. Присвойте группе имя Shingles. При работе над сценой хорошим приемом является присвоение объектам значимых имен непосредственно после их создания.
Упражнение. Завершение работы над крышей
Для завершения моделирования крыши нужна поверхность, которая будет служить кровельной плитой. Ее наличие не даст вам заглянуть внутрь дома через просветы между отдельными досками. С помощью контекстного меню, вызываемого с помощью комбинации клавиш Ctrl+z, создайте еще один куб и присвойте ему имя RoofSlab.
Теперь нужно положить кровлю на кровельную плиту. Это проще всего сделать в четырехоконном представлении, масштабируя и перемещая куб RoofSlab в интерактивном режиме. Нажмите сначала клавишу Пробел для перехода в это представление, а затем — комбинацию клавиш Shift+a, устанавливая во всех окнах проекции масштаб изображения, обеспечивающий показ всех объектов сцены целиком. С помощью инструментов Move (Переместить) и Scale (Масштабировать) поместите куб RoofSlab в положение, показанное на рис. 5.3. Кроме того, можно использовать окно каналов для ввода точных значений параметров преобразования. А именно, нужно ввести в поля Translate Y (Смещение по оси Y), Translate Z (Смещение по оси Т), Scale X (Масштабирование по оси X) и Scale Z (Масштабирование по оси Z) значения -2, 58,5, 143 и 129 соответственно.
Рис. 5.3. Результат масштабирования и перемещения объекта RoofSlab
ПРИМЕЧАНИЕ
Контекстные меню преобразований полезны в случаях, когда нужно ограничить преобразование одной из осей. Нажмите и удерживайте клавишу, активизирующую инструмент нужного преобразования, и левую кнопку мыши. В результате появится одно из меню, выбрав в котором подходящий вариант вы ограничите преобразование одной осью или плоскостью. Затем, используя среднюю кнопку мыши, можно осуществить преобразование.
Уменьшите масштаб изображения таким образом, чтобы появилась возможность выделить оба присутствующих в сцене объекта одной рамкой. Затем нажмите клавишу Т, чтобы перейти от выделения граней к выделению объектов целиком. В меню оперативного доступа выберите команду Edit (Правка) и щелкните на квадратике, расположенном справа от названия команды Group (Группировать). В окне диалога Group Options (Параметры группировки) установите переключатель Group Under (Группировка) в положение World (Глобальная). В этом случае группа окажется на верхнем уровне иерархии. Если оставить этот переключатель в положении Parent (Под предком), группа окажется подчиненной ближайшему общему предку входящих в нее объектов. В данном случае это приведет к потере группировки объектов Shingles и RoofSlab. В окне каналов присвойте новой группе имя RoofSide.
Поверните группу, изменив в окне каналов значение параметра Rotate X (Поворот относительно оси X) на 35.
Займемся созданием второй стороны крыши. Для этого достаточно продублировать уже имеющийся объект и изменить его ориентацию. Убедитесь, что объект RoofSide выделен, и откройте окно диалога Duplicate Options (Параметры дублирования). Напомним, что для этого нужно выбрать в меню оперативного доступа команду Edit (Правка) и щелкнуть на квадратике, расположенном справа от названия команды Duplicate (Дублировать). Восстановите заданные по умолчанию настройки с помощью команды Reset Settings (Сбросить настройки) меню Edit (Правка) окна диалога. Введите в поля Translate Z (Смещение по оси Z), Scale 2 (Масштабирование по оси Z) и Rotate X (Поворот относительно оси X) значения -109,3, -1 и -70 соответственно.
Вторая сторона крыши готова! Нажмите комбинацию клавиш Shift+a, чтобы целиком уместить все объекты в границах окон проекции. Нарисуйте выделяющую рамку вокруг обеих половин крыши и два раза нажмите клавишу Т, а затем выберите в меню оперативного доступа команду Edit ь Group (Правка > Группировать). Присвойте новой группе имя Roof.
ПРИМЕЧАНИЕ
Выбирать команду Reset Settings (Сбросить настройки) в меню Edit (Правка) окна диалога с параметрами команды или инструмента рекомендуется каждый раз перед вводом новых параметров.
Переместите центр группы Roof в начало системы координат для удобства дальнейшего процесса моделирования. Активизируйте инструмент Move (Переместить), нажав клавишу w. Перейдите в окно проекции Side (Вид сбоку), затем нажмите и удерживайте клавишу х, чтобы активизировать режим привязки к сетке. О переходе в этот режим свидетельствует изменение формы значка преобразования перемещения с квадрата на круг. Убедитесь, что группа Roof выделена, щелкните на центре значка преобразования и перетащите указатель мыши в место пересечения толстых черных линий сетки, как показано на рис. 5.4. Благодаря режиму привязки центр группы переместится точно в начало координат.
Рис. 5.4. Временное включение режима привязки помогает поместить центр группы Roof точно в начало координат
В окне проекции Side (Вид сбоку) увеличьте масштаб области схождения обоих скатов крыши. Для этого нужно нажать комбинацию клавиш Ctrl+Alt, одновременно рисуя выделяющую рамку вокруг этой области. В результате окажется, что скаты крыши не стыкуются достаточно точно, как показано на рис. 5.5. Решить эту проблему можно путем перемещения вершин объекта Shingles при включенном режиме привязки к сетке.
Рис. 5.5. Результат увеличения масштаба области схождения скатов крыши
ВНИМАНИЕ
Если камера, через окно которой осуществляется показ текущей проекции, имеет слишком маленькое значение параметра Far Clip Plane (Дальняя плоскость отсечки), это приводит не только к проблемам просмотра объектов, но и к ограничениям на выделение объектов.
Например, при выделении ската крыши в окне проекции Side ( Вид сбоку) вполне может оказаться, что объекты, расположенные на заднем плане, невозможно выделить, потому что они находятся за границей плоскости отсечки.
Поэтому желательно смотреть на вид выделенных элементов во всех окнах проекции. Изменить значение параметра Far Clip Plane (Дальняя плоскость отсечки) для камеры, демонстрирующей какую-либо из проекций сцены, можно в окне диалога Camera Attribute Editor (Редактор атрибутов для камеры). Для его вызова перейдите в нужное окно проекции и выберите в меню оперативного доступа команду View » Camera Attribute Editor (Вид > Редактор атрибутов для камеры).
Щелкните на верхнем левом кубе, затем, нажав клавишу Shift, на верхнем правом кубе и нажмите клавишу
^. Таким образом, выделенными окажутся оба объекта RoofTile. Нажмите клавишу F9 для перехода в режим редактирования подобъектов, а именно управляющих точек, которые в результате будут выделены фиолетовым цветом. Нарисуйте выделяющую рамку вокруг левой верхней управляющей точки. Это приведет к выделению обеих точек, контролирующих положение верхнего левого ребра объекта RoofTile. Проверьте в окне проекции Perspective (Перспектива), какие именно точки оказались выделенными.
Нажмите клавишу w, чтобы активизировать инструмент Move (Переместить), затем нажмите и удерживайте клавишу х, чтобы на время включить режим привязки к сетке. Щелкните средней кнопкой мыши на выделенной узловой создание старого дома точке и перетащите ее вверх и вправо по направлению к ближайшему узлу сетки, как показано на рис. 5.6.
Рис. 5.6. Временное включение режима привязки к сетке помогает переместить верхнее ребро левой части объекта RoofTHes на центральную линию
Повторите шаг номер 9 для симметрично расположенных управляющих точек.
Теперь переместим к центральной линии управляющие точки, расположенные ниже. Осуществите их привязку к узлу сетки, расположенному ниже использовавшегося в шагах номер 9 и 10, как показано на рис. 5.7.
Рис. 5.7. Привязка нижних ребер объекта RoofTiles
Повторите процесс, описанный в шагах с восьмого по одиннадцатый, для объекта RoofSlab. В результате должен получиться объект, показанный на рис. 5.8. Нажмите клавишу F8 для выхода из режима редактирования подобъектов.
Рис. 5.8. Теперь все управляющие точки выровнены по вертикали
Если в данный момент на экране отсутствует окно каналов, вызовите его, нажав комбинацию клавиш Shift+C. Сделайте видимым редактор слоев и, выбрав в меню Layers (Слои) команду Create Layer (Создать слой), создайте новый слой. Дважды щелкните на его имени. Появится окно диалога Edit Layer (Правка слоя). Присвойте слою имя RoofL и назначьте ему коричневый цвет. Выделите объект Roof и, щелкнув правой кнопкой мыши на имени слоя, выберите в появившемся меню команду Add Selected Objects (Добавить выделенные объекты). Скрыть и снова сделать видимым содержимое слоя можно посредством щелчка на первом слева квадратике, расположенном рядом с именем слоя.
Выберите в меню оперативного доступа команду File > Save Scene As (Файл > Сохранить сцену как) и сохраните сцену под именем chOSoldHouse.mb. Обратите внимание, что для сохранения автоматически предлагается папка M4F_SW\ Oldhouse\Scenes. Помните, что существует возможность включения функции сохранения с возрастающими именами. Достаточно выбрать в меню оперативного доступа команду File (Файл), щелкнуть на квадратике, расположенном справа от названия команды Save Scene (Сохранить сцену), и установить в появившемся окне диалога флажок Incremental Save (Сохранение с возрастающими именами). В этом случае вы можете быть уверены в наличии достаточного количества резервных копий файла, которые можно загрузить в случае возникновения проблем с текущей сценой.
Создание старого дома
Итак, все готово для начала работы над созданием «Мира монстров». Прежде всего вам предстоит на основе простых NURBS-объектов смоделировать дом, в котором будет жить монстр. По мере добавления все новых и новых деталей дом будет становиться все сложнее. Мы не собираемся приводить исчерпывающий список всех инструментов Maya с объяснением возможных вариантов их использования. Для этого существует руководство пользователя. Но назначение основных инструментов станет понятным в процессе обучения работе с программой.
ВНИМАНИЕ
Случайное нажатие комбинации клавиш Alt+v спровоцирует воспроизведение анимации, что может стать источником проблем. Так как ползунок таймера анимации в данном упражнении скрыт, а ключи анимации для какого-либо объекта пока не созданы, вы даже не заметите, что перешли в режим воспроизведения анимации, в котором невозможно создание и редактирование большинства объектов. Сделать видимым ползунок таймера анимации можно, выбрав в меню оперативного доступа команду Display > UI Elevemts > Time Slider (Отображение > Элементы интерфейса > Ползунок таймера анимации) или нажав комбинацию клавиш Alt+t. Чтобы остановить воспроизведение анимации, если оно все же началось, повторно нажмите Alt+v или воспользуйтесь клавишей Esc. Перепрограммировать заданную по умолчанию комбинацию клавиш можно в окне диалога Hotkey Editor (Редактор клавиатурных комбинаций), которое вызывается командой Windows > Settings/Preferences > Hotkeys (Окно > Настройки/Параметры > Клавиатурные комбинации). В разделе Assign New Hotkey (Назначить новую клавиатурную комбинацию) введите v в поле Key (Клавиша), установите переключатель Modifier (Модификатор) в положение Alt и нажмите кнопку Find (Найти). Теперь можно легко назначить найденной команде новую клавиатурную комбинацию. Впрочем, подобными вещами лучше не увлекаться, потому что если впоследствии вам придется, например, переустановить программу, все значения клавиатурных комбинаций вернутся к заданным по умолчанию, и вы просто не сможете сними работать, потому что привыкли к своим собственным!
Свое знакомство с NURBS-объектами вы начнете с построения дома, в процессе которого будут использоваться меню оперативного доступа, клавиатурные комбинации и контекстные меню. Работа над сценой продолжится в следующих главах, и к концу книги вы получите детально разработанную сцену, визуализация которой приведет к появлению впечатляющей анимации.
Начало нового проекта
В отличие от других приложений Windows, Maya всегда по умолчанию сохраняет документы в папках, предназначенных для проекта. Почему в папках, а не в одной папке? Maya создает набор вложенных папок, чтобы управлять всеми созданными файлами в процессе формирования сложной анимации. Файлы сцены, текстуры, результаты визуализации и т. п. хранятся в отдельных папках. Обычно, начиная новый проект, пользователи создают для него специальную папку, а затем программа автоматически создает все нужные вложенные папки.
Во-первых, нужно создать папку, которая при выполнении упражнений будет использоваться в качестве папки назначения. Присвойте ей имя в соответствии со стандартом, принятым в вашей операционной системе.
ВНИМАНИЕ
Избегайте использования символа пробела в именах папок и файлов, заменяя его знаком подчеркивания. Если маршрут доступа к файлам включает пробелы, Maya может работать некорректно.
Для создания нового проекта выберите в меню оперативного доступа команду File > Project > New (Файл > Проект > Создать).
Введите в поле Name (Имя) имя проекта OldHouse и нажмите кнопку Use Defaults (По умолчанию).
В поле Location (Местоположение) введите путь доступа к папке M4F_SW. Нажмите кнопку Browse (Просмотр) и, найдя в появившемся окне диалога нужную папку, дважды щелкните на ее имени. Затем нажмите кнопку Accept (Принять). Если теперь, например, с помощью приложения Windows Explorer посмотреть на содержимое папки M4F_SW, то будет видно, что в ней возникло несколько дополнительных папок, необходимых для работы над данным проектом.
Если вы меняли параметры координатной сетки, их требуется восстановить.
Только в этом случае начальная точка будет располагаться в нужном месте. Выберите в меню оперативного доступа команду Display (Отображение) и в появившемся меню щелкните на квадратике, расположенном справа от команды Grid (Сетка). В меню Edit (Правка) появившегося окна диалога Grid Options (Параметры сетки) выберите команду Reset Settings (Сбросить настройки). Нажмите кнопку Apply and Close (Применить и закрыть).
Теперь нужно указать систему единиц, в которой будут исчисляться размеры создаваемых объектов. Выберите в меню оперативного доступа команду Windows > Settings/Preferences > Hotkeys (Окно > Настройки/Параметры >Клавиатурные комбинации).
В списке Categories (Категории) появившегося окна диалога выберите вариант Settings (Настройки). В раскрывающемся списке Linear (Линейные) раздела Working Units (Рабочие единицы) выберите вариант Inch (Дюймы).
Нажмите кнопку Save (Сохранить) и затем закройте окно диалога Preferences (Параметры).
СОВЕТ
После изменения единиц измерения у вас могут возникнуть проблемы с изменением масштаба. Например, вдруг может оказаться, что половина окна проекции просто отрезана. Причиной этого является слишком малое значение параметра Far Clip Plane (Дальняя плоскость отсечки). Убедитесь, что у вас активно окно проекции Perspective (Перспектива) и выберите в меню оперативного доступа команду View > Camera Attribute Editor (Вид > Редактор атрибутов для камеры). В поле Far Clip Plane (Дальняя плоскость отсечки) раздела Camera Attributes (Параметры камеры) введите значение 10 000. Если же объект исчезает при попытке разглядеть его поближе, измените значение параметра Near Clip Plane (Ближняя плоскость отсечки).