最近在tvtalk上看到一个类似折叠纸球的动画效果,决定用max的脚本来试试。
我的思路是在一个虚拟物体上建立一个参数,将这个参数通过脚本控制场景中所以有circle物体Y轴的旋转,每个circle物体根据自己的序号旋转不同的角度。
弄了半天,遇到一些麻烦:
max的script似乎只能在每次运行的时候生效,而不能对场景持续生效,这点和AE里的动画脚本不太一样。不过也许是我没找到方法,方正想通过一个外部script实现对多物体的控制,我搞不定。
用wire parameters倒是可以实现表达式绑定,不过要对物体进行逐个绑定,麻烦,而且修改不方便。
最后终于用script controller完美实现了。在script controller中可以新建一个变量指向物体自身节点,从而实现自适应控制。
脚本:
name = self.name //name是指向当前物体节点变量
i = (substring name 7 -1) as float //截取物体名称中的序号
a = $circle* //将所有circle物体指定给一个数组
angle = 180.00/a.count //计算每个circle物体的偏移角度
open*(3.14/180)*(180-(i-1)*angle)/100 //计算当前物体的旋转角度