近期热门
首页 CGJOY论坛 动画作品交流 脚本工具+教程
【maxscript】003.在时间轴下方再增加个工具栏,了解一下

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

[复制链接]
10679 10 8 28 6年前 举报
本帖最后由 遇见高人 于 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):
过段时间回来,发现不能编辑了?
关于这个脚本,这个算是上篇吧。
下篇部分,正在准备中……
8
点赞
0
打赏
28
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论10
您需要登录后才可以回帖 登录

zenozheng 发表于 2019-12-23 22:19
高人,请教自制工具集合,anitool,窗口写法。跪求。。。

我也是边学习边写,有些功能还能完善,有些倒是越来月少用了。你想要的东西,我晚点也会慢慢发出来。只不过越靠近年底越少时间。
我争取年底前继续下一篇吧。
5年前  ·  10楼
回复

使用道具 举报

感谢大佬,学习了
5年前  ·  9楼
回复

使用道具 举报

高人,请教自制工具集合,anitool,窗口写法。跪求。。。
5年前  ·  8楼
回复

使用道具 举报

第一行是用来将已经打开的脚本关闭的
5年前  ·  7楼
回复

使用道具 举报

谢谢楼主分享
6年前  ·  6楼
回复

使用道具 举报

哈哈哈哈哈
6年前  ·  5楼
回复

使用道具 举报

赞一个
6年前  ·  4楼
回复

使用道具 举报

先收藏..再慢慢看
6年前  ·  3楼
回复

使用道具 举报

先收藏..再慢慢看
6年前  ·  2楼
回复

使用道具 举报

{:6_199:}
6年前  ·  1楼
回复

使用道具 举报

数据加载中....
没有更多评论了
您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器