pex-cam
v3.0.1
Published
Cameras models and controllers for 3D rendering in PEX.
Readme
pex-cam
Cameras models and controllers for 3D rendering in PEX.

Installation
npm install pex-camUsage
import {
perspective as createPerspectiveCamera,
orbiter as createOrbiter,
} from "pex-cam";
const perspectiveCamera = createPerspectiveCamera({
position: [2, 2, 2],
target: [0, -0.5, 0],
aspect: window.innerWidth / window.innerHeight,
});
const perspectiveOrbiter = createOrbiter({
camera: perspectiveCamera,
});
console.log(perspectiveCamera.projectionMatrix);API
Modules
Classes
Typedefs
pex-cam
Re-export classes and factory functions
pex-cam.perspective ⇒ PerspectiveCamera
Factory function for perspective camera
Kind: static constant of pex-cam
| Param | Type | | ----- | ------------------------------------------------------------------------------------------------------------------ | | opts | CameraOptions | PerspectiveCameraOptions |
pex-cam.orthographic ⇒ OrthographicCamera
Factory function for orthographic camera
Kind: static constant of pex-cam
| Param | Type | | ----- | -------------------------------------------------------------------------------------------------------------------- | | opts | CameraOptions | OrthographicCameraOptions |
pex-cam.orbiter ⇒ OrbiterControls
Factory function for orbiter controls
Kind: static constant of pex-cam
| Param | Type | | ----- | -------------------------------------------------------------- | | opts | OrbiterControlsOptions |
Camera
An interface for cameras to extend
Kind: global class
camera.set(opts)
Update the camera
Kind: instance method of Camera
| Param | Type | | ----- | -------------------------------------------- | | opts | CameraOptions |
OrbiterControls
Camera controls to orbit around a target
Kind: global class
new OrbiterControls(opts)
Create an instance of OrbiterControls
| Param | Type | | ----- | -------------------------------------------------------------- | | opts | OrbiterControlsOptions |
orbiterControls.set(opts)
Update the control
Kind: instance method of OrbiterControls
| Param | Type | | ----- | --------------------------- | | opts | OrbiterOptions |
orbiterControls.dispose()
Remove all event listeners
Kind: instance method of OrbiterControls
OrthographicCamera ⇐ Camera
A class to create an orthographic camera
Kind: global class Extends: Camera
new OrthographicCamera(opts)
Create an instance of PerspectiveCamera
| Param | Type | | ----- | -------------------------------------------------------------------------------------------------------------------- | | opts | CameraOptions | OrthographicCameraOptions |
orthographicCamera.set(opts)
Update the camera
Kind: instance method of OrthographicCamera Overrides: set
| Param | Type | | ----- | -------------------------------------------------------------------------------------------------------------------- | | opts | CameraOptions | OrthographicCameraOptions |
PerspectiveCamera ⇐ Camera
A class to create a perspective camera
Kind: global class Extends: Camera
- PerspectiveCamera ⇐ Camera
- new PerspectiveCamera(opts)
- .set(opts)
- .getViewRay(x, y, windowWidth, windowHeight) ⇒ module:pex-geom~ray
- .getWorldRay(x, y, windowWidth, windowHeight) ⇒ module:pex-geom~ray
new PerspectiveCamera(opts)
Create an instance of PerspectiveCamera
| Param | Type | | ----- | ------------------------------------------------------------------------------------------------------------------ | | opts | CameraOptions | PerspectiveCameraOptions |
perspectiveCamera.set(opts)
Update the camera
Kind: instance method of PerspectiveCamera Overrides: set
| Param | Type | | ----- | ------------------------------------------------------------------------------------------------------------------ | | opts | CameraOptions | PerspectiveCameraOptions |
perspectiveCamera.getViewRay(x, y, windowWidth, windowHeight) ⇒ module:pex-geom~ray
Create a picking ray in view (camera) coordinates
Kind: instance method of PerspectiveCamera
| Param | Type | Description | | ------------ | ------------------- | ----------- | | x | number | mouse x | | y | number | mouse y | | windowWidth | number | | | windowHeight | number | |
perspectiveCamera.getWorldRay(x, y, windowWidth, windowHeight) ⇒ module:pex-geom~ray
Create a picking ray in world coordinates
Kind: instance method of PerspectiveCamera
| Param | Type | | ------------ | ------------------- | | x | number | | y | number | | windowWidth | number | | windowHeight | number |
Radians : number
Kind: global typedef
Degrees : number
Kind: global typedef
CameraView : object
Kind: global typedef Properties
| Name | Type | | --------- | --------------------------------- | | offset | module:pex-math~vec2 | | size | module:pex-math~vec2 | | totalSize | module:pex-math~vec2 |
CameraOptions : object
Kind: global typedef Properties
| Name | Type | Default | | ------------------ | -------------------------------------- | -------------------------- | | [projectionMatrix] | module:pex-math~mat4 | mat4.create() | | [invViewMatrix] | module:pex-math~mat4 | mat4.create() | | [viewMatrix] | module:pex-math~mat4 | mat4.create() | | [position] | module:pex-math~vec3 | [0, 0, 3] | | [target] | module:pex-math~vec3 | [0, 0, 0] | | [up] | module:pex-math~vec3 | [0, 1, 0] | | [aspect] | number | 1 | | [near] | number | 0.1 | | [far] | number | 100 | | [view] | CameraView | |
PerspectiveCameraOptions : object
Kind: global typedef Properties
| Name | Type | Default | | ----- | -------------------------------- | ------------------------ | | [fov] | Radians | Math.PI / 3 |
OrthographicCameraOptions : object
Kind: global typedef Properties
| Name | Type | Default | | -------- | ------------------- | --------------- | | [left] | number | -1 | | [right] | number | 1 | | [bottom] | number | -1 | | [top] | number | 1 | | [zoom] | number | 1 |
OrbiterControlsOptions : object
Kind: global typedef Properties
| Name | Type | Default | | -------------- | -------------------------------- | ---------------------- | | camera | Camera | | | [element] | HTMLElement | document | | [easing] | number | 0.1 | | [zoom] | boolean | true | | [pan] | boolean | true | | [drag] | boolean | true | | [minDistance] | number | 0.01 | | [maxDistance] | number | Infinity | | [minLat] | Degrees | -89.5 | | [maxLat] | Degrees | 89.5 | | [minLon] | number | -Infinity | | [maxLon] | number | Infinity | | [panSlowdown] | number | 4 | | [zoomSlowdown] | number | 400 | | [dragSlowdown] | number | 4 | | [autoUpdate] | boolean | true |
License
MIT. See license file.
