User Guide

Models 351
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 cameras frame of reference. If the camera is behind an
object, when the object moves to the left relative to the center of the world, or 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 models 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)
rotate (position,
axis, angle,
relativeTo)
Rotates the model around the axis vector in the
specified position the specified number of degrees.
The
relativeTo argument is optional and
defaults to
#self.
Nothing
scale(uniform
Scale)
Scales the model the same amount in all directions. Nothing
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-relative positions for this model into world-
relative positions.
A transform object
Method Description Returns