ways to look at expressions
– Time based
/ procedure-driven animation
Controllers / calculations for user extensions
Basic
examples (review maya docs)
Ball.scaleY
= Ball.scaleY + 0.1 incrementing
a value
Ball.scaleY
+= 0.1 [
+= -= *= /= ]
Ball.translateX
+= 0.1
Conditional
"IF" statements for resetting
if ( frame == 1 ) tx = 0 ; "=="
tests equivalence
"!="
tests "not equivalent"
Two
predefined variables are
"time"
and "frame"
time = frame / framerate
Ball.scaleY = time + 1 24fps
1 frame = 0.0417
Ball.scaleY
= time/5 + 1 30fps
1 frame = 0.0333
float
$tDisp = time;
print ($tDisp + “\n”);
Attributes
controlling others
Ball.scaleY
= ball.scaleX
Joint2.rz
= joint1.rz joints_exp.mb
One
xform related to another / and with offset
Cube.scaleY
= ball.scaleY
Cube.scaleY
= ball.scaleY * 2
Incrementing
a user-defined variable
Fundamentals book examples
bounce
bounce with friction
The standard order
of operations applies to scripts in Maya.
For example, in the expression
3 + 5 * 9 PG
43 of MEL book
Even thought the addition
takes place first in the sentence, the multiplication is performed first.
( ) [ ]
! ++ --
* / % ^
+ -
< <= > >=
== |=
&&
||
? ;
= += -= *= /=
Definition of
variables
Defining PI as a variable float
$pi = 3.14159265
Using PI to for rolling ball
/ wheel rolling_balls_exp.mb
float $radius = 1;
Using
sin and other functions
bouncing
ball
Sin() web page
(sin(value
* frequencymultplier) * amplitude)
+/- offset
Sin/cos
– circling spiral_out.mb
Reverse
order
Abs(sin/cos)
Rolling
cube rolling_cube.mb
Max( ) - foot walking
L.ty
= max(0,cos(time)); simple_feet_exp.mb
L.tz
= sin(time);
R.ty
= max(0,cos(time + 3.1416)
R.tz
= sin(time + 3.1416)
Linstep()
and smoothstep()
Random
functions – web page
Rand() tail_wagging_rand.mb
Noise() tail_waggin_noise.mb
Shrand()
Random
direction motioni
Modulus
to change direction periodically random_travel.mb
Time
offset from an object with anim curve
`getAttr
–t (frame – 2) pCube1.ty` timeoffset_follow
Adding controls (custom
attributes):
EYES
example from book pg 49
Creating
a custom attribute:
Using
the connection editor to attach to another attribute
Results
in a 1 to 1 correlation
Addressing
the new attribute in an expression:
Book example: Create "Ball.revolutions" as a float from 0 to 1
Create expression as " Ball.rotateY
= ball.revolutions * 360
"
MEL command to create custom attributes:
The History
window output reveals two MEL commands
AddAttr
and settAttr
the
"keyable" flag can be used with AddAttr
AddAttr
–k 1
(Also
can use –smx (soft max value) in addition to max)
Custom
Attribute Examples –
Newtons
cradle controls Newtons_cradle.mb
Walking_exp_ctrls.mb
Walking_travel_ctrls.mb
Hip_blender_ctrl,mb
Fundamentals_book
examples:
Unicycle
Circling
Inward
spiral
Magnets
Windblownflower
Bottlebobble
Bullies