Я все еще очень новичок в кодировании и подумал, что попробую написать инструмент из учебника Криса Лесажа, в котором описывается небольшая программа 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' )