3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

頂点情報のコピーとペースト

メモレベルのスクリプトなので汚い…。
ただ長いフレームを取得するとやばいかも。
全部をdataに突っ込んでるので(^^;

import pymel.core as pm
 
inFrame  = 61
outFrame = 137
 
def getVertexPosition(inFrame,outFrame):
    global getMesh
    global data
    data = []
    getMesh = (pm.ls(sl=True,typ='transform')[0]).getShape()
    saveTime = inFrame
    for i in xrange(outFrame - inFrame):
        data.append(getMesh.getPoints(space='world'))
        saveTime += 1
        pm.currentTime(saveTime,e=True)
    pm.currentTime(inFrame,e=True)
getVertexPosition(inFrame,outFrame) # 61~137フレのvertexポジションをゲット!
 
def setVertexPosition(data,inFrame):
    saveTime = inFrame
    for i in data:
        getMesh.setPoints(i,space='world')
        pm.setKeyframe(
            getMesh.vtx[:getMesh.numVertices()-1],
            breakdown=False,
            hierarchy='none',
            controlPoints=False,shape=False
        )
        saveTime += 1
        pm.currentTime(saveTime,e=True)
    pm.currentTime(inFrame,e=True)
    del data
setVertexPosition(data,inFrame) # 61フレから適用する