Создание элементов управления кривой с положением относительно выделения в Maya с Python? - PullRequest
0 голосов
/ 21 марта 2020

Я все еще очень новичок в кодировании и подумал, что попробую написать инструмент из учебника Криса Лесажа, в котором описывается небольшая программа softMod. До сих пор я пытался собрать его по одному шагу за раз, как рекомендуют многие учебники по кодированию. https://chrislesage.com/posts/sliding-bulging-effects-with-softmods/

Работает нормально, но мне любопытно, как в этом случае я могу создать круги, используемые в качестве контроллеров, но с их атрибутом 'center' относительно выбранной вершины. Я не уверен, какие команды мне нужно искать

В конечном итоге я пытаюсь создать softMod для выбранной вершины и создать эти элементы управления для анимации эффектов. Я надеюсь, что в этом есть смысл. Пока это увлекательное упражнение!

Спасибо за любые советы! Алекс

import maya.cmds as cmds
import pymel.core as pm
from pymel.core import *

cmds.softMod( falloffRadius=10, envelope=1, falloffAroundSelection=True)

cntrlA = cmds.circle( nr=(0, 0, 1), c=(0, 0, 0), r=2, name="ControlA" )
cntrlB = cmds.circle( nr=(0, 0, 1), c=(0, 0, 0), r=1, name="ControlB" )

#Need to translate the curves above the specific surface or mesh

cmds.parentConstraint( 'ControlA', 'ControlB', maintainOffset=True )

cmds.spaceLocator(name="testLoc")

cmds.parentConstraint( 'ControlA', 'testLoc', maintainOffset=False )

cmds.connectAttr( 'testLoc.t', 'softMod1.falloffCenter' )
cmds.connectAttr( 'ControlB.t', 'softMod1Handle.translate' )
cmds.connectAttr( 'ControlB.r', 'softMod1Handle.rotate' )

#### This code worked to create the controls AND assign them to a variable

cmds.select( cntrlB) 
cmds.addAttr('ControlB', ln='softModENV', keyable=True, dv=1, min=0, max=1 )
cmds.addAttr('ControlB', ln='falloffRAD', keyable=True, dv=10, )

# Connect the attributes you made previously
cmds.connectAttr( 'ControlB.softModENV', 'softMod1.envelope' )
cmds.connectAttr( 'ControlB.falloffRAD', 'softMod1.falloffRadius' )

cmds.group( 'ControlA', 'ControlB', 'testLoc', 'softMod1Handle', n='softModGRP' )
...