3DMAX表达式(1)

一、表达式基本概念:

 

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。