The front of the object is rotated about a point to face the eye with the remaining rotational degree of freedom specified by aligning the top of the object with a specified axis in object coordinates. This is used for spherical objects and special effects such as smoke which must maintain an alignment in object coordinates for realism. The front of the object is rotated about a point to face the eye with the remaining rotational degree of freedom specified by aligning the top of the object with a specified axis in eye coordinates. This is used for rendering sprites which must maintain an alignment on the screen, such as 3D annotations. In the discussion below, the eye vector is the vector to the eye from the origin of the model view frame translated by the sprite position.
Clip alignment is a nearly trivial extension of object aligned.
However, once the projection matrix assumes rotation things are unpredictable and we should avoid this complexity. Each primitive is first rotated so that the sprite up vector aligns with the sprite axis which is specified in the current model view frame. Then the primitive is rotated about the axis so its front vector is parallel with the projection of the eye vector into the plane perpendicular to the rotation axis. Then the primitive is translated by the specified translation. The rotation axis for computing the R matrix is the canonical up vector.