attributeAffects
함수를 사용하면 Maya 노드의 두 속성을 연결할 수 있습니다. 예를 들어, 입력 속성 x
은 출력 속성 y
에 링크 될 수 있습니다. 즉, x
이 변경되면 Maya는 주어진 노드에서 compute()
콜백 함수를 실행하여 y
을 계산합니다.변환 노드가 변경 될 때 강제 계산 (Maya Plugin)
그러나 내가 말할 수있는 한, 노드 내부의 속성 만이 플러그인처럼 내부에서 연결할 수 있습니다.
내 플러그인에서 나는 MPxLocator
을 확장하고 출력 속성 out
을 만듭니다. 다음을 원합니다 :
# replace <...> with transform node name.
attributeAffects(CustomNode.out, <custom node's tranform node>.translateX)
attributeAffects(CustomNode.out, <custom node's tranform node>.translateZ)
이 작업을 수행하는 방법에 관한 문서를 찾을 수 없습니다. 아무도 그것을 마쳤습니까/어떻게 알았습니까? 스크립트 편집기 (파이썬)에서 다음을 수행하여이를 해킹 할 수있는 방법이 있습니다.
import maya.cmds as cmds
# Creates CustomNode1, which is linked to transform1 in the DG.
cmds.createNode("CustomNode")
cmds.connectAttr("transform1.translateX", "CustomNode.out")
cmds.connectAttr("transform1.translateZ", "CustomNode.out")
위대한 답변입니다. Maya 노드 뒤에있는 의미를 잘 알지 못했지만 지금은 내게 훨씬 명확합니다. 감사합니다. – rykardo
당신이 알고있는 형태로 혜택을받을 수있는 것이 하나 더 있습니다. 코드를 올바르게 구성하면 내부적 인 경우에도 요청 당 최소 슬롯 수, 입출력 만 계산됩니다. 즉, Maya가 요청한 내용을 확인할 수 있습니다. 그런 다음 노드를 만들지 않고도 결과를 캐시 할 수 있으며 항상 올바른 순서로 평가됩니다. 그것은 당신이 노드 내부 계산 사이에 다른 노드를 주입 할 수 있습니다. 모션 경로 베어링 계산과 같은 많은 Maya 공장 노드에서이 작업을 수행 할 수 있습니다. 모든 계산은 노드 안에 있습니다. 그래서 노드의 노드. – joojaa