Custom 3-D Vector Control

 

This control has the following features:

  • A 3D vector MFC control derived from CButton.
  • Real-time light rendering on a 3D ball.
  • Variable ball radius and position.
  • Supports bitmap background (tiled).
  • Supports vertical gradient color background (from color to color, as visiable in screen capture above).
  • Variable ball color (diffuse), light color and ambient color.
  • Variable specular intensity.
  • Supports attached controls (for automatic update).
    That is, you can specify IDs of other controls that will reflect (textually) the value of a specific vector component. The vector control will automatically update (calling SetwindowText) the display. See the 3 static text controls in the example above.
  • Variable mouse sensitivity.
  • Supports front clipping (vector will not have negative Z values).
  • Supports callback functions for the following events:
    1. The trackball has moved (vector is changing).
    2. The user dropped the trackball (released left mouse button). i.e., the vector was changed.

A dialog-based sample application (screen capture above) and the control source code can be found here