MaxScript 清除超出范围的关键帧

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

ContractedBlock.gif ExpandedBlockStart.gif 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/archive/2011/06/30/2094864.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.插件目的:: 1.我们使用的U3D引擎产生的游戏资源包容量太大,故全方位优化动画资源;2.在max曲线编辑器内,点取轴向太过麻烦,费事,直观清除大大提高效率。如: 二:插件设计思路 1.动画关键帧的原理: Key是记录骨骼bone的位移,转换,缩放的信息的,会产生容量,所以一套骨骼会产生很多关键帧,使文件增大,有的动作,部分轴向不参与动画,却又记录了下来,比如: 胳膊的挥动,只是旋转在作用,移动缩放根本没有作用,又比如:一个bone垂直接触了地面,只是移动在作用,所有旋转缩放没有作用,如下图: 注:横向是时间长度,纵向数值大小。 有动画的,才会有高低起伏的,平的曲线,没有起伏,但是参与了关键帧的记录,是会产生字节的,移动旋转缩放的XYZ都会在视图中出现, 所以:假如移动的XY有动画,但Z也有动画,可并没有任何作用,为了减少导出FBX的容量,就把Z轴的删掉,整体是这样的思路,UI菜单决定由我来删除 哪个需要删除, 1.当我鼠标选取一个或多个Bone对象,之后点选UI界面,由我选择清除哪个轴向,快捷删除轴向。比如我选择了5根骨骼,点击了”MOVE::XYZ 下的Clear Z Axis“,所以,这5根骨骼的位移的Z轴全部清除,同理我点击了”MOVE::XYZ 下的ALL“,那5根骨骼位移的XYZ轴动画都被清除; 三:使用方法。 全部:就是整个max文件里面所有没有变化信息的轴向 选择的:就是只针对选中的骨骼单个或者多个的轴向信息。 清理清除完成,可以在曲线编辑器内部查看 操作图解: 1.拖入插件进入max直接点击清除就行,导出FBX文件容量会小,省资源用的。 01.jpg 02.jpg 03.jpg 04.png
Maxscript是3D Max软件的一种脚本语言,用于增强软件的功能和自动化任务。Maxscript脚本可以用于创建自定义工具、操作场景中的对象、编辑材质和纹理、控制动画等各种操作。Maxscript内置了大量的命令和函数,方便用户进行开发和脚本编写。 为了更好地理解和学习Maxscript,中文帮助对于中文用户来说是十分重要的。Maxscript中文帮助提供了对Maxscript语言和命令的详细解释和示例,使用户能够更方便地查找和理解需要的信息。 Maxscript中文帮助内容包括Maxscript语言的基本语法、常用命令和函数的介绍,以及实例代码和教程等。通过阅读中文帮助,用户可以了解到如何使用Maxscript进行对象的创建、变换和操作,如何编写循环和条件语句,如何控制摄像机和灯光等等。 同时,Maxscript中文帮助也可以帮助用户解决在使用Maxscript过程中遇到的问题和困惑。用户可以通过搜索关键词或浏览目录来找到相关的主题,并查看详细的说明和示例代码。如果遇到特定的问题,用户还可以参考Maxscript中文帮助中的常见问题解答部分,以获取更具体的解决方案和建议。 总之,Maxscript中文帮助为用户提供了学习和使用Maxscript的重要工具和资源。它帮助用户更好地理解Maxscript语言和命令,提供了丰富的示例和教程,解决了用户在使用Maxscript过程中的困惑和问题。用户可以根据自己的需要,随时随地地查找和学习Maxscript相关的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值