2013-08-23 6 views
-1

xform을 사용하지 않고 개체 피벗의 중심을 맞출 방법이 있습니까?xform을 사용하지 않는 가운데 피벗

xform은 일반적으로 pymel 또는 api 솔루션보다 10 배 느리기 때문에 필자는 pyMel 버전 또는 Maya API를 찾으려고합니다. 분명히

그렇게 좋아하는 XForms 그것을 달성 할 수있다 : 나는 다른 방법을 찾기 위해 노력하고있어

xform(obj, cp=1)

그러나, 사람이 무엇을 알고 있나요?

+0

변환 속성을 직접 처리 할 수 ​​있어야합니다. 그러나 "10 배 느린"주석의 기초에 대해 더 궁금합니다. 그 번호에 어떻게 도착 했습니까? 이 경우 다른 문제에 대한 참조 였을 것입니다.이 경우에는 첫 번째 벤치 마크와 다른 해결책이 없기 때문에 ... (이전에 무엇을하던간에 xform 명령은 느린 부분이지만 그것을 둘러싼 MEL이 있습니다.이 경우 Python에서 xform을 호출하면 많은 도움이됩니다.) –

+0

xform은 실행 속도를 항상 느리게 실행합니다. 하지만 실행 취소를 업데이트하는 것은 문제가 있으며, 당분간 실행 취소를 일시 중단 할 수 있습니다. 하지만 이로 인해 사용성 문제가 발생합니다. 자신의 실행 취소를 구현하는 데 관심이있는 경우 API가이를 빠르게 수행 할 수 있습니다. 어쨌든 정말 성능에 민감한 (조숙 한 최적화?) 유일한 옵션은 모든 것을 C++로 사용하는 것입니다. – joojaa

+0

@ MarkR.Wilkins, 나는 xForm이 항상 대안보다 느리다는 것을 여러 번 읽었다. JooJaa가 xForm의 undo 함수 부분에 대해 말한 것은, 내가 이렇게 깨끗한 코딩을 위해 API를 파낼 필요가 있다고 생각하기는하지만 :) –

답변

1

PyMEL 버전을 찾으시겠습니까? 또는 이것을하는 객체 지향적 인 방법? xform(obj, cp=1)은 PyMEL 내에 있습니다. 경계 상자의 중심을 기반으로하는 객체 피벗을 중심으로

obj.setScalePivot(obj.c.get()) 
obj.setRotatePivot(obj.c.get()) 

: 동일한 결과를 생성하는 그러나 객체 지향 방법을 사용하면 다음을 수행 할있는 theodox의 반응과 매우 유사하다. obj.c.get 당신에게 그저 돌아갑니다. 그냥 위의 방법으로 연결하십시오.

+0

이것이 xform (cp = 1)보다 빠르다고 생각합니까? –

+0

@ShannonHochkins 아니, 약간 더 느리게 작동 할 가능성이 높습니다. – joojaa

+0

왜 @joojaa를 묻는 것에 신경 써야합니까? xForm이 똑같은 작업을 수행해야합니까? –

1

API에서 'balance'를 켜고 mfnTransform.setRotatePivotTranslation 및 setScalePivotTranslation을 호출합니다. 해결 방법을 보장하기에 충분한 오버 헤드가 없습니다. 이것이 어떻게 병목 현상이 될 수 있는지 알기가 어렵습니다.

+0

이 코드를 구현하는 방법을 모르겠습니까? 코드로이를 증명할 수 있습니까? –

+0

긴 비트는 장면 개체를 mfnTransform으로 바꾸고 있습니다. mfnTag는 일반적으로 mfnDagNode에서 가져 오는 것을 의미합니다. mfnDagNode는 mfnSelectionlistt ... 예를 들어이 페이지의 중간에 있습니다 (예 : http://www.akeric.com/blog)./ρp = 1067. 스피드를 거의 얻지 못할 때가 많습니다. 귀찮게하지 말아요. – theodox

+0

글쎄요, 이미 다른 것들을 위해서 api를 사용하고 있습니다. 그렇게 많은 일을하지 않아서, 가장 오래 걸리는 것을 볼 수있는 시간 함수가 있다면 멋질 것입니다. –