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:
= Profile BREP/NURBS ray tracing=
+
= Optimize BREP/NURBS ray tracing=
* Benefit: better ray tracing runtime understanding, supports test case development
+
* Benefit: faster ray tracing runtime, user visible
 
* Time Estimate: 2 days
 
* Time Estimate: 2 days
 
* References:
 
* References:
** src/libbrep
 
 
** src/librt/primitives/brep
 
** src/librt/primitives/brep
 
** src/librt/opennurbs_ext.*
 
** src/librt/opennurbs_ext.*
  
 
= Optimize BREP/NURBS prep=
 
= Optimize BREP/NURBS prep=
Perform limited tree splitting during prep, split dynamically during ray trace, store lock-free.
+
* Benefit: faster ray tracing runtime, user requested.
* Benefit: faster ray tracing throughput, user requested, user visible
+
* Time Estimate: 2 days
* Time Estimate: 1 week
 
 
* References:
 
* References:
** src/libbrep
 
 
** 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.*
  
= Convert existing entities to NURBS=
+
=Implicit-to-NURBS=
Implement hooks to describe entities in BREP/NURBS form. Partially complete for most, but some complex entities remain 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: 2 days per entity
+
* Time Estimate: 3 days
 
* References:
 
* References:
 
** src/librt/primitives/${PRIM}/${PRIM}_brep.cpp
 
** src/librt/primitives/${PRIM}/${PRIM}_brep.cpp
  
= BREP/NURBS-to-NMG=
+
=BREP/NURBS-to-NMG=
 
Implement conversion of BREP/NURBS to NMG.
 
Implement conversion of BREP/NURBS to NMG.
* Benefit: requirement for polygonal export, partial requirement for OpenGL visualization, user visible
+
* Benefit: partial requirement for export and interactive visualization of BREP/NURBS in OpenGL.
* Time Estimate: 2 days
+
* Time Estimate: 1 day
 
* References:
 
* References:
 
** src/librt/primitives/brep/brep.cpp:rt_brep_tess()
 
** src/librt/primitives/brep/brep.cpp:rt_brep_tess()
  
= Old 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.
* Time Estimate: 1 day
+
* Time Estimate:
 
* References:
 
* References:
** src/librt/primitives/bspline/*
+
**
  
= 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.
* Time Estimate: 2 days
+
* Time Estimate:
 
* References:
 
* References:
** src/librt/primitives/bspline/*
+
**
** src/librt/primitives/brep/*
 
  
 
=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.
* Time Estimate: 2 years (for 100% robustness)
+
* Time Estimate:
 +
* References:
 +
**
 +
 
 +
=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.
 +
* Time Estimate:
 
* References:
 
* 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
 
  
 
=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.
* Time Estimate: < 1 day
+
* Time Estimate:
 
* References:
 
* References:
** regress/*.sh
+
**
** sh/*.sh
 
  
 
=BREP/NURBS documentation=
 
=BREP/NURBS documentation=
Document the new BREP/NURBS primitive (user overviewdocumentation: how to import, use, export, limitations).
+
Document the new BREP/NURBS primitive.
* Benefit: provides user documentation explaining capabilities, limitations, and benefits; user visible
+
* Benefit: provides user documentation explaining capabilities, limitations, and benefits.
* Time Estimate: 3 days
+
* Time Estimate:
 +
* References:
 +
**
 +
 
 +
=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).
 +
* Time Estimate:
 +
* References:
 +
**
 +
 
 +
=Cache prep results=
 +
Cache BREP/NURBS prep results to a specified cache file.
 +
* Benefit: faster ray tracing runtime for BREP/NURBS, user requested.
 +
* Time Estimate:
 
* References:
 
* References:
** doc/docbook/articles
+
**
  
 
=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; LOD wireframes: more detailed close-up wireframes, less detailed far-away wireframes (LOD); user visible
+
* Benefit: faster wireframe, more detailed close wireframes.
* Time Estimate: 2 days
+
* Time Estimate:
 
* References:
 
* 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=
 
= 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, complexity reduction
+
* Benefit: improved code maintainability.
* Time Estimate: 2 days
+
* Time Estimate:
 
* References:
 
* References:
 
** http://www.cs.utah.edu/~shirley/papers/raynurbs.pdf
 
** http://www.cs.utah.edu/~shirley/papers/raynurbs.pdf
Line 97: Line 99:
 
= BREP/NURBS healing=
 
= 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.
 
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
+
* Benefit:
* Time Estimate: 3 days
+
* Time Estimate:
 +
* References:
 +
**
 +
 
 +
= BREP/NURBS for analysis purpose report=
 +
Description needed here.
 +
* Benefit:
 +
* Time Estimate:
 +
* References:
 +
**
 +
 
 +
= Analytic comparison of BREP/NURBS and BoT=
 +
Description needed here.
 +
* Benefit:
 +
* Time Estimate:
 +
* References:
 +
**
 +
 
 +
= Analytic comparison of BREP/NURBS CSG and implicit CSG=
 +
Description needed here.
 +
* Benefit:
 +
* Time Estimate:
 
* References:
 
* References:
** src/librt/primitives/brep
+
**

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)