Profile BREP/NURBS ray tracing

  • Benefit: better ray tracing runtime understanding, supports test case development
  • Time Estimate: 2 days
  • References:
    • src/libbrep
    • src/librt/primitives/brep
    • src/librt/opennurbs_ext.*

Optimize BREP/NURBS prep

Perform limited tree splitting during prep, split dynamically during ray trace, store lock-free.

  • Benefit: faster ray tracing throughput, user requested, user visible
  • Time Estimate: 1 week
  • References:
    • src/libbrep
    • src/librt/primitives/brep/brep.cpp:rt_brep_prep()
    • src/librt/opennurbs_ext.*

Convert existing entities to NURBS

Implement hooks to describe entities in BREP/NURBS form. Partially complete for most, but some complex entities remain unimplemented.

  • Benefit: partial requirement for interactive visualization of implicit CSG geometry in OpenGL
  • Time Estimate: 2 days per entity
  • 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: 2 days
  • References:
    • src/librt/primitives/brep/brep.cpp:rt_brep_tess()

Old 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.

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

BREP/NURBS wireframe

Improve BREP/NURBS wireframe. Investigate using knots on subcurves.

BREP/NURBS source code cleanup

Consolidate Owens and Reeves approaches to ray intersection.

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