3D version of offset()?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

3D version of offset()?

Troberg
Is there any library which has a 3D version of offset(), or is one planned to
appear eventually in OpenSCAD?

It would help me a lot, offset is great for creating soft, almost organic
shapes, rounding corners and smoothing transitions between parts, and I
really use it a lot in 2D. It would be amazing if I could use it in 3D as
well.

Minkowski() helps a bit, but only with outside corners, it doesn't smooth
inside corners, and it's extremely slow, so one has to be very careful about
how one use it.

Suggestions?



--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: 3D version of offset()?

nophead
I have one here: https://github.com/nophead/NopSCADlib#Round but it is geologically slow for anything complex because it uses 3 minkowskis.


On Tue, 22 Dec 2020 at 19:09, Troberg <[hidden email]> wrote:
Is there any library which has a 3D version of offset(), or is one planned to
appear eventually in OpenSCAD?

It would help me a lot, offset is great for creating soft, almost organic
shapes, rounding corners and smoothing transitions between parts, and I
really use it a lot in 2D. It would be amazing if I could use it in 3D as
well.

Minkowski() helps a bit, but only with outside corners, it doesn't smooth
inside corners, and it's extremely slow, so one has to be very careful about
how one use it.

Suggestions?



--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: 3D version of offset()?

nophead

On Tue, 22 Dec 2020 at 19:50, nop head <[hidden email]> wrote:
I have one here: https://github.com/nophead/NopSCADlib#Round but it is geologically slow for anything complex because it uses 3 minkowskis.


On Tue, 22 Dec 2020 at 19:09, Troberg <[hidden email]> wrote:
Is there any library which has a 3D version of offset(), or is one planned to
appear eventually in OpenSCAD?

It would help me a lot, offset is great for creating soft, almost organic
shapes, rounding corners and smoothing transitions between parts, and I
really use it a lot in 2D. It would be amazing if I could use it in 3D as
well.

Minkowski() helps a bit, but only with outside corners, it doesn't smooth
inside corners, and it's extremely slow, so one has to be very careful about
how one use it.

Suggestions?



--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: 3D version of offset()?

adrianv
In reply to this post by Troberg
I wrote an offset_sweep that makes a polyhedron from a stack of offsets of a
2d shape (with the offset varying along the extrusion).   I find this really
useful for making shapes with rounded inner corners, and rounded edges, but
it doesn't have the full generality you can get from doing offset in 3d.
You can, of course, round interior corners with minkowski by differencing
your part from a cube first.  But it's going to be glacial.  (Or OpenSCAD
may crash.)

This wiki shows examples of some ways you can use it if you scroll past the
documentation.  

https://github.com/revarbat/BOSL2/wiki/rounding.scad#offset_sweep

Of course, this approach assumes you have a point list, not 2d geometry.
There is a version of this that works on geometry---but only if the geometry
is convex, because it uses hulls of pairs of offsets to form layers that are
unioned together.  (It may also be slow with lots of layers due to so many
unions.)    

Recently I discovered that somebody is working on something like my
offset_sweep to appear in OpenSCAD.  I'm not sure what the status of that
is---whether it's actually about to appear or whether it's going to sit in a
branch for ever.  


Troberg wrote

> Is there any library which has a 3D version of offset(), or is one planned
> to
> appear eventually in OpenSCAD?
>
> It would help me a lot, offset is great for creating soft, almost organic
> shapes, rounding corners and smoothing transitions between parts, and I
> really use it a lot in 2D. It would be amazing if I could use it in 3D as
> well.
>
> Minkowski() helps a bit, but only with outside corners, it doesn't smooth
> inside corners, and it's extremely slow, so one has to be very careful
> about
> how one use it.
>
> Suggestions?
>
>
>
> --
> Sent from: http://forum.openscad.org/
>
> _______________________________________________
> OpenSCAD mailing list

> Discuss@.openscad

> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org





--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: 3D version of offset()?

RevarBat
The BOSL2 library has a round3d() module, but I’m reasonably certain it’s using an algorithm nearly the same as nophead has. Painfully slow.

-Revar


> On Dec 22, 2020, at 12:09 PM, adrianv <[hidden email]> wrote:
>
> I wrote an offset_sweep that makes a polyhedron from a stack of offsets of a
> 2d shape (with the offset varying along the extrusion).   I find this really
> useful for making shapes with rounded inner corners, and rounded edges, but
> it doesn't have the full generality you can get from doing offset in 3d.
> You can, of course, round interior corners with minkowski by differencing
> your part from a cube first.  But it's going to be glacial.  (Or OpenSCAD
> may crash.)
>
> This wiki shows examples of some ways you can use it if you scroll past the
> documentation.  
>
> https://github.com/revarbat/BOSL2/wiki/rounding.scad#offset_sweep
>
> Of course, this approach assumes you have a point list, not 2d geometry.
> There is a version of this that works on geometry---but only if the geometry
> is convex, because it uses hulls of pairs of offsets to form layers that are
> unioned together.  (It may also be slow with lots of layers due to so many
> unions.)    
>
> Recently I discovered that somebody is working on something like my
> offset_sweep to appear in OpenSCAD.  I'm not sure what the status of that
> is---whether it's actually about to appear or whether it's going to sit in a
> branch for ever.  
>
>
> Troberg wrote
>> Is there any library which has a 3D version of offset(), or is one planned
>> to
>> appear eventually in OpenSCAD?
>>
>> It would help me a lot, offset is great for creating soft, almost organic
>> shapes, rounding corners and smoothing transitions between parts, and I
>> really use it a lot in 2D. It would be amazing if I could use it in 3D as
>> well.
>>
>> Minkowski() helps a bit, but only with outside corners, it doesn't smooth
>> inside corners, and it's extremely slow, so one has to be very careful
>> about
>> how one use it.
>>
>> Suggestions?
>>
>>
>>
>> --
>> Sent from: http://forum.openscad.org/
>>
>> _______________________________________________
>> OpenSCAD mailing list
>
>> Discuss@.openscad
>
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
>
>
>
>
> --
> Sent from: http://forum.openscad.org/
>
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org