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.
0025973: Visualization, TKOpenGl - support EAGLContext as alternative to NSOpenGLContext
OpenGl_FrameBuffer::InitWithRB() - add method to initialize FBO with Render Buffer Objects.
OpenGl_FrameBuffer::InitWrapper() - add new method to initialize FBO from currently bound in context.
Aspect_RenderingContext - define type explicitly to EAGLContext* / NSOpenGLContext* for ARC.
OpenGl_Window - allow initialization from alien context for OS X / iOS.
0025978: Visualization - setup font aliases for Android
Font_FontMgr - setup system fonts "Droid Sans Mono", "Droid Serif" and "Roboto" as aliases to "Courier", "Times" and "Arial" on Android.
Locate Android system fonts in directory "/system/fonts".
OpenGl_Text::FindFont() - print error message on missed fonts.
OpenGl_Text::render() - allow straightforward font rendering on OpenGL ES.
Do not use "Webdings" in tests.
Drop duplicating test case bugs/vis/bug21091_2.
0025982: Wrong result obtained by General Fuse operator.
New features:
class BOPTools_AlgoTools2D
- method
void BOPTools_AlgoTools2D::AdjustPCurveOnFace
(const BRepAdaptor_Surface& aBAS,
const Standard_Real aFirst,
const Standard_Real aLast,
const Handle(Geom2d_Curve)& aC2D,
Handle(Geom2d_Curve)& aC2DA)
has been added.
The method uses the refetence to BRepAdaptor_Surface object as parameter.
The fact allows to avoid redundant computations such as
BRepTools::UVBounds(....)
Changes:
class BOPTools_AlgoTools2D
- method:
void BOPTools_AlgoTools2D::AdjustPCurveOnFace
(const TopoDS_Face& aF,
const Standard_Real aT1,
const Standard_Real aT2,
const Handle(Geom2d_Curve)& aC2D,
Handle(Geom2d_Curve)& aC2DA)
has been changed.
The changes are to provide the consistency with I.1
- method:
void BOPTools_AlgoTools2D::MakePCurveOnFace
(const TopoDS_Face& aF,
const Handle(Geom_Curve)& aC3D,
const Standard_Real aT1,
const Standard_Real aT2,
Handle(Geom2d_Curve)& aC2D,
Standard_Real& TolReached2d)
has been changed.
The changes are to provide the consistency with I.1
The restricted surface is used as data for the projection algorithm.
apn [Fri, 27 Mar 2015 10:39:33 +0000 (13:39 +0300)]
Modified TODOs in test cases bugs modalg_2 bug5805_* with number of issue #25925.
bugs/modalg_4/bug8842_7 - test stable OK (removed TODOs).
bugs/modalg_2/bug453_2 - added ?TODO according to unstable behavior (#25918)
bugs/moddata_1/bug22759 - updated reference data
bugs/vis/bug21091_4 bug21091_5 bug21091_6 bug21091_9 - updated reference data
sewing/tol_100/K1 - added ?TODO according to unstable behavior (test will be removed in #25471)
apn [Thu, 26 Mar 2015 12:44:22 +0000 (15:44 +0300)]
0025987: Integration part of modified unstable test cases
Unstable test cases were reviewed
Modified test cases using checktrend command
Modified test cases for Linux platform
Modified test cases for Debug mode
pkv [Thu, 26 Mar 2015 12:41:00 +0000 (15:41 +0300)]
0025969: Wrong result obtained by 2d classifier algorithm.
Class IntTools_FClass2d
method:void IntTools_FClass2d::Init(const TopoDS_Face& aFace,const Standard_Real TolUV)
has been changed.
The cases where derivattive angles that are near to PI are considered as a sign to avoid express treatment for that wire
1. Restriction line is processed in IntTools_FaceFace with using methods of GeomInt_IntSS class.
2. Check, if Restriction- and Walking-lines (or Restriction-Restriction lines) are coincided, has been added in IntPatch_ImpPrmIntersection.cxx (at that RLine is considered to be isoline only).
3. Check, if RLine and GLine are coincided, has been added in IntPatch_ImpImpIntersection.cxx.
4. Create new class IntPatch_PointLine, which is inherited from IntPatch_Line.
5. The reason of exception (in DEBUG MODE) has been eliminated.
aml [Thu, 19 Mar 2015 13:33:43 +0000 (16:33 +0300)]
0025892: Wrong result obtained by projection algorithm.
1) Treatment of case when projection algorithm to BSpline surface return null 2d curve.
2) Changed approximation of next step in default projection algorithm.
3) Special handling of surface of revolution added.
"Period jump" handling evaded in case when curve not computed.
- Work with strings optimized in Tcl procedures used in testdiff command
- CPU and memory differences output of testdiff command improved to give relative change in percents
- Cumulative CPU and memory differences are output for test grids
- In HTML output of testdiff command, deviations of memory and CPU measurements greater than 5% are colored (red or green)
- Search of image files in testdiff command corrected to avoid wrong attribution of image file to issues starting with the same first letters; images must start with the test case name, optionally followed by underscore or dash and arbitrary text
- Image_Diff tool optimized for the case if images are exactly the same
- Perf_Meter class output corrected, destructor made non-virtual
- DRAW command diffimage optimized to not save diff files if there is no difference
- Tests User Guide updated according to these changes and actual state
Force stable work of the algorithm BRepAlgo_Loop by replacing DataMap collections with List and/or IndexedDataMap in order to provide iterations independent on the memory addresses.
Avoid uninitialized fields in default constructor of Extrema_POnSurf.
I
New commands:
xdistcc - check distance between two 3d curves.
xdistcc2ds - check distance between 3d curve and curve on surface (projected curve).
xdistc2dc2dss - check distance between two curve on surface (projected curves).
This commands are print 3d distance between input objects built on even grid.
It is supposed that curves have same parametrization.
vpa [Thu, 19 Mar 2015 13:02:42 +0000 (16:02 +0300)]
0025933: Visualization - Forward AIS_InteractiveObject::Redisplay() execution to AIS_InteractiveContext
AIS_InteractiveObject::Redisplay now redirects the execution to interactive context;
All calls to AIS_InteractiveObject::Redisplay were replaced by AIS_InteractiveContext::Redisplay
aba [Fri, 6 Mar 2015 09:23:44 +0000 (12:23 +0300)]
0025611: Displaying 'zbufftrihedron' interferes with 'graduatedtrihedron':
- Graphic3d_CGraduatedTrihedron: moved to Graphic3d_GraduatedTrihedron, added Graphic3d_AxisAspect for axes parameters
- OpenGl_GraduatedTrihedron: moved to primitive arrays, used Graphic3d_GraduatedTrihedron to store parameters
- ViewerTest: corrected vgraduatedtrihedron, added new parameters
- Graphic3d_ArrayOfPrimitives: added AddVertex (Graphic3d_Vec3)
- Graphic3d_GraphicDriver::GraduatedTrihedronMinMaxValues corrected interface
drazmyslovich [Thu, 19 Mar 2015 12:52:21 +0000 (15:52 +0300)]
0025910: The material with 0-density causes errors during writing STEP files
- properly process 0-density material - create STEP density structures if and only if the density is > 0
- properly process 0-density material - create STEP density structures if and only if the density is > 0, but preserve the already mapped structures
azn [Thu, 19 Mar 2015 12:50:09 +0000 (15:50 +0300)]
0025630: Possible memory leaks in BRepGProp_Vinert and BRepGProp_Sinert
Code refactoring of BRepGProp_Sinert and BRepGProp_Vinert classes.
- All static variables have been removed.
- Common functionality connected with Gauss integration has beem moved from BRepGProp_Sinert and BRepGProp_Vinert classes to the new BRepGProp_Gauss class.
Slight changes in the comments.
Fix compilation error.
Fix Sinert errors. Rebased on new master.
Elimination of constant conditional expression warnings.
ika [Thu, 19 Mar 2015 12:43:17 +0000 (15:43 +0300)]
0025843: Wire containing degenerated edge is not written to IGES / STEP
add check for edges with null 2D and 3D curves for STEP,
for IGES problem exists only with wires, where non-invalid edge is only one, and it is not the last in wire(fixed).
kgv [Thu, 5 Mar 2015 15:05:58 +0000 (18:05 +0300)]
0025897: Visualization, TKOpenGl - disable FBO blitting after first failure on broken OpenGL context
OpenGl_Context::init() - detect OpenGL 2.0+ broken context by wrong GLSL version string.
Emit error messages when OpenGL context reports version higher than actually exported.
Improve logic of methods drawing Immediate presentations and swapping the Buffers.
OpenGl_Workspace::myTransientDrawToFront - repair functionality of this flag
to always render Immediate Objects into Back Buffer.
OpenGl_Workspace::myHasFboBlit - add new flag to disable FBO blitting after first failure.
OpenGl_Caps::contextCompatible - new option to request compatibility/core OpenGL profile.
OpenGl_Window - request core profile when requested (WGL and Cocoa).
OpenGl_Context::CheckExtension() - retrieve extensions using glGetStringi().
OpenGl_Context::init() - set backward-compatible functions to NULL within core profile:
core11, core15, core20, core32back, core33back, core41back, core42back, core43back, core44back.
OpenGl_Context::BindDefaultVao() - create default VAO required for core profile.
OpenGl_Context::ReadGlVersion() - make method public.
OpenGl_ShaderManager - create programs using GLSL version 150 when available.
OpenGl_VertexBuffer, OpenGl_ShaderProgram, OpenGl_ShaderObject - use
functions set from core profile instead of compatibility.
TKOpenGl - escape deprecated functionality with runtime checks.
Command vcaps - add option -compatibleProfile to request core/compatibility profile.
NIS_View - prevenr rendering within Core profile (unsupported).
Test case for issue CR25854
Aspect_GraphicCallbackStruct::IsCoreProfile - add new field to the struct for NIS
osa [Thu, 5 Mar 2015 11:05:11 +0000 (14:05 +0300)]
0025540: Visualization - discretization of the circle differs in shaded and wireframe modes.
1. "HilightDrawer" were added to SelectMgr_SelectableObject.
2. Static drawer in StdSelect_Shape was replaced by class member. It's value is taken from special HilightDrawer of Selectable() object.
3. Computed relative deflection is stored as absolute deflection to be used for sub-shapes.
4. The ColoredShape object was updated to use for sub-shapes relative deflection computed for main shape.
5. Test case was added.
pkv [Thu, 5 Mar 2015 12:02:49 +0000 (15:02 +0300)]
0025818: IntTools_FaceFace throws Standard_ConstructionError with two unbounded planes
Changes:
class IntTools_FaceFace
- method:
void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
const TopoDS_Face& aF2)
The treatment of infinite planes was corrected.
osa [Thu, 5 Mar 2015 11:48:42 +0000 (14:48 +0300)]
0023200: Visualization - prevent multiple triangulating of a shape that already has been triangulated
Add new flag IsAutoTriangulated to Prs3d_Drawer. It is True by default.
If this flag is True automatic re-triangulation with deflection-check logic will be applied.
Else this feature will be disable and triangulation is expected to be computed by application itself.
Change the syntax of vdefalts command.
Add new parameter -autoTriang for check of AutoTriangulated functionality.
Adjust camera position in test case bugs/xde/bug23969
pkv [Thu, 26 Feb 2015 10:39:13 +0000 (13:39 +0300)]
0025847: Wrong result obtained by General Fuse operator.
I. New features:
No new features.
II. Changes:
II.1. class BOPAlgo_PaveFiller
- method:
void BOPAlgo_PaveFiller::PerformEE()
has been changed.
Intended set of VE interferences has been refined
to avoid unwanted overlaps of pave blocks
- method:
void BOPAlgo_PaveFiller::ForceInterfVE(const Standard_Integer nV,
Handle(BOPDS_PaveBlock)& aPB,
BOPDS_MapOfPaveBlock& aMPBToUpdate)
The initialization of increment of VE interferences has been added.
- method:
Standard_Boolean BOPAlgo_PaveFiller::ForceInterfVF
(const Standard_Integer nV,
const Standard_Integer nF)
The initialization of increment of VF interferences has been added.
ibs [Thu, 26 Feb 2015 09:50:32 +0000 (12:50 +0300)]
0025687: Visualization, XCAF - eliminate visual artifacts at the edges of faces
AIS_ColoredShape::Compute() - improve logic to split input shape into Closed and Open volumes
with back-face culling enabled when possible.
Change last argument of method StdPrs_ShadedShape::Add() from boolean to enumeration StdPrs_Volume
which controls parsing of Closed/Open volumes within input shape.
Make method StdPrs_ShadedShape::ExploreSolids() public.
Extend Draw Harness command vaspects with option -setvisibility to hide subshape (using AIS_ColoredShape).
Add new test cases bugs/bis/bug25687_1 and bugs/bis/bug25687_2.
the logic of bindSubShapes method clarified
Conflicts:
src/AIS/AIS_ColoredShape.cxx
AIS_ColoredShape::dispatchColors considers the colors of displayed shapes in connection with specific priority
the color of specific shape can be exported from several ways: the color of this shape, the color of a compound containing this shape. The highest priority has the color of shape than the one of the compound. The color with highest priority will be displayed.
This patch accounts for the highest priority of the shape color.
For example: w - wire has GREEN color; e - edge has RED color; "w" contains "e"; all edges of "w" will be displayed in GREEN color except "e" edge, it will be displayed in RED color
Added sample generating model of Intel i7-4790 CPU on which the problem can be reproduced
bugmaster [Fri, 20 Feb 2015 14:17:34 +0000 (17:17 +0300)]
Adjusting testing cases
1. bugs modalg_4 bug697_2 bug697_4 bug697_7 bug697_8 - unstable test cases after fix 25735
Its will be checked and modified during work with performance (issue 24232).
2. bugs mesh bug25364 was tuned for 64-bit Windows.
3. de step_1 ZQ2 fails (64-bit only). Issue 25848 was registered.
4. de step_3 D8 shows improvement (no checkape error) in 64-bit only, this is after 22598 and issue 25797 was registered for that.
5. draft angle G8 improvement (algorithm produces some shape, but fails on checkshape).
6. perf ncollection A1 was tuned for 64-bit Windows.
7. de step_1 R9 - update reference data (according to 25176)
emv [Thu, 19 Feb 2015 13:07:21 +0000 (16:07 +0300)]
0024646: Wrong result done by Boolean Operation algorithm
1. class BOPAlgo_PaveFiller
method void BOPAlgo_PaveFiller::PerformEF()
Do not create intersection vertices in case if it lies ON the boundary of the face.
2. class IntTools_Context
New method
Standard_Boolean IntTools_Context::IsPointInFace
(const gp_Pnt& aP,
const TopoDS_Face& aF,
const Standard_Real aTol)
has been implemented to check if the point IN the face.
3. class IntTools_EdgeFace
method
void IntTools_EdgeEdge::FindBestSolution(const Standard_Real aT11,
const Standard_Real aT12,
const Standard_Real aT21,
const Standard_Real aT22,
Standard_Real& aT1,
Standard_Real& aT2)
Treatment of the touching cases.
Update documentat if the class.
SetColor() and SetLabel() now work with 0-based index.
SetColor() now checks length of myColors.
Remove methods GetCurrentColor() and GetCurrentLabel().
Methods GetColor() and GetLabel() now can be used to get user-specified and default colors / labels.
Round down IntervNumber in FindColor().
DrawScale() - show labels even for one interval.
Redesign Draw Harness command vcolorscale, provide new options.
Update test cases which use vcolorscale command.
akz [Thu, 19 Feb 2015 12:14:11 +0000 (15:14 +0300)]
0025823: Self Intersecting wire translated from STEP file
The number of points to divide the edge curve on a segments to compute a
boundary box does not provide a good tolerance. So a resultant boundary
box has an incorrect bounds. As a result the intersection near to a
tangent of curve does not detected.
pkv [Thu, 19 Feb 2015 12:02:32 +0000 (15:02 +0300)]
0025838: Wrong result obtained by General Fuse operator.
Changes:
class BOPTools_AlgoTools
method:
Standard_Boolean BOPTools_AlgoTools::GetFaceOff
(const TopoDS_Edge& theE1,
const TopoDS_Face& theF1,
BOPTools_ListOfCoupleOfShape& theLCSOff,
TopoDS_Face& theFOff,
Handle(IntTools_Context)& theContext)
has been changed.
The comparison of the angles done with the angular tolerance value
1. Algorithm of adjusting parameter to the surface boundaries has been changed.
2. Control First and Last parameters in BRepLib_CheckCurveOnSurface::Compute() function.
apn [Thu, 19 Feb 2015 11:57:12 +0000 (14:57 +0300)]
0025803: Defective tests contaminating current directory
Test cases save results in directory pointed by ${imagedir} Tcl variable. File names are initialized in scripts and passed to DRAW command as argument.
Tests User Guide was updated.