3D projection

A 3D projection (or graphical projection) is a design technique used to display a three-dimensional (3D) object on a two-dimensional (2D) surface. These projections rely on visual perspective and aspect analysis to project a complex object for viewing capability on a simpler plane.

3D projections use the primary qualities of an object's basic shape to create a map of points, that are then connected to one another to create a visual element. The result is a graphic that contains conceptual properties to interpret the figure or image as not actually flat (2D), but rather, as a solid object (3D) being viewed on a 2D display.

3D objects are largely displayed on two-dimensional mediums (such as paper and computer monitors). As such, graphical projections are a commonly used design element; notably, in engineering drawing, drafting, and computer graphics. Projections can be calculated through employment of mathematical analysis and formulae, or by using various geometric and optical techniques.

Overview
Projection is achieved by the use of imaginary "projectors"; the projected, mental image becomes the technician's vision of the desired, finished picture. Methods provide a uniform imaging procedure among people trained in technical graphics (mechanical drawing, computer aided design, etc.). By following a method, the technician may produce the envisioned picture on a planar surface such as drawing paper.

There are two graphical projection categories, each with its own method:
 * parallel projection
 * perspective projection

Parallel projection
In parallel projection, the lines of sight from the object to the projection plane are parallel to each other. Thus, lines that are parallel in three-dimensional space remain parallel in the two-dimensional projected image. Parallel projection also corresponds to a perspective projection with an infinite focal length (the distance from a camera's lens and focal point), or "zoom".

Images drawn in parallel projection rely upon the technique of axonometry ("to measure along axes"), as described in Pohlke's theorem. In general, the resulting image is oblique (the rays are not perpendicular to the image plane); but in special cases the result is orthographic (the rays are perpendicular to the image plane). Axonometry should not be confused with axonometric projection, as in English literature the latter usually refers only to a specific class of pictorials (see below).

Orthographic projection
The orthographic projection is derived from the principles of descriptive geometry and is a two-dimensional representation of a three-dimensional object. It is a parallel projection (the lines of projection are parallel both in reality and in the projection plane). It is the projection type of choice for working drawings.

If the normal of the viewing plane (the camera direction) is parallel to one of the primary axes (which is the x, y, or z axis), the mathematical transformation is as follows; To project the 3D point $$a_x$$, $$a_y$$, $$a_z$$ onto the 2D point $$b_x$$, $$b_y$$ using an orthographic projection parallel to the y axis (where positive y represents forward direction - profile view), the following equations can be used:

b_x = s_x a_x + c_x $$

b_y = s_z a_z + c_z $$ where the vector s is an arbitrary scale factor, and c is an arbitrary offset. These constants are optional, and can be used to properly align the viewport. Using matrix multiplication, the equations become:

\begin{bmatrix} b_x \\ b_y \end{bmatrix} = \begin{bmatrix} s_x & 0 & 0 \\ 0 & 0 & s_z \end{bmatrix}\begin{bmatrix} a_x \\ a_y \\ a_z \end{bmatrix} + \begin{bmatrix} c_x \\ c_z \end{bmatrix}. $$

While orthographically projected images represent the three dimensional nature of the object projected, they do not represent the object as it would be recorded photographically or perceived by a viewer observing it directly. In particular, parallel lengths at all points in an orthographically projected image are of the same scale regardless of whether they are far away or near to the virtual viewer. As a result, lengths are not foreshortened as they would be in a perspective projection.

Multiview projection
With multiview projections, up to six pictures (called primary views) of an object are produced, with each projection plane parallel to one of the coordinate axes of the object. The views are positioned relative to each other according to either of two schemes: first-angle or third-angle projection. In each, the appearances of views may be thought of as being projected onto planes that form a 6-sided box around the object. Although six different sides can be drawn, usually three views of a drawing give enough information to make a 3D object. These views are known as front view, top view, and end view. The terms elevation, plan and section are also used.

Oblique projection
In oblique projections the parallel projection rays are not perpendicular to the viewing plane as with orthographic projection, but strike the projection plane at an angle other than ninety degrees. In both orthographic and oblique projection, parallel lines in space appear parallel on the projected image. Because of its simplicity, oblique projection is used exclusively for pictorial purposes rather than for formal, working drawings. In an oblique pictorial drawing, the displayed angles among the axes as well as the foreshortening factors (scale) are arbitrary. The distortion created thereby is usually attenuated by aligning one plane of the imaged object to be parallel with the plane of projection thereby creating a true shape, full-size image of the chosen plane. Special types of oblique projections are:

Cavalier projection (45°)
In cavalier projection (sometimes cavalier perspective or high view point) a point of the object is represented by three coordinates, x, y and z. On the drawing, it is represented by only two coordinates, x″ and y″. On the flat drawing, two axes, x and z on the figure, are perpendicular and the length on these axes are drawn with a 1:1 scale; it is thus similar to the dimetric projections, although it is not an axonometric projection, as the third axis, here y, is drawn in diagonal, making an arbitrary angle with the x″ axis, usually 30 or 45°. The length of the third axis is not scaled.

Cabinet projection
The term cabinet projection (sometimes cabinet perspective) stems from its use in illustrations by the furniture industry. Like cavalier perspective, one face of the projected object is parallel to the viewing plane, and the third axis is projected as going off in an angle (typically 30° or 45° or arctan(2) = 63.4°). Unlike cavalier projection, where the third axis keeps its length, with cabinet projection the length of the receding lines is cut in half.

Military projection
A variant of oblique projection is called military projection. In this case, the horizontal sections are isometrically drawn so that the floor plans are not distorted and the verticals are drawn at an angle. The military projection is given by rotation in the xy-plane and a vertical translation an amount z.

Axonometric projection
Axonometric projections show an image of an object as viewed from a skew direction in order to reveal all three directions (axes) of space in one picture. Axonometric projections may be either orthographic or oblique. Axonometric instrument drawings are often used to approximate graphical perspective projections, but there is attendant distortion in the approximation. Because pictorial projections innately contain this distortion, in instrument drawings of pictorials great liberties may then be taken for economy of effort and best effect.

Axonometric projection is further subdivided into three categories: isometric projection, dimetric projection, and trimetric projection, depending on the exact angle at which the view deviates from the orthogonal. A typical characteristic of orthographic pictorials is that one axis of space is usually displayed as vertical.

Isometric projection
In isometric pictorials (for methods, see Isometric projection), the direction of viewing is such that the three axes of space appear equally foreshortened, and there is a common angle of 120° between them. The distortion caused by foreshortening is uniform, therefore the proportionality of all sides and lengths are preserved, and the axes share a common scale. This enables measurements to be read or taken directly from the drawing.

Dimetric projection
In dimetric pictorials (for methods, see Dimetric projection), the direction of viewing is such that two of the three axes of space appear equally foreshortened, of which the attendant scale and angles of presentation are determined according to the angle of viewing; the scale of the third direction (vertical) is determined separately. Approximations are common in dimetric drawings.

Trimetric projection
In trimetric pictorials (for methods, see Trimetric projection), the direction of viewing is such that all of the three axes of space appear unequally foreshortened. The scale along each of the three axes and the angles among them are determined separately as dictated by the angle of viewing. Approximations in Trimetric drawings are common.

Limitations of parallel projection
Objects drawn with parallel projection do not appear larger or smaller as they extend closer to or away from the viewer. While advantageous for architectural drawings, where measurements must be taken directly from the image, the result is a perceived distortion, since unlike perspective projection, this is not how our eyes or photography normally work. It also can easily result in situations where depth and altitude are difficult to gauge, as is shown in the illustration to the right.

In this isometric drawing, the blue sphere is two units higher than the red one. However, this difference in elevation is not apparent if one covers the right half of the picture, as the boxes (which serve as clues suggesting height) are then obscured.

This visual ambiguity has been exploited in op art, as well as "impossible object" drawings. M. C. Escher's Waterfall (1961), while not strictly utilizing parallel projection, is a well-known example, in which a channel of water seems to travel unaided along a downward path, only to then paradoxically fall once again as it returns to its source. The water thus appears to disobey the law of conservation of energy. An extreme example is depicted in the film Inception, where by a forced perspective trick an immobile stairway changes its connectivity. The video game Fez uses tricks of perspective to determine where a player can and cannot move in a puzzle-like fashion.

Perspective projection


Perspective projection or perspective transformation is a projection where three-dimensional objects are projected on a picture plane. This has the effect that distant objects appear smaller than nearer objects.

It also means that lines which are parallel in nature (that is, meet at the point at infinity) appear to intersect in the projected image. For example, if railways are pictured with perspective projection, they appear to converge towards a single point, called the vanishing point. Photographic lenses and the human eye work in the same way, therefore the perspective projection looks the most realistic. Perspective projection is usually categorized into one-point, two-point and three-point perspective, depending on the orientation of the projection plane towards the axes of the depicted object.

Graphical projection methods rely on the duality between lines and points, whereby two straight lines determine a point while two points determine a straight line. The orthogonal projection of the eye point onto the picture plane is called the principal vanishing point (P.P. in the scheme on the right, from the Italian term punto principale, coined during the renaissance).

Two relevant points of a line are:
 * its intersection with the picture plane, and
 * its vanishing point, found at the intersection between the parallel line from the eye point and the picture plane.

The principal vanishing point is the vanishing point of all horizontal lines perpendicular to the picture plane. The vanishing points of all horizontal lines lie on the horizon line. If, as is often the case, the picture plane is vertical, all vertical lines are drawn vertically, and have no finite vanishing point on the picture plane. Various graphical methods can be easily envisaged for projecting geometrical scenes. For example, lines traced from the eye point at 45° to the picture plane intersect the latter along a circle whose radius is the distance of the eye point from the plane, thus tracing that circle aids the construction of all the vanishing points of 45° lines; in particular, the intersection of that circle with the horizon line consists of two distance points. They are useful for drawing chessboard floors which, in turn, serve for locating the base of objects on the scene. In the perspective of a geometric solid on the right, after choosing the principal vanishing point —which determines the horizon line— the 45° vanishing point on the left side of the drawing completes the characterization of the (equally distant) point of view. Two lines are drawn from the orthogonal projection of each vertex, one at 45° and one at 90° to the picture plane. After intersecting the ground line, those lines go toward the distance point (for 45°) or the principal point (for 90°). Their new intersection locates the projection of the map. Natural heights are measured above the ground line and then projected in the same way until they meet the vertical from the map.

While orthographic projection ignores perspective to allow accurate measurements, perspective projection shows distant objects as smaller to provide additional realism.

Mathematical formula
The perspective projection requires a more involved definition as compared to orthographic projections. A conceptual aid to understanding the mechanics of this projection is to imagine the 2D projection as though the object(s) are being viewed through a camera viewfinder. The camera's position, orientation, and field of view control the behavior of the projection transformation. The following variables are defined to describe this transformation: Most conventions use positive z values (the plane being in front of the pinhole $$\mathbf{c}$$), however negative z values are physically more correct, but the image will be inverted both horizontally and vertically. Which results in:
 * $$\mathbf{a}_{x,y,z}$$ – the 3D position of a point A that is to be projected.
 * $$\mathbf{c}_{x,y,z}$$ – the 3D position of a point C representing the camera.
 * $$\mathbf{\theta}_{x,y,z}$$ – The orientation of the camera (represented by Tait–Bryan angles).
 * $$\mathbf{e}_{x,y,z}$$ – the display surface's position relative to aforementioned $$\mathbf{c}$$.
 * $$\mathbf{b}_{x,y}$$ – the 2D projection of $$\mathbf{a}.$$

When $$\mathbf{c}_{x,y,z}=\langle 0,0,0\rangle,$$ and $$\mathbf{\theta}_{x,y,z} = \langle 0,0,0\rangle,$$ the 3D vector $$\langle 1,2,0 \rangle$$ is projected to the 2D vector $$\langle 1,2 \rangle$$.

Otherwise, to compute $$\mathbf{b}_{x,y}$$ we first define a vector $$\mathbf{d}_{x,y,z}$$ as the position of point A with respect to a coordinate system defined by the camera, with origin in C and rotated by $$\mathbf{\theta}$$ with respect to the initial coordinate system. This is achieved by subtracting $$\mathbf{c}$$ from $$\mathbf{a}$$ and then applying a rotation by $$-\mathbf{\theta}$$ to the result. This transformation is often called a , and can be expressed as follows, expressing the rotation in terms of rotations about the x, y, and z axes (these calculations assume that the axes are ordered as a left-handed system of axes):

\begin{bmatrix} \mathbf{d}_x \\ \mathbf{d}_y \\ \mathbf{d}_z \end{bmatrix}=\begin{bmatrix} 1 & 0 & 0 \\   0 &  \cos ( \mathbf{\theta}_x ) & \sin ( \mathbf{ \theta}_x ) \\ 0 & -\sin ( \mathbf{ \theta}_x ) & \cos ( \mathbf{ \theta}_x ) \end{bmatrix}\begin{bmatrix} \cos ( \mathbf{\theta}_y ) & 0 & - \sin ( \mathbf{ \theta}_y ) \\ 0 & 1 & 0 \\   \sin ( \mathbf{\theta}_y ) & 0 & \cos ( \mathbf{\theta}_y ) \end{bmatrix}\begin{bmatrix} \cos ( \mathbf{\theta}_z ) & \sin ( \mathbf{\theta}_z ) & 0 \\ -\sin ( \mathbf{\theta}_z ) &  \cos ( \mathbf{\theta}_z ) & 0  \\ 0 & 0 & 1 \end{bmatrix}\left( {\begin{bmatrix}  \mathbf{a}_x  \\   \mathbf{a}_y  \\   \mathbf{a}_z  \\ \end{bmatrix} - \begin{bmatrix}   \mathbf{c}_x  \\   \mathbf{c}_y  \\   \mathbf{c}_z  \\ \end{bmatrix}} \right) $$ This representation corresponds to rotating by three Euler angles (more properly, Tait–Bryan angles), using the xyz convention, which can be interpreted either as "rotate about the extrinsic axes (axes of the scene) in the order z, y, x (reading right-to-left)" or "rotate about the intrinsic axes (axes of the camera) in the order x, y, z (reading left-to-right)". If the camera is not rotated ($$\mathbf{\theta}_{x,y,z} = \langle 0,0,0\rangle$$), then the matrices drop out (as identities), and this reduces to simply a shift: $$\mathbf{d} = \mathbf{a} - \mathbf{c}.$$

Alternatively, without using matrices (let us replace $$a_x - c_x$$ with $$\mathbf{x}$$ and so on, and abbreviate $$\cos\left(\theta_\alpha\right)$$ to $$c_\alpha$$ and $$\sin\left(\theta_\alpha\right)$$ to $$s_\alpha$$):

\begin{align} \mathbf{d}_x & = c_y (s_z \mathbf{y}+c_z \mathbf{x})-s_y \mathbf{z} \\ \mathbf{d}_y & = s_x (c_y \mathbf{z}+s_y (s_z \mathbf{y}+c_z \mathbf{x}))+c_x (c_z \mathbf{y}-s_z \mathbf{x}) \\ \mathbf{d}_z & = c_x (c_y \mathbf{z}+s_y (s_z \mathbf{y}+c_z \mathbf{x}))-s_x (c_z \mathbf{y}-s_z \mathbf{x}) \end{align} $$ This transformed point can then be projected onto the 2D plane using the formula (here, x/y is used as the projection plane; literature also may use x/z):

\begin{align} \mathbf{b}_x &= \frac{\mathbf{e}_z}{\mathbf{d}_z} \mathbf{d}_x + \mathbf{e}_x, \\[5pt] \mathbf{b}_y &= \frac{\mathbf{e}_z}{\mathbf{d}_z} \mathbf{d}_y + \mathbf{e}_y. \end{align} $$

Or, in matrix form using homogeneous coordinates, the system

\begin{bmatrix} \mathbf{f}_x \\ \mathbf{f}_y \\ \mathbf{f}_w \end{bmatrix}=\begin{bmatrix} 1 & 0 & \frac{\mathbf{e}_x}{\mathbf{e}_z} \\ 0 & 1 & \frac{\mathbf{e}_y}{\mathbf{e}_z} \\ 0 & 0 & \frac{1}{\mathbf{e}_z} \end{bmatrix}\begin{bmatrix} \mathbf{d}_x \\ \mathbf{d}_y \\ \mathbf{d}_z \end{bmatrix} $$ in conjunction with an argument using similar triangles, leads to division by the homogeneous coordinate, giving

\begin{align} \mathbf{b}_x &= \mathbf{f}_x / \mathbf{f}_w \\ \mathbf{b}_y &= \mathbf{f}_y / \mathbf{f}_w \end{align} $$

The distance of the viewer from the display surface, $$\mathbf{e}_z$$, directly relates to the field of view, where $$\alpha=2 \cdot \arctan(1/\mathbf{e}_z)$$ is the viewed angle. (Note: This assumes that you map the points (-1,-1) and (1,1) to the corners of your viewing surface)

The above equations can also be rewritten as:

\begin{align} \mathbf{b}_x & = (\mathbf{d}_x \mathbf{s}_x ) / (\mathbf{d}_z \mathbf{r}_x) \mathbf{r}_z, \\ \mathbf{b}_y & = (\mathbf{d}_y \mathbf{s}_y ) / (\mathbf{d}_z \mathbf{r}_y) \mathbf{r}_z. \end{align} $$ In which $$\mathbf{s}_{x,y}$$ is the display size, $$\mathbf{r}_{x,y}$$ is the recording surface size (CCD or Photographic film), $$\mathbf{r}_z$$ is the distance from the recording surface to the entrance pupil (camera center), and $$\mathbf{d}_z$$ is the distance, from the 3D point being projected, to the entrance pupil.

Subsequent clipping and scaling operations may be necessary to map the 2D plane onto any particular display media.

Weak perspective projection
A "weak" perspective projection uses the same principles of an orthographic projection, but requires the scaling factor to be specified, thus ensuring that closer objects appear bigger in the projection, and vice versa. It can be seen as a hybrid between an orthographic and a perspective projection, and described either as a perspective projection with individual point depths $$Z_i$$ replaced by an average constant depth $$Z_\text{ave}$$, or simply as an orthographic projection plus a scaling.

The weak-perspective model thus approximates perspective projection while using a simpler model, similar to the pure (unscaled) orthographic perspective. It is a reasonable approximation when the depth of the object along the line of sight is small compared to the distance from the camera, and the field of view is small. With these conditions, it can be assumed that all points on a 3D object are at the same distance $$Z_\text{ave}$$ from the camera without significant errors in the projection (compared to the full perspective model).

Equation
 * $$\begin{align}

& P_x = \frac X {Z_\text{ave}} \\[5pt] & P_y = \frac Y {Z_\text{ave}} \end{align}$$ assuming focal length $f = 1$.

Diagram


To determine which screen x-coordinate corresponds to a point at $$A_x,A_z$$ multiply the point coordinates by:
 * $$B_x = A_x \frac{B_z}{A_z}$$

where
 * $$B_x$$ is the screen x coordinate
 * $$A_x$$ is the model x coordinate
 * $$B_z$$ is the focal length&mdash;the axial distance from the camera center to the image plane
 * $$A_z$$ is the subject distance.

Because the camera is in 3D, the same works for the screen y-coordinate, substituting y for x in the above diagram and equation.

Alternatively, one could use clipping techniques, replacing the variables with values of the point that's are out of the FOV-angle and the point inside Camera Matrix.

This technique, also known as "Inverse Camera", is a Perspective Projection Calculus with known values to calculate the last point on visible angle, projecting from the invisible point, after all needed transformations finished.