1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0032387: Visualization - use interface of ray-picking for selection/highlighting for XR pose

Fixed regression of SelectMgr_ViewerSelector::SetPixelTolerance(). Removed redundant myToUpdateTolerance flag.

SelectMgr_AxisIntersector::raySegmentDistance() - fixed usage of SquareModulus() instead of Modulus().
SelectMgr_ViewerSelector::TraverseSensitives() now skips both BVHSubset_2dPersistent and BVHSubset_3dPersistent relying on Camera.

AIS_ViewController::handleXRMoveTo() now uses interface for picking by Axis explicitly
instead of emulating axis by point picking.
This commit is contained in:
osa
2021-05-24 15:27:33 +03:00
committed by bugmaster
parent 03c9cc86c6
commit 807340d924
12 changed files with 111 additions and 80 deletions

View File

@@ -2730,7 +2730,33 @@ AIS_StatusOfDetection AIS_InteractiveContext::MoveTo (const Standard_Integer th
{
throw Standard_ProgramError ("AIS_InteractiveContext::MoveTo() - invalid argument");
}
myMainSel->Pick (theXPix, theYPix, theView);
return moveTo (theView, theToRedrawOnUpdate);
}
//=======================================================================
//function : MoveTo
//purpose :
//=======================================================================
AIS_StatusOfDetection AIS_InteractiveContext::MoveTo (const gp_Ax1& theAxis,
const Handle(V3d_View)& theView,
const Standard_Boolean theToRedrawOnUpdate)
{
if (theView->Viewer() != myMainVwr)
{
throw Standard_ProgramError ("AIS_InteractiveContext::MoveTo() - invalid argument");
}
myMainSel->Pick (theAxis, theView);
return moveTo (theView, theToRedrawOnUpdate);
}
//=======================================================================
//function : moveTo
//purpose :
//=======================================================================
AIS_StatusOfDetection AIS_InteractiveContext::moveTo (const Handle(V3d_View)& theView,
const Standard_Boolean theToRedrawOnUpdate)
{
myCurDetected = 0;
myCurHighlighted = 0;
myDetectedSeq.Clear();
@@ -2741,7 +2767,6 @@ AIS_StatusOfDetection AIS_InteractiveContext::MoveTo (const Standard_Integer th
Standard_Boolean toUpdateViewer = Standard_False;
myFilters->SetDisabledObjects (theView->View()->HiddenObjects());
myMainSel->Pick (theXPix, theYPix, theView);
// filling of myAISDetectedSeq sequence storing information about detected AIS objects
// (the objects must be AIS_Shapes)