In my last post about Descartes I outlined some overall objectives of the development going forward:
- OpenSCAD near-feature parity
- Forward differentiable representations
- Meshing approaches for sharp corners (e.g. Dual Contours)
- Oct-Tree sampling approaches (and interpolation of the functional representation)
All of the above objectives have been touched upon since my last post. OpenSCAD feature parity continues to progress and there have been some additions for 2D components. The issue tracking this progress is here.
Now the last three elements are all somewhat related. I have made good progress on adjusting the functional representation API to use vector formats rather than an argument for each cardinal value. This allowed me to use the very good ForwardDiff.jl library and port Python examples for Dual Contours to Julia. I am continuing to work on the Oct-Tree system with some patches to AdaptiveDistanceFields.jl. These are all pretty closely related projects and I hope to have a system that fully utilizes ADF, Dual Contours, and differentiable representations by the end of the summer. My hope is that this will provide a lead-in to other experiments such as mesh-free methods for engineering analysis in the future. In the more immediate outlook I will continue to refine these elements so there is the generation of good-quality solid models using Julia.
In addition, I have been working on a research project for the Master’s that will use Descartes and Julia’s FEniCS bindings for parametric design studies. I spent quite a bit of time working on updating the build process and modernizing the FEniCS.jl package for the latest versions of FEniCS and PyCall.jl. There is a pull request I opened that improves the default install by using the Conda infrastructure.
Overall, the general direction I described in late April has progressed. I feel with the pending implementation of dual contours, there should be a 0.0.1 release in the coming months.
For the 0.0.1 release the following are necessary:
- 80% Feature parity with OpenSCAD
- Dual Contours implementation
- FEniCS integration