У вас есть MEL?

Программируйте! Убедитесь в том, что мощный инструмент для скриптинга в Alias|Wavefront Maya сможет повысить качество анимации и ускорить разработку.

Скрипты. При одном упоминании об этом многие 3d- художники покрываются холодным потом. Но несмотря на то, что многие аниматоры стараются избегать написания скриптов, этот механизм позволяет существенно повысить продуктивность, а также автоматизировать создание эффектов, которые сложно и долго изготовлять при помощи последовательности ключевых кадров.

Рис. 1. Kabana Boy и Smallgoods Man


Начиная анимацией персонажей и кончая сложными последовательностями эффектов, скрипты помогают 3D-дизайнерам ускорить разработку, создавая при этом более богатую и точную анимацию.



Скриптинг не нов. Многие анимационные хай-энд приложения, включая Avid Softimage и Discreet 3D Studio MAX 2.5, имеют базовые возможности для создания скриптов. Когда фирма Alias|Wavefront в 1998 году официально выпустила пакет Maya, она высоко подняла планку требований в области 3D дизайна и анимации. Maya предложила 3D-сообществу новый стиль работы, избегающий обращения к различным приложениям в процессе работы над проектом. В пакете Maya все функции виртуально интегрированы в одну общую рабочую среду, причем все делается со скоростью, недоступной в большинстве других программных интерфейсов. Поворотным пунктом в Maya, однако, стал ее встроенный язык сценариев, MEL (Maya Embedded Language). В этой статье мы рассмотрим мощные и разнообразные возможности этого языка. В примерах я буду использовать одного своего персонажа- Kabana Boy, бесшовную модель NURBS, сделанную для мультфильма. "It Came From the Deli".



MEL - скрипты



MEL является основой всех операций в Maya. До MEL, языки создания сценариев часто имели ограниченные возможности и не были доступны никому, кроме наиболее опытных программистов. В результате этого большинство пользователей их игнорировало. С появлением MEL, написание сценариев превратилось в доступный и невероятно мощный инструмент, полностью интегрированный в производственный цикл Maya и способный радикально изменить работу дизайнера. Этот язык имеет более 600 команд и 75 функций. MEL может быть использован для создания всего что угодно, начиная частицами произвольного типа и световыми эффектами и кончая новыми пользовательскими интерфейсами, которые мы обсудим несколько позже. Пользователи могут добавлять горячие клавиши, меню и инструменты в уже существующий текущий набор инструментов. Вдобавок, все области интерфейса могут быть спрятаны или показаны. Maya существует в варианте как для SGI IRIX, так и для Windows NT, и MEL абсолютно одинаков в обеих операционных системах.



Благодаря специфике MEL пользователи могут ему быстро и эффективно научиться и сразу же начать применять в работе. Хотя опыт программирования и облегчает обучение, MEL доступен абсолютно всем. Alias|Wavefront поставляет вместе с пакетом Maya превосходную литературу, благодаря чему новички обычно начинают писать свои первые MEL- скрипты уже через несколько часов работы. В добавок, подробная информация обо всех особенностях MEL-скриптинга предоставляется в хелпе, который можно найти в правом верхнем углу интерфейса.



Редактор скриптов



Через стандартный интерфейс Maya можно осуществить несколько способов написания MEL-скриптов (также называемых командами) (Рис. 1).



Рис. 1. Простая сфера, созданная в интерфейсе Maya при помощи MEL. Редактор скриптов можно открыть из маню Window или нажатием мышью на иконку Script Editor.


Вы можете вводить команды MEL в редакторе скриптов или в командной строке, которая находится прямо под Range Finder в основании экрана. Однако, командная строка имеет то ограничение, что в ней видна только одна строка скрипта. Поэтому в нее можно вводить команды, состоящие только из одной строки. Например, для того, чтобы создать сферу радиусом 3.6 под названием "Ball", нужно напечатать в командной строке следующее:



sphere -radius 3.6 -name Ball;



Редактор скриптов, напротив, позволяет редактировать практически неограниченное количество строк и чаще всего имеет преимущество перед командной строкой. В этом руководстве редактор скриптов будет использоваться для написания скрипта, управляющего Kabana Boy'ем. Чтобы открыть редактор скриптов, выберите Window--> General Editors -->Script Editor.



Редактор скриптов делится на две части: в нижней части набираются команды, а в верхней выводятся выполненные команды и соответствующие сообщения об ошибках. Вы также можете использовать редактор скриптов для сохранения, импорта и поиска файлов скриптов в базе данных.



Команды MEL также могут вводиться путем копирования из редактора скриптов. Когда вы работаете в Maya, все ваши действия записываются и записываются в виде скрипта в редакторе скриптов. Например, если вы создадите объект в интерфейсе, то увидите, как в верхней части редактора скриптов появится соответствующая команда. Позднее вы можете выделить эту команду в редакторе и перетащить текст мышью на Maya's Shelf, расположенную над вьюпортами (рис. 2).



Рис. 2. При работе в Maya, редактор скриптов записывает все ваши действия на языке MEL.


Так что, вы можете буквально построить человеческий скелет, открыть редактор скриптов, выбрать записанный сценарий и перетащить его на Shelf, где он превратится в одну кнопку. Когда вам понадобится другой скелет, просто нажмите ее.



Эта команда превратится в кнопку. Когда вы нажмете на нее, то выполнится связанный с ней скрипт. Для создания копии объекта нужно просто нажать одну кнопку. В хелпе пакета Maya приведены примеры скриптов, которые могут быть скопированы в редактор скриптов.



Создавая персонажа при помощи скрипта MEL, важно придерживаться строгой политики именования объектов сцены. MEL работает с именами объектов, позволяя манипулировать ими при анимации .Поэтому, когда появляется два объекта с одинаковыми именами, в номенклатуре происходит путаница. Из-за этого MEL выдает ошибку и скрипт не выполняется. Нет ничего ужаснее, чем написать 500 строк кода, которые не сработают из-за неправильного именования. Для того, чтобы избежать подобной ситуации, давайте всем объектам, сочлениям и атрибутам логически ясные и понятные имена (Рис. 3).



Рис. 3. Руки Kabana Boy'я в Hypergraph'е. Сустав левой руки "kbwristBase1," отмечен ярко зеленым в интерфейсе и желтым в Hypergraph'е.


Все объекты, их иерархия и имена показаны в Hypergraph. Это позволяет в случае необходимости переименовать любой объект в сцене. Не важно, какую именно систему наименований вы используете. Если вы знаете имена всех объектов в сцене, то ошибку в скрипте будет исправить куда легче. В моей собственной системе именования, я обычно использую префиксы, основанные на имени персонажа и части тела. Например, сустав левой руки Kabana Boy'я я обычно называю во всех скриптах "kbwristBase1".




Настраиваемые интерфейсы (custom GUI's)



Одной из наиболее мощных возможностей MEL является создание настраиваемых интерфейсов для анимации персонажей. Настраиваемые интерфейсы дают вам доступ ко всем органам управления полностью настроенного персонажа в единственном окне, в противоположность многочисленным диалоговым окнам для каждой части в отдельности. Эта нехитрая техника существенно упрощает процесс работы и позволяет нескольким аниматорам одновременно работать над одним и тем же проектом с минимальными накладками. Разные члены группы могут иметь дело с одним и тем же интерфейсом, не вникая при этом в особенности настройки.



Создание настраиваемых интерфейсов для каждого персонажа позволит вам сосредоточиться на самом движении и его динамике, и не отвлекаться на интерфейс. Это позволит вам увеличить вьюпорт до полного размера экрана, освобождая, тем самым, больше места для анимации. Для того, чтобы создать настраиваемый интерфейс, в первую очередь нужно сделать окно, в котором будут размещены органы управления персонажем. В пакете Maya окна создаются при помощи приведенного ниже скрипта:



window;
showWindow;



Для того, чтобы выполнить сценарий, нажмите ввод на цифровой панели клавиатуры (нажав обычный ввод, вы сотрете тем самым скрипт). После этого на интерфейсе появится пустое окно. Первая строчка скрипта создает базовый объект окна, а вторая добавляет его к интерфейсу. При помощи пустого окна, однако, невозможно управлять каким бы то ни было объектом. Нам же нужно поместить в окно органы управления, или рычаги (widgets) персонажа. Окно является лишь емкостью, носителем органов управления. Все эти рычаги описываются в MEL и затем привязываются к атрибутам, управляющим персонажем, что позволяет его анимировать через интерфейс.



В окне можно разместить множество различных элементов управления, однако, перед этим следует выбрать тип раскладки (layout), определяющий способ размещения элементов в окне. Существует четыре типа раскладки: : columnLayout, formLayout, scrollLayout, и rowLayout. Простейшим для применения является columnLayout. Наиболее сложным является formLayout, однако, он предоставляет пользователю и больше всего возможностей.



В интерфейсе персонажа можно использовать множество различных элементов управления: списки прокрутки (scroll lists), добавляющие полосу прокрутки в интерфейсы с большим количеством элементов; кнопки, выполняющие определенные команды при нажатии; полосы прокрутки(sliders), управляющие атрибутами; check box'ы; и, наконец, окна, в которых располагаются все эти элементы. Существует множество разновидностей этих элементов, а также многие другие, каждый из которых подробно, с использованием примеров, подробно рассмотрен в хелпе.



Интерфейс сохраняет гибкость даже после завершения проекта, и может быть легко приспособлен для управления любым другим персонажем, создаваемым в будущем. Просто удалите имена объектов и специфических для данного персонажа атрибутов и замените их соответствующими именами нового персонажа.



Интерфейс Kabana Boy'я



Прежде чем создавать настраиваемый интерфейс, загрузим сцену, содержащую Kabana Boy'я и освещение для тестового рендеринга. Когда он нам потребуется в другой сцене, то мы его просто импортируем без источников освещения.



Kabana Boy обладает широким спектром движений и требует настройки с несколькими расположениями контроллеров. Maya использует локаторы для управления движениями глаз, IK для ног и FK для рук (рис. 4).



Рис. 4. Персонаж Kabana и настройка в рентгеновском режиме (X-ray), показывающая скелет и органы управления. Справа от окна с Kabana Boy'ем расположено окно Outliner, показывающее часть его скелета в виде иерархии.


Kabana Boy имеет также ряд деформаторов и контроллеров, включая решетки (lattices) над областью глаз и суставами для правильной деформации, чтобы дополнить скелет и обеспечить полную функциональность.



Для адекватной реализации движений ног, а также для поддержания интерактивного контроля над его руками, используются radio buttons в сочетании с полосами прокрутки. Полосы прокрутки используются для управления и создания ключевых кадров для частей тела и атрибутов Kabana Boy'я, включая ноги, ступни, глаза и руки. Все эти действия можно производить в одном и том же окне.



При типичной настройке персонажа большое число атрибутов требует создания ключевых кадров. Вывод их в формате columnLayout потребует куда большей площади, чем размер окна интерфейса Maya. К счастью, Maya позволяет создавать страницы или панели, в которых группируются определенные аспекты настройки. Например, настройки лица, левой руки, правой руки, левой ноги и правой ноги могут быть сгруппированы на различных панелях. Эти панели создаются путем включения в скрипт соответствующих инструкций tabLayout и formLayout. При этом в качестве основного формата, определяющего размещение элементов управления в окне, берется columnLayout (рис. 5).



Рис. 5. Окно интерфейса c панелями, образующими отдельные страницы, и кнопками, расположенными в формате columnLayout. Эти кнопки не связаны ни с какими атрибутами сцены.


Теперь мы вполне готовы создать интерфейс персонажа. Мы начнем с создания интерфейса для анимации перемещения правой ноги Kabana Boy'я вдоль оси X. Для этого использовался скрипт, приведенный в листинге 1.



Листинг 1: Код MEL, определяющий интерфейс для анимации перемещения правой ноги Kabana Boy'я вдоль оси X.
//Section 1
window -widthHeight 150 450 -title "X translation of
Kabana Boy's Right foot";
string $form = 'formLayout -width 600 -h 600';
string $tabs = 'tabLayout -innerMarginWidth 5
-innerMarginHeight 5';
// Section 2
string $child1 = 'columnLayout';
global proc keykbR_foot ()

{
setKeyFrame "kbR_foot.translateX";
}
// Section 3
attrFieldSliderGrp -min -10 -max 10 -at
"kbR_foot.translateX";
button -label "Keyframe R_foot translate X"
-command "keykbR_foot.translateX" -w 200;
text -l" ";
separator -width 500;
setParent ..;
// Section 4
tabLayout -edit
-tabLabel $child1"R_foot"
$tabs;

Невзирая на то, что они обозначают, все команды MEL должны оканчиваться точкой с запятой. Строки, начинающиеся двойным слешем (//), являются комментариями. Они могут использоваться для описания функций скрипта и т. д.



Как показано в примере, скрипт может быть разделен на четыре отдельных части. В первой части создается окно, задается его ширина и тип раскладки. FormLayout и tabLayout определяют как раскладку, так и размеры окна. В MEL тип раскладки объявляется в виде стоковых переменных в скрипте. Они используются как хранилища различных типов данных, включая переменные (изменяемые величины), массивы (комбинации переменных типа int, float, string или vector), матрицы (массив величин типа float), атрибуты объектов, глобальные и локальные переменные, константы. Раскладку можно представить в виде ящичка с цифрами или буквами.



Во 2-й части tabLayout объявляется родителем columnLayout и создание ключевого кадра для правой ноги делается глобальной процедурой. Глобальная процедура- это группа команд MEL, которую можно запустить, набрав ее имя. Таким образом, когда у правой ноги увеличится количество атрибутов, команда keyR_foot автоматически создаст ключевой кадр для всех атрибутов, связанных с ногой. При этом аниматору не придется задавать ключевые кадры для отдельных команд.



3-я часть является основной частью сценария, в которой объявляются типы элементов управления, атрибуты, к которым они привязываются, а также параметры атрибутов. В этой части создается полоса прокрутки для управления атрибутом translateX с параметрами от -10 до 10 единиц. Также создается кнопка под названием "Keyframe R_foot translate X" для задания ключевого кадра этого атрибута. Если вы наберете



button -label "Keyframe R_foot translate X"
-command "keyR_foot" -w 200;



то скрипт вызовет глобальную процедуру, описанную во второй части и создаст ключевой кадр для всех атрибутов, которые перечислены в этой процедуре. Последняя строчка этой части обозначает конец данных, которые должны быть включены в columnLayout и объявляет tabLayout родителем columnLayout. В 4-й части объявляются имена страниц или панелей, а также команда showWindow, создающая графический интерфейс.




Листинг 2: Код MEL, определяющий интерфейс для анимации перемещения правой ноги Kabana Boy'я вдоль оси X, а также ее поворота.

// Section 1
window -widthHeight 150 450 ­title "X-translation and
roll of Kabana boy's right foot";
string $form = 'formLayout -width 600 -h 600';
string $tabs = 'tabLayout -innerMarginWidth 5
-innerMarginHeight 5';

// Section 2
string $child1 = 'columnLayout';
global proc keykbR_foot ()
{
setKeyFrame "kbR_foot.translateX";
setKeyFrame "kbR_foot. roll";
}
// Section 3
attrFieldSliderGrp -min -10 -max 10 -at "kbR_foot.translateX";
button -label "Keyframe R_foot translate X"
-command "keykbR_foot.translateX" -w 200;
text -l" ";
separator -width 500;
attrFieldSliderGrp -min -5 -max 10 -at "kbR_foot.roll";
button -label "Keyframe R_foot translate X"
-command "keykbR_foot.roll" -w 200;
text -l" ";
separator -width 500;
setParent ..;
// Section 4
tabLayout -edit
-tabLabel $child1 "R_foot" $tabs;
showWindow;

Листинг 3: интерфейс для и атрибутов анимации ноги Kabana Boy'я

// Section 1
window -widthHeight 150 450
string $form = 'formLayout -width 600 -h 600';
string $tabs = 'tabLayout -innerMarginWidth 5
-innerMarginHeight 5';
// Section 2
string $child1 = 'columnLayout';
global proc keykbR_foot ()

{
setKeyFrame "kbR_foot.translateX";
setKeyFrame "kbR_foot. roll";
}
// Section 3
attrFieldSliderGrp -min -10 -max 10 -at
"kbR_foot.translateX";
text -l" ";
separator -width 500;
button -label "Keyframe R_foot translate X" -command
"keykbR_foot.translateX" -w 200;
text -l" ";
separator -width 500;
attrFieldSliderGrp -min -5 -max 10 -at "kbR_foot. roll";
text -l" ";
separator -width 500;
button -label "Keyframe R_foot translate X" -command
"keykbR_foot. roll" -w 200;
text -l" ";
separator -width 500;setParent ..;
// Section 2(ii)
string $child2 = 'columnLayout';
global proc keykbL_foot ()

{
setKeyFrame "kbL_foot.translateX";
setKeyFrame "kbL_foot. roll";
}
// Section 3(ii)
attrFieldSliderGrp -min -10 -max 10 -at "kbL_foot.translateX";
text -l" ";
separator -width 500;
button -label "Keyframe L_foot translate X" -command "keykbL_foot.translateX" -w 200;
text -l" ";
separator -width 500;
attrFieldSliderGrp -min -5 -max 10 -at "kbL_foot.roll";
text -l" ";
separator -width 500;button -label "Keyframe L_foot translate X" -command "keykbL_foot.roll" -w 200;
text -l" ";
separator -width 500;
setParent ..;
// Section 4
tabLayout -edit
-tabLabel $child1 "R_foot" -tabLabel $child2 "L_foot"
$tabs;
showWindow;

Чтобы ввести в сценарий дополнительные атрибуты, объявите их во 2-й и 3-й частях. Например, если бы я захотел, чтобы модель Kabana Boy'я могла вращать ногой, то я сделал бы атрибут foot_roll с параметрами -5 и 10, и скрипт выглядел бы, как в листинге 2.



Чтобы скрипт поддерживал большее количество атрибутов, его можно легко модифицировать, копируя строки кода, детализирующие attrFieldSlideGrp, а также кнопки. Дополнительные атрибуты, для которых следует создать ключевые кадры, тоже должны быть декларированы в глобальной процедуре.



Имена и параметры новых атрибутов в скопированных строчках, разумеется, должны быть изменены.



Теперь анимацию переноса по оси X и вращение ноги можно производить в одном и том же окне (рис. 6).



Рис. 6. Анимация переноса по оси X правой ноги Kabana Boy'я с использованием нового настраиваемого графического интерфейса.


Разумеется, лишь у очень небольшого количества персонажей анимируется лишь одна часть тела. Если в интерфейс требуется включить панели, соответствующие прочим частям тела, то после setParent в части 3 и перед частью 4 следует повторить части 2 и3 с новыми атрибутами и параметрами. Не забудьте снова вызвать setParent и добавить новый tabLabel в 4-й части. Например, если добавить панель с теми же атрибутами для левой ноги, то сценарий будет таким, как приведено в листинге 3.



Листинг 3 был написан за очень короткий промежуток времени путем копирования и удаления фрагментов, а также замены R_foot на L_foot. Благодаря информации, приведенной в листинге 3, вы сможете добавить новые панели и атрибуты. Например, вы можете включить цели морфинга (morph targets) для лица, или смешанные формы (blend shapes) на панель, описывающую атрибуты лица. Когда вы закончите проект, и начнете делать нового персонажа, вы легко сможете заменить старые имена атрибутов на новые.



Закончив написание скрипта, его следует отладить. Если он набран правильно, без орфографических и арифметических ошибок, или неправильно набранных имен атрибутов, то скрипт успешно выполнится, и на экране появится интерфейс (рис. 7).



Рис. 7. Анимируя Kabana Boy'я , вы можете спрятать все части интерфейса Maya, что упростит работу и позволит растянуть окно перспективы во весь экран.


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



Первоначальная настройка интерфейса для анимации персонажа может потребовать определенного времени, особенно, если вы новичок в MEL. Однако, преимущества использования в процессе производства настраиваемых интерфейсов оправдают потраченные усилия.



Чтобы продемонстрировать, как MEL сможет упростить вашу работу, я приведу пример из одного учебного заведения, в котором я преподаю- Mesmer Animation Labs (www.mesmer.com). Студент по имени Marc Leone сделал модель монстра со 127 суставами и 10 щупальцами- сущий кошмар. Использование IK оказалось слишком медленным, поэтому он воспользовался FK с настраиваемым интерфейсом. При помощи интерфейса, созданного в MEL, он мог выбрать любую кость в любом щупальце. Он мог последовательно выбирать суставы вверх и вниз по иерархии, определять ориентацию каждого сустава, менять ее, а также вращать и перемещать. Использование стандартной техники прямой кинематики было бы недопустимо медленным. MEL позволил ему анимировать быстро и точно, при максимальной простоте работы. Марк, новичок в MEL, потратил на эту разработку, от начала до конца, 48 часов. И этот пример- лишь вершина айсберга .



О, этот MEL!



Помимо анимации персонажей, я постоянно использую MEL-скрипты для различных световых эффектов, включая молнии, огонь, вспышки или мерцающие огоньки. Я также использую скрипты при работе с частицами , - я делаю мерцающие частицы, или частицы, меняющие во времени цвет, радиус и густоту. Чтобы добиться того же при помощи ключевых кадров, потребовалось бы гораздо больше времени, к тому же, это отвлекало бы от анимации персонажа. Более того, использование MEL в этих аспектах анимации, позволяет достичь высочайшего уровня контроля. Настраиваемые интерфейсы позволяют в интерактивном режиме проверять действие тех или иных установок атрибутов. Помимо этого, MEL может использоваться для настройки и расширения всех возможностей рендеринга и моделирования в Maya, а также использовать плаг-ины Artisan, Maya Cloth, и Fur.



MEL - незаменимый инструмент в арсенале аниматора. Преодолейте боязнь и займитесь MEL. Он освободит полет вашей фантазии.



Заметки на полях



10 главных советов при работе с MEL



1. Следите за правописанием, и не забывайте про точку с запятой. MEL, как и все языки программирования, очень чувствителен к пунктуации. Девяносто процентов всех ошибок происходят из-за этого. К тому же, все апострофы печатаются при помощи клавиши, которая находится слева от 1, а не при помощи стандартных кавычек слева от ввода. Неправильное использование апострофа приведет к ошибке.
2. Будьте организованы! Называйте все объекты в сцене ясно и логично. Это сэкономит вам массу времени.
3. Автоматизируйте повторяющиеся операции. Это очень полезно для экономии времени.
4. Модифицируйте MEL - скрипты, чтобы иметь к ним доступ через hotbox. Hotbox- это возможность Maya, при помощи которой путем нажатия пробела или другой определенной клавиши осуществляется доступ к меню во вьюпорте. Меню в hotbox'е могут быть созданы при помощи MEL-сценариев. Им можно назначить свои горячие клавиши, что ускоряет работу и избавляет от необходимости открывать скрипты в редакторе.
5. Для упрощения даступа поместите ваш скрипт или команду на Maya's Shelf. Нажатие правой кнопки мыши на кнопке выполняет соответствующий скрипт, сохраняя время при программировании повторяющихся действий.
6. Пользуйтесь интернетом! На сайтах вроде Lumis (www.lumis3d.com) и Alias|Wavefront (www.aw.sgi.com) предлагаются для скачивания MEL -скрипты, а также указания и приемы, упрощающие работу.
7. Создайте несколько типовых настраиваемых интерфейсов для ваших персонажей. Когда придет пора анимировать их, просто впишите нужные имена атрибутов.
8. Пользуйтесь хелпом. Экспериментируйте с примерами, которые могут быть скопированы в редактор скриптов. Это поможет вам найти множество путей, облегчающих работу.
9. Усовершенствуйте эффекты с использованием частиц и освещения. Если вы ищете чего-то необычного, такого, чего нельзя создать привычными средствами, попробуйте MEL. Создайте мерцающие, движущиеся и роящиеся частицы, или попытайтесь использовать необычным образом цвет.
10. Наслаждайтесь! Экспериментируйте, спорьте и учитесь. MEL- это не только мощный инструмент, облегчающий работу. Он дает глубокое понимание внутренней логики работы программы.

источник:www.3dgate.com


62 0 850 1
2
2006-03-22
MEL - это вообще отличная тема.
2008-06-19
Вопрос: Можно-ли работать не с именами обьектов, а с текущим выделением? Например простенький скрипт: select -r pCube192 ; polyMirrorFace -ws 1 -direction 1 -mergeMode 0 -ch 1 selection; polyMergeVertex -d 0.005 -am 1 -ch 1 selection; select -r selection ; polySmooth -mth 1 -dv 1 -c 1 -kb 1 -ksb 1 -khe 0 -kt 1 -kmb 1 -suv 1 -peh 0 -sl 3 -dpe 1 -ps 0 -ro 1 -ch 1 selection; Данный скрипт отражает геометрию, соединяет оригинал и отражение, а затем делает сглаживание. Можно-ли использовать вместо pCube192 что-нибудь универсальнее, чтобы достаточно было применить скрипт к выделению?
RENDER.RU