Python 导出对象范围内的关键帧
是否可以单独导出给定对象在其自身关键帧范围内的关键帧 例如,Python 导出对象范围内的关键帧,python,animation,export,maya,Python,Animation,Export,Maya,是否可以单独导出给定对象在其自身关键帧范围内的关键帧 例如,camA在第1帧到第10帧的范围内设置关键帧。但当我尝试以另一种格式导出此相机时,它考虑了整个时间滑块。因此,导出的\u camA在第1帧到第24帧的范围内设置关键帧(24是我的时间滑块的最大范围) 这可能吗?我尝试使用cmds.playbackOptions,但显然它也在根据时间滑块范围导出 def __init__(self, transform, startAnimation, endAnimation, cameraObj):
camA
在第1帧到第10帧的范围内设置关键帧。但当我尝试以另一种格式导出此相机时,它考虑了整个时间滑块。因此,导出的\u camA
在第1帧到第24帧的范围内设置关键帧(24是我的时间滑块的最大范围)
这可能吗?我尝试使用cmds.playbackOptions
,但显然它也在根据时间滑块范围导出
def __init__(self, transform, startAnimation, endAnimation, cameraObj):
self.fileExport = []
print ">>> Exported : %s" %self.fileExport
mayaGlobal = OpenMaya.MGlobal()
mayaGlobal.viewFrame(OpenMaya.MTime(1))
for i in range(startAnimation, endAnimation):
focalLength = cameraObj.focalLength()
vFilmApp = cameraObj.verticalFilmAperture()
focalOut = 2* math.degrees(math.atan(vFilmApp * 25.4/ (2* focalLength)))
myEuler = OpenMaya.MEulerRotation()
spc = OpenMaya.MSpace.kWorld
trans = transform.getTranslation(spc)
rotation = transform.getRotation(myEuler)
rotVector = OpenMaya.MVector(myEuler.asVector())
self.fileExport.append((str(i) + '\t' + str(trans[0]) + "\t" + str(trans[1]) + "\t" + str(trans[2]) + "\t" + str(math.degrees(rotVector[0])) + "\t" + str(math.degrees(rotVector[1])) + "\t" + str(math.degrees(rotVector[2])) + "\t" + str(focalOut) + "\n"))
mayaGlobal.viewFrame(OpenMaya.MTime(i+1))
在
cmds
中,可以获得给定动画的最大和最小时间,如下所示:
key_times = cmds.keyframe('pCube1', attribute = 'translate', q=True, tc=True)
first_key = key_times[0]
last_key = key_times[-1]
请注意,这必须应用于特定属性(在本例中,我使用了“平移”),否则将从Maya在对象上找到的第一条动画曲线获取关键帧
也就是说,通常认为最好导出场景关键帧范围或显式设置的帧范围。否则,您可能会有人在场景中工作并擦洗时间,然后导出并查看较少的帧。我还发现了此命令-
cmds.findKeyframe
,以便捕获选定对象动画的关键帧,它也有助于我的代码
虽然我不确定这是否会在以后产生任何不利影响,因为我还没有遇到一个:x
例如:
minTime = cmds.findKeyframe(which='first') # First keyframe
maxTime = cmds.findKeyframe(which='last') # Last keyframe
谢谢你提供的信息。我还谴责如果我允许用户通过场景范围或上述选择中描述的范围自由导出动画。即使现在是这样,后者也是我在当前代码中试图实现的。如果我想进一步即兴编写代码,我将考虑前者。再次感谢!