To the people who have experience with it, can it be used for solid modelling ? Since it supports export to popular format, it would be nice to use it for solid modelling also.
My experience with F-Rep based modeling systems is that once you've used a few transformations, the distance field becomes highly non-cartesian and operations do not have the expected effect. For example, "offset" generally only has the desired effect on a primitive shape. Until someone cracks the problem of "renormalizing" signed distance fields, I fear all such systems will just be toys.
Antimony [1] and its related project AO [2], as well as ImplicitCAD [3], are CAD-oriented F-Rep systems (that suffer from the problem I mention).
> For example, "offset" generally only has the desired effect on a primitive shape.
It might not have the expected effect but surely it has a well-defined effect?
I've tried to get my head round distance functions whilst tinkering with raymarching shaders and the guru's over on Shadertoy and pouet.net seem to have a fairly solid understanding of which transforms behave nicely and which don't. They bandy around terms like lipschitz continuity which leads me to believe they've got a deeper grasp of this stuff than I have ;-)
I guess I'm saying that I have a hunch there is a fairly clear distinction between "things that keep the functions well behaved" and "things that don't"
I don't think the problem of "renormalizing" signed distance fields can be cracked, at least not in a generic way that's fast enough for realtime rendering. I would agree this strongly limits the possibilities for making simple modeling tools based on SDFs, because whenever you use interesting transformations, you also need to be hacking away at the correctness of the field. Because of this, it's hard to make simplified tools for modeling and rendering interesting things using SDFs: you can't abstract away the fact that you're effectively writing a distance estimator function, and you'll always want to be able to dig down to the lowest programming level in order to make things work. This is a problem for popularization, but it doesn't prevent the technique from being useful in some domains and applications.
And they even have a “dial-up version” (low bandwidth) of their hall of fame and I think it’s just super cute that they have retained the name “dial-up version” for that. http://hof.povray.org/index-lb.html
Also worth checking out is old versions of their website archived by The Internet Archive. 20 years ago: https://web.archive.org/web/19990210111443/http://www.povray... Click “gallery” (they were using frames so I can’t link it directly with the navigation intact).
>An AMD GPU, using the AMDGPU-PRO (closed source) driver, which is only officially supported on Ubuntu LTS, Red Hat EL (not Fedora), and SUSE. Unfortunately, the open source AMD driver (based on Mesa) is too buggy to work with Curv right now. Your choice of Linux distro is very restricted with AMD.
This is interesting, I use AMDGPU, when I tried PRO I got no greater performance in benchmarks. I'm using one of the unstable ppas (oibaf) and haven't had stability problems. I guess this sort of software perhaps pushes the envelope and reveals instabilities.
make_shape {
dist : everything.dist,
colour (x,y,_,_) :
let z = [x,y];
color = [0,0,0];
done = false;
in do
for (i in 0 ..< 100) (
if (!done) (
z := csqr(z) + [x,y];
if (dot(z,z) > 4)
let cr = (i-1)-log(log(dot(z,z))/log 2)/log 2;
in (
color := [0.95+.012*cr, 1, .2+.4*(1+sin(.3*cr))];
done := true;
)
)
);
in sRGB.HSV color,
bbox : [[-2.5,-2,-2],[1.5,2,2]],
is_2d : true,
}
Processing builds upon a full curly braces programming language (usually Java or JavaScript depending on which version you use) so once you are done prototyping it's pretty straightforward to integrate it elsewhere.
This is a neat idea, but if I'm being honest I find the graphics shown in the readme pretty ugly and evokes memories of bad computer graphics from the '90s / early 2000s textbooks
32 comments
[ 6.0 ms ] story [ 85.2 ms ] threadAntimony [1] and its related project AO [2], as well as ImplicitCAD [3], are CAD-oriented F-Rep systems (that suffer from the problem I mention).
[1] https://www.mattkeeter.com/projects/antimony/3/
[2] https://www.mattkeeter.com/projects/ao/
[3] http://www.implicitcad.org
It might not have the expected effect but surely it has a well-defined effect?
I've tried to get my head round distance functions whilst tinkering with raymarching shaders and the guru's over on Shadertoy and pouet.net seem to have a fairly solid understanding of which transforms behave nicely and which don't. They bandy around terms like lipschitz continuity which leads me to believe they've got a deeper grasp of this stuff than I have ;-)
I guess I'm saying that I have a hunch there is a fairly clear distinction between "things that keep the functions well behaved" and "things that don't"
https://klevas.mif.vu.lt/~rimask/old/pdf/unifying_theory.pdf
http://www.povray.org/
They have a hall of fame http://hof.povray.org/
And they even have a “dial-up version” (low bandwidth) of their hall of fame and I think it’s just super cute that they have retained the name “dial-up version” for that. http://hof.povray.org/index-lb.html
Also worth checking out is old versions of their website archived by The Internet Archive. 20 years ago: https://web.archive.org/web/19990210111443/http://www.povray... Click “gallery” (they were using frames so I can’t link it directly with the navigation intact).
This is interesting, I use AMDGPU, when I tried PRO I got no greater performance in benchmarks. I'm using one of the unstable ppas (oibaf) and haven't had stability problems. I guess this sort of software perhaps pushes the envelope and reveals instabilities.
Will have to give it a try.
sudo apt install cmake git-core libboost-all-dev libdouble-conversion-dev libopenexr-dev libtbb-dev libglm-dev gedit checkinstall && sudo apt-get install libxcursor-dev libxinerama-dev libxrandr-dev libglu1-mesa-dev libgles2-mesa-dev libgl1-mesa-dev libxi-dev && git clone --recursive https://github.com/doug-moen/curv; cd curv; make; sudo checkinstall -D; sudo dpkg -i ./curv.deb
Then used this from the examples:
Website: http://www.curv3d.org/
[1] https://processing.org/
Why dynamically typed!!!
[0] http://www.josleys.com
[0] https://www.ultrafractal.com
[1]: https://www.contextfreeart.org/