Cameras models and controllers for 3D rendering in PEX.
npm install pex-cam








Cameras models and controllers for 3D rendering in PEX.

``bash`
npm install pex-cam
`js
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);
``
Re-export classes and factory functions
An interface for cameras to extend
Camera controls to orbit around a target
CameraA class to create an orthographic camera
CameraA class to create a perspective camera
numbernumberobjectobjectobjectobjectobjectRe-export classes and factory functions
- pex-cam
- .perspective ⇒ PerspectiveCamera
- .orthographic ⇒ OrthographicCamera
- .orbiter ⇒ OrbiterControls
Factory function for perspective camera
Kind: static constant of pex-cam
| Param | Type |
| ----- | ------------------------------------------------------------------------------------------------------------------ |
| opts | CameraOptions \| PerspectiveCameraOptions |
Factory function for orthographic camera
Kind: static constant of pex-cam
| Param | Type |
| ----- | -------------------------------------------------------------------------------------------------------------------- |
| opts | CameraOptions \| OrthographicCameraOptions |
Factory function for orbiter controls
Kind: static constant of pex-cam
| Param | Type |
| ----- | -------------------------------------------------------------- |
| opts | OrbiterControlsOptions |
An interface for cameras to extend
Update the camera
Kind: instance method of Camera
| Param | Type |
| ----- | -------------------------------------------- |
| opts | CameraOptions |
Camera controls to orbit around a target
Kind: global class
- OrbiterControls
- new OrbiterControls(opts)
- .set(opts)
- .dispose()
Create an instance of OrbiterControls
| Param | Type |
| ----- | -------------------------------------------------------------- |
| opts | OrbiterControlsOptions |
Update the control
Kind: instance method of OrbiterControls
| Param | Type |
| ----- | --------------------------- |
| opts | OrbiterOptions |
Remove all event listeners
Kind: instance method of OrbiterControls
CameraA class to create an orthographic camera
Kind: global class
Extends: Camera
- OrthographicCamera ⇐ Camera
- new OrthographicCamera(opts)
- .set(opts)
Create an instance of PerspectiveCamera
| Param | Type |
| ----- | -------------------------------------------------------------------------------------------------------------------- |
| opts | CameraOptions \| OrthographicCameraOptions |
Update the camera
Kind: instance method of OrthographicCamera
Overrides: set
| Param | Type |
| ----- | -------------------------------------------------------------------------------------------------------------------- |
| opts | CameraOptions \| OrthographicCameraOptions |
CameraA 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
Create an instance of PerspectiveCamera
| Param | Type |
| ----- | ------------------------------------------------------------------------------------------------------------------ |
| opts | CameraOptions \| PerspectiveCameraOptions |
Update the camera
Kind: instance method of PerspectiveCamera
Overrides: set
| Param | Type |
| ----- | ------------------------------------------------------------------------------------------------------------------ |
| opts | CameraOptions \| PerspectiveCameraOptions |
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 | |
Create a picking ray in world coordinates
Kind: instance method of PerspectiveCamera
| Param | Type |
| ------------ | ------------------- |
| x | number |
| y | number |
| windowWidth | number |
| windowHeight | number |
numbernumberobjectKind: global typedef
Properties
| Name | Type |
| --------- | --------------------------------- |
| offset | module:pex-math~vec2 |
| size | module:pex-math~vec2 |
| totalSize | module:pex-math~vec2 |
objectKind: 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 | |
objectKind: global typedef
Properties
| Name | Type | Default |
| ----- | -------------------------------- | ------------------------ |
| [fov] | Radians | Math.PI / 3 |
objectKind: global typedef
Properties
| Name | Type | Default |
| -------- | ------------------- | --------------- |
| [left] | number | -1 |
| [right] | number | 1 |
| [bottom] | number | -1 |
| [top] | number | 1 |
| [zoom] | number | 1 |
objectKind: 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 |
MIT. See license file.