<p>您可以通过以下两种方法获取当前场景范围:<code>pymel</code>或<code>cmds</code>:</p>
<pre><code>import pymel.core as pymel
pymel.playbackOptions(q=True, min=True)
pymel.playbackOptions(q=True, max=True)
import maya.cmds as cmds
cmds.playbackOptions(q=True, min=True)
cmds.playbackOptions(q=True, max=True)
</code></pre>
<p>在批处理或接口中运行它应该无关紧要。
<a href="http://help.autodesk.com/cloudhelp/2018/ENU/Maya-Tech-Docs/CommandsPython/playbackOptions.html" rel="nofollow noreferrer">Check out the docs</a>了解更多信息</p>
<p>编辑:</p>
<p>是否尝试获取给定对象的第一个关键帧和最后一个关键帧的范围?如果是这种情况,那么您需要使用<code>cmds.keyframe</code>。您可以传入一个对象,它将返回所有关键帧的帧列表。从那里,您可以对其进行排序,然后获得第一个和最后一个键,这将是您要查找的范围:</p>
<pre><code>import maya.cmds
obj = "pSphere1" # Object to check animation range with.
all_keys = sorted(cmds.keyframe(obj, q=True) or []) # Get all the keys and sort them by order. We use `or []` in-case it has no keys, which will use an empty list instead so it doesn't crash `sort`.
if all_keys: # Check to see if it at least has one key.
print all_keys[0], all_keys[-1] # Print the start and end frames
</code></pre>
<p>如果不希望检查所有属性,则可以包括一个属性来检查关键点。例如,假设您为球体的平移设置了动画,您可以从translateX获得其所有关键点,如下所示:<code>cmds.keyframe("pSphere1.tx", q=True)</code></p>