-
Hey Matt! Big love for libfive. I think it achieves some great things in the space. My biggest question is do you think libfive could be re-implemented by a non-expert? A huge ideological thorn in my head is that if anyone is not able to re-implement a concept, no one should marry themselves to it. Self-sufficiency is big for me. Could you please list the core concepts that someone would need to learn to implement a minimal version of libfive? Are all these concepts well explained? Thank you very much for your great work!! |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 3 replies
-
Are you looking for information on how to build a system that is like libfive Studio, that allows you to build and render 3D models described as signed distance functions? There are many projects like this, it's not that hard, and I've done it myself.
Or are you looking for information on how to recreate the specific and unique algorithm that Libfive uses to render a signed distance function as a triangle mesh? This AFAIK has only been implemented by Matt. Other projects use different algorithms that are well documented and have been successfully implemented by many people.
|
Beta Was this translation helpful? Give feedback.
-
Hey Doug, hope all is well! I guess you've forgotten my username π Yeah yeah, building and rendering 3D models as SDFs we know is well within non-experts grasp. Yeah, the biggest is turning SDFs into triangle meshes. From what I understand libfive's algorithm is pretty much the best, but it seems difficult to understand. I was wondering if Matt could offer some advice here π (P.S. I'm hoping to see you pick up curv again!!) |
Beta Was this translation helpful? Give feedback.
This comment has been hidden.
This comment has been hidden.
-
This is a tough question to answer! At one point, I was a non-expert, but I was able to implement The core algorithms are not too tricky: meshing is an implementation of Manifold Dual Contouring, which requires some basic linear algebra but nothing exotic. I expect that someone could implement the basics version of However, it would be much slower! Most of the work has gone into making it fast, plus some amount of work into making it handle weird corner cases. The biggest example of the latter is the "feature" handling, which solves this problem. (In retrospect, I'm not totally sure the latter is worth it, versus just declaring "zero-thickness boundaries may be meshed ambiguously") |
Beta Was this translation helpful? Give feedback.
This is a tough question to answer! At one point, I was a non-expert, but I was able to implement
libfive
; it's therefore possible, but one of the steps along the way may be "become an expert".The core algorithms are not too tricky: meshing is an implementation of Manifold Dual Contouring, which requires some basic linear algebra but nothing exotic. I expect that someone could implement the basics version of
libfive
's meshing in 1-2K of Python (without tape simplification, i.e. given somef(x, y, z) -> (v, dv/dx, dv/dy, dv/dz)
)However, it would be much slower!
Most of the work has gone into making it fast, plus some amount of work into making it handle weird corner cases. The biggest exβ¦