16 months ago0031332: Data Exchange - RWGltf_CafReader ignores bufferView.byteStride within glTF 2.0
kgv [Wed, 29 Jan 2020 17:48:24 +0000 (20:48 +0300)]
0031332: Data Exchange - RWGltf_CafReader ignores bufferView.byteStride within glTF 2.0

RWGltf_GltfJsonParser::gltfParseBufferView() now reads byteStride parameter within bufferView.

16 months ago0030904: Visualization - OSD_MemInfo provide Update with parameter of computation...
nds [Tue, 28 Jan 2020 12:01:42 +0000 (15:01 +0300)]
0030904: Visualization - OSD_MemInfo provide Update with parameter of computation kind

Added method OSD_MemInfo::SetActive() for disabling specific counter.

17 months ago0031275: Visualization, TKOpenGl - handle normal-map texture with Path-Tracing CR0_TS_740 IR-2020-01-24
iko [Tue, 21 Jan 2020 13:01:03 +0000 (16:01 +0300)]
0031275: Visualization, TKOpenGl - handle normal-map texture with Path-Tracing

Base normal map support has been implemented in path tracing (just geometry normal replacement).
Smooth normal adaptation has been implemeneted in order to avoid black areas artefacts during path tracing.
Tangent normal space calcuation has been moved to separate unified function.
Tangent space orthogonalization algorithm has been changed in order to handle all orientations and combinations of UV coordinates.

17 months ago0031312: Data Exchange - RWGltf_CafReader fails reading texture embedded into base64...
kgv [Wed, 22 Jan 2020 17:18:44 +0000 (20:18 +0300)]
0031312: Data Exchange - RWGltf_CafReader fails reading texture embedded into base64 bufferView

RWGltf_GltfJsonParser::gltfParseTexture() now handles images embedded into bufferView of non-glb file.

17 months ago0031258: Mesh - OCCT 7.4.0 VIS get wrong render data
oan [Tue, 21 Jan 2020 10:21:38 +0000 (13:21 +0300)]
0031258: Mesh - OCCT 7.4.0 VIS get wrong render data

Check intervals for infinite value causing exception in GeomLib::NormEstim

17 months ago0031306: Modeling Algorithms - Incomplete result of Cut operation
emv [Fri, 17 Jan 2020 13:46:20 +0000 (16:46 +0300)]
0031306: Modeling Algorithms - Incomplete result of Cut operation

The problem is fixed by #0029323. Integrating test case only.

17 months ago0031309: Data Exchange - RWObj_Reader fails to read mh03.obj with multi-line syntax
kgv [Mon, 20 Jan 2020 15:09:32 +0000 (18:09 +0300)]
0031309: Data Exchange - RWObj_Reader fails to read mh03.obj with multi-line syntax

Standard_ReadLineBuffer::SetMultilineMode() now accepts a flag to put gap space while joining lines, enabled by default.

17 months ago0031304: Configuration - TKACIS building failure due to duplicated symbol GeomFillFus... IR-2020-01-17
kgv [Fri, 17 Jan 2020 09:12:11 +0000 (12:12 +0300)]
0031304: Configuration - TKACIS building failure due to duplicated symbol GeomFillFusInt()

Added missing "static" to internal methods of GeomFill package.

17 months ago0031302: Visualization, TKOpenGl - wrong tangent space calculation for normal maps
iko [Thu, 16 Jan 2020 12:55:29 +0000 (15:55 +0300)]
0031302: Visualization, TKOpenGl - wrong tangent space calculation for normal maps

The normal after tangent space calculation has been reverted in order to be in right orientation.
The tangent space calculation has been modified in order to handle back faces with inverted normal.

17 months ago0031260: Geom2dGcc_Circ2d2TanRad fails in this case (720)
ifv [Thu, 16 Jan 2020 09:07:33 +0000 (12:07 +0300)]
0031260: Geom2dGcc_Circ2d2TanRad fails in this case (720)

Function nbPoints(...) is modified

Test case added

17 months ago0031294: Modeling Algorithms - Regression relatively 7.3.0. Crash in method BRepPrimA...
ifv [Mon, 13 Jan 2020 11:50:03 +0000 (14:50 +0300)]
0031294: Modeling Algorithms - Regression relatively 7.3.0. Crash in method BRepPrimAPI_MakePrism::Generated(...)

BRepSweep_NumLinearRegularSweep.cxx: raising exeption is removed

Test case is added

QABugs_20.cxx - test command is added

17 months ago0031293: Visualization, TKOpenGl - broken capping when PBR shading is ON
iko [Mon, 13 Jan 2020 10:41:39 +0000 (13:41 +0300)]
0031293: Visualization, TKOpenGl - broken capping when PBR shading is ON

Division by 'w' component has been added in texture coordinates calculations in PBR functions.

17 months ago0031295: Foundation Classes, BVH_Tools - incorrect detection of ray-box intersection
osa [Mon, 13 Jan 2020 09:14:59 +0000 (12:14 +0300)]
0031295: Foundation Classes, BVH_Tools - incorrect detection of ray-box intersection

17 months ago0031292: Data Exchange - SIGSEGV on reading STEP file with references to invalid...
msv [Fri, 10 Jan 2020 17:59:51 +0000 (20:59 +0300)]
0031292: Data Exchange - SIGSEGV on reading STEP file with references to invalid entities


- in StepData_StepReaderData::ReadEntity, make sure that entity handle is not null before calling IsKind() of it.

- in StepData_StepReaderData::SetEntityNumbers, do not invert the sign of entity number of referenced parameter if the second pass is not required. Otherwise, the number -1 (obviously invalid) becomes 1 (invalid, but not obviously) without further correction of it.

- in StepData_UndefinedEntity::ReadRecord, consider the case when the entity number is positive but refers to non-existing entity. In this case literal value will be used instead of null entity for the problematic parameter.

17 months ago0025287: BRepMesh_IncrementalMesh produces (way) out of tolerance mesh Added test...
oan [Mon, 30 Dec 2019 22:01:06 +0000 (01:01 +0300)]
0025287: BRepMesh_IncrementalMesh produces (way) out of tolerance mesh Added test case

17 months ago0031099: Visualization, TKOpenGl - support Point light source with artistic full...
iko [Tue, 24 Dec 2019 13:05:00 +0000 (16:05 +0300)]
0031099: Visualization, TKOpenGl - support Point light source with artistic full cut-off distance

"Range" parameter of point light sources (positional and spot) concidering in PBR has been added.
Angular attenuation parameter of spot light in PBR has been reimplemented based on existing "concentration" parameter.

17 months ago0031284: Visualization - XCAFDoc_VisMaterialPBR lacks Index of Refraction IR-2019-12-27
kgv [Fri, 27 Dec 2019 11:24:58 +0000 (14:24 +0300)]
0031284: Visualization - XCAFDoc_VisMaterialPBR lacks Index of Refraction

Added missing parameter.

17 months ago0031225: Visualization, TKOpenGl - support cubemap for environment texture within...
mzernova [Fri, 13 Dec 2019 08:55:50 +0000 (11:55 +0300)]
0031225: Visualization, TKOpenGl - support cubemap for environment texture within Ray-Tracing

Ray-Tracing now handles IBL and background cubemaps in similar way as PBR.
Ambient light source is handled by Ray-Tracing in similar way as PBR,
e.g. as coefficient for environment map (IBL) or as constant light source.

Test script generating PBR spheres has been moved to Samples
and now shared by PBR and Path-Tracing tests.

17 months ago0031274: Data Exchange - RWObj_Reader ignores usemtl with empty name
kgv [Wed, 25 Dec 2019 16:36:48 +0000 (19:36 +0300)]
0031274: Data Exchange - RWObj_Reader ignores usemtl with empty name

Fixed out of range access within pushMaterial().

18 months ago0031251: Add a new meshing parameter to enforce face linear deflection
razmyslovich [Tue, 17 Dec 2019 18:17:17 +0000 (21:17 +0300)]
0031251: Add a new meshing parameter to enforce face linear deflection

Parameter has been renamed to ForceFaceDeflection. Added test case.

New parameter -force_face_def has been added to incmesh command.

18 months ago0031242: Scaling with different coefficients along axes produces invalid shape
ifv [Wed, 18 Dec 2019 10:53:11 +0000 (13:53 +0300)]
0031242: Scaling with different coefficients along axes produces invalid shape

Creation periodic BSpline surfaces from trimmed periodic surface if trim is boundaries of periodic domain is allowed

Checking domain of 2dCurves if surfaces are periodic is added

Test case tests/bugs/mesh/bug30008_2 is modified according to current behavior

Test case tests/bugs/modalg_7/bug31242 is added

18 months ago0031253: Visualization, TKOpenGl - phong shading GLSL compilation fail on Adreno 308 IR-2019-12-20
kgv [Wed, 18 Dec 2019 21:11:55 +0000 (00:11 +0300)]
0031253: Visualization, TKOpenGl - phong shading GLSL compilation fail on Adreno 308

Removed initialization of global Normal variable outside of main() block.
occLight_IsHeadlight() flag is now packed into occLight_Position().w

18 months ago0030597: Result of BRepOffsetAPI_MakePipeShell doesn't match the given profiles
jgv [Wed, 18 Dec 2019 15:24:16 +0000 (18:24 +0300)]
0030597: Result of BRepOffsetAPI_MakePipeShell doesn't match the given profiles

Modify the local function EdgeToBSpline of BRepFill_NSections to build a BSpline curve of general type for each curve of profile.

18 months ago0030600: Visualization, TKOpenGl - include GLES3/gl3.h instead of GLES2/gl2.h
mzernova [Tue, 10 Dec 2019 11:39:56 +0000 (14:39 +0300)]
0030600: Visualization, TKOpenGl - include GLES3/gl3.h instead of GLES2/gl2.h

Changed GLES2/gl2.h to GLES3/gl3.h.

OpenGl_Window_1.mm has been updated, now it is trying to create kEAGLRenderingAPIOpenGLES3 before trying to create kEAGLRenderingAPIOpenGLES2.

18 months ago0031203: Test harness command "bsection" on the planar faces return only one vertex...
ifv [Thu, 28 Nov 2019 12:22:53 +0000 (15:22 +0300)]
0031203: Test harness command "bsection" on the planar faces return only one vertex instead edge representing intersection line

Protection against intersection of test ray with almost parallel edges is added.

SWDRAW/SWDRAW_ShapeFix.cxx: add tolerance as parameter in command checkfclass2d

test case is added

18 months ago0031199: BRepMesh fails on thin faces
oan [Wed, 4 Dec 2019 09:26:10 +0000 (12:26 +0300)]
0031199: BRepMesh fails on thin faces

Use real tolerance of a face to define threshold for tolerance of discrete model instead of empirical values based on discrete model itself

18 months ago0031187: Modeling Algorithms - Regression relatively 7.3.0. Unify same domain algorit...
jgv [Fri, 29 Nov 2019 17:03:14 +0000 (20:03 +0300)]
0031187: Modeling Algorithms - Regression relatively 7.3.0. Unify same domain algorithm produces invalid shape.

Modify the local function ReconstructMissedSeam to build new seam edges correctly.

18 months ago0031120: Memory leak in BRepOffsetAPI_MakeOffset
msv [Fri, 1 Nov 2019 12:05:43 +0000 (15:05 +0300)]
0031120: Memory leak in BRepOffsetAPI_MakeOffset

Add destructor of MAT2d_Mat2d - full removal of edges and bisectors.

18 months ago0031168: JT Import - cannot see properties attached to objects IR-2019-12-14
abk [Fri, 13 Dec 2019 12:32:45 +0000 (15:32 +0300)]
0031168: JT Import - cannot see properties attached to objects

Draw command GetNDStrings was improved to sort the properties by the keys and
skip conversions of the strings to type TCollection_AsciiString.

Certain Draw commands were corrected to use the Draw interpreter instead of "std::cout".

A Tcl procedure was created to compare two multi-line strings.

18 months ago0031231: Samples - the command "donl" in ModelingDemo.tcl should be "donly"
ma haidong [Mon, 9 Dec 2019 17:00:59 +0000 (01:00 +0800)]
0031231: Samples - the command "donl" in ModelingDemo.tcl should be "donly"

Fixed misprint in Tcl sample script.

18 months ago0030945: JT Import, JtProperty_LateLoaded - expose type of Deferred object IR-2019-12-06
kgv [Thu, 5 Dec 2019 13:20:37 +0000 (16:20 +0300)]
0030945: JT Import, JtProperty_LateLoaded - expose type of Deferred object

RWMesh_NodeAttributes has been extended with NamedData property for passing Metadata.

RWMesh_CafReader::addShapeIntoDoc() has been corrected to avoid
adding calling XCAFDoc_ShapeTool::AddSubShape() for sub-shape labels.
Attributes for Products and Instances are now set independently to shape labels.
Sharing of Compounds (previously always duplicated) as sub-Components has been fixed.

TDataStd_NamedData has been extended with interface for deferred data loading.
Setters have been corrected to avoid duplicating lookups within map.

18 months ago0031227: Tests - log number of compared images into report
kgv [Fri, 6 Dec 2019 12:08:34 +0000 (15:08 +0300)]
0031227: Tests - log number of compared images into report

18 months ago0030889: ACIS Import - Incorrect result reading SAT and SAB files
anv [Tue, 5 Nov 2019 14:57:25 +0000 (17:57 +0300)]
0030889: ACIS Import - Incorrect result reading SAT and SAB files

Adapting CR30932 fix for a GeomLib approximator.

18 months ago0031213: Coding Rules, RWStl_Reader - misnamed variable THE_BUFFER
mzernova [Tue, 3 Dec 2019 10:51:02 +0000 (13:51 +0300)]
0031213: Coding Rules, RWStl_Reader - misnamed variable THE_BUFFER

Renamed THE_BUFFER variable.

18 months ago0031202: Shape Healing - FixMissingSeam creates degenerated edge
anv [Thu, 28 Nov 2019 09:25:20 +0000 (12:25 +0300)]
0031202: Shape Healing - FixMissingSeam creates degenerated edge

Adding tolerance to prevent degenerated cuts in cases where all vertex tolerance is covered by distance of the edge curve from vertex point.

18 months ago0031096: Visualization, TKOpenGl - support metallic-roughness texture mapping IR-2019-11-29
iko [Thu, 7 Nov 2019 13:52:53 +0000 (16:52 +0300)]
0031096: Visualization, TKOpenGl - support metallic-roughness texture mapping

OpenGl_ShaderManager - metallic-roughness, emissive, occlusion
and normal texture maps are now supported by PBR.
Emissive, occlusion and normal texture maps are now supported by Phong shading model.
Path-Tracing now handles metallic-roughness and emissive texture maps.

Graphic3d_TextureUnit enumeration has been extended by
new values corresponding to supported texture maps.

OpenGl_TextureSet and OpenGl_ShaderProgram have been extended with
bitmask Graphic3d_TextureSetBits identifying texture slots read from GLSL Program
and slots defined within Texture Set to avoid undefined behavior by binding mock textures.

OpenGl_TextureSet now duplicates texture unit information to handle
textures shared across multiple slots (like Occlusion [R] + Metallic-Roughness [GB]).

OpenGl_Context::BindTextures() has been extended with active GLSL program paramter
to set mock textures to texture units used by program but undefined by texture set.
OpenGl_Workspace::ApplyAspects() has been extended with parameter to avoid bining texture set.

18 months ago0030982: Visualization, OpenGl_View::MinMaxValues() - do not add background quad...
mzernova [Wed, 27 Nov 2019 07:14:30 +0000 (10:14 +0300)]
0030982: Visualization, OpenGl_View::MinMaxValues() - do not add background quad into depth range

Deleted adding background quad into depth range. Background is drawn in 2D coordinates. Fixed problem with using gradient background in tiles.

18 months ago0031148: Modeling Algorithms - Offset adjacent co-planar faces with different offset...
emv [Fri, 11 Oct 2019 04:23:19 +0000 (07:23 +0300)]
0031148: Modeling Algorithms - Offset adjacent co-planar faces with different offset values

Extend the Offset operation (Join Type "Intersection", mode "Complete") to allow different offset values on adjacent co-planar faces.
The gap between adjacent faces is closed by creating artificial face perpendicular to the face.

Adding test cases.

18 months ago0031201: Modeling Algorithms - Result of a section operation is incomplete
emv [Thu, 28 Nov 2019 07:56:55 +0000 (10:56 +0300)]
0031201: Modeling Algorithms - Result of a section operation is incomplete

Fixing misprint - use the boundaries of the cylinder for Plane/Cylinder intersection.
Test cases for the issue.

18 months ago0031186: Foundation Classes - add additional useful methods to BVH_Box.
osa [Fri, 22 Nov 2019 13:02:02 +0000 (16:02 +0300)]
0031186: Foundation Classes - add additional useful methods to BVH_Box.

Add Transform() and Transformed() methods by Mat4 for BVH_Box (only for 3D dimension).
Add PointBoxProjection() method to project point to box and RayBoxIntersection() method to compute hit time of ray-box intersection to BVH_Tools.
Add BVH_Ray class to define ray object.

18 months ago0031188: Draw Harness - enable colorized messages output to console by default
kgv [Fri, 22 Nov 2019 21:08:22 +0000 (00:08 +0300)]
0031188: Draw Harness - enable colorized messages output to console by default

Message_PrinterOStream now uses colorized output by default.
DRAWEXE has been corrected to disabled colorized output
when it is called with -f argument to avoid spoiling testgrid HTML logs.

18 months ago0031007: Coding - eliminate warnings issued while compiling with -pedantic flag
kgv [Fri, 22 Nov 2019 14:02:12 +0000 (17:02 +0300)]
0031007: Coding - eliminate warnings issued while compiling with -pedantic flag

Removed duplicating semicolons ;;.
Removed redundant semicolon at namespace closure.

19 months ago0030697: Draw Harness - Draw_Printer should not be set to Message::DefaultMessenger... IR-2019-11-22
mzernova [Mon, 6 May 2019 20:05:13 +0000 (23:05 +0300)]
0030697: Draw Harness - Draw_Printer should not be set to Message::DefaultMessenger() by default

Fixed bugs that occurred when using the default std::cout from Message::DefaultMessenger() instead of Draw_Printer

A dedicated option was added to Draw_ProgressIndicator, for outputting data to the tcl when performing tests

Added -tclOutput parameter to XProgress command

19 months ago0030953: Data Exchange - implement export of mesh data into glTF 2.0 format
kgv [Mon, 18 Nov 2019 23:09:09 +0000 (02:09 +0300)]
0030953: Data Exchange - implement export of mesh data into glTF 2.0 format

Added new class RWGltf_CafWriter for exporting XCAF document into glTF file
as well as Draw Harness command WriteGltf.

Added auxiliary method OSD_Path::FileNameAndExtension() splitting file name into Name and Extension.

19 months ago0031153: Visualization - Non clear highlighting of selected trihedron elements
vsv [Tue, 19 Nov 2019 08:31:46 +0000 (11:31 +0300)]
0031153: Visualization - Non clear highlighting of selected trihedron elements

AIS_Trihedron - removed extra fields holding highlight styles; standard styles are now used instead;
fixed unexpected modification of global aspects;
fixed unhighligting of selected plane within Shaded trihedron.

AIS_InteractiveContext now sets highlight color to highlight aspects, not only base color to drawer itself.

19 months ago0031174: Visualization - support user-provided stipple line patterns
kgv [Mon, 18 Nov 2019 10:42:06 +0000 (13:42 +0300)]
0031174: Visualization - support user-provided stipple line patterns

19 months ago0031178: Configuration, genproj - fix searching for zlib on Linux platform
kgv [Tue, 19 Nov 2019 17:21:00 +0000 (20:21 +0300)]
0031178: Configuration, genproj - fix searching for zlib on Linux platform

zlib library is called libz on Linux.

19 months ago0030964: Data Exchange - use Standard_ReadLineBuffer within OBJ reader
mzernova [Tue, 17 Sep 2019 13:05:05 +0000 (16:05 +0300)]
0030964: Data Exchange - use Standard_ReadLineBuffer within OBJ reader

Standard_ReadLineBuffer now supports a processing of the special multi-line case with \ at the end of the line.

Standard_RedLineBuffer was used to load Stl files

19 months ago0031015: Visualization, TKOpenGl - OpenGl_WorldViewState does not cache inverted...
kgv [Tue, 1 Oct 2019 05:27:57 +0000 (08:27 +0300)]
0031015: Visualization, TKOpenGl - OpenGl_WorldViewState does not cache inverted matrix

Implementation has been fixed to proprely set myInverseNeedUpdate flag.

19 months ago0031175: Visualization - support dumping RED channel as grayscale image
kgv [Mon, 18 Nov 2019 11:00:01 +0000 (14:00 +0300)]
0031175: Visualization - support dumping RED channel as grayscale image

Graphic3d_BufferType has been extended by Graphic3d_BT_Red.

19 months ago0031171: Draw - support Unicode input / output in console on Windows
abv [Sat, 16 Nov 2019 05:59:38 +0000 (08:59 +0300)]
0031171: Draw - support Unicode input / output in console on Windows

System console is configured at DRAW start to use UTF-8 encoding, for cout and cin to deal correctly with Unicode symbols.
Use of std::wcout is avoided as it leads to corrupted output.

Command testgrid is improved to enforce UTF-8 encoding in child DRAW processes to preserve Unicode symbols in captured output.

Test bugs fclasses bug22125 is refactored:
- avoid dependency on external data file
- avoid producing snapshot
- check that Unicode name of the file created by OCCT procedure matches the name interpreted by Tcl functions

19 months ago0031159: Visualization - Font_FontMgr skips sub-faces within .ttc font collections
kgv [Wed, 13 Nov 2019 11:31:48 +0000 (14:31 +0300)]
0031159: Visualization - Font_FontMgr skips sub-faces within .ttc font collections

Font_SystemFont now defines Face Id in addition to file path.
Font_FontMgr::CheckFont() has been extended to return the list of Faces from font collections.

19 months ago0031144: Shape Healing - ShapeAnalysis::OuterWire() infinite loop on solid obtained...
abv [Tue, 12 Nov 2019 16:10:14 +0000 (19:10 +0300)]
0031144: Shape Healing - ShapeAnalysis::OuterWire() infinite loop on solid obtained from IFC

Implementation of ShapeAnalysis::OuterWire() is revised to avoid infinite cycle if face contains internal vertex.

19 months ago0030958: BRepOffsetAPI_ThruSections operation raises an exception while building...
jgv [Mon, 21 Oct 2019 10:50:10 +0000 (13:50 +0300)]
0030958: BRepOffsetAPI_ThruSections operation raises an exception while building history

Correct methods Build and Generated:
use BRepTools_WireExplorer instead of TopExp_Explorer or TopoDS_Iterator, for compatibility with previous computations.

19 months ago0031140: Draw command "cirtang" raises exception on the parallel curves
gka [Thu, 7 Nov 2019 15:09:48 +0000 (18:09 +0300)]
0031140: Draw command "cirtang" raises exception on the parallel curves

Exception in the algorithm Geom2dGcc_Circ2dTanOnRadGeo raised because the number of solutions exceeded the size of reserved array for solutions. A check has been added to forbid adding solutions outside of allocated place.

The similar protection has been done in other algorithms of this package.

19 months ago0031118: Visualization - Font_FontMgr skips fonts with unknown styles like Narrow...
kgv [Fri, 8 Nov 2019 11:13:53 +0000 (14:13 +0300)]
0031118: Visualization - Font_FontMgr skips fonts with unknown styles like Narrow or Black

Extended Style name is now appended to Family name for unique identification of the font.
vfont -find now accepts mask to search the font and returns family name.

19 months ago0031137: Modeling Data, BinTools_ShapeSet - avoid allocation of temporary arrays IR-2019-11-08
kgv [Wed, 6 Nov 2019 16:26:24 +0000 (19:26 +0300)]
0031137: Modeling Data, BinTools_ShapeSet - avoid allocation of temporary arrays

BinTools_ShapeSet now defines maps with proper types instead of Standard_Transient.
BinTools_ShapeSet now avoids allocation of temporary arrays while reading
triangulation and polygonal data.

Classes Poly_Triangle, Poly_PolygonOnTriangulation, Poly_Polygon3D and Poly_Polygon2D
have been cleared from .lxx files and extended by new methods for preallocating and filling array,
as alternative to passing arrays by copy.

wavefront command - export "f" instead of obsolete "fo" keys into file.
BinTools - added missing tools for reading/writing short reals.

19 months ago0031138: Visualization - Image_AlienPixMap fails to load PNG image with palette
kgv [Wed, 6 Nov 2019 20:53:53 +0000 (23:53 +0300)]
0031138: Visualization - Image_AlienPixMap fails to load PNG image with palette

Added fallback code converting unsupported pixel format into RGB24 using FreeImage itself.

19 months ago0031139: Data Exchange - fix misprint in RWObj_CafReader
kgv [Wed, 6 Nov 2019 21:11:57 +0000 (00:11 +0300)]
0031139: Data Exchange - fix misprint in RWObj_CafReader

RWObj_CafReader::BindNamedShape(), added missing bind to material map.
XCAFDoc_VisMaterial::ConvertToCommonMaterial()/::ConvertToPbrMaterial(), added copying of base color texture.
XCAFPrs_DocumentExplorer now properly fills XCAFDoc_VisMaterial property of XCAFPrs_Style.

19 months ago0031135: Visualization, TKOpenGl - texture sRGB -> linear conversion is applied twice...
kgv [Wed, 6 Nov 2019 13:59:27 +0000 (16:59 +0300)]
0031135: Visualization, TKOpenGl - texture sRGB -> linear conversion is applied twice by Path Tracer

Removed from PathtraceBase.fs redundant gamma correction applied to texture.

19 months ago0031038: Draw - adaptations for running tests with CLang address sanitizer
abv [Sun, 6 Oct 2019 06:33:53 +0000 (09:33 +0300)]
0031038: Draw - adaptations for running tests with CLang address sanitizer

New optional environment variable CSF_CPULIMIT_FACTOR is introduced, allowing scaling the argument given to DRAW command cpulimit by specified factor.

Command testgrid is extended by two new options:
- -skipped: to re-run tests skipped in specified log
- -skip: to skip specified number of tests in the beginning of test sequence

Temporary Tcl scripts generated by test system are now removed from the test log directories immediately after the test execution, to save disk space.

Advises on use of CLang sanitizers are added in guide "Debugging hints and tips".

19 months ago0031131: [REGRESSION] Mesh - location of Wire affects Poly_Polygon3D
oan [Tue, 5 Nov 2019 13:13:38 +0000 (16:13 +0300)]
0031131: [REGRESSION] Mesh - location of Wire affects Poly_Polygon3D

Use TopoDS_Edge without location in case of free edges to produce Poly_Polygon3D without offset.

19 months ago0031125: BRepMesh_IncrementalMesh crash in constructor for empty compound shape
oan [Mon, 4 Nov 2019 14:49:07 +0000 (17:49 +0300)]
0031125: BRepMesh_IncrementalMesh crash in constructor for empty compound shape
Added check for cases of empty shapes producing null models.
NoError status is returned as far as empty compounds are generally coorect shapes.

19 months ago0031124: Configuration - linker errors when building with CLang on Windows
abv [Sat, 2 Nov 2019 08:10:47 +0000 (11:10 +0300)]
0031124: Configuration - linker errors when building with CLang on Windows

Standard_EXPORT is added in declaration of virtual methods where it was missing, to allow creation of sub-classes in other DLLs.
In some classes in OpenGl package Standard_EXPORT is added for all methods to make these classes usable in other DLLs.

19 months ago0031060: Configuration - Support building with CLang compiler under VS 2019
abv [Fri, 11 Oct 2019 19:04:02 +0000 (22:04 +0300)]
0031060: Configuration - Support building with CLang compiler under VS 2019

Build tools are updated to support building with Visual Studion 2019 toolset ClangCL (LLVM clang-cl):
- In CMake builds, use of unsupported option "-std=c++0x" is avoided
- Tool genconf recognizes availability of ClangCL toolset and proposes it in the list
- Tool genproj recognizes new compiler specification VCVER=vclang and generates VS 2019 projects for it

Note that vclang configuration puts binaries to folder "vc14" as it is compatible with vc14 CRT.

Code is updated to build with Clang for Windows without errors and warnings:
- In BVH classes, pure virtual destructors are replaced by empty ones, to avoid bogus compiler warning
- In .lex files, pragmas are added to disable warnings in parser code
- In OSD, signature of function _osd_wnt_set_error() is corrected to avoid warning on incorrect use of va_args (undefined behavior)
- In OSD_Host, OSD_Parallel_TBB, warnings on usage of deprecated function are disabled
- In Quantity_ColorRGBA and ViewerTest_CmdParser, incorrect use of predefined macro __FUNCTION__ assuming it was a string literal is avoided
- In Standard_Macro.hxx, code is reordered to handle Clang for Windows appropriately
- In AdvApp2Var_SysBase.hxx, inclusion of obsolete (MSVC-specific) header file is replaced by Standard_TypeDef.hxx
- In Standard_ErrorHandler.hxx, empty statements added to avoid warning on unused class fields
- In IVtkDraw and ViewerTest, interface is corrected to use actual type avoiding unnecessary type casts

Off-topic: corrections of some errors (uninitialized class fields) reported by VS Code Analysis in TKernel

19 months ago0031117: Visualization, AIS_ViewCube - additional properties for visualization of... IR-2019-11-01
vro [Thu, 31 Oct 2019 12:57:25 +0000 (15:57 +0300)]
0031117: Visualization, AIS_ViewCube - additional properties for visualization of trihedron of a View Cube

AIS_ViewCube has been extended by additional properties (previously hard-coded):
- radius of axes of the trihedron
- radius of cones of the axes of the trihedron
- radius of a sphere (central point) of the trihedron

ViewerTest command vviewcube has been extended to support new parameters:
-axesradius, -axesconeradius, -axessphereradius.

19 months ago0029367: Visualization - simplify interface of V3d_View and V3d_Viewer
osa [Wed, 30 Oct 2019 13:33:01 +0000 (16:33 +0300)]
0029367: Visualization - simplify interface of V3d_View and V3d_Viewer

The interface of V3d_View and V3d_Viewer has been simplified.
For the fields myDefinedViews, myActiveViews, myDefinedLights, myActiveLights were added appropriate methods returning the internal raw data.
Make the next methods deprecated:
IfMoreLights(), InitActiveLights(), MoreActiveLights(), NextActiveLights(), ActiveLight() and
InitActiveViews(), MoreActiveViews(), NextActiveViews(), ActiveView(), InitDefinedViews(), MoreDefinedViews(), NextDefinedViews(), DefinedView(),
InitActiveLights(), MoreActiveLights(), NextActiveLights(), ActiveLight(), InitDefinedLights(), MoreDefinedLights(), NextDefinedLights(), DefinedLight().

Remove deprecated methods added in scope of tasks 0029290 and 0028987 (Target Version 7.3.0):
SelectMgr_SelectableObject: Init(), More(), Next(), CurrentSelection().
SelectMgr_Selection: Init(), More(), Next(), Sensitive().
V3d_AmbientLight: one constructor.
V3d_DirectionalLight: two constructors.
V3d_PositionalLight: one constructor.
V3d_SpotLight: two constructors.

19 months ago0030700: Visualization, TKOpenGl - support PBR Metallic-Roughness shading model
iko [Thu, 20 Jun 2019 06:53:20 +0000 (09:53 +0300)]
0030700: Visualization, TKOpenGl - support PBR Metallic-Roughness shading model

Metallic-Roughness shading model Graphic3d_TOSM_PBR has been implemented.
New materials descriptors Graphic3d_PBRMaterial have been added to Graphic3d_MaterialAspect.
PBR shading model requires OpenGL 3.0+ or OpenGL ES 3.0+ hardware.
Environment cubemap is expected to be provided for realistic look of metallic materials.

occLight_IsHeadlight() now returns bool instead of int.
Avoid using lowp for enumerations to workaround occLight_IsHeadlight()
ignorance on Adreno 308 caused by some GLSL optimizator bugs.

OpenGl_Texture::EstimatedDataSize() - fixed estimation for Cubemap textures.
OpenGl_Sampler::applySamplerParams() - fixed uninitialized GL_TEXTURE_WRAP_R in case of GL_TEXTURE_CUBE_MAP target.

19 months ago0030609: Coding - eliminate warnings issued by gcc 8.1.0
tiv [Fri, 25 Oct 2019 13:01:09 +0000 (16:01 +0300)]
0030609: Coding - eliminate warnings issued by gcc 8.1.0

Warnings issued by gcc 8.1.0 are eliminated.

New Standard_WarningDisableFunctionCast.hxx header file is introduced to disable GCC warning "-Wcast-function-type" in those files *.cxx where it is issued. This warning is issued when the conversion from the pointer to one function type to the pointer to another function type takes places, it was added in gcc 8.1.0.

The function MyVISEDG in SWDRAW_ShapeAnalysis.cxx is removed as it does not seem to do anything useful and relevant DRAW command K_VISEDG is never used in tests.

19 months ago0031092: Foundation Classes - incorrect last output value for Infinite progress indicator
abv [Fri, 25 Oct 2019 14:11:33 +0000 (17:11 +0300)]
0031092: Foundation Classes - incorrect last output value for Infinite progress indicator

DRAW implementation of progress indicator is corrected to print "finished" instead of 1e100 for the end of infinite range.
Added test bugs fclasses bug31092

19 months ago0013175: XCAF document with one vertex is exported to an incorrect STEP file
abv [Fri, 25 Oct 2019 12:49:01 +0000 (15:49 +0300)]
0013175: XCAF document with one vertex is exported to an incorrect STEP file

Added non-regression test case

19 months ago0031043: GCPnts_TangentialDeflection generates points which number is inconsistent...
oan [Tue, 29 Oct 2019 08:04:53 +0000 (11:04 +0300)]
0031043: GCPnts_TangentialDeflection generates points which number is inconsistent with MinimumOfPoints Parameter

Updated crvtpoints command API to reproduce reported problem
Generate number of points according to the specified minimum value

19 months ago0031070: Configuration - fix building issues when using Emscripten toolchain IR-2019-10-25
kgv [Tue, 15 Oct 2019 23:42:33 +0000 (02:42 +0300)]
0031070: Configuration - fix building issues when using Emscripten toolchain

Handled __EMSCRIPTEN__ macros to:
- Workaround atomics (__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 is undefined, but GCC atomics are provided).
- Suppress non-standard header <sys/signal.h> warning.
- Return OSD_LinuxREDHAT.
- Avoid inclusion of XLib headers.
- Skip fontconfig library.
- Enable EGL+GLES path (translated by Emscripten into WebGL).
- Skip eglCreatePbufferSurface() not implemented by Emscripten EGL.

Fixed Graphic3d_Vec4.hxx usage within Quantity_ColorRGBA.hxx.

OpenGl_ShaderManager::defaultGlslVersion() now prefers GLSL 300 es when WebGL 2.0 is available,
as there no any OpenGL ES greater than 3.0 emulation so far.

Shaders_Declarations.glsl - added workaround for GLSL compilation on WebGL 1.0
by defining Light properties accessors as macros instead of functions
('[]' : Index expression must be constant).

OpenGl_FrameBuffer::Init() - added workaround for initialization of GL_DEPTH24_STENCIL8
depth-stencil attachment on WebGL 1.0 + GL_WEBGL_depth_texture extension.

OpenGl_Context::Vec4FromQuantityColor() now considers myIsSRgbActive flag
to handle use case, when Immediate Layer is drawn directly into window buffer,
which is not sRGB-ready.

Added new sample - OCCT WebGL viewer.

19 months ago0031079: Visualization - embed minimal fallback font
kgv [Fri, 18 Oct 2019 08:40:55 +0000 (11:40 +0300)]
0031079: Visualization - embed minimal fallback font

Font_FTFont::FindAndCreate() now loads embedded fallback font within Font_StrictLevel_Any level.
Font_FontMgr::FindFont() - fixed misprint in message, and customized message for range fallback error.
Font_FontMgr - added one more fallback Korean font for Linux.

vfont command has been extended with options to clear Font Manager content.

19 months ago0031102: Visualization, AIS_ViewController - AIS_DragAction_Stop is never emitted...
kgv [Thu, 24 Oct 2019 10:44:49 +0000 (13:44 +0300)]
0031102: Visualization, AIS_ViewController - AIS_DragAction_Stop is never emitted on mouse unclick

AIS_ViewController::UpdateMousePosition() now sets myMouseStopDragOnUnclick flag
to emit AIS_DragAction_Stop on mouse unclick.

20 months ago0030878: Modeling Algorithms - BRepLib_MakeFace produces face with abnormal surface
emv [Thu, 26 Sep 2019 11:50:10 +0000 (14:50 +0300)]
0030878: Modeling Algorithms - BRepLib_MakeFace produces face with abnormal surface

When collecting the points to build plane use the points on the curve instead of poles (in case of BSpline and Bezier curves).

Side effect changes:
Changes in Geom2dHatch_Elements are to increase the chance of correct 2d classification (by the means of Geom2dHatch_Classifier) by taking more than just one point on the edge to construct the classification ray and by checking if this ray is not tangent to the edge itself.

20 months ago0031088: Visualization - GL_INVALID_ENUM while dumping view within OpenGL 1.1
kgv [Sun, 20 Oct 2019 11:13:46 +0000 (14:13 +0300)]
0031088: Visualization - GL_INVALID_ENUM while dumping view within OpenGL 1.1

OpenGl_Sampler::resetGlobalTextureParams() - added missing version check before disabling GL_POINT_SPRITE.

20 months ago0031082: Visualization - crash on display if there are no lights in the view
kgv [Sun, 20 Oct 2019 11:53:13 +0000 (14:53 +0300)]
0031082: Visualization - crash on display if there are no lights in the view

OpenGl_View - fixed uninitialized property myLights.

20 months ago0031037: Foundation Classes - add class Message_PrinterSystemLog for printing message... IR-2019-10-20
kgv [Sat, 5 Oct 2019 20:34:35 +0000 (23:34 +0300)]
0031037: Foundation Classes - add class Message_PrinterSystemLog for printing messages into system log

Added new class Message_PrinterSystemLog that can be used for logging messages into system log for debugging application in restricted environment.

20 months ago0025341: Visualization - disallow displaying object as part of connected one and...
kgv [Sat, 28 Sep 2019 10:36:24 +0000 (13:36 +0300)]
0025341: Visualization - disallow displaying object as part of connected one and as a free one at the same time

AIS_ConnectedInteractive::connect() now throws exception on connecting already displayed object.
AIS_TextLabel::AcceptDisplayMode() - added missing Display Mode filter.

Commands vconnect, vconnectto and vaddconnected have been corrected to
replace dispalyed AIS_Shape with AIS_ConnectedInteractive in context.

20 months ago0031067: Visualization - Aspect_Window::DoResize() should be a non-const method
kgv [Sat, 19 Oct 2019 12:38:48 +0000 (15:38 +0300)]
0031067: Visualization - Aspect_Window::DoResize() should be a non-const method

Removed 'const' from Aspect_Window::DoResize() virtual method.

20 months ago0031056: Samples - update glfw sample to use AIS_ViewController
kgv [Thu, 10 Oct 2019 14:09:07 +0000 (17:09 +0300)]
0031056: Samples - update glfw sample to use AIS_ViewController

20 months ago0031036: Foundation Classes, Message_PrinterOStream - add option printing colored...
kgv [Sat, 5 Oct 2019 19:01:09 +0000 (22:01 +0300)]
0031036: Foundation Classes, Message_PrinterOStream - add option printing colored text into console

New property Message_PrinterOStream::ToColorize() can be set to colorize text output into console.
The new option is disabled by default.

20 months ago0029902: Data Exchange, XCAF - provide extended Material definition for visualization...
kgv [Wed, 3 Jul 2019 08:28:26 +0000 (11:28 +0300)]
0029902: Data Exchange, XCAF - provide extended Material definition for visualization purposes

Introduced new attribute XCAFDoc_VisMaterial storing visualization material definition.

XCAFPrs_Style has been exteneded Material() property.
XCAFPrs_AISObject::DispatchStyles() maps new XCAFPrs_Style::Material() property onto graphics aspects.

RWGltf_GltfJsonParser and RWObj_CafReader now put Material definition into XCAF document instead of a color label.
RWGltf_MaterialMetallicRoughness - added missing properties AlphaMode, AlphaCutOff and IsDoubleSided;
fixed default values in constructor for Metallic and Roughness.

Added commands XGetAllVisMaterials, XGetVisMaterial, XAddVisMaterial,
XRemoveVisMaterial, XSetVisMaterial, XUnsetVisMaterial for working with
new visualization materials table in the document.

20 months ago0029528: Visualization, TKOpenGl - allow defining sRGB textures
kgv [Thu, 29 Aug 2019 08:04:56 +0000 (11:04 +0300)]
0029528: Visualization, TKOpenGl - allow defining sRGB textures

OpenGL rendering is now done into sRGB framebuffer.
OpenGl_ShaderManager::prepareStdProgramFboBlit() has been extended
by programs resolving MSAA texture and applying gamma correction as fallbacks.

Quantity_Color definition has been modified to store RGB components
in linear color space within Quantity_TOC_RGB type.
Standard colors defined by Quantity_NameOfColor enumeration has been updated accordingly.
New Quantity_TOC_sRGB type has been introduced to handle RGB components in non-linear sRGB color space.

OpenGl_TextureFormat class definition has been moved to dedicated files.
New method OpenGl_TextureFormat::FindFormat() replaces OpenGl_Texture::GetDataFormat().
New method OpenGl_TextureFormat::FindSizedFormat() replaces OpenGl_FrameBuffer::getColorDataFormat()
and OpenGl_FrameBuffer::getDepthDataFormat().

Graphic3d_TextureRoot::IsColorMap() - introduced new property defining
if RGB(A)8 image formats should be loaded as sRGB(A) textures or as data RGB(A) textures.
OpenGl_Texture initialization methods have been extended with new theIsColorMap argument.

vreadpixel - added argument -sRGB printing color in sRGB color space.

Test cases have been updated to new sRGB rendered results.

20 months ago0030969: Coding Rules - refactor Quantity_Color.cxx color table definition
kgv [Mon, 16 Sep 2019 20:06:38 +0000 (23:06 +0300)]
0030969: Coding Rules - refactor Quantity_Color.cxx color table definition

The table of named colors has been compressed and moved out
from Quantity_Color.cxx into Quantity_ColorTable.pxx.

Quantity_NameOfColor - grayscale enumeration values have been re-ordered to fix discontinuity.
Duplicating colors has been merged within enumeration:
Added aliases to several other common colors:

Quantity_Color class definition has been cleaned to follow OCCT coding style.
Quantity_Color now stores NCollection_Vec3<float> as class field instead of separate components.
Removed unused class Quantity_ColorDefinitionError.

New methods Quantity_Color::Convert_LinearRGB_To_sRGB() and Quantity_Color::Convert_sRGB_To_LinearRGB()
converting RGB components from linear to non-linear sRGB colorspace and vice versa.
Image_PixMap::PixelColor() and Image_PixMap::SetPixelColor() methods have been extended
with an optional argument for performing linearization/delinearization of 8-bit sRGB pixel formats.

Draw Harness command AISColor has been corrected to take color name instead of enumeration index.

20 months ago0031023: Fillet regression in OCCT 7.4 from 7.3
jgv [Fri, 20 Sep 2019 10:52:10 +0000 (13:52 +0300)]
0031023: Fillet regression in OCCT 7.4 from 7.3

Modify local static function ReorderFaces to be able to process multiple-faces-connecting vertices.

20 months ago0030940: BRepFilletAPI_MakeFillet algorithm fails on closed shell
jgv [Fri, 20 Sep 2019 10:52:10 +0000 (13:52 +0300)]
0030940: BRepFilletAPI_MakeFillet algorithm fails on closed shell

1. Add check of configuration of corner in the end of spine.
2. Correct treatment of "smooth corners".

20 months ago0026071: BRepOffsetAPI_MakePipeShell produces rough result
jgv [Fri, 6 Sep 2019 14:03:59 +0000 (17:03 +0300)]
0026071: BRepOffsetAPI_MakePipeShell produces rough result

1. Correct building history: the case of closed spine.
2. Rollback method GeomFill_CorrectedFrenet::InitInterval - correct processing singularities on spine.
3. Correct test cases.

20 months ago0031066: Infinite loop in ShapeUpgrade_UnifySameDomain
jgv [Mon, 14 Oct 2019 13:54:13 +0000 (16:54 +0300)]
0031066: Infinite loop in ShapeUpgrade_UnifySameDomain

Modification in local static method TransformPCurves - compute real U And V bounds of a face and use them in further computations.

20 months ago0029068: Data Exchange - Invalid rotation of result shape after import attached STEP...
skl [Wed, 30 Aug 2017 09:17:10 +0000 (12:17 +0300)]
0029068: Data Exchange - Invalid rotation of result shape after import attached STEP file

Changes for using Axis Placement(not used during creation of assembly) as transformation for root Shape Representation.
Test for bug 29068 and auxilary command are added.

20 months ago0030932: Modeling Algorithms - Invalid result on 2d curve on surface approximation
aml [Fri, 13 Sep 2019 08:47:17 +0000 (11:47 +0300)]
0030932: Modeling Algorithms - Invalid result on 2d curve on surface approximation

New method generating 3D curve is added when 2D curve is linear isoline.

20 months ago0029843: Modeling Algorithms - Boolean FUSE produces incorrect result
emv [Fri, 20 Sep 2019 05:56:21 +0000 (08:56 +0300)]
0029843: Modeling Algorithms - Boolean FUSE produces incorrect result

When splitting the shell/face with internal faces/edges use the 'internal' criteria of the face to choose the way to create loops.

Side effect changes:
- When performing Boolean operation - move the objects located far from Origin to the Origin to increase the accuracy of intersections.

20 months ago0031029: BRepLib::SameParameter regression in OCCT 7.4 from OCCT 7.3
ifv [Mon, 14 Oct 2019 13:51:52 +0000 (16:51 +0300)]
0031029: BRepLib::SameParameter regression in OCCT 7.4 from OCCT 7.3

1. BRepLib.cxx: calculation of 2d tolerance is changed in method BRepLib::SameParameter(Edge..)
2. Geom2dConvert.cxx: incorrect comparing
"SquareDistance < tolerance"
is replaced by
"SquareDistance < tolerance*tolerance"
because tolerance is linear value.

20 months ago0031050: Data Exchange - XmlXCAF persistence stores triangulation-only Faces without...
kgv [Wed, 9 Oct 2019 15:18:14 +0000 (18:18 +0300)]
0031050: Data Exchange - XmlXCAF persistence stores triangulation-only Faces without any geometry

BRepTools_ShapeSet now ignores myWithTriangles flag in case if triangulation is the only geometry representation.

20 months ago0031031: Incorrect result is returned from BRepPrimAPI_MakePrism::Generated()
ifv [Tue, 8 Oct 2019 11:44:04 +0000 (14:44 +0300)]
0031031: Incorrect result is returned from BRepPrimAPI_MakePrism::Generated()

1. src\BRepSweep\BRepSweep_NumLinearRegularSweep.cxx

Fix bug by adding result in list of generated shapes, if initial shape is vertex, edge or face.

2. src\BRepLib\BRepLib.cxx

Add protection against treatment not geometric edge in BRepLib::UpdateInnerTolerances(...)

3. Add test case for bug and correct test for bug 30346 according to new behavior of algorithm

20 months ago0031013: Application Framework - Storage status is wrong after a failure
vro [Tue, 1 Oct 2019 05:36:21 +0000 (08:36 +0300)]
0031013: Application Framework - Storage status is wrong after a failure

CDF_StoreList.cxx::Store() was amended

20 months ago0030456: Make OCCT_CHECK_AND_UNSET_GROUP more general
apn [Fri, 19 Jul 2019 13:25:59 +0000 (16:25 +0300)]
0030456: Make OCCT_CHECK_AND_UNSET_GROUP more general

Modify OCCT_CHECK_AND_UNSET_GROUP function to allow unset any group of variables

20 months ago0031021: Coding Rules - Deprecation warnings on OSX within Draw_Window_1.mm
kgv [Tue, 15 Oct 2019 17:46:57 +0000 (20:46 +0300)]
0031021: Coding Rules - Deprecation warnings on OSX within Draw_Window_1.mm

Use new renamed enumeration values instead of deprecated ones.

20 months ago0031044: Coding - Standard_NODISCARD should be placed before Standard_EXPORT
abv [Mon, 7 Oct 2019 18:32:21 +0000 (21:32 +0300)]
0031044: Coding - Standard_NODISCARD should be placed before Standard_EXPORT

Standard_NODISCARD is put before Standard_EXPORT in all places throughout OCCT code