1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-03 14:10:33 +03:00

0032390: Visualization, SelectMgr_FrustumBuilder - use camera instead of duplicated methods

Fix incorrect value of axis intersection with segment inside of SelectMgr_AxisIntersector::raySegmentDistance().
Move camera definition to base intersector (it is not possible to set it for axis intersector, is is not applicable).
Add method Graphic3d_Camera::SetIdentityOrientation() to set camera parameters to make current orientation matrix identity one.
Remove all matrices from selection intersectors and frustum builder and use camera instead of them.
Fix missed axis tests in vselect grid.
This commit is contained in:
osa
2021-05-28 17:25:04 +03:00
parent 4db6d89bc6
commit 51d4a4f9d0
19 changed files with 124 additions and 417 deletions

View File

@@ -37,27 +37,9 @@ public:
//! Nullifies the builder created in the constructor and copies the pointer given
Standard_EXPORT void SetBuilder (const Handle(SelectMgr_FrustumBuilder)& theBuilder);
//! Return camera definition.
virtual const Handle(Graphic3d_Camera)& Camera() const Standard_OVERRIDE { return myCamera; }
//! Passes camera projection and orientation matrices to builder
//! Saves camera definition and passes it to builder
Standard_EXPORT virtual void SetCamera (const Handle(Graphic3d_Camera)& theCamera) Standard_OVERRIDE;
//! Passes camera projection and orientation matrices to builder
Standard_EXPORT virtual void SetCamera (const Graphic3d_Mat4d& theProjection,
const Graphic3d_Mat4d& theWorldView,
const Standard_Boolean theIsOrthographic,
const Graphic3d_WorldViewProjState& theWVPState = Graphic3d_WorldViewProjState()) Standard_OVERRIDE;
//! @return current camera projection transformation common for all selecting volumes
Standard_EXPORT virtual const Graphic3d_Mat4d& ProjectionMatrix() const Standard_OVERRIDE;
//! @return current camera world view transformation common for all selecting volumes
Standard_EXPORT virtual const Graphic3d_Mat4d& WorldViewMatrix() const Standard_OVERRIDE;
//! @return current camera world view projection transformation state
Standard_EXPORT virtual const Graphic3d_WorldViewProjState& WorldViewProjState() const Standard_OVERRIDE;
Standard_EXPORT virtual void SetPixelTolerance (const Standard_Integer theTol) Standard_OVERRIDE;
Standard_EXPORT virtual void SetWindowSize (const Standard_Integer theWidth,
@@ -78,11 +60,9 @@ public:
DEFINE_STANDARD_RTTIEXT(SelectMgr_BaseFrustum, SelectMgr_BaseIntersector)
protected:
Standard_Integer myPixelTolerance; //!< Pixel tolerance
Standard_Boolean myIsOrthographic; //!< Defines if current camera is orthographic
Standard_Integer myPixelTolerance; //!< Pixel tolerance
Handle(SelectMgr_FrustumBuilder) myBuilder; //!< A tool implementing methods for volume build
Handle(Graphic3d_Camera) myCamera; //!< camera definition
};
#endif // _SelectMgr_BaseFrustum_HeaderFile