墨白

相对于人生易老,朱颜易改,大概最易变的还是人心。

博客园 首页 新随笔 联系 订阅 管理
3DMAX表达式(1)

一、表达式基本概念:

 

1、表达式是在场景中定义两个或多个元素之间关系的数学公式。

 

2、表达式窗口:

 

  1)、 变量分为标量(Scalars)和矢量(Vectors

 

          标量:只包含一条信息;矢量包含XYZ三条信息。

 

  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).YRotation表达式:

 

             (position.x)/(radius1+radius2)

 

创建标量position指给DummyBezier Position

 

创建标量radius12,分别指给Radius12 Bezier Float

 

3、虚拟体:沿自身的X轴移动

 

          (1).加入 Position List

 

          (2).Position表达式:[0,0,(radius1+radius2)]

 

四、使用表达式操纵材质:(飞碟上升,材质发生变化)

 

1、飞碟、材质

 

2、明白:(1)、材质的轨迹受表达式控制;

 

         2)、飞碟Z位置轨迹将控制表达式。

 

3、表达式:[0HullPos.z*C0]

 

       vectors:HullPos===指给飞碟的Z轴位置。

 

4、(1)、用C=0.010.90不同数值试验;

 

   2)、试试用表达式到XZOffset值。

 

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的旋转量是球A2倍。

 

 

 

1)、旋转球A

 

 

 

2)、创建球B的标量AA,表达式为AA*2

 

 

 

      其中标量AA指给球A的旋转通道。

 

 

 

2、利用距离控制动画:创建BOX01及两个虚拟物体。

 

 

 

1)、在Track View中给Width轨迹指定一个Float表达式

 

 

 

2)、表达式为:Length(a-b)

 

 

 

3)、创建两个向量变量a,b,分别指给Dummy01\02Position控制器。

 

 

 

七、弯曲木板:

 

 

1、木板L=30W=200WS=10H=3

 

 

 

   CER=20;球C100020),球E-100020

 

 

 

2、选择木板左半部,Modify//Edit Mesh//Gizmo移到中心位置

 

 

 

选择木板右半部,Modify//Edit Mesh//Gizmo移到中心位置

 

 

 

3Assign Controller,选择球C,指定Float表达式:

 

 

 

        if

 

 

 

        ((P.z)<InitialZPos),

 

 

 

        ((InitialZPos-P.z)*2),

 

 

 

        (InitialZPos-P.z)

 

 

 

 其中标量:InitialZPos为球CZ轴方向的初始位置20

 

 

 

4、选择球E,指定Float表达式:

 

 

 

     [InitialXPos),(InitialYPos),((2*InitialZPos-Pos.Z)]

 

 

 

 其中标量:InitialXPos,InitialYPos,InitialZPos为球EX,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)) )) )

 

 

 

ControllerVector变量控制器,指给虚拟物体的Position控制器。

 

 

 

degToRad为角度到弧度的转换器,它将扩号中的变量转换为弧度。

3DMAX表达式(3)

九、风力测量

 

 

场景:刻度圆盘、电扇FanFan Grate、测力杆RodRod 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、创建两个变量:名称分别为FanRod

 

 

4、将Fan指给Fan GratePosition控制器

 

 

   Rod指给Rod PositionPosition控制器。单击Evaluate

 

 

 

 

 

十一、跳动的表达式:

 

 

1、  基本项目:地、球、虚拟物体

 

 

2、  为球体建立一个表达式:MotionAssign 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,ColourPoint3 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

 

 

7F+ONF+2*ONF-ONF-2*ON

 

 

8、加入Video Post,给以上三种材质加入通道2,高光材质通道也设置为2

 

 

 

 

 

posted on 2011-07-27 16:28  墨白  阅读(4904)  评论(0编辑  收藏  举报