MaxScript 清除超出范围的关键帧

最近在unity3d中使用魔兽世界的导出资源时,发现有些动画会有一些莫名其妙的残留帧,导致一个动作导进unity3d后的长度变成几分钟,并且很大一部分是毫无动作的,所以写了这个脚本来清除多余的帧。

View Code
Fn CleanOutRangeKeys inputObject =
(
startTime
= AnimationRange.Start
endTime
= AnimationRange.End
for i = 1 to inputObject.numSubs do
(
tempSubAnim
= GetSubAnim inputObject i
tempController
= tempSubAnim.Controller

if tempController != undefined do
(
tempKeyList
= tempController.Keys

outEndKeysIndex
= for i = 1 to tempKeyList.Count where tempKeyList[i].Time > endTime collect i
if outEndKeysIndex.Count > 0 do for i = 1 to outEndKeysIndex.Count do DeleteKey tempKeyList tempKeyList.count

outStartKeysIndex
= for i = 1 to tempKeyList.Count where tempKeyList[i].Time < startTime collect i
for i = 1 to outStartKeysIndex.Count do DeleteKey tempKeyList 1
)
if tempSubAnim.numSubs > 0 do CleanOutRangeKeys tempSubAnim
)
)
for tempObject in Objects as Array do CleanOutRangeKeys tempObject
原文地址:https://www.cnblogs.com/sitt/p/2094864.html