Hello Everyone,
Here is a tool that it is WIP. I know Maya has something already
similar to it however, I figured it could be a good exercise for me
while I am learning python.
The issue that I am running into is, that I only want one full curve
from the selected animated object however as you will see it creates a
curve on every frame.
import maya.cmds as cmds
"""
This tool creates a curve or multiple curves from an animated object's
translation.
Author:
Martin LaLand Romero
"""
def main():
"""
This function runs the genCurvefromObj function.
"""
for i in genCurvefromObj(1, 95, 1):
print(i)
"""
This function generates a curve based on the object's animation
path.
"""
def genCurvefromObj(frameStart, frameStop, step):
myObject = cmds.ls(selection = True)
#This loop queries the position of the animated object and creates
a curve based on its position.
for object in myObject:
i = frameStart
while i <=frameStop:
yield i
i += step
print('The current frame is', cmds.currentTime( i, edit =
True))
animationCurve = cmds.curve( p = [(0, 0, 0), (0, 0, 0),
(0, 0, 0), (0, 0, 0)], name = ('Jack_' + str(object) ))
cmds.currentTime(i, edit = True)
#Get the object position on everyFrame.
pos = cmds.xform((object), r=True, query = True, t=True )
cmds.curve(animationCurve, append = True, p = pos,)
cmds.delete(animationCurve + ".cv[0]")
if __name__ == "__main__": main()
Even after revising the loop as shown below, I am still just getting a
two point curve and a smooth curve.
frameStart = 1
frameStop = 100
step = 1
myObject = cmds.ls(selection = True)
#This loop queries the position of the animated object and creates
a curve based on its position.
for object in myObject:
i = frameStart
while i <=frameStop:
#yield i
i += step
print('The current frame is', cmds.currentTime( i, edit =
True))
animationCurve = cmds.curve( p = [(0, 0, 0), (0, 0, 0), (0, 0,
0)], name = ('Jack_' + str(object) ))
cmds.currentTime(i, edit = True)
#Get the object position on everyFrame.
pos = cmds.xform((object), r=True, query = True, t=True )
cmds.curve(animationCurve, append = True, p = pos,)
cmds.delete(animationCurve + ".cv[0]")
Thank you guys,
Cheers
Martin
--
http://groups.google.com/group/python_inside_maya