posted by cimple 2011. 1. 13. 19:03

Useful Commands 라는 것이 참 분류하기 애매모호하지만, 간단한 기능인데 찾으려면 시간이 걸리는 기능들을 모아 보려고 합니다. 지속적으로 업데이트 될 것입니다.




1. 특정 object 의 절대적 위치 얻기

특정 object 의 공간상에서 절대적 위치를 얻고 싶은데, attribute 에서 얻는 것은 한계가 있습니다.
xform 명령을 사용하면 공간 상에서 절대적 위치 정보를 얻어낼 수 있습니다.

ex) mc.xform('joint18',q=True, translation=True, worldSpace=True)




2. Point 의 절대적 위치 얻기

마야에서 사용되는 포인트들 (Vertex, CV...) 등의 위치 정보는 따로 얻어낼 수 있는 커맨드가 있습니다.
pointPosition 명령을 사용하면 됩니다.

ex) mc.pointPosition('vertexName')




3. 특정 object 의 parents, child 얻기

특정 object 에 hierarchical 하게 연결된 object 의 parents 와 child 를 얻고 싶을 때에는
mc.listRelatives 를 사용하면 된다.

ex) mc.listRelatives('object', c=True)   //  child 를 얻어올 수 있다.




4. Nurbs curve 의 CV 개수 알아내기

nurbs curve 의 cv 개수는 curve 의 degree + spans 와 같다.
즉 ,

num_cv = mc.getAttr('curve1.degree') + mc.getAttr('curve1.spans')

이렇게 구할 수 있다.


5. Blendshape Node 만 있을 때 Target Shape 들의 노드 이름 알아내기
(이 커맨드들은 설영호(seolyeongho@kaist.ac.kr), 서재우(goongsang@kaist.ac.kr) 학생에 의해 작성되었음을 알립니다)

방법 1.
listAttr -sn blendShape13.weight[0];

방법 2.
string $blendShapes = "blendShape13";
string $names[] = `listAttr -m ($blendShapes + ".w")`;

방법 3.
string $temp[] = `aliasAttr -q blendShape13`;
print $temp

방법 4.
blendShape -q -t



6. 현재 선택한 object 의 list  받아오기

mc.ls(sl=True)


7. Pivot 옮기기

move 명령어로 옮겨줄 수 있다. 그런데 scalePivot 과 rotatePivot 을 옮겨주어야 한다. translatePivot 은 없고, rotatePivot 을 따라가는 것으로 보인다.

mc.move(0, 0, 0, 'object.rotatePivot', 'object.scalePivot')



8. 파일 Import

mc.file("D:/maya/projects/default/scenes/Woman_Rigging_Template_07.mb", i=True)



9. Hierarchy 모두 선택

mc.SelectHierarchy()


10. Keyable 한 Attribute 얻기

keyable = mc.listAttr("ctrlName", k=True)

이 외에도 listAttr 은 특정한 attribute 를 얻어내는 데 다양한 flag 들을 가지고 있다.

attribute 가 scalar 인지 정도는 알 수 있지만, int/float 등을 알 수는 없는 듯 하다.


11. Scene 안에 있는 모든 Nurbs curve 얻어내기

crvList = mc.listRelatives(mc.ls(typ="nurbsCurve"), p=True)


여기에서 mc.ls(typ="nurbsCurve") 가 scene 안에 있는 모든 nurbsCurve 를 선택한다. 그런데 이 명령어를 사용하면 shapeNode 를 선택하게 된다. 

이 때 listRelatives 커맨드는 선택한 오브젝트의 child 나 parent 를 선택할 수 있게 해준다. p=True 옵션을 주면 각각 shapeNode 의 parent 인 transform node 를 선택하고, 우리가 원하던 씬 안에 존재하는 모든 nurbs curve의 transform node 들의 리스트를 반환해준다.


12. Polygon 관련 정보는 polyEvaluate

Mesh Polygon 의 Vertex 갯수 등 Polygon 관련 정보를 얻고 싶다면 polyEvaluate 명령을 사용한다.


vtxNum = mc.polyEvaluate('meshName', v=True)




ThEnd.