Editing NURBS TODO
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: | ||
− | + | * Optimize BREP/NURBS ray tracing | |
− | * Benefit: | + | ** Benefit: faster ray tracing runtime |
− | * | + | ** References: |
− | * References: | + | *** src/librt/primitives/brep |
− | * | + | *** src/librt/opennurbs_ext.* |
− | ** src/librt/primitives/brep | ||
− | ** src/librt/opennurbs_ext.* | ||
− | + | * Optimize BREP/NURBS prep | |
− | + | ** Benefit: faster ray tracing runtime, user requested. | |
− | * Benefit: faster ray tracing | + | *** src/librt/primitives/brep/brep.cpp:rt_brep_prep() |
− | + | *** src/librt/opennurbs_ext.* | |
− | * | ||
− | |||
− | ** src/librt/primitives/brep/brep.cpp:rt_brep_prep() | ||
− | ** src/librt/opennurbs_ext.* | ||
− | + | * Implement conversion of implicit primitives to BREP/NURBS primitives. | |
− | Implement | + | ** 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: requirement for | ||
− | |||
− | |||
− | |||
− | + | * 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. | |
− | + | ** 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. | |
− | * Benefit: provides | ||
− | |||
− | |||
− | |||
− | + | * Document the new BREP/NURBS primitive. | |
− | + | ** Benefit: provides user documentation explaining capabilities, limitations, and benefits. | |
− | * Benefit: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * 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: | + | ** Benefit: faster ray tracing runtime, applicable to other primitives (NMG, BoT). |
− | |||
− | |||
− | |||
− | + | * Cache BREP/NURBS prep results to a specified cache file. | |
− | 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. | + | ** 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. |