许铮

学习 / 生活 / 工作 / 娱乐

MaxScript使用提示和技巧

文章内容

日常使用MaxScript的一些经验记录.平常用于动画工具和绑定工具比较多,记录也会更偏向于这方面.

editpoly修改器,不能像别的修改器那样,通过mxs完美复制…

导致一些效果无法实现

在开发weightspro时,使用spinner控件实现权重微调,但是苦恼于不能将多次微调合并记录在一次撤销里.

经过一番搜索,发现可以用thehold相关方法来实现,这样调节微调器时,只有最后一次输入会触发撤销机制,其中的部分都会忽略,非常符合预期.但是测试完成实际使用时,把测试函数替换成我自己的函数就会无效,多次调试后发现主要问题来自于skinops.只要用了相关命令,撤销系统就会像消失了一样毫无反应.

经过搜索,发现很多人也遇到过这个问题.偶然在一篇帖子(MaxScriptTip: skinOpsをUndoに記録する)中发现,可以利用maxscript的一些机制,强制使相关代码进入撤销机制中.这里使用的是bakeSelectedverts.

image-20201014225331714

image-20201014225404468

有一些人说这段设计是实习生留下的bug. 我强行将其加入撤销机制,结果带来了严重的内存和性能问题.才发现其实像上面那样设计是有原因的:设置权重之类的操作太繁琐了,每个操作都被记录进撤销缓存会严重消耗内存和性能,所以只在有需要的时候撤销一次.也就是通过bakeSelectedverts来扣一个戳记,忽略掉其他权重操作的记录,在撤销时仍能回到bakeSelectedverts之前.

with redraw off(code)

可以方便的让一段代码执行过程中关闭重绘

有些时候,需要我会这么用

with redraw off(animat off(undo off(code))) 或者

with redraw off(animat off(undo off(at time 0 (code))))

at time 0 (code) 可以更方便的控制临时的时间,省去大部分的 slidertime = 0; ......,而且at time 是不重绘的,还可以超过现有的时间范围.

获取时间需配合 currenttime

不过在处理biped系统的物体时,一些情况下会有刷新问题.

最近的文章

一些资源收藏

有机会要记得将其中的在线资源离线化,免得哪天找不到了,就脑壳疼了….其实还没开始学,但是早晚都要学的,碰巧遇上了就记下来,免得到时候抓耳挠腮的现找.如果学习资源够好的话,可以让学习进程顺利迅速,一些花费还是很值得的.(唉,我遇到的这些培训班啊…教着只值几百几千的课程,收着几万的学费….)字体谷歌字体 大量免费可商用字体,其中OFL许可(Open Font License)已有在商业游戏中使用的先例(破门而入2).免费的学习资源^还挺优质…^Learning Modern 3D Graphi...…

资料继续阅读
更早的文章

Zelda攻击动画复刻

动画这东西,厉害的人用垃圾也能做的很精彩,愚笨如我,用再精致的东西起底,也还是会搞得一塌糊涂.作为最近学习和研究的总结,打算做一个新的小作品,顺便也丰富一下自己的作品库.这次的作品打算稍微全面一点,就做一个一直想做而没做过的双人对打小动画吧.顺便记录一下制作历程,充实一下我年轻的博客.虽然还是想自己做个原创模型作为作品中的模型来用,但是花了几天收集素材和学习之后,终究因为水品跟不上想法,放弃了这个念头.之前收集模型的时候,还是发现过一个不错的模型.原模型的大佬在gumroad上的免费绑定模...…

练习继续阅读