Closed lf94 closed 1 year ago
We'll see!
I soured on meshing algorithms because nothing in the literature was quite good enough, but now have a rough sketch of something that may meet my high standards; no promises on when it will be implemented, though.
Nice. Do you have a recommendation on what can be done in the interim? Could fidget output something to be meshed by another program? (for what it's worth I find it crazy that there's not some general mesher-for-shaders as a standalone program!) Could be an opportunity for me to familiarize myself with dual contouring.
Doing a very cursory search, you may be able to stitch Fidget's evaluator types into isosurface's meshing algorithms, via the Source
and HermiteSource
traits.
This probably isn't something that I'd want in the Fidget crate itself, since I'm picky enough about meshing to implement it myself, but could get you meshes in the interim.
Alternatively, there's a transvoxel crate with a similar ScalarField
trait.
(no idea about the quality of these options, this was just what I found when searching for "Rust marching cubes")
Added initial meshing support in the fidget::mesh module, gated by the mesh feature (enabled by default).
angel choir
A first pass meshing implementation is now done and released in 0.1.4.
It's far from complete, but it should generate topologically manifold meshes with decent-ish sharp feature behavior.
It always runs on the [-1, +1]
box, so transform your models beforehand!
Excellent :sunglasses: Amazing and incredible work as always. I'll work on fidget bindings in the coming weeks and I can do mesh -> stl in JS land. I sort of wish now I didn't do bindings to libfive-stdlib, because fidget doesn't have the same stdlib :'). I should've re-implemented the stdlib using libfive op codes in JS. Anyway, I digress. Onward!
I would love to also create node bindings for fidget. Especially since the JIT render time is incredible! I do need meshing though to incentivize me for my 3D printing shenanigans...!
What's cool is I'll be able to easily re-use my libfive wrapper and should be able to swap between either very easily...