Weekly Dev Log - 2022-W11
For weeks now, I've been focused on an internal CAD kernel cleanup: reducing the use of the obsolete triangle representation, replacing it with full boundary representation (#97), as well as various sub-issues that were in the way of addressing that (most recently #242). This work has been blocking the implementation of constructive solid geometry (CSG).
I'm happy to report, that while this work is not fully completed, it's complete enough to start working on CSG for bodies with straight edges and flat faces. Since supporting CSG for those is part of the milestone I'm currently working on, this is good enough to wrap this work up for now and move on to other things.
Before tackling CSG, I decided to go on a bit of a rampage to celebrate, fixing some issues that have been open a bit too long for my taste. One of them, splitting the Fornjot code into smaller libraries (#141), has been a bit more substantial, as I took the opportunity to clean up and document each of those new libraries. Work on that is still ongoing.
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @Yatekii, @martindederer, and my other awesome sponsors. Thank you!
If you're interested in helping to make the project sustainable long-term, please consider supporting me too.
App and Documentation
Improvements to the Fornjot application and documentation, that are relevant to end users.
- Fix warning about glyph size on startup (#337; thanks to @therealprof!)
- Add support for coloring models (#338, #343; thanks to @therealprof!)
- Update list of sponsors in README (#348)
- Support manually specifying triangulation tolerance (#352, #359; thanks to @mxdamien!)
- Enable vertex validation (#354, #278)
- Rename application to
fj-app
(#356, #357) - Fix errors when running app outside the repository (#361, #362, #364)
- Rename
fj::Union
tofj::Group
(#366) - Add convenient syntax for 2D difference operation (#372)
- Fix tolerance not being updated on model reload (#379)
- Fix race condition when loading model initially (#380)
Ecosystem
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Extract
fj-math
fromfj-app
(#374, #375) - Extract
fj-debug
fromfj-app
(#376) - Extract
fj-kernel
fromfj-app
(#377) - Extract
fj-operations
fromfj-app
(#378) - Extract
fj-host
fromfj-app
(#381, #382)
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#344, #345, #346, #347, #349)
- Start automating release procedure (#325)
- Improve
Shape
API (#351, #353) - Further replace use of triangle representation (#355)
- Clean up
Model
(#363) - Add Cargo workspace (#368, #370, #373; thanks to @hendrikmaus!)
Issue of the Week
The Fornjot repository contains different models, that each test different features. Often, a bug in the Fornjot kernel will cause a crash, if some of those models are loaded. But this isn't always noticed, allowing bugs to slip through.
If you're looking to get involved in Fornjot, maybe take a look at #307 - Smoke testing. It involves loading all models as part of the regular CI build, so these kinds of bugs no longer have a chance to go unnoticed.
Outlook
I'm still working on #141, which I expect to be wrapping up this week. Once that is completed, I want to publish a new release, which is overdue. Then, I'd like to address some long-standing triangulation bugs (#105, #143, #145). After that, the next big topic is going to be CSG (#42, #43, #44)