mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0024623: Visualization - improve selection mechanism
Redesign of selection mechanism: - implemented 3-level BVH tree for selection; - selection now calculates in 3D space; - intersection tests were moved to SelectMgr_BaseFrustum descendants; - removed .cdl files in Select3D and .cdl related to selection in MeshVS; - SelectMgr_ViewerSelectors are now shared between local and global contexts; - transformations of sensitive entities are now stored in SelectMgr_SelectableObject only. Sensitive entities are independent from transformations, it is applied to SelectMgr_SelectingVolumeManager instance only; - connected and multiple connected interactive objects are now represented by their child objects only for SelectMgr_SelectionManager; - if interactive object has child objects, they will be stored as separate objects in SelectMgr_SelectionManager now. - test cases bugs/vis/bug24623_1, bug24623_2, bug24623_3, bug24623_4 to test performance and memory issues.
This commit is contained in:
@@ -33,7 +33,6 @@ public:
|
||||
DEFINE_STANDARD_RTTI( IVtk_IShapePickerAlgo )
|
||||
|
||||
virtual void SetView (const IVtk_IView::Handle& theView) = 0;
|
||||
virtual void Modified() = 0;
|
||||
virtual int NbPicked() = 0;
|
||||
|
||||
//! Get activated selection modes for a shape.
|
||||
|
@@ -19,6 +19,8 @@
|
||||
#include <IVtk_Interface.hxx>
|
||||
#include <gp_XY.hxx>
|
||||
#include <gp_XYZ.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <Graphic3d_Mat4d.hxx>
|
||||
|
||||
DEFINE_STANDARD_HANDLE( IVtk_IView, IVtk_Interface )
|
||||
|
||||
@@ -65,12 +67,26 @@ public:
|
||||
//! @return Two doubles containing the display coordinates of the view window center
|
||||
virtual void GetViewCenter (double& theX, double& theY) const = 0;
|
||||
|
||||
//! Gets window size in screen coordinates in pixels
|
||||
virtual void GetWindowSize (int& theX, int& theY) const = 0;
|
||||
|
||||
//! Gets camera projection and orientation matrices
|
||||
virtual void GetCamera (Graphic3d_Mat4d& theProj,
|
||||
Graphic3d_Mat4d& theOrient,
|
||||
Standard_Boolean& theIsOrtho) const = 0;
|
||||
|
||||
//! Converts 3D display coordinates into 3D world coordinates.
|
||||
//! @param [in] theDisplayPnt 2d point of display coordinates
|
||||
//! @param [out] theWorldPnt 3d point of world coordinates
|
||||
//! @return true if conversion was successful, false otherwise
|
||||
virtual bool DisplayToWorld (const gp_XY& theDisplayPnt, gp_XYZ& theWorldPnt) const = 0;
|
||||
|
||||
//! Gets viewport coordinates
|
||||
virtual void GetViewport (Standard_Real& theX,
|
||||
Standard_Real& theY,
|
||||
Standard_Real& theWidth,
|
||||
Standard_Real& theHeight) const = 0;
|
||||
|
||||
DEFINE_STANDARD_RTTI( IVtk_IView )
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user