преобразовать сценарий кривой mel в python

привет, я хочу преобразовать этот сценарий Mel в сценарий Python, чтобы я мог строить поверх него.

global proc motionTrailToCurve()
{

    $selected=`ls -dag -et snapshotShape`;
    for ($obj in $selected) {
    $pts=(getAttr($obj+".pts"));
    $size=size($pts);
    $curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;
    for($i=8;$i<$size;$i+=4)
    curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;
    }
}

motionTrailToCurve;

когда я бегу от py к mel, я получаю это

import pymel.core as pm

def motionTrailToCurve():
    
    selected=pm.ls(et='snapshotShape', dag=1)
    for obj in selected:
        pts=(pm.getAttr(str(obj) + ".pts"))
        size=len(pts)
        curve=pm.curve(p=[(pts[0], pts[1], pts[2]), (pts[4], pts[5], pts[6])], k=[0, 1], d=1)
        for i in range(8,size,4):
            pm.curve(curve, a=1, p=(pts[i], pts[i + 1], pts[i + 2]), os=1)

motionTrailToCurve()

когда я запускаю его, я получаю эту ошибку:

Invalid arguments for flag 'p'.  Expected ( distance, distance, distance ), got ( ( Point, Point, Point ), ( Point, Point, Point ) ) # 

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


person NinjaBX    schedule 02.07.2020    source источник
comment
Глупый вопрос, но где в Maya я могу создать snapshotShape? Пытаюсь воспроизвести проблему, но не знаю, как сделать объект.   -  person Green Cell    schedule 03.07.2020
comment
если вы хотите создать это шаг за шагом вручную, я не знаю, как это сделать, так как я всегда использовал этот скрипт. но если вы хотите использовать скрипт и заставить работать функцию snapshotshape, вам просто нужно создать объект, переместить его, установить несколько клавиш, затем создать путь движения, а затем запустить скрипт   -  person NinjaBX    schedule 03.07.2020
comment
Я нашел обходной ответ для того, что я хочу сделать с этим, просто вызвав скрипт в python mel.eval("source myMELScript;") mel.eval("myMELScript;"), но мне все еще интересно посмотреть, можно ли этот скрипт сделать с помощью pymel   -  person NinjaBX    schedule 03.07.2020
comment
Путь движения? Как в «Ограничение» «Пути движения» «Присоединить к пути движения» или «Визуализировать»> «Создать редактируемый след движения»? В любом случае ни один из них не создает объект типа snapshotShape, который ищет самое начало вашего скрипта.   -  person Green Cell    schedule 03.07.2020


Ответы (1)


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


def motionTrailToCurve():
    
    selected=pm.ls(et='snapshotShape', dag=1)
    for obj in selected:
        pts=(pm.getAttr(str(obj) + ".pts"))
        size=len(pts)
        curve=pm.modeling.curve(p=[pts[0], pts[1]], k=[0, 1], d=1)
        for i in range(8,size,4):
            pm.curve(curve, a=1, p=(pts[i], pts[i + 1], pts[i + 2]), os=1)

motionTrailToCurve()
person NinjaBX    schedule 04.07.2020