Skip to content

Instantly share code, notes, and snippets.

@redglasses67
Created December 25, 2019 04:51
Show Gist options
  • Save redglasses67/5d09e31916ce3d6ee11b361db07d6eb7 to your computer and use it in GitHub Desktop.
Save redglasses67/5d09e31916ce3d6ee11b361db07d6eb7 to your computer and use it in GitHub Desktop.
TRSの値を取得、変更する
import maya.api.OpenMaya as om2
selList = om2.MGlobal.getActiveSelectionList()
mDagPath = selList.getDagPath(0)
transform = om2.MFnTransform(mDagPath)
trs = transform.translation(om2.MSpace.kTransform)
print("translation = %s" %trs)
trsW = transform.translation(om2.MSpace.kWorld)
print("translation World = %s" %trsW)
transform.setTranslation(om2.MVector(1, 2, 3), om2.MSpace.kTransform)
# 絶対値の移動ではなく、現在値から加算移動したい場合は translateBy を使用する
# rotateBy や scaleBy もあります。
transform.translateBy(om2.MVector(1, 2, 3), om2.MSpace.kTransform)
rot = transform.rotation()
print("rot = %s" %rot)
# WorldSpaceでのrotationは第2引数のasQuaternionをTrueにしないとエラーがでる
rotW = transform.rotation(om2.MSpace.kWorld, True)
print("rot World = %s" %rotW)
transform.setRotation(om2.MEulerRotation(30, 45, 60), om2.MSpace.kTransform)
# Scale は Translate と同じ3つの数値が取得できるのですが、MVectorではなくfloatのlistが返ってきます
scl = transform.scale()
print("scale = %s - type = %s" %(scl, type(scl)))
# 取得時と同じで、セットする場合もfloatのリストでセットします
transform.setScale([1.5, 2.5, 3.5])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment