Inviwo  0.9.10.1
Inviwo documentation
inviwo::Camera Class Referenceabstract

Base class for cameras. Override this class to set your own projection matrix. More...

#include <camera.h>

+ Inheritance diagram for inviwo::Camera:

Public Types

enum  Config { Show, Hide }
 

Public Member Functions

 Camera (vec3 lookFrom=vec3(0.0f, 0.0f, 2.0f), vec3 lookTo=vec3(0.0f), vec3 lookUp=vec3(0.0f, 1.0f, 0.0f), float nearPlane=0.01f, float farPlane=10000.0f)
 Default parameters creates a right handed coordinate system with camera looking towards the negative z-axis. with X = (1, 0, 0), Y = (0, 1, 0), Z = (0, 0, -1) More...
 
 Camera (const Camera &other)=default
 
Cameraoperator= (const Camera &other)=default
 
virtual Cameraclone () const =0
 
virtual bool update (const Camera *source)=0
 
virtual void configureProperties (CompositeProperty *comp, Config config)=0
 
const vec3 & getLookFrom () const
 
void setLookFrom (vec3 val)
 
const vec3 & getLookTo () const
 
void setLookTo (vec3 val)
 
const vec3 & getLookUp () const
 
void setLookUp (vec3 val)
 
virtual float getAspectRatio () const =0
 
virtual void setAspectRatio (float val)=0
 
vec3 getDirection () const
 Get unnormalized direction of camera: lookTo - lookFrom.
 
void setNearPlaneDist (float distance)
 Set distance to the near plane from lookFrom.
 
float getNearPlaneDist () const
 
void setFarPlaneDist (float distance)
 Set distance to the far plane from lookFrom.
 
float getFarPlaneDist () const
 
const mat4 & getViewMatrix () const
 
const mat4 & getProjectionMatrix () const
 
const mat4 & getInverseViewMatrix () const
 
const mat4 & getInverseProjectionMatrix () const
 
vec3 getWorldPosFromNormalizedDeviceCoords (const vec3 &ndcCoords) const
 Convert from normalized device coordinates (xyz in [-1 1]) to world coordinates. More...
 
vec4 getClipPosFromNormalizedDeviceCoords (const vec3 &ndcCoords) const
 Convert from normalized device coordinates (xyz in [-1 1]) to clip coordinates, where z value of -1 correspond to the near plane and 1 to the far plane. Coordinates outside of the [-1 1]^3 range will be clipped. More...
 
vec3 getNormalizedDeviceFromNormalizedScreenAtFocusPointDepth (const vec2 &normalizedScreenCoord) const
 
virtual void serialize (Serializer &s) const override
 
virtual void deserialize (Deserializer &d) override
 

Protected Member Functions

bool equalTo (const Camera &other) const
 
virtual mat4 calculateProjectionMatrix () const =0
 Calculate and return the projection matrix for the camera. More...
 
void invalidateViewMatrix ()
 
void invalidateProjectionMatrix ()
 

Protected Attributes

vec3 lookFrom_
 
vec3 lookTo_
 
vec3 lookUp_
 
float nearPlaneDist_
 Distance to the near plane from lookFrom.
 
float farPlaneDist_
 Distance to the far plane from lookFrom.
 
bool invalidViewMatrix_
 
bool invalidProjectionMatrix_
 
mat4 viewMatrix_
 
mat4 projectionMatrix_
 
mat4 inverseViewMatrix_
 
mat4 inverseProjectionMatrix_
 

Detailed Description

Base class for cameras. Override this class to set your own projection matrix.

See also
PerspectiveCamera
OrthographicCamera

Constructor & Destructor Documentation

◆ Camera()

inviwo::Camera::Camera ( vec3  lookFrom = vec3(0.0f, 0.0f, 2.0f),
vec3  lookTo = vec3(0.0f),
vec3  lookUp = vec3(0.0f, 1.0f, 0.0f),
float  nearPlane = 0.01f,
float  farPlane = 10000.0f 
)

Default parameters creates a right handed coordinate system with camera looking towards the negative z-axis. with X = (1, 0, 0), Y = (0, 1, 0), Z = (0, 0, -1)

Parameters
lookFromCamera position (eye)
lookToCamera focus point (center)
lookUpCamera up direction
nearPlaneCamera near clip-plane
farPlaneCamera far clip-plane

Member Function Documentation

◆ calculateProjectionMatrix()

virtual mat4 inviwo::Camera::calculateProjectionMatrix ( ) const
protectedpure virtual

Calculate and return the projection matrix for the camera.

Implement this function to provide your own projection computation functionality. For example orthogonal or perspective projection. This function will be called when the projection matrix is invalid.

See also
PerspectiveCamera
OrthographicCamera

Implemented in inviwo::SkewedPerspectiveCamera, inviwo::OrthographicCamera, and inviwo::PerspectiveCamera.

◆ getClipPosFromNormalizedDeviceCoords()

vec4 inviwo::Camera::getClipPosFromNormalizedDeviceCoords ( const vec3 &  ndcCoords) const

Convert from normalized device coordinates (xyz in [-1 1]) to clip coordinates, where z value of -1 correspond to the near plane and 1 to the far plane. Coordinates outside of the [-1 1]^3 range will be clipped.

Parameters
ndcCoordsxyz clip-coordinates in [-1 1]^3, and the clip w-coordinate used for perspective division.
Returns
Clip space position

◆ getWorldPosFromNormalizedDeviceCoords()

vec3 inviwo::Camera::getWorldPosFromNormalizedDeviceCoords ( const vec3 &  ndcCoords) const

Convert from normalized device coordinates (xyz in [-1 1]) to world coordinates.

Parameters
ndcCoordsCoordinates in [-1 1]
Returns
World space position

The documentation for this class was generated from the following files: