XCAF / B-Rep format changes in OCCT 7.6.0

Forthcoming OCCT 7.6 release will introduce some improvements in XCAF and B-Rep file formats, which breaks backward compatibility with older OCCT releases. Anticipating users’ frustration due to file format incompatibilities, this small article is intended to show some light on the background of new changes.

Continue reading

OCCT Viewer and GTK

It’s been a while since I’ve written an application using the GTK framework. Developers of industrial cross-platform applications strongly prefer the Qt framework as it tries to mimic GUI per platform, while GTK brings the same uniform experience to all platforms. But apart from strange movements of GNOME developers in GNOME 3, GTK remains a strong framework for development of native Linux applications.

Open CASCADE Technology (OCCT) users may easily find code samples embedding OCCT 3D Viewer into Qt-based, MFC-based, WinForms-based and even WPF-based applications, but one may barely find any working sample based on GTK framework.

Following a recent question on this topic on StackOverflow, I’ve decided to take a look onto this problem and to prepare a simple Hello OCCT Viewer sample using gtkmm (GTK for C++).

Continue reading

OCCT Draw in the Browser

Draw Harness is a Tcl interpreter exposing Open CASCADE Technology framework. Being an integral part of OCCT itself, Draw Harness provides out-of-the-box facilities for evaluation, testing and automation of OCCT algorithms – including modeling, data exchange and visualization.

Modern browser technologies like WebAssembly allow bringing existing C++ projects to a web world. I’m using Draw Harness in my day-by-day routines, and was eager to see it working in a web environment, which required some adaptations.

It is always challenging, but also interesting porting applications to a new platform, learning new platform APIs, fighting with awkward limitations and bugs of the platform, and it’s been a while since I became curious about portability of Tcl interpreter to unusual platforms. After all, the main purpose of porting Draw Harness to the web is having fun ;-).

Continue reading

OCCT Viewer minimal setup

3D Viewer is an integral part of Open CASCADE Technology framework. There are plenty of graphic engines around, but built-in OCCT 3D Viewer remains a natural choice for OCCT-based applications providing straight-forward to use presentations for B-Rep geometry and interactive functionality essential for CAD-alike applications. But naturally OCCT Viewer usage is not limited to CAD.

This article is devoted to the very beginning – 3D viewer setup, or “Hello World” from OCCT 3D Viewer. It is, however, expected that the developer is already familiar with basic OCCT – handles (smart-pointers), shapes, development environment, etc.

Continue reading

OCCT PBR in WebGL 1.0

OCCT 7.5.0 has introduced PBR (physically-based rendering) metal-roughness material workflow in it’s real-time rendering engine. This feature brings more realistic rendering of metal materials and, which might be even more important, an industry-adopted material definition supported by many 3D applications (thanks to glTF 2.0 aka “JPEG for 3D” wide adoption).

PBR is considerably much more computationally intensive compared to old simplified approximations like Phong/Gouraud shading models, and involves a lot of optimization tricks to bring PBR to real-time. At the moment of development of PBR in Open CASCADE Technology, OpenGL 3.0 (specs released in ‘2008) with it’s mobile counterpart OpenGL ES 3.0 (released ‘2012) was considered a good baseline covering the majority of modern devices  for PBR implementation. But what about WebGL?

Continue reading

Testing OCCT on Apple M1 (ARM64)

Apple has just released its first generation of ARM-based desktop computers. Macs used exclusively Intel CPUs since transition from IBM PowerPC in 2006, but now Apple believes that their own SoC, originally developed for mobile devices (iPhone and iPad), can replace Intel CPUs within the whole line of products in just 2 years!

Apple M1 SoC became the heart of several low-end devices within the ‘2020 line of products, but Apple promises an outstanding performance difference compared to previous Intel-based generation of products. This is difficult to believe! Could this be true?

Continue reading

OpenGL on Apple M1

Apple has deprecated OpenGL since macOS SDK for Mojave 10.14, making me curious about OpenGL support since the very announcement of Mac mini based on Apple M1 (ARM) SoC. It was claimed in many places that macOS Big Sur remains compatible with OpenGL applications, but so far no details could be found anywhere which OpenGL version will be supported on M1 GPU (OpenGL compatibility table has not been updated since ‘2017).

Continue reading

Progress Indication changes in OCCT 7.5.0

OCCT 7.5.0 introduces a redesigned progress indication API with the Message_ProgressIndicator class as an entry point. The redesign was focused on the following objectives:

  • Allow propagating a progress indicator to nested algorithms within multiple working threads.
  • Handle various inconsistencies and bugs in existing design (e.g. causing incorrect progress indication due to internal bugs).
  • Improve logic to detect and reveal API misuse (e.g. causing incorrect progress indication due to incorrect API usage).
  • Make the public API more straight-forward and clear for using in algorithms.
Continue reading