New Cross-Platform 3D Display Manager

From BRL-CAD
Revision as of 12:21, 10 March 2011 by Starseeker (talk | contribs) (Flesh out OGRE task (I think this is low difficulty?))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

OGRE Display Manager

BRL-CAD's primary means to interact graphically with geometry is provided by display managers, which handle drawing geometric wireframes, text, (sometimes) shaded trianges, and other in-display elements. Currently BRL-CAD has specific display managers for X11 Opengl (ogl), Windows OpenGL (wgl), and raw X11 (X), in addition to a variety of more special purpose and experimental display managers. Current display managers interact with a lot of platform specific features, which tends to lead towards increased maintenance and duplication of logic.

OGRE (http://www.ogre3d.org/) is a cross platform, open source 3D graphics engine that provides the features needed to implement a display manager for BRL-CAD, while abstracting many of the low level platform specific details. The steps for this task would be:

  1. Review current display manager code to identify features a new display manager needs to support
  2. Get OGRE running and embedded within a Tk window (this will be necessary for Archer/MGED to use the display manager). Bear in mind that one of the goals is to use this display manager on multiple platforms.
  3. Identify how to perform the basic operations needed for a display manager in OGRE, including
    • line drawing
    • text display
    • keyboard and mouse input integration between OGRE and Tk
    • embedding a framebuffer window (see overlay/interlay/underlay settings in the MGED raytrace control panel)
  4. Writing routines to perform tasks needed (the display manager functionality) and hooking it into libdm
  5. Testing (ideally cross platform)

A good proposal for this task would demonstrate a good understanding of what approaches would be taken to embed OGRE into Tk (if_ogl.c, our OpenGL framebuffer, does this with an OpenGL window) and what OGRE functionality would be utilized to perform wireframe drawing, text drawing, etc.

Requirements:

  • Familiarity with C and C++
  • (optional) Familiarity with OGRE

Difficulty: low