Displaying Mesh Edges in OCCT

Mesh displayed in OCCT 3D Viewer might come from different sources – imported from external file (glTF, JT, STL, PLY, OBJ), computed for analytical BRep geometry by BRepMesh and ExpressMesh algorithms or generated directly by application code.


Draw Harness test case for Mesh Edges.

The mesh is usually displayed shaded, but this presentation is not suitable for analysis of mesh structure. In many cases, application developer needs other mesh presentations to locate issues (too many details, not enough details, local deviations, etc.) and make corrections based on analysis results (adjust mesh generation or export parameters).

In this case, mesh edges presentation becomes very helpful. Continue reading


Tracking FFmpeg API changes

Using external libraries in a project as well as writing your own library reveal API/ABI compatibility issues. It is difficult preserving a public API of an intensively developed library, and almost impossible managing ABI compatibility.

In this article I’m just sharing my thoughts about maintenance burden to keep sView source code compatible with various Linux (Ubuntu) releases depending on FFmpeg version.

Continue reading

CheckDLL – checking missing DLLs

One more handful tool without user interface – CheckDLL. This one I’ve developed a long time ago (since ‘2010), but just recently have decided making it available to everybody:

It is a common problem for developer (and less common for user) that application doesn’t show up due to some libraries missing. There might be a plenty of reasons for that – mess up in environment variables (and/or batch scripts), mess up in system (some dump application decided installing a version-less DLL in System32), some libraries haven’t been copied by delivery script, mess up with 32-bit and 64-bit DLLs, forgetting dependency from C/C++ runtime libraries, etc.

The most common way for developer to check which dependencies library/application has on Windows platform is using Dependency Walker tool. This is a powerful tool, but in most cases it is over-complicated for simple use cases. In practice, I’m prefer using a Fileinfo plugin for Total Commander instead.

Still, when I need to know if there are some broken DLLs in a folder, I’m using CheckDLL. Just put this tool into your folder and launch from explorer to see that every library can be loaded. Alternatively, the tool can be also started from command-line with a path to the folder.


wglinfo – glxinfo analog for Windows

Every developer of 3D applications have to know which graphics driver is currently installed on system. And not just developer, this information might be pretty helpful even for normal user for troubleshooting issues with 3D applications. Knowing that graphics driver is installed in system sometimes doesn’t indicate that they are fully functional – in particular, on Windows platform Direct3D application might work well, while OpenGL applications don’t. While there is a plenty diagnostic tools available for that purpose, command-line tools might be more handful in many cases.

glxinfo is pretty small but helpful command-line tool on Linux, well-known by both professional and common users. It’s purpose is very simple – to print diagnostic information about OpenGL graphic driver installed on the system. OpenGL version and graphics driver vendor are most useful from the output, although for developer every printed line could be helpful (like the list of available OpenGL extensions).

Installing glxinfo is pretty simple on Linux (just “sudo apt-get install glxinfo” on any Debian-based distributive), but Windows lacks such a helpful tool at hand. Curious users, however, should be aware of wglinfo – an analog of glxinfo for Windows which can be downloaded from some sites. Unfortunately, the output of original tool lacks some important details like a list of WGL extensions and lacks updates for a very long time.

After struggling once again with this problem, I’ve decided developing and publishing a slightly “upgraded” version of wglinfo on GitHub, which now outputs more details about OpenGL:

In addition to OpenGL provided by system (WGL), it also prints information using EGL (libEGL.dll), if it is available.

Continue reading

CAD Assistant 0.9 overview

CAD Assistant 0.9 released on 3rd of April, ‘2017 is a big step from previous release 0.8 with many new features and improvements in changelog:

  • Import of JT models (only mesh, no LODs).
  • Option to import multiple models into a single document.
  • Assembly structure is now displayed also for mesh-only files.
  • Improved performance while displaying big assemblies.
  • Improved glTF mesh format support.
  • Support of polygons with more than 4 nodes within mesh import.
  • Option to control nodes merging for STL mesh import.
  • Option to rotate around a picked point.
  • Option to use shaded mode for highlighting a selected object.

CAD Assistant is based on Open CASCADE Technology and demonstrates two of its strongest parts – data exchange (import/export of files in open standards STEP and IGES) and efficient multi-platform visualization based on OpenGL / OpenGL ES.

PLY mesh with Nodal+Elemental properties
and interactive color scale in CAD Assistant (iPhone).

Go to the article – CAD Assistant 0.9

Meditation on statistics

Having all these powerful tools (Google Play, iTunes connect, Google Analytics, I believe Steam provides something similar for developers as well) collecting overwhelming statistics on your projects may play a weird joke with developer. I have to admit that I became obsessed with stats – watching “what’s new” becomes a part of everyday ritual, just like a cup of coffee in the morning.

I know perfectly well, that looking on statistics everyday will not change it, but still I’m unable to ignore it. And there are so many metrics to play with – countries, devices, screen sizes, version of OS, etc.! Knowing so much and nothing at the same time become a burden rather than a paradise.


sView on Google Play – Total Installs by user

Go to the article – Mediation on statistics

QtQuick/QML in a growing project

Some time ago at Open CASCADE we have started a new project called CAD Assistant, which become a small but still powerful 3D viewer and convertor for CAD models (STEP, IGES, BREP) as well as Mesh files (STL, OBJ, PLY, glTF) available on many platforms (Windows, OS X, Android, iOS).


Although in Open CASCADE we have developed a plenty of desktop applications before, mobile platforms and touch screen user interface were something new for most of us at that time – and making a new application for Android platform was a challenging but inspiring task. One of the reasons for starting CAD Assistant development was actually porting and testing open-source Open CASCADE Technology framework onto Android platform – including its own 3D visualization toolkit.

After some investigations, we have decided using Qt5/QML framework for the user interface. This decision was not a strong choice, but rather an opportunity to learn more about QtQuick and QML so that to have experience with this technology.

After a couple of years, I have decided writing a small article representing my personal impressions about this technology. This article might be useful for developers deciding upon technologies for starting a new project – there is no direct comparison with other frameworks, but several important aspects good to know at the very beginning.

Go to the article – QtQuick/QML in a growing project.