开启左侧

[脚本工具教程] 【maxscript】003.在时间轴下方再增加个工具栏,了解一下

  [复制链接]
本帖最后由 遇见高人 于 2019-5-10 22:55 编辑

上期讲到将任意脚本塞到工具栏中,并设置快捷键。
工具栏是有限的,至少,在当前主流的1920*1080的分辨率下,除去默认的按钮,上面已经没什么可以利用的空间了,那么,我们考虑一下max的下方。
01.png

先说下思路
1、写一个脚本A,主要是运用“fliein”的功能,放到max的startup目录内,每次启动自动加载这个脚本。
2、上面的fliein路径,指向一个其他路径脚本B,这个脚本的功能就是在max时间轴下方创建一个工具栏。
3、以后更新的脚本,就在B上面修改,至于A,不用管了,卸载max或者打包带回家只需要将B带走,A就一行字,重装max之后顺手写上放好,熟悉的脚本又回来了。

至于脚本A只是一句filein的功能,那么它是否有存在的必要,我觉得这个问题不大的。假如你想把所有脚本都放在startup内,也是一点毛病都没有的。纯粹个人习惯,喜欢就好。

下面开始全新的干货。(插入的代码好像又翻车了,主要代码我都有截图发出来的,文末的脚本有兴趣也可以了解下。

1、打开脚本编辑器,新建脚本A,一行代码,简单易懂,直接将我在用的截图上来。
在这个例子中,只需要第一行的代码就行了,至于下方第二行那个,指向的是另一个自制工具集合,功能上随便你加什么(模型蒙皮,骨骼,FBX输出,MAX文件合并和另存等等),暂时不管它。
02.png

---------下方为代码--------------------
filein"D:\Maxscript_2013\\UI_TimeLine.ms" ----意思就是,运行这个路径下以UI_TimeLine.ms命名的脚本。
---------------

将上述代码保存为XXX.ms文件,至startup目录内即可。
此为第一步,max软件先别关。因为还要在对应目录创建个UI_TimeLine.ms的脚本,否则上面那个脚本A会找不到脚本B,报错弹框就会出现了。

2、新建脚本B。
首先来个最基础的代码,其实我也是拿大神的脚本来改的。我没去深入了解,留着以后回头再看看把。现在只是拿来用着,不出错,就行了。
代码如下

------------
--try(destroyDialog UnderTimerange)catch()--发现这句并没有什么卵用,在前面加横杠注释掉--
rollout UnderTimerange ("Test_UI")
(        
button bt_close "Close" height:20 width:80 tooltip:"Close" pos:[5,0]        
on bt_close pressed do  
         (               
                  try(cui.UnRegisterDialogBar UnderTimerange)catch()               
                  try(destroyDialog UnderTimerange)catch()
        )        
)createdialog UnderTimerange 1900 40        --设置长宽的参数,有兴趣的可以测试下自己喜欢的参数。
cui.RegisterDialogBar UnderTimerange style:#(#cui_dock_bottom,#cui_dock_top,#cui_floatable, #style_toolwindow)
cui.DockDialogBar UnderTimerange #cui_dock_bottom
--------------

运行之后出来的结果就是底下多出一条“工具栏”,除了已有的按钮 Colse, 其他地方都是空白。
05.png

04.png

我把close的按钮保留下来了,因为方便调试脚本。他的作用就是把这个工具栏关闭掉,然后你可以在脚本编辑器中随时修改,接着运行,就会重新出现在底下。假如去掉这个按钮,那么在不关闭原有脚本的情况下,新运行的脚本就会一层层叠加起来,最后就得重启max 了。就像下图,明显,这并不是我们想要的。
06.png



完成这两个步骤之后,即
1、脚本A在startup目录内。
2、脚本A所指向的路径,存在脚本B。

你就可以试下重启max,如无意外,脚本B就会自动运行,在max的时间轴下方显示出来。

基本的框架就像上面那样,就下来的事情, 就是添加各种button了。


下面是第二部分。

这里的按钮所实现的功能,大部分都是max里面有的,我只是把它们都集中在一起,省的来回点。
03.png
2vport----设置为2个视口显示。
3vport----设置为3个视口显示。
4vport----设置为4个视口显示。
1-4         ------四分之一倍速,并开启所有视口同时播放
1-2         ------二分之一倍速,并开启所有视口同时播放
1         ------原速,并开启所有视口同时播放
Loop------是否循环播放。

以我用的为例,首先的是2,3,4视口之间切换显示。关键词【 viewport】 查看maxscrtpi 的帮助文档。找到对应的说明

07.png

根据之前的做法,稍微调整下,就可以对号入座了。
---------------------------视口切换----------------------------------------
        button bt_2vport "2vport" height:20 tooltip:"2视口" pos:[100,0]
        button bt_3vport "3vport" height:20 tooltip:"3视口" pos:[150,0]
        button bt_4vport "4vport" height:20 tooltip:"4视口" pos:[200,0]
        on bt_2vport pressed do
                (
                viewport.setLayout(#layout_2v)
                )
       on bt_3vport pressed do
                (
               viewport.setLayout(#layout_3vl)
               )
        on bt_4vport pressed do
                (
                viewport.setLayout(#layout_4)
              )
-------------------------


把上面代码复制到脚本B中,如下图(注意各个button之间,括号的配对,是成对组成的,如果运行出错,检查下是不是使用了中文输入法,或者是括号写少写多了)

08.png

好了,按CTRL+E 运行之后,一切如常。
09.png

接着后面的按钮,是播放速度的切换。帮助文档的说明,说得比较精简。
10.png

主要意思就是:1 ,2 ,3,4,5 ,5个数值对应max的5个选项。

11.png




1 - 1/4x   意思就是如果这个值为1  那么对应的播放速度则是四分之一的速度。
3 - 1x   这就是是设置为3的时候,对应的是原速播放。
我只设置了3个,分别是四分之一,二分之一,和原速。代码如下,将它依次复制到上面那块代码的下方,就行。
-----------------------播放速度切换---------------------------------
        button bt_1D4Speed "1-4" width:50 height:20 tooltip:"0.25倍速" pos:[250,0]
        button bt_1D2Speed "1-2" width:50 height:20 tooltip:"0.5倍速" pos:[300,0]
        button bt_1Speed "1" width:50 height:20 tooltip:"1倍速" pos:[350,0]
         on bt_1D4Speed pressed do
                (
                timeConfiguration.playActiveOnly = false  --是否只在激活的窗口才播放动画
                timeConfiguration.playbackSpeed = 1 --播放速度 按顺序  1 就是四分之一速度,2 就是二分之一,3 就是原速,4,5.
        )
        on bt_1D2Speed pressed do
                (
                timeConfiguration.playActiveOnly = false  --是否只在激活的窗口才播放动画
                timeConfiguration.playbackSpeed = 2 --播放速度 按顺序  1 就是四分之一速度,2 就是二分之一,3 就是原速,4,5.
        )
        on bt_1Speed pressed do
                (
                timeConfiguration.playActiveOnly = false  --是否只在激活的窗口才播放动画
                timeConfiguration.playbackSpeed = 3 --播放速度 按顺序  1 就是四分之一速度,2 就是二分之一,3 就是原速,4,5.
        )
-----------------------

12.png

接下来那个Loop,继续安排在后面即可。
--------------是否循环播放动画----------------
        checkbox check_loop "Loop" pos:[410,2] width:40 height:20 tooltip:"循环播放"
        on check_loop changed state do
        (
                if state then
                 (
                                timeConfiguration.playbackLoop = true
                        )
               else
                 (
                        timeConfiguration.playbackLoop = false
                )
         )
-------------------

13.png

完整脚本见附件。


UI_TimeLine.rar 已购买

867 Bytes 售价: 1 张CG券
下载













补充内容 (2019-5-24 07:14):
过段时间回来,发现不能编辑了?
关于这个脚本,这个算是上篇吧。
下篇部分,正在准备中……

点击标签,内容一促即达。

遇见高人
自我介绍空空的,快来写点什么吧~
未设置城市
其他作品 (13)

【maxscript】003.在时间轴下方再增加个工具栏,了解一下

4714 10 4年前
您需要登录后才可以回帖 登录

全部评论

4年前 回复
先收藏..再慢慢看
4年前 回复
先收藏..再慢慢看
4年前 回复
赞一个
4年前 回复
哈哈哈哈哈
4年前 回复
谢谢楼主分享
4年前 回复
第一行是用来将已经打开的脚本关闭的
4年前 回复
高人,请教自制工具集合,anitool,窗口写法。跪求。。。
4年前 回复
感谢大佬,学习了
4年前 回复
数据加载中...
没有更多评论了
快速回复 返回顶部 返回列表