Editing NURBS Editing Support

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
  
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.  This project would implement support for editing NURBS curves and surfaces in the new Archer modeling interface.
+
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 should not assume OpenGL surface representations of NURBS are available.  Editing should be possible using wireframe representations of key features, and be mappable to more sophisticated OpenGL based visualization once it appears.
+
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:
 
Main tasks would be:
#Identifying key editing operations (see next) and mapping those operations to openNURBS calls (or identifying that the equivalent routine doesn't exist in openNURBS and will need to be implemented)  
+
#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/libbrep/libged logic to allow those calls to be made  
+
#Implementing librt/libged logic to allow those calls to be made  
#Implementing appropriate graphical controls and interface logic in Archer (other primitive editing support code in Archer will provide relevant examples).
+
#Implementing appropriate graphical controls and interface logic in Archer (other primitives will provide examples).
 
 
NURBS curve editing operations:
 
* Attach (two splines)
 
* Detach (end point)
 
* Connect (splice new curve)
 
* Trim (cut curve)
 
* Knot Insert
 
* Reverse (change direction)
 
 
 
NURBS curve to surface operations:
 
* Projection (see [[Vector_Drawings_from_NURBS|here]])
 
* Loft/Birail (surface created between curves)
 
* Cap (surface from closed curve)
 
* Extrude
 
* Revolve
 
 
 
NURBS surface editing operations:
 
* Rebuild/Simplify (remove unnecessary control points)
 
* Trim (evaluate to untrimmed)
 
* Bevel/Fillet (replace edge with surface+edges)
 
  
 
=References=
 
=References=
  
 
* http://ayam.sourceforge.net/
 
* http://ayam.sourceforge.net/
**The Ayam editor is a BSD licensed, Tcl/Tk based modeler for NURBS.  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.  It's primary license is compatible with BRL-CAD's, but Ayam makes use of many third party components so be sure to check individual files for license information.
+
**The Ayam editor is a BSD licensed, Tcl/Tk based modeler for NURBS.  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.
  
 
* src/librt/primitives/brep/brep.cpp
 
* src/librt/primitives/brep/brep.cpp
* src/libbrep
 
 
* src/other/openNURBS
 
* src/other/openNURBS
 
* src/libtclcad
 
* src/libtclcad

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)