Ускоряя Maya, послесловие. Скрипты для ускорения работы в Maya.
- Автор темы Дмитрий damat Астапкович
- Дата создания
- Рейтинг
- 2
Вот простой скрипт для сохранения выбранных компонентов и их последующего вызова
При переключении между типами компонент выделенние не пропадает.
Соответственно если эти выделения выгрузить например в глобальные переменные то нет никакой проблемы добавить такой кусок кода перед вызовом Split тула.
Или если есть возможность написать event для инструмента то можно написать эвент для Split тула.
Я так понимаю просто имея готовое решение в 2015й лишняя работа кажется не актуальной.
Но не все "плюшки" есть под 2015ю поэтому возможности туда перейти пока нет.
Код:
import maya.cmds as mc
mStoredSelection = None
def StoreSelection():
global mStoredSelection
mStoredSelection = mc.ls(sl = True)
def RestoreSelection():
global mStoredSelection
mc.select(mStoredSelection, r = True)
Соответственно если эти выделения выгрузить например в глобальные переменные то нет никакой проблемы добавить такой кусок кода перед вызовом Split тула.
Или если есть возможность написать event для инструмента то можно написать эвент для Split тула.
Я так понимаю просто имея готовое решение в 2015й лишняя работа кажется не актуальной.
Но не все "плюшки" есть под 2015ю поэтому возможности туда перейти пока нет.
Добрый день, нужна помощь знающих людей, при работе в майя, начинаются ужасные тормоза, на каждое выполнения действия уходит в среднем около 5 секунд, хоть экструд хоть мердж, при работе с ретопотулом, квадра. удаление истории и отключение результата не дает, после перезагрузки майки, результат тот же, с каждым действием объем съедаемой ей памяти увеличивается, подскажите кто знает в чем может быть проблема, работать просто невозможно, то что делал за 20 мин занимает по 1 часу
ультимативное решение почти всех проблем , а да только надо ещё сделать копию полок и скриптов что бы заново не настраивать
LightDip сказал(а): ↑
Эта проблема явно не решается удалением папки. Такая же ситуация - при использовании Modeling Toolkit с каждым действием все больше и больше начинает тупить камп.Зачем?
ультимативное решение почти всех проблем , а да только надо ещё сделать копию полок и скриптов что бы заново не настраивать- Рейтинг
- 2
Я всё с тем же. Пропадает выделение компонентов при использовании SplitPolygonTool или InteractiveSplitPolygonTool.
Без разницы какая версия Maya. Проверено и мной и знакомыми.
Помогите хотя бы определится с алгоритмом. Реализацию накостыляю сам.
Как лучше сохранять выбранные компоненты ?
Мне предложили сделать через SelectionSet'ы и ScriptJob'ы.
Без разницы какая версия Maya. Проверено и мной и знакомыми.
Помогите хотя бы определится с алгоритмом. Реализацию накостыляю сам.
Как лучше сохранять выбранные компоненты ?
Мне предложили сделать через SelectionSet'ы и ScriptJob'ы.
Дмитрий, не поможете скомпилировать имеющийся код плагина на питоне, под 2014 и 2015 версию Maya? Года два уж висит на сайте у автора, вещь нужная, но похоже он забросил её. Выложил код - мол, сами )). Зарание благодарен.
код.txt
P.S.: Пользуясь случаем, хочу сказать спасибо за ваш скрипт views - уж несколько лет переставляю с майки на майку.
код.txt
P.S.: Пользуясь случаем, хочу сказать спасибо за ваш скрипт views - уж несколько лет переставляю с майки на майку.
Вложения
-
12,7 КБ Просмотров: 1 103
- Рейтинг
- 137
Товарищи, в скриптинге ни бум-бум, может подскажете, что нужно подправить в скрипте viewer, чтобы он работал в 2015 так же, как и в предыдущих версиях? Сейчас, если выделен какой-нибудь компонент, при запуске скрипта вид переходит в соответсвующий ортографический, но весь остальной объект скрывается и остаюсь я с одним полигоном наедине.
- Рейтинг
- 14
Помогите подправить данный скрипт, чтобы показывал координаты не объекта, а компонентов(нужны координаты выделенного вертекса). Ну или если это возможно, совместить чтоб в режиме объекта показывались координаты объекта( как сейчас) в режиме компонентов - координаты вертексов. Очень нужно, сам методом тыка почти сделал скрипт, но знаний не хватает.
Вложения
-
732 байт Просмотров: 276
- Рейтинг
- 5
День добрый.
Есть задачка, нужно разложить в разные переменные два edge-периметра.
Не привязываясь к углам и к расстоянию между ейдж-периметрами.
Я голову сломал над циклами и итераторами.
Как я это видел:
a). Для начального селекта берём все ейджи и все вертексы.
1_list - вертексы 2_list -ейджи.
b). Идём по первому 1_list. Берём произвольно один любой вертекс.
Если у примыкающих к нему ейджей два пересечения с начальным селектом обьявляем его начальным вертексом. Его ейджи складываем в
3_list - из этого листа в дальнейшем получим первую переменную для
первого периметра. Соседние (примыкающие к ним) вертексы -
складываем в 4_list и исключаем их из 1_list.
c). Берём 4_list (соседние вертексы) и их примыкающие ейджи.
Из этих ейджей исключаем 3_list. Для оставшихся Оставшиеся ейджей ищем
пересечения с начальными селектами и складываем их в 3_list. А вертексы
в 4_list и исключаем их из 1_list.
d) ...
Так мы двигаемся по первому списку до тех пор пока не наткнёмся на 1н
вертекс имеющий 2 пересечения ейджей. Он будет конечным для данного
замкнутого ейдж периметра. Затем полученный 3_list с ейджам мы
вычитаем из 2_list c ейджами начального селекта и в остатке начинаем
такую же итерацию.
Но реализацию алгоритм на практике я так и не осилил, т.к. одновременно и
указывать API итераторам 2 индекса от соседних ейджей и при этом
уменьшать список выбранных вначале вертексов у меня не получалось.
Да и выглядело всё это очень грамоздко. Посоветуйте как написать алгоритм.
Есть задачка, нужно разложить в разные переменные два edge-периметра.
Не привязываясь к углам и к расстоянию между ейдж-периметрами.
Я голову сломал над циклами и итераторами.
Как я это видел:
a). Для начального селекта берём все ейджи и все вертексы.
1_list - вертексы 2_list -ейджи.
b). Идём по первому 1_list. Берём произвольно один любой вертекс.
Если у примыкающих к нему ейджей два пересечения с начальным селектом обьявляем его начальным вертексом. Его ейджи складываем в
3_list - из этого листа в дальнейшем получим первую переменную для
первого периметра. Соседние (примыкающие к ним) вертексы -
складываем в 4_list и исключаем их из 1_list.
c). Берём 4_list (соседние вертексы) и их примыкающие ейджи.
Из этих ейджей исключаем 3_list. Для оставшихся Оставшиеся ейджей ищем
пересечения с начальными селектами и складываем их в 3_list. А вертексы
в 4_list и исключаем их из 1_list.
d) ...
Так мы двигаемся по первому списку до тех пор пока не наткнёмся на 1н
вертекс имеющий 2 пересечения ейджей. Он будет конечным для данного
замкнутого ейдж периметра. Затем полученный 3_list с ейджам мы
вычитаем из 2_list c ейджами начального селекта и в остатке начинаем
такую же итерацию.
Но реализацию алгоритм на практике я так и не осилил, т.к. одновременно и
указывать API итераторам 2 индекса от соседних ейджей и при этом
уменьшать список выбранных вначале вертексов у меня не получалось.
Да и выглядело всё это очень грамоздко. Посоветуйте как написать алгоритм.
Последнее редактирование:
- Рейтинг
- 20
Код:
from pymel.core import *
def getSelectionShellsEdges(sel):
def getConnected(e, sel):
con = list(set(ls(e.connectedEdges(), fl=1)).intersection(set(sel)))
if con:
for c in con:
if c in sel:
sel.remove(c)
con += getConnected(c, sel)
return con
return []
sel = ls(sel, fl=1)
shells = []
while sel:
e = sel.pop(0)
shell = [e]
shell += getConnected(e, sel)
shells.append(shell)
return shells
s = selected()
shells = getSelectionShellsEdges(s)
print len(shells)
- Рейтинг
- 20
Алгоритм: хватаем любой эдж и рекурсивно вытаскиваем соседей если они есть в выделении. Пока таковые имеются, собираем в отдельынй массив. Как только закончились, хватаем следующий любой эдж в выделении и тд. Таким образом каждое замкнутое выделение попадает в отдельный массив.
Не очень быстро работает но работает. Суть в том что рекурсивно надо. Скорее всего можно оптимизировать.
Не очень быстро работает но работает. Суть в том что рекурсивно надо. Скорее всего можно оптимизировать.