2013-08-23 5 views
0

저는 이것을 오랫동안 사용해 오려고 노력해 왔습니다. here 문서를 읽었지만 GeometryConstraint를 구현하는 방법을 이해할 수없는 것 같습니다.GeometryConstraint 클래스는 어떻게 사용합니까?

일반적으로는, 이것의 파생 버전은 다음과 같습니다 그러나

geometryConstraintNode = pm.geometryConstraint(target, object)

, Pymel에, 조금 더 멋진 보이는 훨씬 더이기 때문에 나는 그것을 사용하려는 이유입니다, 속성을 설정하는 경우 읽을 수있는.

geometryConstraintNode = nt.GeometryConstraint(target, object).setName('geoConstraint')

하지만 운, 사람이 좀 걸릴 수 있습니다 :

나는이 시도했습니다?

섀넌

답변

2

이 기능이 작동하지 않습니까?

import pymel.core as pm 

const = pm.geometryConstraint('pSphere1', 'locator1', n='geoConstraint') 
print const 
const.rename('fred') 
print const 

출력은

geoConstraint 
fred 

와 '프레드'라는 이름의 제약 객체가 될 것입니다.

pymel 노드는 pm.animation.geometryConstraint에 정의 된 명령에서 되돌아 오는 반환 값입니다. 결과는 pm.nodetypes.GeometryConstraint에 정의 된 실제 장면 속 제약에 대한 클래스 래퍼입니다. 모든 속성 설정을 수행하는 클래스 버전입니다. 명령 버전은 maya.cmds에서 동일한 구문과 일치합니다. 간혹 약간의 구문 설탕이 추가되었습니다.

이 경우 pymel 노드는 다른 pymel 노드와 유사하므로 renamimg와 같은 항목은 DagNode에서 상속 된 것과 동일한 '.rename'기능을 사용합니다. 'getChildren()'또는 'setParent()'와 같이 Transform에서 상속받은 함수를 사용할 수도 있습니다. docs는 노드 유형 페이지의 맨 위에 상속 트리를 포함시킴으로써이를 명확하게 해줍니다. 기본적으로 모든 Pynode 반환은 DagNode (이름 지정과 같은 것)와 일반적으로 Transform (이동, 회전, 부모와 같은 것) 또는 Shape (쿼리 구성 요소 등)을 공유합니다.

+0

다른 방식으로이 작업을 수행하려고합니다. 이미 내 질문에했던 것과 똑같은 코드를 게시했습니다.이 방법을 대신 사용하려고합니다. –

+0

__command__ 버전은 장면 객체를 만들고 연결을 후킹해야합니다. __nodetype__ 버전은 그 주위의 래퍼입니다. pm.geometryConstraint ('pSphere1', 'locator1'). setName ('blah')을 수행 할 수 있습니다. pymel.nodetypes.ClassName 대신 pm.PyNode ('oldName')를 사용하여 기존 제약 조건을 얻을 수 있습니다. setName ('newName') – theodox

+0

... btw는 pm.PyNode ('existing-object')를 사용합니다. ('이름 - of-existing-object') 형식을 알 필요가 없도록 http://daydreamer3d.weebly.com/instantiating-a-maya-node-in-pymel-pymel.html – theodox

관련 문제