@types/three
Version:
TypeScript definitions for three
175 lines (156 loc) • 6.21 kB
TypeScript
import { JSONMeta, Object3DJSON, Object3DJSONObject } from "../core/Object3D.js";
import { Camera } from "./Camera.js";
export interface OrthographicCameraJSONObject extends Object3DJSONObject {
zoom: number;
left: number;
right: number;
top: number;
bottom: number;
near: number;
far: number;
view?: {
enabled: boolean;
fullWidth: number;
fullHeight: number;
offsetX: number;
offsetY: number;
width: number;
height: number;
};
}
export interface OrthographicCameraJSON extends Object3DJSON {
object: OrthographicCameraJSONObject;
}
/**
* Camera that uses {@link https://en.wikipedia.org/wiki/Orthographic_projection | orthographic projection}.
* In this projection mode, an object's size in the rendered image stays constant regardless of its distance from the camera.
* This can be useful for rendering 2D scenes and UI elements, amongst other things.
* @example
* ```typescript
* const camera = new THREE.OrthographicCamera(width / -2, width / 2, height / 2, height / -2, 1, 1000);
* scene.add(camera);
* ```
* @see Example: {@link https://threejs.org/examples/#webgl_camera | camera }
* @see Example: {@link https://threejs.org/examples/#webgl_interactive_cubes_ortho | interactive / cubes / ortho }
* @see Example: {@link https://threejs.org/examples/#webgl_materials_cubemap_dynamic | materials / cubemap / dynamic }
* @see Example: {@link https://threejs.org/examples/#webgl_postprocessing_advanced | postprocessing / advanced }
* @see Example: {@link https://threejs.org/examples/#webgl_postprocessing_dof2 | postprocessing / dof2 }
* @see Example: {@link https://threejs.org/examples/#webgl_postprocessing_godrays | postprocessing / godrays }
* @see Example: {@link https://threejs.org/examples/#webgl_rtt | rtt }
* @see Example: {@link https://threejs.org/examples/#webgl_shaders_tonemapping | shaders / tonemapping }
* @see Example: {@link https://threejs.org/examples/#webgl_shadowmap | shadowmap }
* @see {@link https://threejs.org/docs/index.html#api/en/cameras/OrthographicCamera | Official Documentation}
* @see {@link https://github.com/mrdoob/three.js/blob/master/src/cameras/OrthographicCamera.js | Source}
*/
export class OrthographicCamera extends Camera {
/**
* Creates a new {@link OrthographicCamera}.
* @remarks Together these define the camera's {@link https://en.wikipedia.org/wiki/Viewing_frustum | viewing frustum}.
* @param left Camera frustum left plane. Default `-1`.
* @param right Camera frustum right plane. Default `1`.
* @param top Camera frustum top plane. Default `1`.
* @param bottom Camera frustum bottom plane. Default `-1`.
* @param near Camera frustum near plane. Default `0.1`.
* @param far Camera frustum far plane. Default `2000`.
*/
constructor(left?: number, right?: number, top?: number, bottom?: number, near?: number, far?: number);
/**
* Read-only flag to check if a given object is of type {@link OrthographicCamera}.
* @remarks This is a _constant_ value
* @defaultValue `true`
*/
readonly isOrthographicCamera: true;
/**
* @override
* @defaultValue `OrthographicCamera`
*/
override readonly type: string | "OrthographicCamera";
/**
* Gets or sets the zoom factor of the camera.
* @defaultValue `1`
*/
zoom: number;
/**
* Set by {@link setViewOffset | .setViewOffset()}.
* @defaultValue `null`
*/
view: null | {
enabled: boolean;
fullWidth: number;
fullHeight: number;
offsetX: number;
offsetY: number;
width: number;
height: number;
};
/**
* Camera frustum left plane.
* @remarks Expects a `Float`
* @defaultValue `-1`
*/
left: number;
/**
* Camera frustum right plane.
* @remarks Expects a `Float`
* @defaultValue `1`
*/
right: number;
/**
* Camera frustum top plane.
* @remarks Expects a `Float`
* @defaultValue `1`
*/
top: number;
/**
* Camera frustum bottom plane.
* @remarks Expects a `Float`.
* @defaultValue `-1`
*/
bottom: number;
/**
* Camera frustum near plane.`.
* @remarks The valid range is between `0` and the current value of the {@link far | .far} plane.
* @remarks Note that, unlike for the {@link THREE.PerspectiveCamera | PerspectiveCamera}, `0` is a valid value for an {@link THREE.OrthographicCamera | OrthographicCamera's} near plane.
* @remarks Expects a `Float`
* @defaultValue `0.1`
*/
near: number;
/**
* Camera frustum far plane.
* @remarks Must be greater than the current value of {@link near | .near} plane.
* @remarks Expects a `Float`
* @defaultValue `2000`
*/
far: number;
/**
* Updates the camera projection matrix
* @remarks Must be called after any change of parameters.
*/
updateProjectionMatrix(): void;
/**
* Sets an offset in a larger {@link https://en.wikipedia.org/wiki/Viewing_frustum | viewing frustum}
* @remarks
* This is useful for multi-window or multi-monitor/multi-machine setups
* For an example on how to use it see {@link PerspectiveCamera.setViewOffset | PerspectiveCamera}.
* @see {@link THREE.PerspectiveCamera.setViewOffset | PerspectiveCamera}.
* @param fullWidth Full width of multiview setup Expects a `Float`.
* @param fullHeight Full height of multiview setup Expects a `Float`.
* @param x Horizontal offset of subcamera Expects a `Float`.
* @param y Vertical offset of subcamera Expects a `Float`.
* @param width Width of subcamera Expects a `Float`.
* @param height Height of subcamera Expects a `Float`.
*/
setViewOffset(
fullWidth: number,
fullHeight: number,
offsetX: number,
offsetY: number,
width: number,
height: number,
): void;
/**
* Removes any offset set by the {@link setViewOffset | .setViewOffset} method.
*/
clearViewOffset(): void;
toJSON(meta?: JSONMeta): OrthographicCameraJSON;
}