Difference between revisions of "NURBS TODO"

From BRL-CAD
(initial stab at remaining NURBS tasks)
 
(add a few references, space them out)
Line 1: Line 1:
 
* Optimize BREP/NURBS ray tracing
 
* Optimize BREP/NURBS ray tracing
 
** Benefit: faster ray tracing runtime
 
** Benefit: faster ray tracing runtime
 +
** References:
 +
*** src/librt/primitives/brep
 +
*** src/librt/opennurbs_ext.*
 +
 
* Optimize BREP/NURBS prep
 
* Optimize BREP/NURBS prep
 
** Benefit: faster ray tracing runtime, user requested.
 
** Benefit: faster ray tracing runtime, user requested.
 +
*** src/librt/primitives/brep/brep.cpp:rt_brep_prep()
 +
*** src/librt/opennurbs_ext.*
 +
 
* Implement conversion of implicit primitives to BREP/NURBS primitives.
 
* Implement conversion of implicit primitives to BREP/NURBS primitives.
 
** Partially complete, primitives are fixed at origin, some primitives unimplemented.
 
** Partially complete, primitives are fixed at origin, some primitives unimplemented.
 
** Benefit: partial requirement for interactive visualization of implicit CSG geometry in OpenGL.
 
** Benefit: partial requirement for interactive visualization of implicit CSG geometry in OpenGL.
 +
 
* Implement conversion of BREP/NURBS to NMG.
 
* Implement conversion of BREP/NURBS to NMG.
 
** Benefit: partial requirement for export and interactive visualization of BREP/NURBS in OpenGL.
 
** Benefit: partial requirement for export and interactive visualization of BREP/NURBS in OpenGL.
 +
 
* Identify useful concepts implemented in the old BSPLINE/NURBS code that are not present in openNURBS.
 
* Identify useful concepts implemented in the old BSPLINE/NURBS code that are not present in openNURBS.
 
** Benefit: code reuse, potentially very useful functionality.
 
** Benefit: code reuse, potentially very useful functionality.
 +
 
* Port any useful BSPLINE/NURBS code to openNURBS data structures and routines.
 
* Port any useful BSPLINE/NURBS code to openNURBS data structures and routines.
 
** Benefit: code reduction, allows the old BSPLINE/NURBS code to be removed after functionality is migrated.
 
** Benefit: code reduction, allows the old BSPLINE/NURBS code to be removed after functionality is migrated.
 +
 
* Implement boolean evaluation of BREP/NURBS surfaces.
 
* Implement boolean evaluation of BREP/NURBS surfaces.
 
** Benefit: partial requirement for interactive visualization of BREP/NURBS in OpenGL.
 
** Benefit: partial requirement for interactive visualization of BREP/NURBS in OpenGL.
 +
 
* Implement plate mode BREP/NURBS objects.
 
* Implement plate mode BREP/NURBS objects.
 
** Similar, if not identical, to plate mode BoTs, 'brep' objects need the ability to have a thickness described so you could automatically handle non-solid NURBS and sheet-metal style geometry without requiring surface solidity.
 
** Similar, if not identical, to plate mode BoTs, 'brep' objects need the ability to have a thickness described so you could automatically handle non-solid NURBS and sheet-metal style geometry without requiring surface solidity.
 
** Benefit: allows for import and visualization of BREP/NURBS surfaces that are not solid.
 
** Benefit: allows for import and visualization of BREP/NURBS surfaces that are not solid.
 +
 
* Develop test scripts for comparing conversion of implicit CSG to BREP/NURBS CSG
 
* Develop test scripts for comparing conversion of implicit CSG to BREP/NURBS CSG
 
** Benefit: provides validation and verification via ray tracing.
 
** Benefit: provides validation and verification via ray tracing.
 +
 
* Document the new BREP/NURBS primitive.
 
* Document the new BREP/NURBS primitive.
 
** Benefit: provides user documentation explaining capabilities, limitations, and benefits.
 
** Benefit: provides user documentation explaining capabilities, limitations, and benefits.
 +
 
* Implement data cache objects.
 
* Implement data cache objects.
 
** Create new LIBRT API routines for storing cache data in a v5 container.  This would amount to storing binary data into a 'binunif' object marked as hidden with attributes for date/time stamping and MD5 or SHA256 checksumming.
 
** Create new LIBRT API routines for storing cache data in a v5 container.  This would amount to storing binary data into a 'binunif' object marked as hidden with attributes for date/time stamping and MD5 or SHA256 checksumming.
 
** Benefit: faster ray tracing runtime, applicable to other primitives (NMG, BoT).
 
** Benefit: faster ray tracing runtime, applicable to other primitives (NMG, BoT).
 +
 
* Cache BREP/NURBS prep results to a specified cache file.
 
* Cache BREP/NURBS prep results to a specified cache file.
 
** Benefit: faster ray tracing runtime for BREP/NURBS, user requested.
 
** Benefit: faster ray tracing runtime for BREP/NURBS, user requested.
 +
 
* Improve BREP/NURBS wireframe.
 
* Improve BREP/NURBS wireframe.
 
** Investigate using knots on subcurves.
 
** Investigate using knots on subcurves.
 
** Benefit: faster wireframe, more detailed close wireframes.
 
** Benefit: faster wireframe, more detailed close wireframes.
 +
 
* BREP/NURBS source code cleanup.
 
* BREP/NURBS source code cleanup.
 
** Consolidate Owens and Reeves approaches to ray intersection.
 
** Consolidate Owens and Reeves approaches to ray intersection.
 
** Benefit: improved code maintainability.
 
** Benefit: improved code maintainability.
 +
 
* Implement an rt_heal(rt_db_internal *dbi); routine.
 
* Implement an rt_heal(rt_db_internal *dbi); routine.
 
** The routine tightens up trimming curves and edge/vertex pairings so that they align perfectly while still preserving the topological structure.
 
** The routine tightens up trimming curves and edge/vertex pairings so that they align perfectly while still preserving the topological structure.
 +
 
* Write an report on using NURBS for analysis purposes.
 
* Write an report on using NURBS for analysis purposes.
 +
 
* Perform analytic comparison of BREP/NURBS and BoT geometry
 
* Perform analytic comparison of BREP/NURBS and BoT geometry
 +
 
* Perform analytic comparison of BREP/NURBS CSG and implicit CSG geometry  
 
* Perform analytic comparison of BREP/NURBS CSG and implicit CSG geometry  
 +
 
* Implement support for rotation, scaling, and translations.
 
* Implement support for rotation, scaling, and translations.

Revision as of 16:59, 14 February 2011

  • Optimize BREP/NURBS ray tracing
    • Benefit: faster ray tracing runtime
    • References:
      • src/librt/primitives/brep
      • src/librt/opennurbs_ext.*
  • Optimize BREP/NURBS prep
    • Benefit: faster ray tracing runtime, user requested.
      • src/librt/primitives/brep/brep.cpp:rt_brep_prep()
      • src/librt/opennurbs_ext.*
  • Implement conversion of implicit primitives to BREP/NURBS primitives.
    • Partially complete, primitives are fixed at origin, some primitives unimplemented.
    • Benefit: partial requirement for interactive visualization of implicit CSG geometry in OpenGL.
  • Implement conversion of BREP/NURBS to NMG.
    • Benefit: partial requirement for export and interactive visualization of BREP/NURBS in OpenGL.
  • Identify useful concepts implemented in the old BSPLINE/NURBS code that are not present in openNURBS.
    • Benefit: code reuse, potentially very useful functionality.
  • Port any useful BSPLINE/NURBS code to openNURBS data structures and routines.
    • Benefit: code reduction, allows the old BSPLINE/NURBS code to be removed after functionality is migrated.
  • Implement boolean evaluation of BREP/NURBS surfaces.
    • Benefit: partial requirement for interactive visualization of BREP/NURBS in OpenGL.
  • Implement plate mode BREP/NURBS objects.
    • Similar, if not identical, to plate mode BoTs, 'brep' objects need the ability to have a thickness described so you could automatically handle non-solid NURBS and sheet-metal style geometry without requiring surface solidity.
    • Benefit: allows for import and visualization of BREP/NURBS surfaces that are not solid.
  • Develop test scripts for comparing conversion of implicit CSG to BREP/NURBS CSG
    • Benefit: provides validation and verification via ray tracing.
  • Document the new BREP/NURBS primitive.
    • Benefit: provides user documentation explaining capabilities, limitations, and benefits.
  • Implement data cache objects.
    • Create new LIBRT API routines for storing cache data in a v5 container. This would amount to storing binary data into a 'binunif' object marked as hidden with attributes for date/time stamping and MD5 or SHA256 checksumming.
    • Benefit: faster ray tracing runtime, applicable to other primitives (NMG, BoT).
  • Cache BREP/NURBS prep results to a specified cache file.
    • Benefit: faster ray tracing runtime for BREP/NURBS, user requested.
  • Improve BREP/NURBS wireframe.
    • Investigate using knots on subcurves.
    • Benefit: faster wireframe, more detailed close wireframes.
  • BREP/NURBS source code cleanup.
    • Consolidate Owens and Reeves approaches to ray intersection.
    • Benefit: improved code maintainability.
  • Implement an rt_heal(rt_db_internal *dbi); routine.
    • The routine tightens up trimming curves and edge/vertex pairings so that they align perfectly while still preserving the topological structure.
  • Write an report on using NURBS for analysis purposes.
  • Perform analytic comparison of BREP/NURBS and BoT geometry
  • Perform analytic comparison of BREP/NURBS CSG and implicit CSG geometry
  • Implement support for rotation, scaling, and translations.