history
2015년 2월 1일 일요일
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)
2013년 11월 26일 화요일
maya pyqt ex
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | import pymel.api as pa import os, glob from PyQt4 import QtGui, QtCore import sip def getPyQtMayaWindow(): accessMainWindow = pa.MQtUtil.mainWindow() return sip.wrapinstance(long(accessMainWindow), QtCore.QObject) class imgResize(QtGui.QWidget): def __init__(self,parent=getPyQtMayaWindow()): super(imgResize, self).__init__(parent) mainLayout = QtGui.QVBoxLayout() lineLayout = QtGui.QHBoxLayout() outLineLayout = QtGui.QHBoxLayout() sizeLayout = QtGui.QHBoxLayout() self.pathLine = QtGui.QLineEdit() self.outPathLine = QtGui.QLineEdit() self.runButton = QtGui.QPushButton('Resize') self.runButton.clicked.connect(self.reSizeFile) openLabel = QtGui.QLabel('Open Path') pathDialBT = QtGui.QPushButton('Open') pathDialBT.clicked.connect(self.openPath) outLabel = QtGui.QLabel('Out Path') outPathDialBT = QtGui.QPushButton('Open') outPathDialBT.clicked.connect(self.outPath) sizeLabel = QtGui.QLabel('Size') self.xLine = QtGui.QLineEdit('512') self.yLine = QtGui.QLineEdit('512') fileTypeLabel = QtGui.QLabel('Type') self.fileType = QtGui.QLineEdit('png') outFileTypeLabel = QtGui.QLabel('outType') self.outFileType = QtGui.QLineEdit('png') self.progress = QtGui.QProgressBar() lineLayout.addWidget(openLabel) lineLayout.addWidget(self.pathLine) lineLayout.addWidget(pathDialBT) outLineLayout.addWidget(outLabel) outLineLayout.addWidget(self.outPathLine) outLineLayout.addWidget(outPathDialBT) sizeLayout.addWidget(sizeLabel) sizeLayout.addWidget(self.xLine) sizeLayout.addWidget(self.yLine) sizeLayout.addWidget(fileTypeLabel) sizeLayout.addWidget(self.fileType) sizeLayout.addWidget(outFileTypeLabel) sizeLayout.addWidget(self.outFileType) mainLayout.addLayout(lineLayout) mainLayout.addLayout(outLineLayout) mainLayout.addLayout(sizeLayout) mainLayout.addWidget(self.runButton) mainLayout.addWidget(self.progress) # style styleFile = open('w:/BBM/Assets/Rig/Set/Rigging/set/darkorange.stylesheet', 'r') self.setStyleData = styleFile.read() styleFile.close() self.setStyleSheet(self.setStyleData) self.setLayout(mainLayout) self.setWindowTitle('Resize') self.setWindowFlags(QtCore.Qt.Window) self.show() def openPath(self): self.openFolder = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Folder', 'c:/')) self.pathLine.setText(self.openFolder) def outPath(self): self.outFolder = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Folder', 'c:/')) self.outPathLine.setText(self.outFolder) def reSizeFile(self): fileIn = str(self.pathLine.text()).replace('\\','/') + '/*.' + str(self.fileType.text()) fileList = glob.glob(fileIn) sizeX = int(self.xLine.text()) sizeY = int(self.yLine.text()) self.progress.setRange(1, len(fileList)) i = 1 for x in fileList: self.progress.setValue(i) i += 1 img = pa.MImage() img.readFromFile(x.replace('\\','/')) img.resize(sizeX, sizeY, True) folder = str(self.outPathLine.text()).replace('\\','/') + '/' fileName = os.path.basename(x).split('.')[0] + '.' + str(self.outFileType.text()) img.writeToFile(folder + fileName, str(self.outFileType.text())) test_ = imgResize() |
2012년 3월 11일 일요일
image resize
http://tech-artists.org/forum/showthread.php?t=1673
# Python code:
import maya.OpenMaya as om
def resizeImage(sourceImage, outputImage, width, height):
image = om.MImage()
image.readFromFile(sourceImage)
image.resize( width, height )
image.writeToFile( outputImage, 'png')
resizeImage('<sourceImage.png>','<outputImage.png>', 800, 600)
