Difference between revisions of "NURBS Editing Support"

(Toss a few notes into the Ayam/NURBS entry)
 
(Ayam editor integration)
Line 1: Line 1:
The Ayam editor is a BSD licensed, Tcl/Tk based modeler for NURBS. (More background...)
+
The Ayam editor is a BSD licensed, Tcl/Tk based modeler for NURBS.   (http://ayam.sourceforge.net/) It's primary purpose is to serve as a modeler for the RenderMan interface, but at least some of the functionality it implements is of interest to BRL-CAD.
  
Note that editing NURBS in Archer/MGED should not assume OpenGL surface representations of NURBS are available - that would require the completion of the NURBS tessellation task and in any case not all editing environments provide working OpenGL.  Editing should be possible using wireframe representations of key features, and be mappable to more sophisticated OpenGL based visualization once it appears.  Main tasks would be 1) identifying key features used by Ayam to alter NURBS (knot insertion, etc) and mapping those operations to openNURBS calls (or identifying that the equivalent routine doesn't exist in openNURBS and will need to be ported/reimplemented from Ayam) 2) implementing librt/libged logic to allow those calls to be made 3) implementing appropriate graphical controls and interface logic in Archer (other primitives will provide examples).
+
BRL-CAD has recently implemented support for raytracing of NURBS surfaces, but beyond basic operations such as rotation and translation it has no ability to edit them.  Ayam, although it uses a different format to store NURBS surfaces, does have the capability to edit them.  This project would examine the NURBS editing abilities of Ayam and map them to the corresponding openNURBS/Archer functionality, implementing at least a basic ability to alter NURBS surfaces.
 +
 
 +
Note that editing NURBS in Archer/MGED should not assume OpenGL surface representations of NURBS are available - that would require the completion of the NURBS tessellation task and in any case not all editing environments provide working OpenGL.  Editing should be possible using wireframe representations of key features, and be mappable to more sophisticated OpenGL based visualization once it appears.  Main tasks would be:
 +
#Identifying key features used by Ayam to alter NURBS (knot insertion, etc) and mapping those operations to openNURBS calls (or identifying that the equivalent routine doesn't exist in openNURBS and will need to be ported/reimplemented from Ayam)  
 +
#Implementing librt/libged logic to allow those calls to be made  
 +
#Implementing appropriate graphical controls and interface logic in Archer (other primitives will provide examples).
 +
 
 +
Requirements:
 +
 
 +
* Familiarity with C and C++
 +
* Familiarity with Tcl/Tk
 +
* Basic understanding of NURBS
 +
* (optional) openNURBS and/or Ayam experience
 +
 
 +
Difficulty:  high

Revision as of 19:34, 10 March 2011

The Ayam editor is a BSD licensed, Tcl/Tk based modeler for NURBS. (http://ayam.sourceforge.net/) It's primary purpose is to serve as a modeler for the RenderMan interface, but at least some of the functionality it implements is of interest to BRL-CAD.

BRL-CAD has recently implemented support for raytracing of NURBS surfaces, but beyond basic operations such as rotation and translation it has no ability to edit them. Ayam, although it uses a different format to store NURBS surfaces, does have the capability to edit them. This project would examine the NURBS editing abilities of Ayam and map them to the corresponding openNURBS/Archer functionality, implementing at least a basic ability to alter NURBS surfaces.

Note that editing NURBS in Archer/MGED should not assume OpenGL surface representations of NURBS are available - that would require the completion of the NURBS tessellation task and in any case not all editing environments provide working OpenGL. Editing should be possible using wireframe representations of key features, and be mappable to more sophisticated OpenGL based visualization once it appears. Main tasks would be:

  1. Identifying key features used by Ayam to alter NURBS (knot insertion, etc) and mapping those operations to openNURBS calls (or identifying that the equivalent routine doesn't exist in openNURBS and will need to be ported/reimplemented from Ayam)
  2. Implementing librt/libged logic to allow those calls to be made
  3. Implementing appropriate graphical controls and interface logic in Archer (other primitives will provide examples).

Requirements:

  • Familiarity with C and C++
  • Familiarity with Tcl/Tk
  • Basic understanding of NURBS
  • (optional) openNURBS and/or Ayam experience

Difficulty: high