马上注册,加入CGJOY,让你轻松玩转CGJOY。
您需要 登录 才可以下载或查看,没有帐号?立即注册
×
本帖最后由 遇见高人 于 2019-5-10 22:55 编辑
上期讲到将任意脚本塞到工具栏中,并设置快捷键。
工具栏是有限的,至少,在当前主流的1920*1080的分辨率下,除去默认的按钮,上面已经没什么可以利用的空间了,那么,我们考虑一下max的下方。
先说下思路
1、写一个脚本A,主要是运用“fliein”的功能,放到max的startup目录内,每次启动自动加载这个脚本。
2、上面的fliein路径,指向一个其他路径脚本B,这个脚本的功能就是在max时间轴下方创建一个工具栏。
3、以后更新的脚本,就在B上面修改,至于A,不用管了,卸载max或者打包带回家只需要将B带走,A就一行字,重装max之后顺手写上放好,熟悉的脚本又回来了。
(至于脚本A只是一句filein的功能,那么它是否有存在的必要,我觉得这个问题不大的。假如你想把所有脚本都放在startup内,也是一点毛病都没有的。纯粹个人习惯,喜欢就好。)
下面开始全新的干货。(插入的代码好像又翻车了,主要代码我都有截图发出来的,文末的脚本有兴趣也可以了解下。)
1、打开脚本编辑器,新建脚本A,一行代码,简单易懂,直接将我在用的截图上来。
在这个例子中,只需要第一行的代码就行了,至于下方第二行那个,指向的是另一个自制工具集合,功能上随便你加什么(模型蒙皮,骨骼,FBX输出,MAX文件合并和另存等等),暂时不管它。
---------下方为代码--------------------
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, 其他地方都是空白。
我把close的按钮保留下来了,因为方便调试脚本。他的作用就是把这个工具栏关闭掉,然后你可以在脚本编辑器中随时修改,接着运行,就会重新出现在底下。假如去掉这个按钮,那么在不关闭原有脚本的情况下,新运行的脚本就会一层层叠加起来,最后就得重启max 了。就像下图,明显,这并不是我们想要的。
完成这两个步骤之后,即
1、脚本A在startup目录内。
2、脚本A所指向的路径,存在脚本B。
你就可以试下重启max,如无意外,脚本B就会自动运行,在max的时间轴下方显示出来。
基本的框架就像上面那样,就下来的事情, 就是添加各种button了。
下面是第二部分。
这里的按钮所实现的功能,大部分都是max里面有的,我只是把它们都集中在一起,省的来回点。
2vport----设置为2个视口显示。
3vport----设置为3个视口显示。
4vport----设置为4个视口显示。
1-4 ------四分之一倍速,并开启所有视口同时播放
1-2 ------二分之一倍速,并开启所有视口同时播放
1 ------原速,并开启所有视口同时播放
Loop------是否循环播放。
以我用的为例,首先的是2,3,4视口之间切换显示。关键词【 viewport】 查看maxscrtpi 的帮助文档。找到对应的说明
根据之前的做法,稍微调整下,就可以对号入座了。
---------------------------视口切换----------------------------------------
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之间,括号的配对,是成对组成的,如果运行出错,检查下是不是使用了中文输入法,或者是括号写少写多了)
好了,按CTRL+E 运行之后,一切如常。
接着后面的按钮,是播放速度的切换。帮助文档的说明,说得比较精简。
主要意思就是:1 ,2 ,3,4,5 ,5个数值对应max的5个选项。
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.
)
-----------------------
接下来那个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
)
)
-------------------
完整脚本见附件。
补充内容 (2019-5-24 07:14):
过段时间回来,发现不能编辑了?
关于这个脚本,这个算是上篇吧。
下篇部分,正在准备中…… |