NURBS-Diff: A Differentiable Programming Module for NURBS
  Boundary representations (B-reps) using Non-Uniform Rational B-splines
(NURBS) are the de facto standard used in CAD, but their utility in deep
learning-based approaches is not well researched. We propose a differentiable
NURBS module to integrate NURBS representations of CAD models with deep
learning methods. We mathematically define the derivatives of the NURBS curves
or surfaces with respect to the input parameters (control points, weights, and
the knot vector). These derivatives are used to define an approximate Jacobian
used for performing the "backward" evaluation to train the deep learning
models. We have implemented our NURBS module using GPU-accelerated algorithms
and integrated it with PyTorch, a popular deep learning framework. We
demonstrate the efficacy of our NURBS module in performing CAD operations such
as curve or surface fitting and surface offsetting. Further, we show its
utility in deep learning for unsupervised point cloud reconstruction and
enforce analysis constraints. These examples show that our module performs
better for certain deep learning frameworks and can be directly integrated with
any deep-learning framework requiring NURBS.
