![]() |
Open CASCADE Technology Reference Manual 8.0.0
|
Forward declaration. More...
#include <Graphic3d_Camera.hxx>

Public Types | |
| enum | Projection { Projection_Orthographic , Projection_Perspective , Projection_Stereo , Projection_MonoLeftEye , Projection_MonoRightEye } |
| Enumerates supported monographic projections. More... | |
| enum | FocusType { FocusType_Absolute , FocusType_Relative } |
| Enumerates approaches to define stereographic focus. More... | |
| enum | IODType { IODType_Absolute , IODType_Relative } |
| Enumerates approaches to define Intraocular distance. More... | |
Public Types inherited from Standard_Transient | |
| typedef void | base_type |
| Returns a type descriptor about this object. | |
Public Member Functions | |
| Graphic3d_Camera () | |
| Default constructor. Initializes camera with the following properties: Eye (0, 0, -2); Center (0, 0, 0); Up (0, 1, 0); Type (Orthographic); FOVy (45); Scale (1000); IsStereo(false); ZNear (0.001); ZFar (3000.0); Aspect(1); ZFocus(1.0); ZFocusType(Relative); IOD(0.05); IODType(Relative) | |
| Graphic3d_Camera (const occ::handle< Graphic3d_Camera > &theOther) | |
| Copy constructor. | |
| void | CopyMappingData (const occ::handle< Graphic3d_Camera > &theOtherCamera) |
| Initialize mapping related parameters from other camera handle. | |
| void | CopyOrientationData (const occ::handle< Graphic3d_Camera > &theOtherCamera) |
| Initialize orientation related parameters from other camera handle. | |
| void | Copy (const occ::handle< Graphic3d_Camera > &theOther) |
| Copy properties of another camera. | |
Public camera properties | |
| const gp_Dir & | Direction () const |
| Get camera look direction. | |
| void | SetDirectionFromEye (const gp_Dir &theDir) |
| Sets camera look direction preserving the current Eye() position. WARNING! This method does NOT verify that the current Up() vector is orthogonal to the new Direction. | |
| void | SetDirection (const gp_Dir &theDir) |
| Sets camera look direction and computes the new Eye position relative to current Center. WARNING! This method does NOT verify that the current Up() vector is orthogonal to the new Direction. | |
| const gp_Dir & | Up () const |
| Get camera Up direction vector. | |
| void | SetUp (const gp_Dir &theUp) |
| Sets camera Up direction vector, orthogonal to camera direction. WARNING! This method does NOT verify that the new Up vector is orthogonal to the current Direction(). | |
| void | OrthogonalizeUp () |
| Orthogonalize up direction vector. | |
| gp_Dir | OrthogonalizedUp () const |
| Return a copy of orthogonalized up direction vector. | |
| gp_Dir | SideRight () const |
| Right side direction. | |
| const gp_Pnt & | Eye () const |
| Get camera Eye position. | |
| void | MoveEyeTo (const gp_Pnt &theEye) |
| Sets camera Eye position. Unlike SetEye(), this method only changes Eye point and preserves camera direction. | |
| void | SetEyeAndCenter (const gp_Pnt &theEye, const gp_Pnt &theCenter) |
| Sets camera Eye and Center positions. | |
| void | SetEye (const gp_Pnt &theEye) |
| Sets camera Eye position. WARNING! For backward compatibility reasons, this method also changes view direction, so that the new direction is computed from new Eye position to old Center position. | |
| gp_Pnt | Center () const |
| Get Center of the camera, e.g. the point where camera looks at. This point is computed as Eye() translated along Direction() at Distance(). | |
| void | SetCenter (const gp_Pnt &theCenter) |
| Sets Center of the camera, e.g. the point where camera looks at. This methods changes camera direction, so that the new direction is computed from current Eye position to specified Center position. | |
| double | Distance () const |
| Get distance of Eye from camera Center. | |
| void | SetDistance (const double theDistance) |
| Set distance of Eye from camera Center. | |
| double | Scale () const |
| Get camera scale. | |
| void | SetScale (const double theScale) |
| Sets camera scale. For orthographic projection the scale factor corresponds to parallel scale of view mapping (i.e. size of viewport). For perspective camera scale is converted to distance. The scale specifies equal size of the view projection in both dimensions assuming that the aspect is 1.0. The projection height and width are specified with the scale and correspondingly multiplied by the aspect. | |
| const gp_XYZ & | AxialScale () const |
| Get camera axial scale. | |
| void | SetAxialScale (const gp_XYZ &theAxialScale) |
| Set camera axial scale. | |
| void | SetProjectionType (const Projection theProjection) |
| Change camera projection type. When switching to perspective projection from orthographic one, the ZNear and ZFar are reset to default values (0.001, 3000.0) if less than 0.0. | |
| Projection | ProjectionType () const |
| bool | IsOrthographic () const |
| Check that the camera projection is orthographic. | |
| bool | IsStereo () const |
| Check whether the camera projection is stereo. Please note that stereo rendering is now implemented with support of Quad buffering. | |
| void | SetFOVy (const double theFOVy) |
| Set Field Of View (FOV) in y axis for perspective projection. Field of View in x axis is automatically scaled from view aspect ratio. | |
| double | FOVy () const |
| Get Field Of View (FOV) in y axis. | |
| double | FOVx () const |
| Get Field Of View (FOV) in x axis. | |
| double | FOV2d () const |
| Get Field Of View (FOV) restriction for 2D on-screen elements; 180 degrees by default. When 2D FOV is smaller than FOVy or FOVx, 2D elements defined within offset from view corner will be extended to fit into specified 2D FOV. This can be useful to make 2D elements sharply visible, like in case of HMD normally having extra large FOVy. | |
| void | SetFOV2d (double theFOV) |
| Set Field Of View (FOV) restriction for 2D on-screen elements. | |
| bool | FitMinMax (const Bnd_Box &theBox, const double theResolution, const bool theToEnlargeIfLine) |
| Adjust camera to fit in specified AABB. | |
| bool | ZFitAll (const double theScaleFactor, const Bnd_Box &theMinMax, const Bnd_Box &theGraphicBB, double &theZNear, double &theZFar) const |
| Estimate Z-min and Z-max planes of projection volume to match the displayed objects. The methods ensures that view volume will be close by depth range to the displayed objects. Fitting assumes that for orthogonal projection the view volume contains the displayed objects completely. For zoomed perspective view, the view volume is adjusted such that it contains the objects or their parts, located in front of the camera. | |
| void | ZFitAll (const double theScaleFactor, const Bnd_Box &theMinMax, const Bnd_Box &theGraphicBB) |
| Change Z-min and Z-max planes of projection volume to match the displayed objects. | |
| void | SetZRange (const double theZNear, const double theZFar) |
| Change the Near and Far Z-clipping plane positions. For orthographic projection, theZNear, theZFar can be negative or positive. For perspective projection, only positive values are allowed. Program error exception is raised if non-positive values are specified for perspective projection or theZNear >= theZFar. | |
| double | ZNear () const |
| Get the Near Z-clipping plane position. | |
| double | ZFar () const |
| Get the Far Z-clipping plane position. | |
| bool | IsZeroToOneDepth () const |
| Return TRUE if camera should calculate projection matrix for [0, 1] depth range or for [-1, 1] range. FALSE by default. | |
| void | SetZeroToOneDepth (bool theIsZeroToOne) |
| Set using [0, 1] depth range or [-1, 1] range. | |
| void | SetAspect (const double theAspect) |
| Changes width / height display ratio. | |
| double | Aspect () const |
| Get camera display ratio. | |
| void | SetZFocus (const FocusType theType, const double theZFocus) |
| Sets stereographic focus distance. | |
| double | ZFocus () const |
| Get stereographic focus value. | |
| FocusType | ZFocusType () const |
| Get stereographic focus definition type. | |
| void | SetIOD (const IODType theType, const double theIOD) |
| Sets Intraocular distance. | |
| double | IOD () const |
| Get Intraocular distance value. | |
| IODType | GetIODType () const |
| Get Intraocular distance definition type. | |
| const Graphic3d_CameraTile & | Tile () const |
| Get current tile. | |
| void | SetTile (const Graphic3d_CameraTile &theTile) |
| Sets the Tile defining the drawing sub-area within View. Note that tile defining a region outside the view boundaries is also valid - use method Graphic3d_CameraTile::Cropped() to assign a cropped copy. | |
| void | SetIdentityOrientation () |
| Sets camera parameters to make current orientation matrix identity one. | |
Basic camera operations | |
| void | Transform (const gp_Trsf &theTrsf) |
| Transform orientation components of the camera: Eye, Up and Center points. | |
| gp_XYZ | ViewDimensions () const |
| Calculate view plane size at center (target) point and distance between ZFar and ZNear planes. | |
| gp_XYZ | ViewDimensions (const double theZValue) const |
| Calculate view plane size at center point with specified Z offset and distance between ZFar and ZNear planes. | |
| double | NDC2dOffsetX () const |
| Return offset to the view corner in NDC space within dimension X for 2d on-screen elements, which is normally 0.5. Can be clamped when FOVx exceeds FOV2d. | |
| double | NDC2dOffsetY () const |
| Return offset to the view corner in NDC space within dimension X for 2d on-screen elements, which is normally 0.5. Can be clamped when FOVy exceeds FOV2d. | |
| void | Frustum (gp_Pln &theLeft, gp_Pln &theRight, gp_Pln &theBottom, gp_Pln &theTop, gp_Pln &theNear, gp_Pln &theFar) const |
| Calculate WCS frustum planes for the camera projection volume. Frustum is a convex volume determined by six planes directing inwards. The frustum planes are usually used as inputs for camera algorithms. Thus, if any changes to projection matrix calculation are necessary, the frustum planes calculation should be also touched. | |
Projection methods | |
| gp_Pnt | Project (const gp_Pnt &thePnt) const |
| Project point from world coordinate space to normalized device coordinates (mapping). | |
| gp_Pnt | UnProject (const gp_Pnt &thePnt) const |
| Unproject point from normalized device coordinates to world coordinate space. | |
| gp_Pnt | ConvertView2Proj (const gp_Pnt &thePnt) const |
| Convert point from view coordinate space to projection coordinate space. | |
| gp_Pnt | ConvertProj2View (const gp_Pnt &thePnt) const |
| Convert point from projection coordinate space to view coordinate space. | |
| gp_Pnt | ConvertWorld2View (const gp_Pnt &thePnt) const |
| Convert point from world coordinate space to view coordinate space. | |
| gp_Pnt | ConvertView2World (const gp_Pnt &thePnt) const |
| Convert point from view coordinate space to world coordinates. | |
Camera modification state | |
| const Graphic3d_WorldViewProjState & | WorldViewProjState () const |
| size_t | ProjectionState () const |
| Returns modification state of camera projection matrix. | |
| size_t | WorldViewState () const |
| Returns modification state of camera world view transformation matrix. | |
Lazily-computed orientation and projection matrices derived from camera parameters | |
| const NCollection_Mat4< double > & | OrientationMatrix () const |
| Get orientation matrix. | |
| const NCollection_Mat4< float > & | OrientationMatrixF () const |
| Get orientation matrix of float precision. | |
| const NCollection_Mat4< double > & | ProjectionMatrix () const |
| Get monographic or middle point projection matrix used for monographic rendering and for point projection / unprojection. | |
| const NCollection_Mat4< float > & | ProjectionMatrixF () const |
| Get monographic or middle point projection matrix of float precision used for monographic rendering and for point projection / unprojection. | |
| const NCollection_Mat4< double > & | ProjectionStereoLeft () const |
| const NCollection_Mat4< float > & | ProjectionStereoLeftF () const |
| const NCollection_Mat4< double > & | ProjectionStereoRight () const |
| const NCollection_Mat4< float > & | ProjectionStereoRightF () const |
| void | InvalidateProjection () |
| Invalidate state of projection matrix. The matrix will be updated on request. | |
| void | InvalidateOrientation () |
| Invalidate orientation matrix. The matrix will be updated on request. | |
| void | StereoProjection (NCollection_Mat4< double > &theProjL, NCollection_Mat4< double > &theHeadToEyeL, NCollection_Mat4< double > &theProjR, NCollection_Mat4< double > &theHeadToEyeR) const |
| Get stereo projection matrices. | |
| void | StereoProjectionF (NCollection_Mat4< float > &theProjL, NCollection_Mat4< float > &theHeadToEyeL, NCollection_Mat4< float > &theProjR, NCollection_Mat4< float > &theHeadToEyeR) const |
| Get stereo projection matrices. | |
| void | ResetCustomProjection () |
| Unset all custom frustums and projection matrices. | |
| bool | IsCustomStereoFrustum () const |
| Return TRUE if custom stereo frustums are set. | |
| void | SetCustomStereoFrustums (const Aspect_FrustumLRBT< double > &theFrustumL, const Aspect_FrustumLRBT< double > &theFrustumR) |
| Set custom stereo frustums. These can be retrieved from APIs like OpenVR. | |
| bool | IsCustomStereoProjection () const |
| Return TRUE if custom stereo projection matrices are set. | |
| void | SetCustomStereoProjection (const NCollection_Mat4< double > &theProjL, const NCollection_Mat4< double > &theHeadToEyeL, const NCollection_Mat4< double > &theProjR, const NCollection_Mat4< double > &theHeadToEyeR) |
| Set custom stereo projection matrices. | |
| bool | IsCustomMonoProjection () const |
| Return TRUE if custom projection matrix is set. | |
| void | SetCustomMonoProjection (const NCollection_Mat4< double > &theProj) |
| Set custom projection matrix. | |
| void | DumpJson (Standard_OStream &theOStream, int theDepth=-1) const |
| Dumps the content of me into the stream. | |
Public Member Functions inherited from Standard_Transient | |
| Standard_Transient () | |
| Empty constructor. | |
| Standard_Transient (const Standard_Transient &) | |
| Copy constructor – does nothing. | |
| Standard_Transient & | operator= (const Standard_Transient &) |
| Assignment operator, needed to avoid copying reference counter. | |
| virtual | ~Standard_Transient ()=default |
| Destructor must be virtual. | |
| virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
| Returns a type descriptor about this object. | |
| bool | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
| Returns a true value if this is an instance of Type. | |
| bool | IsInstance (const char *const theTypeName) const |
| Returns a true value if this is an instance of TypeName. | |
| bool | IsKind (const opencascade::handle< Standard_Type > &theType) const |
| Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
| bool | IsKind (const char *const theTypeName) const |
| Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
| Standard_Transient * | This () const |
| Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. | |
| int | GetRefCount () const noexcept |
| Get the reference counter of this object. | |
| void | IncrementRefCounter () noexcept |
| Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations. | |
| int | DecrementRefCounter () noexcept |
| Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement. | |
| virtual void | Delete () const |
| Memory deallocator for transient classes. | |
Static Public Member Functions | |
| static void | Interpolate (const occ::handle< Graphic3d_Camera > &theStart, const occ::handle< Graphic3d_Camera > &theEnd, const double theT, occ::handle< Graphic3d_Camera > &theCamera) |
| Linear interpolation tool for camera orientation and position. This tool interpolates camera parameters scale, eye, center, rotation (up and direction vectors) independently. | |
Static Public Member Functions inherited from Standard_Transient | |
| static constexpr const char * | get_type_name () |
| Returns a type descriptor about this object. | |
| static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
| Returns type descriptor of Standard_Transient class. | |
Managing projection and orientation cache | |
| enum | { FrustumVert_LeftBottomNear , FrustumVert_LeftBottomFar , FrustumVert_LeftTopNear , FrustumVert_LeftTopFar , FrustumVert_RightBottomNear , FrustumVert_RightBottomFar , FrustumVert_RightTopNear , FrustumVert_RightTopFar , FrustumVerticesNB } |
| Enumerates vertices of view volume. More... | |
| void | FrustumPoints (NCollection_Array1< NCollection_Vec3< double > > &thePoints, const NCollection_Mat4< double > &theModelWorld=NCollection_Mat4< double >()) const |
| Fill array of current view frustum corners. The size of this array is equal to FrustumVerticesNB. The order of vertices is as defined in FrustumVert_* enumeration. | |
Forward declaration.
Camera class provides object-oriented approach to setting up projection and orientation properties of 3D view.
Enumerates supported monographic projections.
| Enumerator | |
|---|---|
| Projection_Orthographic | |
| Projection_Perspective | |
| Projection_Stereo | |
| Projection_MonoLeftEye | |
| Projection_MonoRightEye | |
| Graphic3d_Camera::Graphic3d_Camera | ( | ) |
Default constructor. Initializes camera with the following properties: Eye (0, 0, -2); Center (0, 0, 0); Up (0, 1, 0); Type (Orthographic); FOVy (45); Scale (1000); IsStereo(false); ZNear (0.001); ZFar (3000.0); Aspect(1); ZFocus(1.0); ZFocusType(Relative); IOD(0.05); IODType(Relative)
| Graphic3d_Camera::Graphic3d_Camera | ( | const occ::handle< Graphic3d_Camera > & | theOther | ) |
Copy constructor.
| [in] | theOther | the camera to copy from. |
|
inline |
Get camera display ratio.
|
inline |
Get camera axial scale.
|
inline |
Get Center of the camera, e.g. the point where camera looks at. This point is computed as Eye() translated along Direction() at Distance().
Convert point from projection coordinate space to view coordinate space.
| [in] | thePnt | the point in NDC. |
Convert point from view coordinate space to projection coordinate space.
| [in] | thePnt | the point in VCS. |
Convert point from view coordinate space to world coordinates.
| [in] | thePnt | the 3D point in VCS. |
Convert point from world coordinate space to view coordinate space.
| [in] | thePnt | the 3D point in WCS. |
| void Graphic3d_Camera::Copy | ( | const occ::handle< Graphic3d_Camera > & | theOther | ) |
Copy properties of another camera.
| [in] | theOther | the camera to copy from. |
| void Graphic3d_Camera::CopyMappingData | ( | const occ::handle< Graphic3d_Camera > & | theOtherCamera | ) |
Initialize mapping related parameters from other camera handle.
| void Graphic3d_Camera::CopyOrientationData | ( | const occ::handle< Graphic3d_Camera > & | theOtherCamera | ) |
Initialize orientation related parameters from other camera handle.
|
inline |
Get camera look direction.
|
inline |
Get distance of Eye from camera Center.
| void Graphic3d_Camera::DumpJson | ( | Standard_OStream & | theOStream, |
| int | theDepth = -1 ) const |
Dumps the content of me into the stream.
|
inline |
Get camera Eye position.
| bool Graphic3d_Camera::FitMinMax | ( | const Bnd_Box & | theBox, |
| const double | theResolution, | ||
| const bool | theToEnlargeIfLine ) |
Adjust camera to fit in specified AABB.
|
inline |
Get Field Of View (FOV) restriction for 2D on-screen elements; 180 degrees by default. When 2D FOV is smaller than FOVy or FOVx, 2D elements defined within offset from view corner will be extended to fit into specified 2D FOV. This can be useful to make 2D elements sharply visible, like in case of HMD normally having extra large FOVy.
|
inline |
Get Field Of View (FOV) in x axis.
|
inline |
Get Field Of View (FOV) in y axis.
| void Graphic3d_Camera::Frustum | ( | gp_Pln & | theLeft, |
| gp_Pln & | theRight, | ||
| gp_Pln & | theBottom, | ||
| gp_Pln & | theTop, | ||
| gp_Pln & | theNear, | ||
| gp_Pln & | theFar ) const |
Calculate WCS frustum planes for the camera projection volume. Frustum is a convex volume determined by six planes directing inwards. The frustum planes are usually used as inputs for camera algorithms. Thus, if any changes to projection matrix calculation are necessary, the frustum planes calculation should be also touched.
| [out] | theLeft | the frustum plane for left side of view. |
| [out] | theRight | the frustum plane for right side of view. |
| [out] | theBottom | the frustum plane for bottom side of view. |
| [out] | theTop | the frustum plane for top side of view. |
| [out] | theNear | the frustum plane for near side of view. |
| [out] | theFar | the frustum plane for far side of view. |
| void Graphic3d_Camera::FrustumPoints | ( | NCollection_Array1< NCollection_Vec3< double > > & | thePoints, |
| const NCollection_Mat4< double > & | theModelWorld = NCollection_Mat4< double >() ) const |
Fill array of current view frustum corners. The size of this array is equal to FrustumVerticesNB. The order of vertices is as defined in FrustumVert_* enumeration.
|
inline |
Get Intraocular distance definition type.
|
static |
Linear interpolation tool for camera orientation and position. This tool interpolates camera parameters scale, eye, center, rotation (up and direction vectors) independently.
Eye/Center interpolation is performed through defining an anchor point in-between Center and Eye. The anchor position is defined as point near to the camera point which has smaller translation part. The main idea is to keep the distance between Center and Eye (which will change if Center and Eye translation will be interpolated independently). E.g.:
This transformation might be not in line with user expectations. In this case, application might define intermediate camera positions for interpolation or implement own interpolation logic.
| [in] | theStart | initial camera position |
| [in] | theEnd | final camera position |
| [in] | theT | step between initial and final positions within [0,1] range |
| [out] | theCamera | interpolation result |
| void Graphic3d_Camera::InvalidateOrientation | ( | ) |
Invalidate orientation matrix. The matrix will be updated on request.
| void Graphic3d_Camera::InvalidateProjection | ( | ) |
Invalidate state of projection matrix. The matrix will be updated on request.
|
inline |
Get Intraocular distance value.
|
inline |
Return TRUE if custom projection matrix is set.
|
inline |
Return TRUE if custom stereo frustums are set.
|
inline |
Return TRUE if custom stereo projection matrices are set.
|
inline |
Check that the camera projection is orthographic.
|
inline |
Check whether the camera projection is stereo. Please note that stereo rendering is now implemented with support of Quad buffering.
|
inline |
Return TRUE if camera should calculate projection matrix for [0, 1] depth range or for [-1, 1] range. FALSE by default.
|
inline |
Return offset to the view corner in NDC space within dimension X for 2d on-screen elements, which is normally 0.5. Can be clamped when FOVx exceeds FOV2d.
|
inline |
Return offset to the view corner in NDC space within dimension X for 2d on-screen elements, which is normally 0.5. Can be clamped when FOVy exceeds FOV2d.
| const NCollection_Mat4< double > & Graphic3d_Camera::OrientationMatrix | ( | ) | const |
Get orientation matrix.
| const NCollection_Mat4< float > & Graphic3d_Camera::OrientationMatrixF | ( | ) | const |
Get orientation matrix of float precision.
| gp_Dir Graphic3d_Camera::OrthogonalizedUp | ( | ) | const |
Return a copy of orthogonalized up direction vector.
| void Graphic3d_Camera::OrthogonalizeUp | ( | ) |
Orthogonalize up direction vector.
Project point from world coordinate space to normalized device coordinates (mapping).
| [in] | thePnt | the 3D point in WCS. |
| const NCollection_Mat4< double > & Graphic3d_Camera::ProjectionMatrix | ( | ) | const |
Get monographic or middle point projection matrix used for monographic rendering and for point projection / unprojection.
| const NCollection_Mat4< float > & Graphic3d_Camera::ProjectionMatrixF | ( | ) | const |
Get monographic or middle point projection matrix of float precision used for monographic rendering and for point projection / unprojection.
|
inline |
Returns modification state of camera projection matrix.
| const NCollection_Mat4< double > & Graphic3d_Camera::ProjectionStereoLeft | ( | ) | const |
| const NCollection_Mat4< float > & Graphic3d_Camera::ProjectionStereoLeftF | ( | ) | const |
| const NCollection_Mat4< double > & Graphic3d_Camera::ProjectionStereoRight | ( | ) | const |
| const NCollection_Mat4< float > & Graphic3d_Camera::ProjectionStereoRightF | ( | ) | const |
|
inline |
| void Graphic3d_Camera::ResetCustomProjection | ( | ) |
Unset all custom frustums and projection matrices.
| double Graphic3d_Camera::Scale | ( | ) | const |
Get camera scale.
Changes width / height display ratio.
| [in] | theAspect | the display ratio. |
Set camera axial scale.
| [in] | theAxialScale | the axial scale vector. |
Sets Center of the camera, e.g. the point where camera looks at. This methods changes camera direction, so that the new direction is computed from current Eye position to specified Center position.
| [in] | theCenter | the point where the camera looks at. |
| void Graphic3d_Camera::SetCustomMonoProjection | ( | const NCollection_Mat4< double > & | theProj | ) |
Set custom projection matrix.
| void Graphic3d_Camera::SetCustomStereoFrustums | ( | const Aspect_FrustumLRBT< double > & | theFrustumL, |
| const Aspect_FrustumLRBT< double > & | theFrustumR ) |
Set custom stereo frustums. These can be retrieved from APIs like OpenVR.
| void Graphic3d_Camera::SetCustomStereoProjection | ( | const NCollection_Mat4< double > & | theProjL, |
| const NCollection_Mat4< double > & | theHeadToEyeL, | ||
| const NCollection_Mat4< double > & | theProjR, | ||
| const NCollection_Mat4< double > & | theHeadToEyeR ) |
Set custom stereo projection matrices.
| [in] | theProjL | left eye projection matrix |
| [in] | theHeadToEyeL | left head to eye translation matrix |
| [in] | theProjR | right eye projection matrix |
| [in] | theHeadToEyeR | right head to eye translation matrix |
Sets camera look direction and computes the new Eye position relative to current Center. WARNING! This method does NOT verify that the current Up() vector is orthogonal to the new Direction.
| [in] | theDir | the direction. |
Set distance of Eye from camera Center.
| [in] | theDistance | the distance. |
Sets camera Eye position. WARNING! For backward compatibility reasons, this method also changes view direction, so that the new direction is computed from new Eye position to old Center position.
| [in] | theEye | the location of camera's Eye. |
Sets camera Eye and Center positions.
| [in] | theEye | the location of camera's Eye |
| [in] | theCenter | the location of camera's Center |
Set Field Of View (FOV) restriction for 2D on-screen elements.
Set Field Of View (FOV) in y axis for perspective projection. Field of View in x axis is automatically scaled from view aspect ratio.
| [in] | theFOVy | the FOV in degrees. |
| void Graphic3d_Camera::SetIdentityOrientation | ( | ) |
Sets camera parameters to make current orientation matrix identity one.
Sets Intraocular distance.
| [in] | theType | the IOD definition type. IOD can be defined as absolute value or relatively to (as coefficient of) camera focal length. |
| [in] | theIOD | the Intraocular distance. |
| void Graphic3d_Camera::SetProjectionType | ( | const Projection | theProjection | ) |
Sets camera scale. For orthographic projection the scale factor corresponds to parallel scale of view mapping (i.e. size of viewport). For perspective camera scale is converted to distance. The scale specifies equal size of the view projection in both dimensions assuming that the aspect is 1.0. The projection height and width are specified with the scale and correspondingly multiplied by the aspect.
| [in] | theScale | the scale factor. |
| void Graphic3d_Camera::SetTile | ( | const Graphic3d_CameraTile & | theTile | ) |
Sets the Tile defining the drawing sub-area within View. Note that tile defining a region outside the view boundaries is also valid - use method Graphic3d_CameraTile::Cropped() to assign a cropped copy.
| theTile | tile definition |
Sets camera Up direction vector, orthogonal to camera direction. WARNING! This method does NOT verify that the new Up vector is orthogonal to the current Direction().
| [in] | theUp | the Up direction vector. |
Set using [0, 1] depth range or [-1, 1] range.
Sets stereographic focus distance.
| [in] | theType | the focus definition type. Focus can be defined as absolute value or relatively to (as coefficient of) coefficient of camera focal length. |
| [in] | theZFocus | the focus absolute value or coefficient depending on the passed definition type. |
Change the Near and Far Z-clipping plane positions. For orthographic projection, theZNear, theZFar can be negative or positive. For perspective projection, only positive values are allowed. Program error exception is raised if non-positive values are specified for perspective projection or theZNear >= theZFar.
| [in] | theZNear | the distance of the plane from the Eye. |
| [in] | theZFar | the distance of the plane from the Eye. |
|
inline |
Right side direction.
| void Graphic3d_Camera::StereoProjection | ( | NCollection_Mat4< double > & | theProjL, |
| NCollection_Mat4< double > & | theHeadToEyeL, | ||
| NCollection_Mat4< double > & | theProjR, | ||
| NCollection_Mat4< double > & | theHeadToEyeR ) const |
Get stereo projection matrices.
| [out] | theProjL | left eye projection matrix |
| [out] | theHeadToEyeL | left head to eye translation matrix |
| [out] | theProjR | right eye projection matrix |
| [out] | theHeadToEyeR | right head to eye translation matrix |
| void Graphic3d_Camera::StereoProjectionF | ( | NCollection_Mat4< float > & | theProjL, |
| NCollection_Mat4< float > & | theHeadToEyeL, | ||
| NCollection_Mat4< float > & | theProjR, | ||
| NCollection_Mat4< float > & | theHeadToEyeR ) const |
Get stereo projection matrices.
| [out] | theProjL | left eye projection matrix |
| [out] | theHeadToEyeL | left head to eye translation matrix |
| [out] | theProjR | right eye projection matrix |
| [out] | theHeadToEyeR | right head to eye translation matrix |
|
inline |
Get current tile.
Transform orientation components of the camera: Eye, Up and Center points.
| [in] | theTrsf | the transformation to apply. |
Unproject point from normalized device coordinates to world coordinate space.
| [in] | thePnt | the NDC point. |
|
inline |
Get camera Up direction vector.
|
inline |
Calculate view plane size at center (target) point and distance between ZFar and ZNear planes.
Calculate view plane size at center point with specified Z offset and distance between ZFar and ZNear planes.
| [in] | theZValue | the distance from the eye in eye-to-center direction |
|
inline |
|
inline |
Returns modification state of camera world view transformation matrix.
|
inline |
Get the Far Z-clipping plane position.
|
inline |
Change Z-min and Z-max planes of projection volume to match the displayed objects.
| bool Graphic3d_Camera::ZFitAll | ( | const double | theScaleFactor, |
| const Bnd_Box & | theMinMax, | ||
| const Bnd_Box & | theGraphicBB, | ||
| double & | theZNear, | ||
| double & | theZFar ) const |
Estimate Z-min and Z-max planes of projection volume to match the displayed objects. The methods ensures that view volume will be close by depth range to the displayed objects. Fitting assumes that for orthogonal projection the view volume contains the displayed objects completely. For zoomed perspective view, the view volume is adjusted such that it contains the objects or their parts, located in front of the camera.
| [in] | theScaleFactor | the scale factor for Z-range. The range between Z-min, Z-max projection volume planes evaluated by z fitting method will be scaled using this coefficient. Program error exception is thrown if negative or zero value is passed. |
| [in] | theMinMax | applicative min max boundaries. |
| [in] | theGraphicBB | real graphical boundaries (not accounting infinite flag). |
|
inline |
Get stereographic focus value.
|
inline |
Get stereographic focus definition type.
|
inline |
Get the Near Z-clipping plane position.