1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Помогите со скриптом на питоне

Тема в разделе "Maya", создана пользователем Andots, 6 авг 2016.

Модераторы: Dark™, Skif
  1. Andots

    Andots Знаток

    С нами с:
    12.03.2009
    Сообщения:
    513
    Симпатии:
    93
    Баллы:
    31
    Доброго дня.
    Пишу скрипт который будет переносить вертексные веса с одного Ncloth объекта на другой, по сути он уже рабочий но никак не могу сделать однуказалось бы простую вещь.
    Сам скрипт

    import maya.cmds as mc


    sel = mc.ls(sl=True, '*ClothShape*_l_*')

    sel2= mc.ls(sl=True,'*ClothShape*_r_*' )


    Listatri = mc.listAttr (sel , st = '*PerVertex*')

    EndVal = len(Listatri)

    for n in range(1,EndVal):
    Transattrib = Listatri[n]
    Inatt = mc.getAttr( sel + '.' + Transattrib )
    mc.setAttr( sel2 + '.'+ Transattrib , Inatt, type="doubleArray" )

    Никак не могу получить ( sel + '.' + Transattrib ) ну в нормальном виде.
    Все время выдает

    [u'nClothShape_l_02'].bendPerVertex

    [u'nClothShape_l_02'].bendAngleDropoffPerVertex

    [u'nClothShape_l_02'].restitutionAnglePerVertex

    [u'nClothShape_l_02'].rigidityPerVertex

    [u'nClothShape_l_02'].deformPerVertex

    [u'nClothShape_l_02'].inputAttractPerVertex

    Если руками прописываю вместо [u'nClothShape_l_02'].bendPerVertex -->
    nClothShape_l_02.bendPerVertex (ну и соответсвенно setattr также ручками)
    Все работает и веса копируются. Но как сделать чтоб getattr и setattr работали автоматом по циклу.
     
    Последнее редактирование: 6 авг 2016
  2. Andots

    Andots Знаток

    С нами с:
    12.03.2009
    Сообщения:
    513
    Симпатии:
    93
    Баллы:
    31
    А все разобрался,
    sel = mc.ls('*ClothShape*_l_*',sl=True)
    SelStart = sel[0]
    sel2= mc.ls('*ClothShape*_r_*',sl=True )
    SelEnd = sel2[0]

    Это решило все проблемы.

    такой еще вопрос, при создании ncloth майка дает
    doCreateNCloth 0;
    createNCloth 0;

    Как эту команду запустить через питон?
    Стандартные способы не помогли аля
    import maya.cmds as mc
    import maya.mel as mel
    mc.doCreateNCloth 0
    mc.createNCloth 0
    или
    mel.doCreateNCloth 0
    mel.createNCloth 0
     
    Последнее редактирование: 6 авг 2016
  3. 4i4ikov

    4i4ikov Знаток

    С нами с:
    07.04.2015
    Сообщения:
    169
    Симпатии:
    49
    Баллы:
    22
    Это не команды, а скрипты, следовательно через eval

    import maya.mel as mel
    mel.eval('doCreateNCloth 0')
     
    Andots нравится это.
Модераторы: Dark™, Skif

Поделиться этой страницей