Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # bake to world v2
- from pymel.core import *
- import time
- def grpr(name):
- g = ls(name)
- if not g:
- g = group(n=name,em=1)
- return g
- def getPiv(s):
- select(s)
- setToolTo('Move')
- piv = manipMoveContext('Move', q=True, p=True,m=2)
- return piv
- class toWorldObj:
- def __init__(self, jntObj):
- self.jnt = jntObj
- self.jntSaver = spaceLocator(n= jntObj+"_saver")
- self.pc = parentConstraint(jntObj, self.jntSaver, mo=0)
- self.sc = scaleConstraint(jntObj, self.jntSaver, mo=0)
- self.scaleList = []
- tStart = int(playbackOptions(q=1,ast=1))
- tEnd = int(playbackOptions(q=1,aet=1))+1
- start = time.clock()
- # create locators to follow/save joint positions
- worldLocations = []
- saveConstraintsLocators = []
- sl = selected()
- lctrCleanup = []
- i = 1
- for s in sl:
- add = toWorldObj(s)
- worldLocations.append(add)
- i += 1
- # Bake joint animations to locators
- for i in range(tStart,tEnd):
- currentTime(i, e=1, u=1)
- for l in worldLocations:
- setKeyframe(str(l.jntSaver)+".translate")
- setKeyframe(str(l.jntSaver)+".rotate")
- currentScale = l.jntSaver.getScale()
- l.scaleList.append(currentScale)
- if i == tStart:
- setAttr(str(l.jntSaver)+".blendParent1", 1)
- # clean out constraints from locators, add constraints to drive joints from locators.
- cleanUpList = []
- toParent = []
- for l in worldLocations:
- delete(l.pc, l.sc)
- p = parent(l.jnt,w=1,r=1)
- toParent.append(l.jnt)
- pc = parentConstraint(l.jntSaver,l.jnt)
- cleanUpList.append(pc)
- cleanUpList.append(l.jntSaver)
- # bake animation from locators back on to joints
- for i in range(tStart,tEnd):
- currentTime(i, e=1, u=1)
- for l in worldLocations:
- setKeyframe(str(l.jnt)+".translate")
- setKeyframe(str(l.jnt)+".rotate")
- setAttr(str(l.jnt)+".scale", l.scaleList[i-1])
- setKeyframe(str(l.jnt)+".scale")
- delete(cleanUpList)
- newGrp = grpr("BakedToWorld")
- parent(toParent, newGrp)
- print (time.clock() - start)
Advertisement
Add Comment
Please, Sign In to add comment