Постоянно пополняющаяся коллекция моих MEL сценариев и плагинов к Майя:
createImage | Для создания картинки средствами MEL. На вход нужно подавать массив float. Элементы будут располагаться по образу UV:
float $floatArray[] = {0.5,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1}; Код: int $intArray[] = {5,0,0,2}; Для возврата размеров картинки по пути: Код: int $sizeArray[] = `createImage -getSize "c:/test.bmp"`; Код: float $newImage[] = `createImage -getColors "c:/test.bmp"`; т.е. эту переменную можно потом использовать в создании новой картинки. Для примера вложен скрипт, который создаёт новогоднюю шапку сайта cgtalk.ru |
fPolyTools |
Версия 3.5 |
fPolyTools (old) |
Версия 3.0 Установка: Версия 2.15 Версия 2.11. Исправлены баги и добавлены новые функции. Работа скриптов значительно ускорена. Интерфейс в виде всплывающего меню в основном окне. fPolyTools; - команда для запуска. Повторная команда уберёт меню из основного интерфейса. Comnine - это почти стандартный майский комбайн. Но этот сохраняет имя первого выделенного объекта, не мусорит, сохраняет трасформ первого объекта (только перемещения). Duplicate Face - дублирует только выделенные полигоны в выделенный объект с сохранением трасформа исходного объекта (без всяких separate). Не заносит в массив весь объект, только выделенные полигоны и работает относительно быстро. Extract Face - вырезает выделенные полигоны в новый объект с сохранением трасформа исходного объекта (без всяких separate). Тоже работает относительно быстро. Extrude - это экструд одновременно для edge и face в зависимости от маски выделения. Collapse - коллапс в центр выделенных компонент любого типа (по образу 3dsmax). Select Shell - выделает изолированные полигоны в объекте. Т.е. выделаешь одну компоненту, запускаешь скрипт и выделятся нужные компоненты. Select Shell Border - выделяет внешние грани Shell. Select Shape Border - выделяет внешние грани всей модели. Select UV Shell - выделяет UV Shell. Select Hard Edges - выделяет все Hard Edges Select Face Materials - выделяет материал выделенного полигона. Select Unused Materials - выделяет все неиспользуемые материалы. Next Loop Edge - выделяет соседние edge. Next Ring Edge - выделяет параллельные edge. Symmetry Part - интерфейс для быстрого и корректного выделения половины симметричного объекта. Иногда с этим бывают проблемы. Edge Loop Faces - выделяет меньшую часть модели по edge loop. Например, чтобы быстро выделить палец руки, выделением одной edge. Scale Zero - скалирует выделенные компоненты в ноль. to Grid - двигает выделенные компоненты к нулевой плоскости. Mirror Face - зеркально отображает выделенные полигоны. Mirror Shape - зеркально отображает выделенный shape. to Shape - двигает выделенные компоненты к ближайшей точке на другой поверхности. Имеет настройки для высоты над поверхностью и возможность отмены Undo. Работает с полигонами и NURBS. (скриншоты ниже, но интерфейс изменился) to Edge Line - выстраивает в одну ровную линию выделенные edge, относительно крайних вершин в выделения. World Space Obj - для просмотра мировой координаты выделенного объекта и подгона объекта, по какой либо оси (или подгона пивота). World Space Vertex - тоже для вершин. Kill Freeze - <размораживает> объект. Т.е. возвращает выделенным объектам мировые координаты. Memory Selected - заносит в память выделенные объекты. Add to Memory Select - добавляет к запомненным выделенные объекты. Del from Memory Select - удаляет выделенные объекты из памяти. Select From Memory - выделяет запомненные объекты. Clear Memory - чистит память. List Memory Curve From Normal - создаёт кривую из нормали выделенной компоненты на поверхности объекта. (скриншоты ниже, но интерфейс изменился) Smooth Edge Ring - гладкий Split Edge Ring Cut XYZ - Cut по нулевой координате. Smooth Edge Ring (смотрите ниже, алгоритм изменён) Poly Count - статистика для всех полигонов (не только для тех которые попадают в камеру) Distance From Camera - расстояние до камеры выделенной вершины. Bounding Box Size - показывает размеры сцены (только полигонов) и показывает радиус. Pixel Move - двигает выделенное на пиксель относительно камеры. Calculator - калькулятор простейший Create Shading Network - для автоматического создания шейдера SSS для ментала, без возни лайтмапами. Лайтмап автоматически подстраивается под разрешение рендера. Show Free Memory - показывает кол-во свободного места в оперативной памяти. Отрисовывает его как heads Up Display Show Frame - Отрисовывает кадр как heads Up Display Clear Undo - очищает список отмен. Иногда очень сильно освобождает память. Foreach - для каждого выделенного объекта применяет написанные в поле команды. Может показывать список атрибутов и имеет интерфейс для быстрой вставки основных команд. Например для того чтобы каждый выделенный объект подвинуть на случайное расстояние или расставить случайные атрибуты или выполнить какую-либо команду, которая может быть выполнена только с одним объектом: применений много. Replace Instance - убивает инстанс связи. Всё разбито по вкладкам. Тестировал на Maya 7 |
Slide Vertex Tool slideTool.mel |
Мне очень нравится XSI в плане персонажного моделирования. А основная фича в этом плане там это отдельный тул для скольжения компоненты по поверхности. Это очень сокращает время на выравнивание геометрии. Просто можно двигать вершины по самой же поверхности и не знать бед. В точности я повторить этот тул не могу, да и работать такой тул вряд ли будет быстро (на MEL). Я написал его для вершины. Т.е. выбираешь вершину, зажимаешь хот кей (у меня, например, это <9>), и двигаешь выбранную вершину, а она не вырвется за переделы соседних граней и за пределы исходной геометрии. Потом отпускаешь хот кей и никаких следов действия скрипта не остаётся. У меня прекрасно работает на модели в 15 000 поликов. Больше я не пробовал =) да и, кажется незачем. Просто выбираешь вершину, зажимаешь хот кей и двигаешь (не забывая, что двигать можно только при заранее выбранном moveTool). Двигать можно по выбранной оси или просто относительно экрана будет скольжение. Потом отпускаешь. В момент зажимания можно вертеть камеру. Хот кей проставляете сами //// SlideTool; //// на Press и Release или просто на Press (так нужно будет нажать второй раз, чтобы покинуть тул, но больше шансов загромоздить сцену). Ну а сам скрипт должен лежать в папке со всеми (\maya\7.0\scripts). Работает только с одной выбранной вершиной!!! Конечно немного не кси по скорости, но всёже что-то. Мне в принципе нравится =) Если что и произошло, то повторный запуск скрипта почистит сцену от ненужных объектов. Ps Тестировал только на maya 7: но предположительно работает везде |
My Average Vertices
VAver.mel (Old) |
Мне часто очень не нравится стандартный Average Vertices тем, что он делает сглаженные вершины плоскими. А иногда очень хочется, чтобы у тебя все полигоны стали ровными и модель осталась той же, что и была. Я написал скрипт, который в начале сильно расслабляет сетку, а потом двигает расслабленные вершины на оттеселированную поверхность дубликата, чтобы не менялась форма объекта, а только лишь выравнивались нужные полигоны. FNDVAverage; - нужная команда, для запуска диалогового окна. |
Vertex Line
vertexLine.mel (Old) |
Выстраивает вершины в одну линию, относительно первой и последней выделенной вершины. Т.е. выделяешь по очереди вершины, команда FNDvertexLine; и они выстроятся по линии, начинающейся в первой выделенной вершине и заканчивающейся в последней. |
Shape To Shape Move |
Когда моделируешь прилегающую к телу одежду, то очень тяжко контролировать расстояние вершин до поверхности. Так же иногда очень нужно подогнать примерно одинаковые модели с разной топологией друг под друга. Положите скрипт в директорию со скриптами. Активизация инструмента: С помощью этой штуки, как выяснилось, очень удобно выравнивать выбранные компоненты по выбранный плоскости. Make Planar весьма навороченный получился =): очень удобно и наглядно... как мне кажется. |
Smooth Split Edge Ring smoothEdgeRing.mel (Old) |
Мне иногда очень не нравится стандартный Split Edge Ring тем, что он просто режет геометрию, делая её немного угловатой. И порой уходит довольно много времени, чтобы его сгладить. И вот я написал для себя инструментик (скрины): Писал я для себя и пофиксил только некоторые баги, которые меня очень сильно бесили. Но много осталось =) : Код кривой: я особо не заморачивался. Для запуска: будет запускать это безобразие на выделенных вами edge. Если в скобках будет единица, то крайние вершины останутся на месте (smoothEdgeRing(1)); Если вам нужно, то используйте на свой страх и риск. Иногда почему-то не с первого раза срабатывает =( Может быть потом соберусь как-нибудь и напишу нормальное решение этой проблемы... хотя работает и так =) Ну ещё могу добавить что на дальнейшем Smooth этой сетки разницы почти невидно: даже более гладко. |
Component normal to Curve curveNormal.mel (Old) |
Для удобства выдавливания по кривой. Скрипт перебирает все выбранные компоненты и создаёт кривую в центре в не зависимости от количества вершин в компоненте. Потом скрипт двигает кривую, непосредственно на поверхность, без зависимости от того плоская компонента или нет. Так же скрипт умеет двигать любые объекты. Может не использовать нормаль. Количество сегментов у NURBS кривой не должно быть меньше четырёх. |