Open CASCADE Technology  7.1.0.beta
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

OpenGl_BVHTreeSelector Class Reference

BVHTreeSelector class provides a possibility to store parameters of view volume, such as its vertices and equations, and contains methods detecting if given AABB overlaps view volume. More...

#include <OpenGl_BVHTreeSelector.hxx>

Public Member Functions

 OpenGl_BVHTreeSelector ()
 Creates an empty selector object with parallel projection type by default. More...
 
void SetViewVolume (const Handle< Graphic3d_Camera > &theCamera)
 Retrieves view volume's planes equations and its vertices from projection and world-view matrices. More...
 
void SetViewportSize (const Standard_Integer theViewportWidth, const Standard_Integer theViewportHeight)
 
Standard_Boolean Intersect (const OpenGl_Vec3d &theMinPt, const OpenGl_Vec3d &theMaxPt) const
 Detects if AABB overlaps view volume using separating axis theorem (SAT). More...
 
void CacheClipPtsProjections ()
 Caches view volume's vertices projections along its normals and AABBs dimensions. Must be called at the beginning of each BVH tree traverse loop. More...
 
const Handle< Graphic3d_Camera > & Camera () const
 Return the camera definition. More...
 
const OpenGl_Mat4dProjectionMatrix () const
 Returns current projection matrix. More...
 
const OpenGl_Mat4dWorldViewMatrix () const
 Returns current world view transformation matrix. More...
 
Standard_Integer ViewportWidth () const
 
Standard_Integer ViewportHeight () const
 
const Graphic3d_WorldViewProjStateWorldViewProjState () const
 Returns state of current world view projection transformation matrices. More...
 

Protected Types

enum  {
  Plane_Top, Plane_Bottom, Plane_Left, Plane_Right,
  Plane_Near, Plane_Far, PlanesNB
}
 Enumerates planes of view volume. More...
 
enum  {
  ClipVert_LeftTopNear, ClipVert_LeftBottomNear, ClipVert_RightTopNear, ClipVert_RightBottomNear,
  ClipVert_LeftTopFar, ClipVert_LeftBottomFar, ClipVert_RightTopFar, ClipVert_RightBottomFar,
  ClipVerticesNB
}
 Enumerates vertices of view volume. More...
 

Protected Member Functions

Standard_Real SignedPlanePointDistance (const OpenGl_Vec4d &theNormal, const OpenGl_Vec4d &thePnt)
 Calculates signed distance from plane to point. More...
 

Protected Attributes

OpenGl_Vec4d myClipPlanes [PlanesNB]
 Plane equations. More...
 
OpenGl_Vec4d myClipVerts [ClipVerticesNB]
 Vertices. More...
 
Handle< Graphic3d_CameramyCamera
 camera definition More...
 
Standard_Real myMaxClipProjectionPts [PlanesNB]
 Max view volume's vertices projections onto its normals. More...
 
Standard_Real myMinClipProjectionPts [PlanesNB]
 Min view volume's vertices projections onto its normals. More...
 
Standard_Real myMaxOrthoProjectionPts [3]
 Max view volume's vertices projections onto normalized dimensions of AABB. More...
 
Standard_Real myMinOrthoProjectionPts [3]
 Min view volume's vertices projections onto normalized dimensions of AABB. More...
 
Standard_Boolean myIsProjectionParallel
 
OpenGl_Mat4d myProjectionMat
 
OpenGl_Mat4d myWorldViewMat
 
Standard_Integer myViewportWidth
 
Standard_Integer myViewportHeight
 
Graphic3d_WorldViewProjState myWorldViewProjState
 State of world view projection matrices. More...
 

Detailed Description

BVHTreeSelector class provides a possibility to store parameters of view volume, such as its vertices and equations, and contains methods detecting if given AABB overlaps view volume.

Member Enumeration Documentation

anonymous enum
protected

Enumerates planes of view volume.

Enumerator
Plane_Top 
Plane_Bottom 
Plane_Left 
Plane_Right 
Plane_Near 
Plane_Far 
PlanesNB 
anonymous enum
protected

Enumerates vertices of view volume.

Enumerator
ClipVert_LeftTopNear 
ClipVert_LeftBottomNear 
ClipVert_RightTopNear 
ClipVert_RightBottomNear 
ClipVert_LeftTopFar 
ClipVert_LeftBottomFar 
ClipVert_RightTopFar 
ClipVert_RightBottomFar 
ClipVerticesNB 

Constructor & Destructor Documentation

OpenGl_BVHTreeSelector::OpenGl_BVHTreeSelector ( )

Creates an empty selector object with parallel projection type by default.

Member Function Documentation

void OpenGl_BVHTreeSelector::CacheClipPtsProjections ( )

Caches view volume's vertices projections along its normals and AABBs dimensions. Must be called at the beginning of each BVH tree traverse loop.

const Handle< Graphic3d_Camera >& OpenGl_BVHTreeSelector::Camera ( ) const
inline

Return the camera definition.

Standard_Boolean OpenGl_BVHTreeSelector::Intersect ( const OpenGl_Vec3d theMinPt,
const OpenGl_Vec3d theMaxPt 
) const

Detects if AABB overlaps view volume using separating axis theorem (SAT).

Parameters
theMinPt[in] maximum point of AABB.
theMaxPt[in] minimum point of AABB.
Returns
Standard_True, if AABB is in viewing area, Standard_False otherwise.
const OpenGl_Mat4d& OpenGl_BVHTreeSelector::ProjectionMatrix ( ) const
inline

Returns current projection matrix.

void OpenGl_BVHTreeSelector::SetViewportSize ( const Standard_Integer  theViewportWidth,
const Standard_Integer  theViewportHeight 
)
void OpenGl_BVHTreeSelector::SetViewVolume ( const Handle< Graphic3d_Camera > &  theCamera)

Retrieves view volume's planes equations and its vertices from projection and world-view matrices.

Standard_Real OpenGl_BVHTreeSelector::SignedPlanePointDistance ( const OpenGl_Vec4d theNormal,
const OpenGl_Vec4d thePnt 
)
protected

Calculates signed distance from plane to point.

Parameters
theNormal[in] the plane's normal.
thePnt[in]
Standard_Integer OpenGl_BVHTreeSelector::ViewportHeight ( ) const
inline
Standard_Integer OpenGl_BVHTreeSelector::ViewportWidth ( ) const
inline
const OpenGl_Mat4d& OpenGl_BVHTreeSelector::WorldViewMatrix ( ) const
inline

Returns current world view transformation matrix.

const Graphic3d_WorldViewProjState& OpenGl_BVHTreeSelector::WorldViewProjState ( ) const
inline

Returns state of current world view projection transformation matrices.

Field Documentation

Handle< Graphic3d_Camera > OpenGl_BVHTreeSelector::myCamera
protected

camera definition

OpenGl_Vec4d OpenGl_BVHTreeSelector::myClipPlanes[PlanesNB]
protected

Plane equations.

OpenGl_Vec4d OpenGl_BVHTreeSelector::myClipVerts[ClipVerticesNB]
protected

Vertices.

Standard_Boolean OpenGl_BVHTreeSelector::myIsProjectionParallel
protected
Standard_Real OpenGl_BVHTreeSelector::myMaxClipProjectionPts[PlanesNB]
protected

Max view volume's vertices projections onto its normals.

Standard_Real OpenGl_BVHTreeSelector::myMaxOrthoProjectionPts[3]
protected

Max view volume's vertices projections onto normalized dimensions of AABB.

Standard_Real OpenGl_BVHTreeSelector::myMinClipProjectionPts[PlanesNB]
protected

Min view volume's vertices projections onto its normals.

Standard_Real OpenGl_BVHTreeSelector::myMinOrthoProjectionPts[3]
protected

Min view volume's vertices projections onto normalized dimensions of AABB.

OpenGl_Mat4d OpenGl_BVHTreeSelector::myProjectionMat
protected
Standard_Integer OpenGl_BVHTreeSelector::myViewportHeight
protected
Standard_Integer OpenGl_BVHTreeSelector::myViewportWidth
protected
OpenGl_Mat4d OpenGl_BVHTreeSelector::myWorldViewMat
protected
Graphic3d_WorldViewProjState OpenGl_BVHTreeSelector::myWorldViewProjState
protected

State of world view projection matrices.


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