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 15: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.*
- Benefit: faster ray tracing runtime, user requested.
- 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.