脚本语言


节日期间,儿、孙们都出去玩了,家里好清净,没事琢磨 MAX 8 的脚本语言吧。

有些动画看起来简单,但是要按常规办法制作几乎不可能。下面这个就是,也许手工可以模仿做出来,但是运动的连贯性就没有保证了,下面引进一个正玄函数 sin ,轻松搞定。

画面内容没有什么意思,这是个正弦波。制作起因是那天看到一个“音乐广场”的动画,诸多冲天水柱,随着音乐的节拍,其高度如波浪搬的轮番起伏,颇为壮观。当时就想,这只能用脚本编写了,手工根本无法做出。现在用一个圆柱体(cylinder)当水柱,用 sin 函数控制其高度变化,果然有效。

程序自编的,肯定不规范,只当消遣:

myc=cylinder()
myc.radius=1
myc.height=5
for i=0 to 360 do animate on (at time i myc.height=10*sin i)
for x=0 to 31 do for y=0 to 5 do (copy myc).pos=[3*x,3*y,0]
select geometry
bolang=0
for a in selection do movekeys a.height.controller (bolang+=1)

上面的脚本可以不断的修改,待补。

2006年10月5日


补充

有网友问,上面各句什么意思,现回复如下:

 

因为初次接触MAX 8 脚本,我先用 MAXScript 侦听器边编写、边看效果、边修改,摸索完成的。然后把所有OK去掉,成为现在这样,可以直接使用了。如果你感兴趣,不妨输进你的 3DS MAX 8 一试。

myc=cylinder()
--声明变量,圆柱体
myc.radius=1
--圆柱体半径为1
myc.height=5
--圆柱体高度为5
for i=0 to 360 do animate on (at time i myc.height=10*sin i)
--打开动画,在 i 时,圆柱体的高度为10*sin i
for x=0 to 30 do for y=0 to 10 do (copy myc).pos=[2*x,2*y,0]
--复制圆柱体动画,复制位置 X轴:2*x Y 轴位置:2*y
select geometry
--选择几何体(全部圆柱体)
bolang=0
--声明变量:bolang(波浪)
for a in selection do movekeys a.height.controller (bolang+=1)
--选择所有物体的关键帧,给其高度控制器赋值:bolang+=1



谢谢。

2006年10月8日