Computer Haptics & Active Interfaces


What's the difference between stable and beta versions?

Versions listed as 'beta' are different from 'stable' versions only in that we didn't have time to test every single example before releasing CHAI. The most recent version is always the one that we're using and the one that we recommend.


RELEASE 1.60 [STABLE]

  • Improved support for Linux
  • Extended functionalities in the math library
  • Support of dynamic meshes under ODE dynamics engine
  • Added new examples
  • Added support for the Falcon haptic device
  • Corrected reported bugs from previous release

download zip file: CHAI 3D [v1.62] - [25 MB] (May 24, 2008)


RELEASE 1.51 [STABLE]

  • Added a callback mechanism to cGenericDevice, so we don't have to spawn an additional thread when the device can provide callbacks. You register your callback with cGenericDevice, and he calls you back every time the device wants you to compute a force. The object_loader example in MSVC demonstrates this; in many cases this is a significant performance improvement.

  • New examples:

    • viewmesh: a command-line mesh viewer
    • force_shading: demonstrates the extension of CHAI's proxy to support shading
    • mesh-mesh collisions: demonstrates the extension of CHAI's collision-detection to detect mesh-mesh collisions
    • implicit_functions: demonstrates the use of CHAI's potential fields to render implicit functions

    More details on the examples page.

  • Phantom encoders will no longer be reset automatically when you initialize a Phantom. This means that you won't have to hold premiums in their reset position every time you start an app.
  • Tons of documentaion fixes thanks to Phil's acute eye. All functions now appear in doxygen.

  • Added preliminary Linux support. You'll see some #ifdef _LINUX's around, and a linux directory plus a linux examples directory. Features that are left out in Linux (for now) are:

    • Vertex shaders
    • Vertex buffer objects
    • Fonts are simplified to use GLUT only
    • No virtual device
    • No boards support
    • The freedom 6 is not supported yet
    • Only one phantom can be opened right now

    Also note that we haven't been able to test with lots of Linices or lots of gcc's, so we welcome input from folks who have to make slight changes to accommodate your Linux distribution and build environment.

  • Added support for cygwin, including a cygwin examples directory.
  • Got rid of PhantomDriver.dll, so that's one less DLL to carry around with CHAI apps. You don't need to link against PhantomDriver.lib anymore.
  • Numerous bug fixes and optimizations; see chai_changelog.txt for details.

download zip file: CHAI 3D [v1.51] - [28 MB] (August 5, 2006)


RELEASE 1.42 [STABLE]

  • This is identical to the 1.41 version, except that we've removed two dll's from the bin directory (opengl32.dll and glu32.dll) that should not have been included and were preventing CHAI apps from running on Windows 2000 machines.

download zip file: CHAI 3D [v1.42] - [25 MB] (February 27, 2006)


RELEASE 1.41 [STABLE]

  • Made significant steps to clarify the hierarchy of haptic tools. We removed the cGenericTool3dof class since it was redundant with cGeneric3dofPointer. We replaced the m_proxyPointForceAlgo and m_potentialForceField member variables in cGeneric3dofPointer, replacing them with a vector of cGenericPointForceAlgo pointers, so that the user can add whatever point force algorithms they want. By default, a cProxyPointForceAlgo instance is created and inserted into this vector in initialize(), so it doesn't break old programs. The function getProxy() searches for an instance of cProxyPointForceAlgo, and returns it if there is one.
  • Added a couple of example meshes to the bin/resources/models directory.
  • Added the source code for the "virtual device", and re-compiled it to get rid of sometimes-annoying floating-point error windows.
  • Removed the dhdms.lib library file and associated source/header files; modified cDeltaDevices to dynamically load the ForceDimension dll.
  • Three new examples: nano_world, earth, and reflections. The latter two use GLUT; the same source files compile in all of CHAI's supported compilers.
  • Added a Borland version of the record_player example.
  • Corrected a bug in the proxy that caused the proxy to "pop through" many models.
  • Lots of new functionality with the string-related functions in cVector3d and cMatrix3d, to better print and parse vectors.
  • Added rendering with vertex and fragment shaders. The cGenericShader class provides generic "load" functions, and calls functions to install itself before rendering all of its children. So to use a CHAI shader, you'll load it into a cGenericShader object and put any objects that should be shaded below him in the hierarchy. The cGLSLShader class is currently the only subclass; this implements the cGenericShader functionality for GLSL programs. Example shaders have been put in the bin/resources/shaders directory.
  • Added rendering from vertex buffers, via the cVBOMesh class. This class is a drop-in replacement for cMesh, but on systems that support VBO's, it will use them and should be faster. On systems that don't support VBO's, this class behaves just like a cMesh. The MSVC object_loader example now uses vertex buffers by default.
  • Added some more 2D functionality to CHAI. In particular, there are four new classes:
    • cPanel - a rectangle that can be just a rectangle or can be used to show images in 2D or 3D.
    • cFont - a generic font interface, with a win32-specific subclass that uses GL textures for text-rendering. A static function is provided to access actual subclass objects, depending on the current platform.
    • cLabelPanel - a subclass of c2DPanel that draws lines of text to the screen, optionally with little colored squares next to each line (like a graph key).
    • cBitmap - a class that uses GL's pixel transfer pipeline to render images directly to the viewport, bypassing the texturing process.
    The MSVC object_loader now shows a label to indicate the currently-loaded file, which is a simple example of how to use the new 2D classes.
  • Project files for the Intel compiler were upgraded to the 9.0 compiler
  • Compiled Phantom libraries against OpenHaptics 2.0 (still backwards-compatible with older versions)
  • A few very minor breaking changes, generally to clarify function or variable names. In particular, cGenericTool3dof was removed, cGenericObject::computeCollisionDetection dropped a parameter, timeoutOccured was renamed to timeoutOccurred, and the m_imageLoader variable in cTexture2D was renamed to m_image.
  • Many many fixes, optimizations, and minor non-breaking changes (see the changelog for more details).
  • Fixed a bug that affected the ODE demos after v1.40 was released

download zip file: CHAI 3D [v1.41] - [25 MB] (January 26, 2006)


RELEASE 1.31 [STABLE]

  • Added the examples page to help users get started
  • All examples now compile to the main bin directory, so you can run them right out of the box without adding anything to your system path.
  • New examples have been added: 'sounds' demonstrates the synthesis of sound based on haptic interaction, and 'record_player' allows the user to play an mp3 by haptically spinning a record.
  • Some minor breaking changes, most notably the forcesON/OFF functions were removed from cGenericTool; you should now use setForceON/OFF functions instead. This relieved a significant source of confusion, since both methods existed but only one was implemented. We apologize for the breaking change, but we want to make CHAI as clear as it can be.
  • Added an MSVC7 build file for Intel's compiler, if you want to build your ultra-optimized CHAI applications with a more optimized compiler. The pre-compiled .lib files still use the MS compiler, since building with Intel's compiler introduces a dependency on Intel's libraries.
  • All of the MSVC examples now use a sort of homemade layout manager to let you resize windows and have dialog controls do the right thing. If you want to add or remove controls from an example, you need to edit a very small amount of code (two lines) to tell the layout manager what you did. In particular, in the dialog source file, add your new control's ID to right_aligned_elements or bottom_aligned_elements, and update NUM_RIGHT_ALIGNED_ELEMENTS or NUM_BOTTOM_ALIGNED_ELEMENTS accordingly.
  • Miscellaneous fixes, optimizations, and minor non-breaking changes (see the changelog for more details)

download zip file: CHAI 3D [v1.31] - [17 MB] (September 20, 2005)


RELEASE 1.25 [BETA]

  • Added support for the MPB Freedom 6S haptic device, thanks to Steve Sinclair at MPB
  • Accelerated collision detection by testing segments' bounding boxes against AABB trees before testing the segments themselves
  • Added additional overloaded matrix and vector operators
  • Added more camera control modes to the MSVC 'object_loader' example
  • Fixed a problem that prevented the cPrecisionTimer class from working properly on some win2k machines
  • Miscellaneous fixes, optimizations, and minor non-breaking changes (see the changelog for more details)

download zip file: CHAI 3D [v1.25b] - [11 MB] (June 2, 2005)


RELEASE 1.22 [STABLE]

  • Added the 'activex' example, which demonstrates the embedding of a CHAI environment into an ActiveX control and a web page
  • Added the 'dynamic_ode' example (MSVC only), which demonstrates the integration of CHAI with ODE for haptically-interactive rigid-body simulations
  • Revamped proxy for significantly smoother friction, true slip/stick friction, and improved readability
  • Added a detailed changelog to the 'src' directory
  • Added support for rendering 2d "scenes" on top of or behind the rendered 3d scene (for labels, widgets, etc.)
  • The virtual haptic device now starts automatically if a physical device is not installed
  • Miscellaneous fixes and minor non-breaking changes (see the changelog for more details)

download zip file: CHAI 3D [v1.22] - [11 MB] (April 21, 2005)


RELEASE 1.12 [STABLE]

  • Added support for Visual C++ .net (MSVC7)
  • Added support for SensAble's Omni devices and HDAPI)
  • Miscellaneous fixes and minor non-breaking changes

download zip file: CHAI 3D [v1.12] - [6 MB] (January 19, 2005)


RELEASE 1.01 [STABLE]

  • Full Source Code
  • Project Files (MSVC 6.0 & Borland Builder 6.0)
  • Examples (MSVC 6.0 & Borland Builder 6.0)
  • Virtual Haptic Device
  • HTML documention

Supported hardware:

  • DELTA Haptic Device
  • OMEGA Haptic Device
  • PHANToM Haptic Devices
  • Stereo glasses
  • Servotogo boards
  • Sensoray626 boards

download zip file: CHAI 3D [v1.01] - [5 MB] (August 13, 2004)