Difference between revisions of "NURBS TODO"
(expand time estimates, references, and benefits on most tasks) |
|||
Line 15: | Line 15: | ||
=Implicit-to-NURBS= | =Implicit-to-NURBS= | ||
Implement conversion of implicit primitives to BREP/NURBS primitives. Partially complete, primitives are fixed at origin, some primitives unimplemented. | 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 | + | * Benefit: partial requirement for interactive visualization of implicit CSG geometry in OpenGL |
* Time Estimate: 3 days | * Time Estimate: 3 days | ||
* References: | * References: | ||
Line 81: | Line 81: | ||
=Cache objects= | =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. | + | 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. [http://www.bestessay.com/ bestessay.com] |
* Benefit: faster ray tracing runtime, applicable to other primitives (NMG, BoT) | * Benefit: faster ray tracing runtime, applicable to other primitives (NMG, BoT) | ||
* Time Estimate: 1 day | * Time Estimate: 1 day |
Revision as of 07:05, 3 November 2011
Contents
- 1 Optimize BREP/NURBS ray tracing
- 2 Optimize BREP/NURBS prep
- 3 Implicit-to-NURBS
- 4 BREP/NURBS-to-NMG
- 5 BSPLINE/NURBS review
- 6 BSPLINE/NURBS reuse
- 7 BREP/NURBS CSG evaluation
- 8 Plate-mode BREP/NURBS
- 9 Implicit CSG to BREP/NURBS CSG test scripts
- 10 BREP/NURBS documentation
- 11 Cache objects
- 12 Raytrace prep cache optimization
- 13 BREP/NURBS wireframe
- 14 BREP/NURBS source code cleanup
- 15 BREP/NURBS healing
- 16 Report on using BREP/NURBS for analysis
- 17 Analytic comparison of BREP/NURBS and BoT
- 18 Analytic comparison of BREP/NURBS CSG and implicit CSG
Optimize BREP/NURBS ray tracing
- Benefit: faster ray tracing runtime, user visible
- Time Estimate: 2 days
- References:
- src/librt/primitives/brep
- src/librt/opennurbs_ext.*
Optimize BREP/NURBS prep
- Benefit: faster ray tracing runtime, user requested, user visible
- Time Estimate: 2 days
- References:
- 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
- Time Estimate: 3 days
- References:
- src/librt/primitives/${PRIM}/${PRIM}_brep.cpp
BREP/NURBS-to-NMG
Implement conversion of BREP/NURBS to NMG.
- Benefit: requirement for polygonal export, partial requirement for OpenGL visualization, user visible
- Time Estimate: 1 day
- References:
- src/librt/primitives/brep/brep.cpp:rt_brep_tess()
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.
- Time Estimate: <1 day
- References:
- src/librt/primitives/bspline/*
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.
- Time Estimate: 2 days
- References:
- src/librt/primitives/bspline/*
- src/librt/primitives/brep/*
BREP/NURBS CSG evaluation
Implement boolean evaluation of BREP/NURBS surfaces.
- Benefit: partial requirement for interactive visualization of BREP/NURBS in OpenGL.
- Time Estimate: 7 days
- References:
- ESOLID: http://research.cs.tamu.edu/keyser/geom/esolid/
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.119.4341&rep=rep1&type=pdf
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.117.8700&rep=rep1&type=pdf
- http://www.springerlink.com/content/x3665206243u20x8/
- http://193.170.37.128/projects/basic/cgal/workdone/nurbs-97-30.ps.gz
- http://mae.ucdavis.edu/~farouki/foils.pdf
- http://portal.acm.org/citation.cfm?id=36714
- ftp://ftp.cs.unc.edu/pub/users/manocha/PAPERS/INTERSECT/IJCGA.pdf
- http://portal.acm.org/citation.cfm?id=237751
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, user visible
- Time Estimate: 2 days
- References:
- include/rtgeom.h
- src/librt/primitives/bot/bot.c
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.
- Time Estimate: < 1 day
- References:
- regress/*.sh
- sh/*.sh
BREP/NURBS documentation
Document the new BREP/NURBS primitive (user overviewdocumentation: how to import, use, export, limitations).
- Benefit: provides user documentation explaining capabilities, limitations, and benefits; user visible
- Time Estimate: 3 days
- References:
- doc/docbook/articles
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. bestessay.com
- Benefit: faster ray tracing runtime, applicable to other primitives (NMG, BoT)
- Time Estimate: 1 day
- References:
- include/raytrace.h
- include/db5.h
- src/librt/binunif
- src/librt/primitives/*
Raytrace prep cache optimization
Cache BREP/NURBS prep results to a specified cache file.
- Benefit: faster ray tracing runtime for BREP/NURBS, user requested, user visible
- Time Estimate: 2 days
- References:
- src/librt/primitives/table.c
BREP/NURBS wireframe
Improve BREP/NURBS wireframe. Investigate using knots on subcurves.
- Benefit: faster wireframe; LOD wireframes: more detailed close-up wireframes, less detailed far-away wireframes (LOD); user visible
- Time Estimate: 2 days
- References:
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.142.3042&rep=rep1&type=pdf
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.70.6138&rep=rep1&type=pdf
- http://www.springerlink.com/content/k7543860533338nu/
- http://wscg.zcu.cz/wscg2003/Papers_2003/H19.pdf
- http://cg.cs.uni-bonn.de/aigaion2root/attachments/kahlesz-2002-multiresolution.pdf
- http://www.cs.cityu.edu.hk/~rynson/papers/vrst03.pdf
- http://www.flipcode.com/archives/NURBS_Curves_Surfaces.shtml
BREP/NURBS source code cleanup
Consolidate Owens and Reeves approaches to ray intersection.
- Benefit: improved code maintainability, complexity reduction
- Time Estimate: 2 days
- References:
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.
- Benefit: more robust evaluation for improved (more stable & consistent) raytracing, import, export; routine interface later applicable to NMG/BoT too
- Time Estimate: 3 days
- References:
- src/librt/primitives/brep
Report on using BREP/NURBS for analysis
Description needed here.
- Benefit: documentation, user visible
- Time Estimate: 3 days
- References:
- doc/docbook/articles
Analytic comparison of BREP/NURBS and BoT
Description needed here.
- Benefit:
- Time Estimate: 1 day
- References:
- sh/*.sh
- regress/*.sh
- bench/run.sh
Analytic comparison of BREP/NURBS CSG and implicit CSG
Description needed here.
- Benefit:
- Time Estimate: 2 days
- References:
- sh/*.sh
- regress/*.sh
- bench/run.sh