ali1234 has quit [Remote host closed the connection]
ali1234 has joined #openscad
<InPhase>
lf94: Sure, generating points externally can be very reasonable.
<InPhase>
lf94: Metaprogramming offers great benefits in other languages, so it seems fine here as well.
<lf94>
Even if you generate points you need to still connect them right
<InPhase>
I have C++ code where I pregenerate source code with other C++ code. One can very easily write an array to spit out point data and stash it.
<lf94>
I wonder how you'd do that for like a blob surface
<InPhase>
lf94: Oh, well that's what the CloseLoop was built for.
<InPhase>
s/CloseLoop/CloseLoop library/
<lf94>
Aren't those libs slow though?
<InPhase>
No, it's lightning quick.
<InPhase>
It's typically faster than anything else you can do in OpenSCAD.
<lf94>
It's like hull for points right?
<InPhase>
Nope.
<InPhase>
It's a single polyhedron call.
<InPhase>
It takes the points, triangulates them, and calls polyhedron.
<InPhase>
To achieve this it has specific requirements on the points. They must trace out non-intersecting layers (can be curved layers) along the surface, and each layer loop must have the same number of points. Satisfy those constraints, and almost any shape will render almost immediately.
ali1234 has quit [Remote host closed the connection]
ali1234 has joined #openscad
<lf94>
How does it know what points connect to which?
<lf94>
Hm
<InPhase>
lf94: Index order.
<lf94>
Ah :D
<InPhase>
Since they are the same length, same indexed points are always connected.
<InPhase>
I spent a lot of time struggling with the other ways one can define it, but most of them get problematic in edge cases that are hard to define and specify as a problem.
<InPhase>
The matched-length version though actually gives you very nuanced control on where the edges are if you choose to pay attention to that (which I wanted to for the threads I was making while first designing it).
<InPhase>
Probably someday I will make a closest next layer point version, but for some designs it will have instabilities in triangulation due to floating point errors.
<InPhase>
So instead I have spent years scratching my beard over this possibly intractable problem. And therefore, index order puts the layout burden and the control in the hands of the user, at the price of sometimes requiring more points per layer than desired for shapes that change loop length radically. But it makes up for it by being super fast anyway.
LordOfBikes has quit [Ping timeout: 258 seconds]
LordOfBikes has joined #openscad
<lf94>
So I'm in a weird place: looks like Doug has basically abandonned his project (it's been almost half a year)
<lf94>
Then there's a project I've started but I don't have the expertise to complete it
<lf94>
Now I'm coming full-circle to openscad because I think if you use analytical methods to generate points, it can do nearly everything curv could do
<lf94>
curv was just as slow as openscad for non-trivial things too
<lf94>
My new code cad is fast as hell, but I just don't have the time or motivation to create the code for proper exporting
<lf94>
and already I look at it and go "ugh"
<lf94>
So at this point I'm looking at openscad. Community power is just too powerful of a thing to ignore.
<joseph_>
teepee InPhase: I've been a bit sidetracked by some unexpected apartment logistics that had to be dealt with quickly. Thanks to the suggestions I solved my error about backups, I just needed to create /root/.local/... I'm about to push that change to my dev env mini-repo. By tomorrow I hope to have built up a document I can share which contains my questions so far about ideal approaches for substituting things in the Renderer
<joseph_>
architecture
<InPhase>
joseph_: Ok, sounds good. Make sure to include specific references to parts of the code in question to help ground us for the discussion.
<InPhase>
joseph_: Pretend as if we haven't looked at that section for a while. :)
<InPhase>
lf94: Yes. Yes it is.
<InPhase>
lf94: And I remain a believer in the potential of a built-in OpenSCAD module that takes an sdf function literal as a parameter. I think this would really patch up a set of those hard cases, letting a person flip between them for various components.
<lf94>
Having used SDFs I'm doubtful because I think you can create the same organic shapes by just exporting points
<lf94>
So like, continue using SDFs but not in their usual shader context basically
<lf94>
You sample points along their fields
<InPhase>
For most shapes I can generally conceptualize and work with functional surface descriptions better than distance metrics, so I concur with the principle. But there are certainly a large set of shapes that are easier to break down as compositions of distance functions, whereas functional compositions of surface outlines are much more challenging.
<lf94>
such as?
xtor is now known as extor
J1A8451 has joined #openscad
J1A84 has quit [Ping timeout: 252 seconds]
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
<InPhase>
Well, fillets for complex shapes, for example, as long as you have been careful in the preceding composition steps.
KimK has joined #openscad
ur5us has quit [Ping timeout: 258 seconds]
ur5us has joined #openscad
hisacro has quit [Ping timeout: 258 seconds]
hisacro has joined #openscad
ur5us has quit [Ping timeout: 258 seconds]
GNUmoon has quit [Remote host closed the connection]
GNUmoon has joined #openscad
peepsalot has quit [Quit: Connection reset by peep]
Colere has quit [Remote host closed the connection]
Colere has joined #openscad
peepsalot has joined #openscad
lastrodamo has joined #openscad
TheAssass1n has joined #openscad
TheAssassin has quit [Quit: No Ping reply in 180 seconds.]
J1A8451 has quit [Quit: Client closed]
J1A8451 has joined #openscad
snaked has quit [Ping timeout: 256 seconds]
snaked has joined #openscad
<lf94>
if you use analytical model I think you can fillet them easily still?
<lf94>
generate your complex SDF with fillets, and sample the field's surface, right?
teepee_ has joined #openscad
teepee has quit [Ping timeout: 240 seconds]
teepee_ is now known as teepee
snaked has quit [Ping timeout: 256 seconds]
snaked has joined #openscad
snaked has quit [Client Quit]
J1A8451 has quit [Quit: Client closed]
J1A8451 has joined #openscad
aiyion has quit [Remote host closed the connection]
aiyion has joined #openscad
J1A8451 has quit [Quit: Client closed]
J1A8451 has joined #openscad
<InPhase>
lf94: Yes. I frequently do fillets precisely in that way. And it's very easy (with appropriate math skills) with surfaces that have symmetry. But I will reference the portion of benchy that J1A8451 highlighted 8 days ago: https://pasteboard.co/dd71BiPaPBpX.png
<lf94>
:o! Yes! Exactly!
<InPhase>
For a fillet like that it would clearly be easier to not have to analytically try to determine the transitions.
<lf94>
"with surfaces that have symmetry" why does this matter in the context of sdf sampling?
<InPhase>
Ah, sdf sampling.
<InPhase>
Well, yeah, then we're in agreement that this would be easier with an sdf backing. Which in turn would be better done not in the OpenSCAD language itself, but would be nice to have integrated in some manner as a feature.
<InPhase>
Now that also means that every piece you try to merge in this way needs to also be sdf constructed, but such is life.
<InPhase>
It would work okay for this image as long as the walls are constructed with a radial distance intersection and not a planar filter intersection.
teepee has quit [Remote host closed the connection]
GNUmoon has quit [Remote host closed the connection]
neur0 has quit [Read error: Connection reset by peer]
TheAssass1n has quit [Read error: Connection reset by peer]
TheAssassin has joined #openscad
GNUmoon has joined #openscad
teepee has joined #openscad
neur0 has joined #openscad
J1A8451 has quit [Quit: Client closed]
J1A8451 has joined #openscad
J1A8451 has quit [Quit: Client closed]
J1A8451 has joined #openscad
<lf94>
you could create an sdf "context" using purely openscad code and have it spit out points though right
<lf94>
"context" -> 3D array for example
rvt has quit [Read error: Connection reset by peer]