ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cloudViewer::visualization::rendering::Camera Class Referenceabstract

#include <Camera.h>

Inheritance diagram for cloudViewer::visualization::rendering::Camera:

Classes

struct  ProjectionInfo
 

Public Types

enum class  FovType { Vertical , Horizontal }
 
enum class  Projection { Perspective , Ortho }
 
using Transform = Eigen::Transform< float, 3, Eigen::Affine >
 
using ProjectionMatrix = Eigen::Transform< float, 3, Eigen::Projective >
 

Public Member Functions

virtual ~Camera ()=default
 
virtual void SetProjection (double fov, double aspect, double near, double far, FovType fov_type)=0
 
virtual void SetProjection (Projection projection, double left, double right, double bottom, double top, double near, double far)=0
 
virtual void SetProjection (const Eigen::Matrix3d &intrinsics, double near, double far, double width, double height)=0
 
virtual void LookAt (const Eigen::Vector3f &center, const Eigen::Vector3f &eye, const Eigen::Vector3f &up)=0
 
virtual void FromExtrinsics (const Eigen::Matrix4d &extrinsics)
 
virtual void SetModelMatrix (const Transform &view)=0
 
virtual void SetModelMatrix (const Eigen::Vector3f &forward, const Eigen::Vector3f &left, const Eigen::Vector3f &up)=0
 
virtual double GetNear () const =0
 
virtual double GetFar () const =0
 
virtual double GetFieldOfView () const =0
 only valid if fov was passed to SetProjection() More...
 
virtual FovType GetFieldOfViewType () const =0
 only valid if fov was passed to SetProjection() More...
 
virtual Eigen::Vector3f GetPosition () const =0
 
virtual Eigen::Vector3f GetForwardVector () const =0
 
virtual Eigen::Vector3f GetLeftVector () const =0
 
virtual Eigen::Vector3f GetUpVector () const =0
 
virtual Transform GetModelMatrix () const =0
 
virtual Transform GetViewMatrix () const =0
 
virtual ProjectionMatrix GetProjectionMatrix () const =0
 
virtual Transform GetCullingProjectionMatrix () const =0
 
virtual Eigen::Vector3f Unproject (float x, float y, float z, float view_width, float view_height) const =0
 
virtual Eigen::Vector2f GetNDC (const Eigen::Vector3f &pt) const =0
 
virtual double GetViewZ (float z_buffer) const =0
 
virtual const ProjectionInfoGetProjection () const =0
 
virtual void CopyFrom (const Camera *camera)=0
 

Static Public Member Functions

static void SetupCameraAsPinholeCamera (rendering::Camera &camera, const Eigen::Matrix3d &intrinsic, const Eigen::Matrix4d &extrinsic, int intrinsic_width_px, int intrinsic_height_px, const ccBBox &scene_bounds)
 
static float CalcNearPlane ()
 Returns a good value for the near plane. More...
 
static float CalcFarPlane (const rendering::Camera &camera, const ccBBox &scene_bounds)
 

Detailed Description

Definition at line 18 of file Camera.h.

Member Typedef Documentation

◆ ProjectionMatrix

using cloudViewer::visualization::rendering::Camera::ProjectionMatrix = Eigen::Transform<float, 3, Eigen::Projective>

Definition at line 30 of file Camera.h.

◆ Transform

using cloudViewer::visualization::rendering::Camera::Transform = Eigen::Transform<float, 3, Eigen::Affine>

Definition at line 29 of file Camera.h.

Member Enumeration Documentation

◆ FovType

Enumerator
Vertical 
Horizontal 

Definition at line 20 of file Camera.h.

◆ Projection

Enumerator
Perspective 
Ortho 

Definition at line 21 of file Camera.h.

Constructor & Destructor Documentation

◆ ~Camera()

virtual cloudViewer::visualization::rendering::Camera::~Camera ( )
virtualdefault

Member Function Documentation

◆ CalcFarPlane()

◆ CalcNearPlane()

◆ CopyFrom()

virtual void cloudViewer::visualization::rendering::Camera::CopyFrom ( const Camera camera)
pure virtual

◆ FromExtrinsics()

void cloudViewer::visualization::rendering::Camera::FromExtrinsics ( const Eigen::Matrix4d &  extrinsics)
virtual

Definition at line 19 of file Camera.cpp.

References SetModelMatrix().

Referenced by SetupCameraAsPinholeCamera().

◆ GetCullingProjectionMatrix()

virtual Transform cloudViewer::visualization::rendering::Camera::GetCullingProjectionMatrix ( ) const
pure virtual

◆ GetFar()

virtual double cloudViewer::visualization::rendering::Camera::GetFar ( ) const
pure virtual

◆ GetFieldOfView()

◆ GetFieldOfViewType()

virtual FovType cloudViewer::visualization::rendering::Camera::GetFieldOfViewType ( ) const
pure virtual

◆ GetForwardVector()

◆ GetLeftVector()

◆ GetModelMatrix()

◆ GetNDC()

virtual Eigen::Vector2f cloudViewer::visualization::rendering::Camera::GetNDC ( const Eigen::Vector3f &  pt) const
pure virtual

◆ GetNear()

◆ GetPosition()

◆ GetProjection()

◆ GetProjectionMatrix()

virtual ProjectionMatrix cloudViewer::visualization::rendering::Camera::GetProjectionMatrix ( ) const
pure virtual

◆ GetUpVector()

◆ GetViewMatrix()

virtual Transform cloudViewer::visualization::rendering::Camera::GetViewMatrix ( ) const
pure virtual

◆ GetViewZ()

virtual double cloudViewer::visualization::rendering::Camera::GetViewZ ( float  z_buffer) const
pure virtual

Returns the view space depth (i.e., distance from camera) for the given Z-buffer value

Implemented in cloudViewer::visualization::rendering::FilamentCamera.

◆ LookAt()

virtual void cloudViewer::visualization::rendering::Camera::LookAt ( const Eigen::Vector3f &  center,
const Eigen::Vector3f &  eye,
const Eigen::Vector3f &  up 
)
pure virtual

◆ SetModelMatrix() [1/2]

virtual void cloudViewer::visualization::rendering::Camera::SetModelMatrix ( const Eigen::Vector3f &  forward,
const Eigen::Vector3f &  left,
const Eigen::Vector3f &  up 
)
pure virtual

◆ SetModelMatrix() [2/2]

◆ SetProjection() [1/3]

virtual void cloudViewer::visualization::rendering::Camera::SetProjection ( const Eigen::Matrix3d &  intrinsics,
double  near,
double  far,
double  width,
double  height 
)
pure virtual

◆ SetProjection() [2/3]

virtual void cloudViewer::visualization::rendering::Camera::SetProjection ( double  fov,
double  aspect,
double  near,
double  far,
FovType  fov_type 
)
pure virtual

◆ SetProjection() [3/3]

virtual void cloudViewer::visualization::rendering::Camera::SetProjection ( Projection  projection,
double  left,
double  right,
double  bottom,
double  top,
double  near,
double  far 
)
pure virtual

Sets the projection matrix from a frustum defined by six planes.

Parameters
projectiontype of Projection to use.
leftdistance in world units from the camera to the left plane, at the near plane.
rightdistance in world units from the camera to the right plane, at the near plane.
bottomdistance in world units from the camera to the bottom plane, at the near plane.
topdistance in world units from the camera to the top plane, at the near plane.
neardistance in world units from the camera to the near plane. The near plane's
fardistance in world units from the camera to the far plane. The far plane's

Implemented in cloudViewer::visualization::rendering::FilamentCamera.

◆ SetupCameraAsPinholeCamera()

void cloudViewer::visualization::rendering::Camera::SetupCameraAsPinholeCamera ( rendering::Camera camera,
const Eigen::Matrix3d &  intrinsic,
const Eigen::Matrix4d &  extrinsic,
int  intrinsic_width_px,
int  intrinsic_height_px,
const ccBBox scene_bounds 
)
static

Convenience function for configuring a camera as a pinhole camera. Configures the projection using the intrinsics and bounds, and the model matrix using the extrinsic matrix. Equivalent to calling SetProjection() and FromExtrinsics().

Definition at line 35 of file Camera.cpp.

References CalcFarPlane(), FromExtrinsics(), cloudViewer::visualization::rendering::NEAR_PLANE, and SetProjection().

Referenced by cloudViewer::visualization::rendering::PyOffscreenRenderer::SetupCamera(), and cloudViewer::visualization::gui::SceneWidget::SetupCamera().

◆ Unproject()

virtual Eigen::Vector3f cloudViewer::visualization::rendering::Camera::Unproject ( float  x,
float  y,
float  z,
float  view_width,
float  view_height 
) const
pure virtual

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