ADOBE DIRECTOR 11.0
User Guide
343
Moving models
Because the 3D world has no absolute frame of reference, moving and rotating is much more complex than in 2D,
where all movement is in relation to screen position.
In 3D, everything is drawn relative to the camera’s frame of reference. If the camera is behind an object, when the
object moves to the left relative to the center of the world (the
world origin
), it appears to move toward the right of
the screen.
Each piece of position and orientation information can be expressed relative to one or more frames of reference. A
model’s transform property, for instance, expresses its position and rotation relative to the model’s parent. In general,
there are four frames of reference to consider: relative to the object (model, light, camera) itself, relative to the object’s
parent, relative to the world, and relative to some other object.
•
Object-relative: When you create a model in a 3D-modeling program, you build it relative to its own frame of
reference. For instance, when you create a model of a car, the front of the car may be pointed along its
z
-axis and the
antenna may be pointed along its
y
-axis. To move such a car forward (along its
z
-axis) regardless of which direction
it is pointing relative to the camera or the world, use
car.translate(0,0,10)
. To turn the car left, use
car.rotate(0,45,0)
.
The car model might have wheel models as children. To rotate the wheel of a car relative to itself, rather than
relative to its parent (the car), use the following script:
wheel.rotate(0,10,0)
or
car.child[1].rotate(0,10,0, #self)
where the fourth parameter of the
rotate
method is the object the rotation should be relative to.
•
Parent-relative: A model’s
transform
property expresses its position and rotation relative to the model’s parent.
If you want the wheels of the car to move outward regardless of how the wheels are turned, use
car.child[1].translate(10,0,0,#parent)
or
car.child[1].transform.translate(10,0,0)
. If you want
a planet model that is a child of the sun to orbit around the sun, use
planet.rotate(0,5,0, #parent)
.
•
World-relative: If you want the car to move along the world’s
x
-axis regardless of which way it is facing, use
model.translate(10,0,0,#world)
. If you want to rotate the car 20° around the world
y
-axis, with the rotation
taking place at the world location vector (10, 10, 10), use
model.rotate(vector(10,10,10), vector(0,1,0),
20, #world)
.
scale(
x, y, z)
Scales the model by a factor of
x
in the
x
dimension,
y
in the
y
dimension, and
z
in the
z
dimension. Scaling is applied in
object-relative space.
Nothing.
pointAt(
world
Position, worldUp
)
Points the node’s “front” at the world position and then tries
to align the node’s “up” with the worldUp specified, and that
the node’s “front” and “up” are determined by the node’s
pointAtOrientation
property.
Both the object-relative axes are defined by the
pointAtOrientation
property. Default values are an
object-relative forward direction of vector (
0
,
0
,
-1
) and an
object-relative up direction of vector (
0
,
1
,
0
).
Nothing.
getWorld
Transform()
Calculates and returns a transform that converts object-rela-
tive positions for this model into world-relative positions.
A transform object.
Method
Description
Returns