Что такое атрибут Maya

Как  уже,  вероятно, стало понятно  из  предыдущих глав, под  атрибутом  (Attribute) подразумевается  любой  элемент  узла  Майя  (в  языке   MEL  для   обозначения   атрибутов используется  термин Attr) .  (Узел  Maya  (Maya node) — это то,  что можно просмотреть

в гиперграфе или  на  вкладках вверху  редактора  атрибутов.)  Это звучит  немного  непо­ нятно, но на самом деле все  довольно просто: за исключением  заголовков  каждый эле­ мент в  панели каналов  (например, rotateX, transform Y или scaleZ ) является  атри­ бутом1     объекта, который называется узлом  (node). Имя узла и  указано в  заголовке пане­ ли каналов.

Узлами   базовой сферы NURBS являются NURBSSpherel, NURBSSphereShapel и   make- NURBSSpherel. Атрибутами являются  все остальные доступные поля (как с числовыми, так и  с логическими  полями  справа). Фактически  узел имеет много больше  атрибутов,  чем ото­ бражено в   панели  каналов  по умолчанию. Чтобы  увидеть  их  все,  выберите  объект  и  от­ кройте   окно   Channel  Control  (Управление каналами)  (пункт   меню  Window  =>   General Editors => Channel Control (Окно => Общие редакторы => Управление каналами)).

При создании, изменении  или  анимации  объекта создается или  изменяется  один либо несколько  атрибутов  одного или  нескольких узлов, которые составляют объект.  Безус­ ловно, все  эти  изменения — не более чем команды  MEL, поэтому вполне  можно заста­ вить Майя сделать эту работу автоматически.  В данном разделе коротко рассматривается работа языка MEL с атрибутами, а создание сложных сценариев,  использующих атрибу­ ты, будет описано несколько позже.

Корректируя в предыдущем разделе некоторые из атрибутов объекта myCube, можно было заметить, что редактор сценариев  заполнен операторами,  начинающимися  со слова setAttr. Оператор setAttr инструктирует MEL о необходимости  присвоить указан­ ному атрибуту некоторое значение. Аналогично,  оператор getAtt r возвращает (читает) значение атрибута указанного объекта,  позволяя использовать  его  в  другом  операторе MEL.   Оператор   addAttr добавляет  атрибут  к   некоторому   элементу,   а   оператор listAttr позволяет получить список атрибутов узла. По существу,  использование опе­ ратора setAttr аналогично открытию окна редактора атрибутов  для выделенного объ­ екта и  изменению значения  в  одном из  его  полей. (Попробуйте изменить  значение в  ре­ дакторе атрибутов, и  убедитесь, что в  панели  истории  редактора сценариев  появился  со­ ответствующий оператор setAttr.) Оператор setAtt r имеет следующий синтаксис: setAttr [флаги]  имяОбъекта.имяАтрибута значение;

Флаги, как  уже упоминалось,  являются набором специальных запросов, выполняе­

мых языком  MEL; имяОбъекта.имяАтрибута —  это имя  атрибута элемента,  которому предстоит присвоить  значение (например, myCube.translateX) ; значение— это значение, присваиваемое  атрибуту. Операторы getAtt r и  addAtt r имеют подобный синтаксис. Например,  куб bo x можно переместить по оси  X на 10  единиц,   введя  в редак­ торе сценариев следующий код:

setAtt r   box. translate X    10;

Выполнение этой команды приведет к перемещению куба из  его текущего  положения к десятой единице по оси  X. (Безусловно, если  на сцене нет узла объекта  по  имени  box, последует сообщение об ошибке.)

Таким образом, язык MEL (и  Майя) обращаются к атрибутам, подобно языку  С++ и другим объектно-ориентированным  языкам, т.е. сначала указывают узел, затем  следует точка и  имя   атрибута: Объект. Атрибут. Если  не указать узел,  об  атрибуте  которого идет речь,  то  последует  сообщение об  ошибке.  Например, ввод   команды  s e t A t t r

Называемом в книге также параметром. — Примеч. ред.

translateX 10; приведет к сообщению об ошибке, поскольку Майя не знает, что  сле­ дует перемещать.

Установка значения атрибута translate X очень похожа на команду  перемещения: mov e 10 0 0. Однако  в  отличие    от  команды  mov e установка  значения атрибута translateX не повлияет  на два других атрибута  (translateY и translateZ). Кроме того, оператор setAttr гораздо гибче, чем команда move, которая может только пере­ мещать объект.

Улучшение  рабочег о пространств а с помощь ю  панелей  

Хотя панели  коротко обсуждались в  главе 1, "Интерфейс Майя", они  могли  показаться  ма­ лополезными. Что делает панели  действительно  полезными, так это не только то,  что  на них  уже  присутствует,  а то,  что  на  них  можно добавить. Например, любой  пункт  меню можно сделать кнопкой  панели  или  поместить на нее сценарий MEL, что  позволит выпол­ нять довольно сложные задачи  одним щелчком мыши. Кроме того,  возможность  создавать и  использовать  несколько панелей позволяет создать отдельную  панель для каждой задачи. Например,  одну панель можно посвятить сценариям  MEL, а  другую — общим задачам для определенного проекта.  Чтобы создать новую панель,  выберите  пункт  меню Window => Settings/Preferences => Shelves (Окно => Параметры/Предпочтения => Панели), перейдите на вкладку Shelves (Панели) и  щелкните на кнопке New Shelf (Новая панель).

Чтобы переключиться на новую панели  (например, surfaces  (Поверхности)), достаточно вы­ брать ее из  раскрывающегося меню панелей (серая кнопка с изображением  папки  слева от панели). (Параметры панели  можно также  настроить с помощью раскрывающегося  меню, которое представлено в виде  черного треугольника чуть ниже вкладки  меню панели.)  Майя предоставляет большое количество заранее созданных панелей, что повышает их  ценность. Чтобы создать новую кнопку панели  из  пункта меню, выберите его, нажав  клавиши  <Ctrl> и   < Shift>  в  строке меню (но не в  окне оперативного доступа). Новая  кнопка появится  на активизированной   панели. Щелчок  на  этой  кнопке  будет  аналогичен   выбору соответст­ вующего пункта меню.

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

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

polyCube -n box;

setAttr polyCubel.aw 3; s e t A t t r   polyCubel.w 5; s e t A t t r   box.rotateY 45; setAttr box.translateX  -2.5; setAttr box.translateY .25; setAttr box.scaleY 0.5;

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

Выделение и  выполнение строк кода по одной — это прекрасный способ выявления ошибок в сценарии.

Чтобы   изменить способ   создания  куба,   необходимо  обратиться  к   узлу   формы

(polyCubel), а не к узлу положения, который после создания был переименован в box.

Первая строка кода создает куб.  Остальные строки  изменяют некоторых из  его  атри­  бутов,  в том числе узла формы куба (узел polyCubel ) или узла положения (узел box). После команды polyCub e следуют два оператора  setAttr, которые изменяют размер куба по ширине,  а затем собственно ширину  куба (теперь параллелепипеда).  Четыре по­ следние строки изменяют поворот,  позицию и  масштаб узла трансформации куба (box). Конечный результат должен выглядеть так, как на рис. 16.3.

Рис. 16.3. Сплюснутый куб

Если  по  каким-либо  причинам  понадобится создавать много  сплюснутых  кубов  на различных сценах,  то  эти  команды  достаточно  будет  перетащить с  помощью  средней кнопки  мыши  (нажав  клавишу <Option > на Мае) на панель и  создавать объекты, щелкая на полученной кнопке, сэкономив таким образом много времени.

Источник: Кундерт-Гиббс, Джон,  Ларкинс, Майк,  Деракшани, Дариус, Кунзендорф, Эрик,  и др., Освоение Maya  8.5.:  Пер.  с англ.  – М.:  ООО  «И.Д.  Вильямс», 2007.  – 928  с.:  ил.

По теме:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий