H3DAPI and Haptikfabriken API

H3D api supports Haptikfabriken/Polhem

Building a graphics & haptics application is greatly simplified with the use of an API designed specifically for taking the advantage of 3D haptics. One such API is H3DAPI, developed by SenseGraphics, a subsidy of SurgicalScience. Fun note, SenseGraphics’ headquarter is only a few kilometers from Forsslund Systems here in Stockholm county, Sweden, so you don’t have to travel far for great software and hardware development.

As of writing the latest version of H3D is 2.4, and works both in Windows and Linux. For Windows it is recommended to get the H3DApi-Full-2.4.0.exe from here, and then apply our haptikfabrikenapi patch and recompile, or just extract the pre-compiled binaries into your installed folder of H3DAPI (replacing current files).  Linux users would most likely build from source, checking out from the subversion repository for the 2.4 release. Note that this is a meta-repo, so you will get more files than shown if you just browse it.

H3D is mainly declarative, in that it is designed to render scenes described in the XML-based markup language X3D. H3DAPI can render any X3D scene, and comes with a stand-alone viewer and console-based loader for doing so. And since X3D is extendable can a scene author, using only a text editor, add haptic properties to visual objects like friction, stiffness etc which can be perceived interactively with a 3D haptic device.

When developing a larger app you will probably need to extend the API through custom-made libraries, something we have done for the Kobra Simulator when we developed the open-source forssim H3D extension. Forssim adds the ability to drill in virtual models, in particular models of bone and teeth, with both visual and haptic feedback. The declarative X3D is combined with imperative EcmaScript (Javascript) snippets, to handle the “game logic” of the simulation, in a similar way that most modern websites combine HTML and JavaScript. H3D also support Python as interpreter.

Leave a Reply