discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Rendering fails (difference between F5 and F6)

P
Parkinbot
Sun, Dec 13, 2015 1:18 PM

kintel wrote

..it could be easier to use than doing a sweep.

This heavily depends on what kind of sweep() or skin() you use. Don't know
whether you have  looked at the code
http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15100.html
?
I am using an own version from NacaSweep.scad described  here
http://www.thingiverse.com/thing:900137  , which is much more basic than
the "official" one you might know, as it knits just a matrix (a vector of
vectors describing a series of non-intersecting polygons already placed in
3D space) into a polyhedron.
Before I decided to implement this version, I tried out the "official" one
and found it too complicated and restricted for my purposes - beside the
lack of documentation also in code.

Rudolf

--
View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15150.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

kintel wrote > ..it could be easier to use than doing a sweep. This heavily depends on what kind of sweep() or skin() you use. Don't know whether you have looked at the code <http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15100.html> ? I am using an own version from NacaSweep.scad described here <http://www.thingiverse.com/thing:900137> , which is much more basic than the "official" one you might know, as it knits just a matrix (a vector of vectors describing a series of non-intersecting polygons already placed in 3D space) into a polyhedron. Before I decided to implement this version, I tried out the "official" one and found it too complicated and restricted for my purposes - beside the lack of documentation also in code. Rudolf -- View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15150.html Sent from the OpenSCAD mailing list archive at Nabble.com.
MK
Marius Kintel
Sun, Dec 13, 2015 5:20 PM

On Dec 13, 2015, at 08:18 AM, Parkinbot rudolf@parkinbot.com wrote:

Before I decided to implement this version, I tried out the "official" one
and found it too complicated and restricted for my purposes - beside the
lack of documentation also in code.

Nice - I’ll try to have a look.
The purpose of the “official” sweep and skin is to explore the functionality and interface of such functions, in order to make better decision when eventually creating built-in and long-term supported implementations of it.

If you could provide some insights into what you need, what was missing in the original implementation etc., that would be very helpful.

-Marius

> On Dec 13, 2015, at 08:18 AM, Parkinbot <rudolf@parkinbot.com> wrote: > Before I decided to implement this version, I tried out the "official" one > and found it too complicated and restricted for my purposes - beside the > lack of documentation also in code. > Nice - I’ll try to have a look. The purpose of the “official” sweep and skin is to explore the functionality and interface of such functions, in order to make better decision when eventually creating built-in and long-term supported implementations of it. If you could provide some insights into what you need, what was missing in the original implementation etc., that would be very helpful. -Marius
P
Parkinbot
Sun, Dec 13, 2015 8:34 PM

kintel wrote

If you could provide some insights into what you need, what was missing in
the original implementation etc., that would be very helpful.

I never played around with skin(). But as far as I remember, I didn't like
the interface of sweep(), as its prototyp was too restricting. I'm talking
about this one

module sweep(shape, path_transforms, closed=false)

  1. It doesn't allow for a parametrization of shape,
  2. It restricts path-transforms to finite operations
  3. I'm not a friend of multmatrix and representations of similar complexity

So I decided to reimplement it, just demanding a regular matrix - which
represents a series of polygons in 3D-space as already mentioned. This
series may be freely composed: using any kind of transformations, finite and
non-linear in any order, interpolation schemes (e.g. nSpline()) and
unlimitedly parametrized shapes (e.g. airfoils with non-linear transitions
along the path).
See my example of a loop propeller (also just a fast scetch for this post),
using a 7D interpolation. I guess you can read my shortcuts: R, Rx, Tx and
so on operate over objects, Rx_ Tz_ and so operate over vectors (shapes)

http://forum.openscad.org/file/n15160/showcase3.png

and without interpolation

C = gen_dat(A, 100);  // generate data

you'll still get this

http://forum.openscad.org/file/n15160/showcase4.png

--
View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15160.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

kintel wrote > If you could provide some insights into what you need, what was missing in > the original implementation etc., that would be very helpful. I never played around with skin(). But as far as I remember, I didn't like the interface of sweep(), as its prototyp was too restricting. I'm talking about this one > module sweep(shape, path_transforms, closed=false) 1. It doesn't allow for a parametrization of *shape*, 2. It restricts *path-transforms* to finite operations 3. I'm not a friend of multmatrix and representations of similar complexity So I decided to reimplement it, just demanding a regular matrix - which represents a series of polygons in 3D-space as already mentioned. This series may be freely composed: using any kind of transformations, finite and non-linear in any order, interpolation schemes (e.g. nSpline()) and unlimitedly parametrized shapes (e.g. airfoils with non-linear transitions along the path). See my example of a loop propeller (also just a fast scetch for this post), using a 7D interpolation. I guess you can read my shortcuts: R, Rx, Tx and so on operate over objects, Rx_ Tz_ and so operate over vectors (shapes) <http://forum.openscad.org/file/n15160/showcase3.png> and without interpolation > C = gen_dat(A, 100); // generate data you'll still get this <http://forum.openscad.org/file/n15160/showcase4.png> -- View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15160.html Sent from the OpenSCAD mailing list archive at Nabble.com.
MK
Marius Kintel
Mon, Dec 14, 2015 6:45 PM

On Dec 13, 2015, at 15:34 PM, Parkinbot rudolf@parkinbot.com wrote:

So I decided to reimplement it, just demanding a regular matrix - which
represents a series of polygons in 3D-space as already mentioned.

This sounds exactly like skin(), as used here:
https://github.com/openscad/list-comprehension-demos#forma-candle-holderscad

Does that differ in any way, if so, what are you missing from skin()?
(I didn’t have the chance to read your code yet)

-Marius

On Dec 13, 2015, at 15:34 PM, Parkinbot <rudolf@parkinbot.com> wrote: > So I decided to reimplement it, just demanding a regular matrix - which > represents a series of polygons in 3D-space as already mentioned. This sounds exactly like skin(), as used here: https://github.com/openscad/list-comprehension-demos#forma-candle-holderscad Does that differ in any way, if so, what are you missing from skin()? (I didn’t have the chance to read your code yet) -Marius
J
jpmendes
Mon, Dec 14, 2015 7:54 PM

Hi

Maybe you are interested in this:

https://www.youtube.com/watch?v=MWa8sEgpOrM

--
View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15164.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

Hi Maybe you are interested in this: https://www.youtube.com/watch?v=MWa8sEgpOrM -- View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15164.html Sent from the OpenSCAD mailing list archive at Nabble.com.
P
Parkinbot
Mon, Dec 14, 2015 8:53 PM

kintel wrote

Does that differ in any way, if so, what are you missing from skin()?
(I didn’t have the chance to read your code yet)

Meanwhile I had a look at your skin() example. You are right, obviously
skin() and my sweep() are at least syntactically interchangeable and give
the same results on my examples - however the implementations differ a lot.
Is/was it part of any libary? Anyway, in environments without debugging
facilities I always prefer to use my own code :-)

@jpmendes
Hey, this film shows only E-guitars. No 3D-acoustics involved :-(

--
View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15165.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

kintel wrote > Does that differ in any way, if so, what are you missing from skin()? > (I didn’t have the chance to read your code yet) Meanwhile I had a look at your skin() example. You are right, obviously skin() and my sweep() are at least syntactically interchangeable and give the same results on my examples - however the implementations differ a lot. Is/was it part of any libary? Anyway, in environments without debugging facilities I always prefer to use my own code :-) @jpmendes Hey, this film shows only E-guitars. No 3D-acoustics involved :-( -- View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15165.html Sent from the OpenSCAD mailing list archive at Nabble.com.
RW
Rob Ward
Mon, Dec 14, 2015 9:48 PM

Thanks jpmendes, most impressive demonstration.
While I can see a lot of debate goes into refining the power of the
openSCAD programming language and how it is rendered, I am also
privileged to observe the evolution of extremely powerful design tools
that smart people will apply to solve many problems.  Creating a really
good musical instrument in conventional materials is very hard, and not
to be dismissed lightly, but, when design software, for example
openSCAD, and material improvements are accumulated over time, then the
gap will be gradually closed.  I hope the conventional instruments
continue to be made, but I think the understanding of how what makes a
good instrument 'good' will be understood so much better when 3-D
productions tools allow experimentation inside well defined parameters
to be made reliably.
The idea of creating the "formula" for a bell horn of a bass clarinet is
a step in that direction.
I am sure if there was time, the "back-end" stories to most of the
openSCAD forum discussions, would be equally inspiring.
Cheers, Rob

On 15/12/15 06:54, jpmendes wrote:

Hi

Maybe you are interested in this:

https://www.youtube.com/watch?v=MWa8sEgpOrM

--
View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15164.html
Sent from the OpenSCAD mailing list archive at Nabble.com.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

Thanks jpmendes, most impressive demonstration. While I can see a lot of debate goes into refining the power of the openSCAD programming language and how it is rendered, I am also privileged to observe the evolution of extremely powerful design tools that smart people will apply to solve many problems. Creating a really good musical instrument in conventional materials is very hard, and not to be dismissed lightly, but, when design software, for example openSCAD, and material improvements are accumulated over time, then the gap will be gradually closed. I hope the conventional instruments continue to be made, but I think the understanding of how what makes a good instrument 'good' will be understood so much better when 3-D productions tools allow experimentation inside well defined parameters to be made reliably. The idea of creating the "formula" for a bell horn of a bass clarinet is a step in that direction. I am sure if there was time, the "back-end" stories to most of the openSCAD forum discussions, would be equally inspiring. Cheers, Rob On 15/12/15 06:54, jpmendes wrote: > Hi > > Maybe you are interested in this: > > https://www.youtube.com/watch?v=MWa8sEgpOrM > > > > -- > View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15164.html > Sent from the OpenSCAD mailing list archive at Nabble.com. > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
N
Neon22
Tue, Dec 15, 2015 12:01 AM

@jpmendes
Thingiverse user mechadense has done some great work on horns.
http://www.thingiverse.com/thing:218241
Just needs a bit mor ework to finish it up for general OpenSCAD use... (hint
:))

--
View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15168.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

@jpmendes Thingiverse user mechadense has done some great work on horns. http://www.thingiverse.com/thing:218241 Just needs a bit mor ework to finish it up for general OpenSCAD use... (hint :)) -- View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15168.html Sent from the OpenSCAD mailing list archive at Nabble.com.
MK
Marius Kintel
Tue, Dec 15, 2015 12:38 AM

On Dec 14, 2015, at 15:53 PM, Parkinbot rudolf@parkinbot.com wrote:

Meanwhile I had a look at your skin() example. […]
Is/was it part of any libary?

It’s part of the exploration of new functionality. I’m interested in whether this is a good function to offer, what sort of added/changed features are needed and interface ideas.

-Marius

> On Dec 14, 2015, at 15:53 PM, Parkinbot <rudolf@parkinbot.com> wrote: > > Meanwhile I had a look at your skin() example. […] > Is/was it part of any libary? It’s part of the exploration of new functionality. I’m interested in whether this is a good function to offer, what sort of added/changed features are needed and interface ideas. -Marius
P
Parkinbot
Tue, Dec 15, 2015 1:44 AM

kintel wrote

.... I’m interested in whether this is a good function to offer,

I guess you know that my answer will be yes. Connected with an interpolation
scheme it is really powerful.

kintel wrote

what sort of added/changed features are needed and interface ideas.

I just had a look, how skin() behaves when it has to connect polygons with
different number of points (mine doesn't do that at all for a good reason).
The result is somehow unexpected.

use
<
scad-utils/transformations.scad
>
use
<
scad-utils/lists.scad
>
use
<
scad-utils/shapes.scad
>
use
<skin.scad>
r=50;
height=140;
layers = 2;
skin([for (i=[0:layers-1])
transform(translation([0,0,iheight/layers]) * rotation([0,0,-0i]),
circle($fn=6+2*i,r=r))]);

http://forum.openscad.org/file/n15170/showcase5.png

Why would one split the lines of a polygon? Is this semantics a hack? I'd
expect unpaired triangles as natural semantics. And I would also expect the
result to be convex (at least in this case).

And an immediate feature request would be: adding furcations like a
bifurcation and an inverse (anastomosis) to it.
a bifurcation matrix would be
[... [...], [...], [[...], [...]], ...]

and the inverse:
[... [[...], [...]], [...], [...], ... ]

It is easy to calculate furcations, but hard to connect them in a proper way
using OpenSCAD language means.

  • Rudolf -

--
View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15170.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

kintel wrote > .... I’m interested in whether this is a good function to offer, I guess you know that my answer will be yes. Connected with an interpolation scheme it is really powerful. kintel wrote > what sort of added/changed features are needed and interface ideas. I just had a look, how skin() behaves when it has to connect polygons with different number of points (mine doesn't do that at all for a good reason). The result is somehow unexpected. > use > &lt; > scad-utils/transformations.scad > &gt; > use > &lt; > scad-utils/lists.scad > &gt; > use > &lt; > scad-utils/shapes.scad > &gt; > use > <skin.scad> > r=50; > height=140; > layers = 2; > skin([for (i=[0:layers-1]) > transform(translation([0,0,i*height/layers]) * rotation([0,0,-0*i]), > circle($fn=6+2*i,r=r))]); <http://forum.openscad.org/file/n15170/showcase5.png> Why would one split the lines of a polygon? Is this semantics a hack? I'd expect unpaired triangles as natural semantics. And I would also expect the result to be convex (at least in this case). And an immediate feature request would be: adding furcations like a bifurcation and an inverse (anastomosis) to it. a bifurcation matrix would be [... [...], [...], [[...], [...]], ...] and the inverse: [... [[...], [...]], [...], [...], ... ] It is easy to calculate furcations, but hard to connect them in a proper way using OpenSCAD language means. - Rudolf - -- View this message in context: http://forum.openscad.org/Rendering-fails-difference-between-F5-and-F6-tp15041p15170.html Sent from the OpenSCAD mailing list archive at Nabble.com.