Maya表达式动画之Functions
- 2022-02-06
- 来源/作者: PS.ONEGREEN.ORG / 佚名
- 7 次浏览
前言
好久没有发帖子了,最近一个多月来我一直潜心钻研 Maya 的表达式动画,目前总算从菩提树上摘下了几个果子,想和大家分享一下。
一提到表达式和 MEL 语言,不少网友总是叹气。似乎这一类的东西是我们,尤其是非编程者遥不可及的。其实我也没有学过 C++ 、 Delphy 语言,和不少学习文科的朋友一样美术才是我的专业。现在也是如此。我想只要具有高中程度的数学、英语和物理知识,学习表达式动画就足以了。三维的世界像海洋一样,坚持下来,我们每个人都是采珍珠的勇士。
一、 Functions-- 函数
首先我们来分析一下一段含有 Maya 内嵌函数的表达式语句
Object.translateY=sin(time)+6;
Object 当前场景中要设表达式的物体
. 分隔符
translateY 属性
= 指定运算符
sin 函数
() 逻辑运算符
> time 变量+ 数学运算符
6 常量
; 终结符
目前要讨论的范围是以 SIN 为代表的函数,它们的作用是将物体按一定的特殊规律运动。上例中 Object 从世界坐标轴的中心沿 Y 轴以 SIN 三角函数图像运动规律进行往返运动。
二: Maya 的内嵌函数分类
MATH FUNCTIONS 数学函数 28 个这一类的函数最多也是最为常用的 .
RANDOM FUNCTIONS 絮乱函数 6 个是产生物体类似于噪波运动的效果
VECTOR FUNCTIONS 矢量函数 6 个多用于粒子动画
[NextPage]
CONVERSION FUNCTIONS 转化函数 4 个多用于 MAYA 内部函数之间的互相转化作用.
ARRAY FUNCTIONS 阵列函数 3 个用于粒子和类粒子物体的运动
CURVE FUNCTIONS 曲线函数 4 个控制物体的路径运动
我尽可能的将我所了解的内容告诉大家,有不周全的地方请参考 MAYA 的联机手册,虽然它是英文的。哎!不学英文怎么活?!
三 数学函数的用法
了解这一部分的内容最好能够参考高中教本关于三角函数的章节。
ABS 是 ABSOULTE 的缩写意思是取决对值。
例如:
int abs(int number)
float abs(float number)
vector abs(v
ector number)函数名是 abs, 它将返回 number 的绝对值。绝对值是没有正负数之分的数值。
本例说明 abs 函数有 3 种格式。每种格式要求一个不同数据类型的参数并返回一个不同数据类型的值。
第一个格式说明用户可以键入整数类型参数,并且函数返回一个整数。比如, abs(-3) 返回数值 3 。
第二个格式说明用户可以键入一个浮点类型参数,并且函数返回一个浮点数,比如, abs(-7.54) 返回 7.54 。
[NextPage]
第三个格式说明可以键入一个向量,而且函数返回一个向量。比如, abs(<<3, -6.3, -2>> 返回 <<3, 6.3, 2>> 。
acos
返回的是一个数值的反余弦弧度值,其范围是 0~ pi 。
float acos(float number)
number 是角的余弦值,其范围是 -1~1 。
例如:
acos(1)
返回值是 0 。
acos(-0.5)
返回的是 2.0944 弧度。
acosd
返回的是一个数值的反余弦角度值,其范围是 0~180 。
float acosd(float number)
number 是角的余弦值,范围是 -1~1 。
例如:
acosd(1)
返回值是 0 度。
acosd(-0.5)
返回值是 120 度。
asin
返回值是一个数值的反正弦弧度值,其范围是 -pi/2 到 pi/2 。
f loat asin(float number)
number 是角的正弦值,其范围是 -1~1 。
例如:
asin(0.5)
返回值是 0.5
25 弧度。asind
返回的是一个数值的反正弦度数值,其范围是 -90 到 90 。
float asind(float number)
number 是角的正弦值,范围是 -1~1 。
例如:
asind(0.5)
返回的是 30 度。
atan
返回的是一个数值的反正切弧度值,其范围是 -pi/2 到 pi/2 。
float atan(float number)
number 是角的正切值,可为任何值。
例如:
atan(1)
返回值是 0.785 。
atand
返回的是一个数值的反正切角度值,其范围是 -90~90 度。
float atand(float number)
number 是角的正切值,可为任何值。
例如:
atand(1)
返回的是 45 度。
[NextPage]
atan2
返回的是一个在 X,Y 坐标轴中指定的反正切弧度值。这个角是以 X 轴为一边,另一边是由原点和坐标系
中一点形成的直线构成。返回的角以弧度为单位,范围是 -pi 到 pi 。
float atan2(float Y, float X)
X 是点的 X 坐标。
Y 是点的 Y 坐标。
例如:
atan2(1,1)
返回的是 0.785 弧度。
今天就写到这,已经很晚了,欢迎与我共同讨论
to be continue
今天加上 MATH FUNCTIONS 的最后一部分,来结素这个话题。其他的函数由于他们比较好理解,就不做说明了。毕竟一个人的能力是有限的。有点对不住大家了。
atan2d
返回的是一个在 X,Y
坐标系中指定的反正切角度值。返回的角以度为单位,范围是 -180 到 180 度。float atan2d(float Y, float X)
X 是点的 X 坐标。
Y 是点的 Y 坐标。
例如:
atan2d(1,1)
返回 45 度。
hypot
返回的是从原点到在 X, Y 坐标系点的二维向量值 .
angle
返回向量间的弧度角 .
float angle(vector vector1, vector vector2)
vector1 是一个向量。
vector2 是另一个向量。
返回角是两个向量所夹角中的最小角,它通常小于 180 度。
例如:
angle(<<2,-1,1>>,<<1,1,2>>
返回 1.0472 弧度,它等于 60 度。
cross
返回由两个向量定义的叉乘值。
对于两个向量,叉乘值是由两个向量定义而成的面的法线,
vector cross(vector vector1, vector vector2)
若叉乘值是 0 ,那么可能是两个向量平行或在同一条直线上。若一个或两个向量是 <<0,0,0>> ,那么叉乘
[NextPage]
值返回 <<0,0,0>> 。
vector1 是一个向量。
vector2 是另一个向量。
例如:
cross(<<1,2,-2>>,<<3,0,1>>
返回值是 <<2, -7, -6>> 。
dot
返回两个向量的浮点点积。点积把两个向量作为自变量并返回
一个标量值。float dot(vector vector1, vector vector2)
如果点积返回 0 ,那么两个向量是垂直的。
vector1 是一个向量。
vector2 是另一个向量。
例如:
dot(<<1,2,-2>>,<<3,0,1>>
返回 1 ,这个例如的点积是 (1 * 3) + (2*0) + (-2*1), 它等于 1 。
mag
返回向量的值,它是向量的长度, float mag(vector vector)
vector 是所要得到数值的向量。
Mag 函数使用下列公式把向量转换为一个浮点数。
例如:
mag(<<7,8,9>>
返回值 13.928 。
rot
返回一个向量,它代表以指定轴旋转一定弧度后点的位置