一、表达式基本概念:
1、表达式是在场景中定义两个或多个元素之间关系的数学公式。
2、表达式窗口:
(1)、 变量分为标量(Scalars)和矢量(Vectors)
标量:只包含一条信息;矢量包含X、Y、Z三条信息。
(2)、时间偏移量(Tick Offset)
对于同步,可改变Tick Offset值来控制反应速度。较大的值导致较
缓慢的反应。如:A先动,然后引起B后续旋转运动;用添加时间偏移量来
解决这个问题。
3、生成表达式的过程:
(1)、坐标系设置成Local模式;
(2)、确定目标对象的哪一部分动画受表达式控制;
(3)、确定场景中的哪个对象的动画轨迹影响表达式;
(4)、用表达式代替目标对象的参数;然后编辑表达式编辑器,生成一
个随源对象的轨迹而变化的变量。
二、时间表达式(制作一个有钟摆的时钟)
1、旋转时应注意:重心点、Euler旋转和表达式控制器。
2、秒针旋转公式:-S*(2*pi)/60 2*pi旋转一周为60秒。
3、分针旋转公式:-S*(2*pi)/60/60 S--(默认变量)
4、时针旋转公式:-S*(2*pi)/60/60/12
5、钟摆摆动公式:Sin(360*S)*pi*Swing
Sin(360*S)乘上pi,使公式的输出在pi和-pi之间来回变动。因此,钟摆
每秒钟做360度的来回摆动。
现将这部分表达式乘以一个小数,就可以决定钟摆摆动的百分比。
6、旋转周数公式:-S*(2*pi)*Rotations
变量Rotations指定为常数2,即每秒钟旋转两周。
三、滚动圆环面
1、场景:地面、圆环、虚拟体。
2、圆环:(1).半径 50帧 R1=35, R2=10
150帧 R1=70, R2=5
250帧 R1=35, R2=10
(2).Y轴Rotation表达式:
(position.x)/(radius1+radius2)
创建标量position指给Dummy的Bezier Position
创建标量radius1、2,分别指给Radius1、2的 Bezier Float。
3、虚拟体:沿自身的X轴移动
(1).加入 Position List
(2).Position表达式:[0,0,(radius1+radius2)]
四、使用表达式操纵材质:(飞碟上升,材质发生变化)
1、飞碟、材质
2、明白:(1)、材质的轨迹受表达式控制;
(2)、飞碟Z位置轨迹将控制表达式。
3、表达式:[0,HullPos.z*C,0]
vectors:HullPos===指给飞碟的Z轴位置。
4、(1)、用C=0.01到0.90不同数值试验;
(2)、试试用表达式到X和Z的Offset值。
3DMAX表达式(2)
五、动画光线:
1、两束光线Ommi1\2的位置轨迹受到表达式控制;
2、飞碟对象的位置将影响表达式。
3、光线生成表达式:([AAPos.x+(50*cos(360*S)),
AAPos.y+(50*sin(360*S)),AAPos.z])
其中:矢量AA指给飞碟位置
4、互换用;指给Ommi2
六、
1、创建球A和球B,球B的旋转量是球A的2倍。
(1)、旋转球A
(2)、创建球B的标量AA,表达式为AA*2
其中标量AA指给球A的旋转通道。
2、利用距离控制动画:创建BOX01及两个虚拟物体。
(1)、在Track View中给Width轨迹指定一个Float表达式
(2)、表达式为:Length(a-b)
(3)、创建两个向量变量a,b,分别指给Dummy01\02的Position控制器。
七、弯曲木板:
1、木板L=30,W=200,WS=10,H=3
球C、E:R=20;球C(100,0,20),球E(-100,0,20)
2、选择木板左半部,Modify//Edit Mesh//将Gizmo移到中心位置
选择木板右半部,Modify//Edit Mesh//将Gizmo移到中心位置
3、Assign Controller,选择球C,指定Float表达式:
if
((P.z)<InitialZPos),
((InitialZPos-P.z)*2),
(InitialZPos-P.z)
其中标量:InitialZPos为球C在Z轴方向的初始位置20
4、选择球E,指定Float表达式:
[InitialXPos),(InitialYPos),((2*InitialZPos-Pos.Z)]
其中标量:InitialXPos,InitialYPos,InitialZPos为球E在X,Y,Z轴方向
的初始位置:-100,0,20。而创建Pos向量变量,指定给球C。
八、翘翘板:
场景:木板、球体和方块、虚拟物体
1、选择方块的Scale,并指定一个Scale Expression控制器
表达式为:[1+(Control.x/100),
1+(Control.y/100),
1+(Control.z/100)]
将Control的变量指给虚拟物体的Position控制器。
2、选择球体的Scale,并指定一个Scale Expression控制器
表达式为:[1-(Control.x/100),
1-(Control.y/100),
1-(Control.z/100)]
将Control的变量指给虚拟物体的Position控制器。
3、加入约束条件:选择木板,为其Z轴旋转轨迹指定一个表达式:
if((Controller.x<-50),
(degToRad(50/2)),
if((Controller.x>50),
(degToRad(-50/2)),
(degToRad(-Controller.x/2)) )) )
Controller为Vector变量控制器,指给虚拟物体的Position控制器。
degToRad为角度到弧度的转换器,它将扩号中的变量转换为弧度。
3DMAX表达式(3)
九、风力测量
场景:刻度圆盘、电扇Fan及Fan Grate、测力杆Rod及Rod Position
1、选择Rod。打开Track View并展开Modifiers: Bend: Angle, 为它
的轨迹指定表达式。
2、表达式为:
if( ((200-length(fan-rod)/4)<0),
(0),
(if( (200-length(fan-rod)/4)>135),
(135),
(200-length(fan-rod)/4)) ))
3、创建两个变量:名称分别为Fan和Rod
4、将Fan指给Fan Grate的Position控制器
将Rod指给Rod Position的Position控制器。单击Evaluate
十一、跳动的表达式:
1、 基本项目:地、球、虚拟物体
2、 为球体建立一个表达式:Motion→Assign Contriller→Position Expression
变量DummyPos 指定给虚拟物体;
变量PlanePos 指定给地。
表达式为:
DummyPos.x,DummyPos.y,cos(360*NT)*(DummyPos.z-PlanePos.z)+PlanePos.z
3、 增加表达式的细节:
(1) 、标量KK为次数;
(2) 、加入跳动的衰减(1-NT)
(3) 、加入球体的半径BallRad
(4) 、将衰减量变为Pow(NT,2)
表达式为:
DummyPos.x,DummyPos.y,abs(cos(180*pow(NT,2)*KK))*(DummyPos.z-PlanePos.z)+PlanePos.z+BallRad
十二、广告牌:
1、 场景:球(Sphere)、灯光(Free Sppot)、文字(Text)
2、 选Free Sppot,在Track View//Object中,选Colour→Point3 Expression
3、 建立聚光灯Free Spot: Hot Spot=135;Falloff=180;
4、 表达式控制器:标量On,Off
表达式为:
[min(1,Floor(mod(F,On+Off)/Off)),
min(1,Floor(mod(F,On+Off)/Off)),
min(1,Floor(mod(F,On+Off)/Off))]
5、 建立灯泡的材质:其自发光值设置为100。
6、 给灯泡赋予表达式
在Track View中, 球体材质Properties; Assign Contriller
建立向量LL,表达式为LL,将LL指定给Free Spot
7、F+ON或F+2*ON;F-ON或F-2*ON
8、加入Video Post,给以上三种材质加入通道2,高光材质通道也设置为2。