User:Gabbar1947/GSOC17/Report

Annotations: Implement support for 2D annotations | Project Report

The project was divided into two parts:

  • Creating a new primitive for annotations
  • Rendering the primitives to the wireframe view
  • Support for the screen projection

Creating a new primitive for annotations

  • What was basically required was a container to hold things together
  https://sourceforge.net/p/brlcad/patches/469/#ea23
  https://sourceforge.net/p/brlcad/patches/469/#34f1

Rendering the primitive on screen

  • The next part was to add support for the visualization of the primitive
  • Input for the primitive also handled through the 'in' command in the patches mentioned below
 https://sourceforge.net/p/brlcad/patches/471/#97f3
 https://sourceforge.net/p/brlcad/patches/471/#4b72

Support for the 3D->2D projection

Example annot object created with the in command
  • Annotations always remain in the plane of the screen
  • Modifying the projection matrices for all the display managers was another task
  • Scaling the annotations was another issue
  • All of this was handled by the patches mentioned below
  https://sourceforge.net/p/brlcad/patches/471/#cd2e
  https://sourceforge.net/p/brlcad/patches/471/#acd7


Project Extension

After discussions with the mentors, some extension ideas came up:

  • Functionality to set up the annotation properties for the primitive
  • Extension for the geometric shape of the annotation
  • Common functionality for the annotation and the sketch primitive in order to reduce redundancy
  • Features related to the coordinate system like the annotation scaling
  • Algorithm to provide a bounding box for the text using the relative coordinates