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.
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.
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.
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
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
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.
sView 17.01 has been released recently introducing OpenVR support and various improvements for viewing VR360 panoramas.
OpenVR support allows viewing videos and images in HMD devices like HTC Vive – with head tracking support within VR360 panoramas.
New version also introduces support for audio tracking within panoramic videos – a very nice feature for watching video in HMD. This feature requires multi-channel audio streams (it will work with stereo stream, but spatial effect will be very poor in this case). sView now also supports a 4-channel Ambisonic B-Format audio streams – as it supported by OpenAL Soft library through AL_EXT_BFORMAT extension. Ambisonic audio is actually a requirement for uploading videos with spatial audio onto YouTube. Using external tools it is also possible to download VR360 videos with spatial audio from YouTube and play it in sView.
User Ulf Brusquini has prepared a small tutorial for configuring spatial audio playback in sView:
One curious thing about OpenVR is that right now it is not very “open” as it can be deduced from name. In fact it is only SteamVR which can be used with it (and thus requires Steam client to be installed), and OpenVR itself is a draft for open API with only one implementation having no source code.
OpenVR is a Valve initiative for making VR open to everybody (HTC Vive has been developed by HTC and Valve in partnership). And now future of open VR standard in hands of Khronos group – well known consortium developing open standards (like OpenGL). So developers might expect a really open standard which will be accepted by many VR vendors, instead of mess of vendor-locked APIs currently available.