выбрать узел ввода нелинейных деформаторов и установить ключевой кадр в Maya, используя Python? - PullRequest
0 голосов
/ 04 июля 2018

Я хочу выбрать и установить ключевой кадр в нелинейных деформаторах в Maya, используя скрипт Python.

То, что я пытался и потерпел неудачу, очевидно, основано на знаниях, которые я имел по этой команде.

cmds.setKeyframe('some object name', time='a specific frame', attribute='attribute that i wish to key', value='value i wish to set')

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

в моем планировщике я назвал деформатор "bend2_handle", используя cmds.setKeyframe (), он не будет работать, если использовать имя объекта "bend2_handle", поэтому мне нужно получить имя входного узла: "bend2".

в редакторе сценариев, когда я вручную выбрал "bend2_handle", он показывает в команде mel:

select -r bend2_handle ;

когда я вручную выбрал изгиб bend2 (где находится значение кривизны), он показывает в команде mel:

select -addFirst bend2 ;

Какого черта -addFirst. но даже если попытаться использовать его в качестве имени объекта attribute = bend2.curvature, он все равно не будет работать, и я знаю, что attribute = bend2.curvature правильный, потому что "bend2.curvature" - это то, что я использую в cmds.setAttr ()

import maya.cmds as cmds
cmds.setKeyframe('bend2', time=12, attribute='bend2.curvature', value=8)
cmds.currentTime(12)
cmds.setAttr('bend2.curvature', 4)
cmds.currentTime(40)
cmds.setAttr('bend2.curvature', 8)

альтернативный способ, которого я пытаюсь достичь, - это включить автокрейм и вручную установить ключевой кадр в кадре 1, использовать cmds.currentTiem (), чтобы указать время, и использовать cmds.setAttr (), чтобы изменить значение, поэтому добавьте ключ Рамка.

Но мне нужно использовать исключительно cmds.setKeyframe(), никаких ручных операций!

может кто-нибудь помочь!?

1 Ответ

0 голосов
/ 04 июля 2018

Только что понял, что вы используете "bend1.curvature" в качестве имени атрибута, здесь это работает, если я использую только атрибут без "bend1". как имя атрибута.

...