Difference between revisions of "NURBS TODO"

From BRL-CAD
(turn them into sections so we have a table of contents)
(remove superfluous bullets)
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:
+
* References:
*** src/librt/primitives/brep
+
** src/librt/primitives/brep
*** src/librt/opennurbs_ext.*
+
** 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/primitives/brep/brep.cpp:rt_brep_prep()
*** src/librt/opennurbs_ext.*
+
** src/librt/opennurbs_ext.*
  
 
=Implicit-to-NURBS=
 
=Implicit-to-NURBS=
* 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.
 
  
 
=BREP/NURBS-to-NMG=
 
=BREP/NURBS-to-NMG=
* 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.
  
 
=BSPLINE/NURBS review=
 
=BSPLINE/NURBS review=
* 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.
  
 
=BSPLINE/NURBS reuse=
 
=BSPLINE/NURBS reuse=
* 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.
  
 
=BREP/NURBS CSG evaluation=
 
=BREP/NURBS CSG evaluation=
* 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.
  
 
=Plate-mode BREP/NURBS=
 
=Plate-mode BREP/NURBS=
* 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.
 
  
 
=Implicit CSG to BREP/NURBS CSG test scripts=
 
=Implicit CSG to BREP/NURBS CSG test scripts=
* 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.
  
 
=BREP/NURBS documentation=
 
=BREP/NURBS documentation=
* 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.
  
 
=Cache objects=
 
=Cache objects=
* 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 prep results=
 
=Cache prep results=
* 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.
  
 
=BREP/NURBS wireframe=
 
=BREP/NURBS wireframe=
* Improve BREP/NURBS wireframe. Investigate using knots on subcurves.
+
Improve BREP/NURBS wireframe. 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.
  
 
= BREP/NURBS healing=
 
= BREP/NURBS healing=
* 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.
  
 
= BREP/NURBS for analysis purpose report=
 
= BREP/NURBS for analysis purpose report=

Revision as of 17:08, 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.*

Implicit-to-NURBS

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.

BREP/NURBS-to-NMG

Implement conversion of BREP/NURBS to NMG.

  • Benefit: partial requirement for export and interactive visualization of BREP/NURBS in OpenGL.

BSPLINE/NURBS review

Identify useful concepts implemented in the old BSPLINE/NURBS code that are not present in openNURBS.

  • Benefit: code reuse, potentially very useful functionality.

BSPLINE/NURBS reuse

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.

BREP/NURBS CSG evaluation

Implement boolean evaluation of BREP/NURBS surfaces.

  • Benefit: partial requirement for interactive visualization of BREP/NURBS in OpenGL.

Plate-mode BREP/NURBS

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.

Implicit CSG to BREP/NURBS CSG test scripts

Develop test scripts for comparing conversion of implicit CSG to BREP/NURBS CSG

  • Benefit: provides validation and verification via ray tracing.

BREP/NURBS documentation

Document the new BREP/NURBS primitive.

  • Benefit: provides user documentation explaining capabilities, limitations, and benefits.

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.

  • Benefit: faster ray tracing runtime, applicable to other primitives (NMG, BoT).

Cache prep results

Cache BREP/NURBS prep results to a specified cache file.

  • Benefit: faster ray tracing runtime for BREP/NURBS, user requested.

BREP/NURBS wireframe

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.

BREP/NURBS healing

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.

BREP/NURBS for analysis purpose report

Analytic comparison of BREP/NURBS and BoT

Analytic comparison of BREP/NURBS CSG and implicit CSG