2014년 6월 23일 월요일

matrix값을 변환해보자.

import pymel.core as pm
import pymel.api as pa
import pymel.util as ut

# get Matrix

getList = pm.selected()[0]
getMatrix = getList.wm.get()
matrixV = pa.MTransformationMatrix(getMatrix.asMatrix())

# transform
transV = matrixV.translation(pa.MSpace.kWorld)

# rotate

rotateV = matrixV.eulerRotation()

# scale

sctUt = pa.MScriptUtil()
sctUt.createFromList([0, 0, 0], 3)
scaleV = sctUt.asDoublePtr()
matrixV.getScale(scaleV, pa.MSpace.kWorld)

# list

worldTanslate = [transV.x, transV.y, transV.z]
wolrdRotate = [ut.degrees(rotateV.x), ut.degrees(rotateV.y), ut.degrees(rotateV.z)]
worldScale = [pa.MScriptUtil.getDoubleArrayItem(scaleV, i) for i in range(0,3)]

print worldTanslate
print wolrdRotate
print worldScale

xform이 있는데 굳이 왜 써야 할까 하는 생각이 드네.

라벨: ,

2014년 6월 22일 일요일

api로 기존 마야 노드를 만들어 보자.

import maya.OpenMaya as om
import maya.OpenMayaAnim as oma

# create transform

mod = om.MDagModifier()
tr = mod.createNode('transform')
mod.renameNode(tr, 'testTransform')
mod.doIt()

# create animCurveUU and addkey

dgmod = om.MDGModifier()
keyNode = dgmod.createNode('animCurveUU')
dgmod.renameNode(keyNode, 'testKeyUU')
dgmod.doIt()

key = oma.MFnAnimCurve()

key.setObject(keyNode)

key.addKey(0,1,oma.MFnAnimCurve.kTangentStep,oma.MFnAnimCurve.kTangentStep)
key.addKey(1,0,oma.MFnAnimCurve.kTangentStep,oma.MFnAnimCurve.kTangentStep)
key.addKey(2,1,oma.MFnAnimCurve.kTangentStep,oma.MFnAnimCurve.kTangentStep)

DAG노드는 MDagModifier, DG 노드는 MDGModifier.


라벨: ,

2014년 6월 20일 금요일

pymel의 AnimCurveUU의 문제.

pymel AnimCurveUU에서는 addKey가 작동되지 않는다.

2014에서 테스트 후에 2015에서도 역시 작동 되지않음.

그리고 python api 2.0 에는 OpenMayaAnim 중에 MFnAnimCurve도 없넹?

귀찮게 1.0을 써야 가능함.

import maya.OpenMaya as om
import maya.OpenMayaAnim as oma

getS = om.MSelectionList()

om.MGlobal.getActiveSelectionList(getS)

obj = om.MObject()

getS.getDependNode(0,obj)

key = oma.MFnAnimCurve()

key.setObject(obj)

key.addKey(0,1)

라벨: ,