Vases etc. topological analysis and deriving rule sets

I thought I share some thoughts on modelling reference geometries as there are some repeating requests that share similar topics. I am not a vase designer :slight_smile: but have been dealing with the concepts that can be applied here in other contexts.

As time permits I’ll be adding some more details.
Happy for anyone to chime in :wink:

I’ll take the example in this thread as a point of departure:

Ok so to get started, let’s have a look at the topology of the reference geometry and see what rules it could be derived from!

I found the following:

A
cylindrical (nurbs?!) surface, closed in one direction. Let’s call the closed one U and the open one V

B
Tapered at top and bottom

C
A regular sinus like pattern distributed along surface V, again somewhat tapered/attenuated at top and bottom. The sinus wave is applied to the normal space of the base surface.

D
the sinus pattern from C is inverted (negative sinus) to from the neighboring strands.

E
the pattern strands have the following rythm:

aa-x-bb-x meaning:
aa are two curves in regular sinus wave
x is a non modified curve on the base surface of the vase (prevents the strands from “melting” into each other)
bb are two curves with inverted sinus wave.

F
the next rule is a repetition of C/D, but instead of operating in normal space, it is applied to tangent space of the base surface. So now the sinus pattern will also veer out to the sides along a tangent of the U domain.

G
so this pattern has 5 distinct curves:

-a (regular sinus, negativ U domain)
+a (regular sinus, positive U domain)
x (base curve)
-b (inverted sinus, negative U domain)
+b (inverted sinus, positive U domain)

for it to form a repeating pattern x needs to be present twice: -a +a x -b +b x

additional consideration: probably the sinus wave should not go “into” the vase as much as it goes out, so some limiting function will be needed.

the success to this build is a clear layout and minimal usage of points, so next some thoughts on the underlying sinus function and how to lay it out:

what is the minimum number of CP needed for one sinus wave?
5!

so it makes sense to couple that number with the sinus frequency.
Important to note that an input of 4 into the N of Range will create 5 vaules
using CP Nurbs cuve instead of an interpolate curve seems like a good idea to prevent wiggles and create smoother geometry.

now how to go about the “offset” for the second strand?
if we shift the list with the sinus values, we would end up with double points on 0(=1)
so I think it is a better way to simply invert the values from the Pi domain Range and entwine the two into a new data tree. to put the whole transformation into model space, we also need a global multiplier at the end:

then we can use that data to set the amplitude of the translation vectors.
note that curve frames are providing the vectors. (as an alternative to actually evaluating the base surface to get normals/tangents) Since the V isocurves, if coming form a scaled sphere, as suggested here: Help in how to design this Vase - #9 by dk2079, are flat 2-d curves, the curve frames work just fine.

now freqency and resolution can be used to tweak


so the next tasks at hand:

1
prevent the sinus from diving below 0 too much (into the vase)

2
attenuate the transform at the ends

this could be done with graph mapper, but I tend to avoid them if possible, mainly because there is no way to numerically set the position of the graph points. So here some simple expressions to get the job done.

Set all points that are below 0 to a certain level:


and lastly, we filter the domain range for the curve frames trough a parabolic function in order to attenuate the transformation towards the curve ends.
And to keep things aligned, the x curve is also fitted to the floor of the a/b curves:

now we have everything for the aa-x-bb-x curves
and actually the data for translation in tangent space is also there as it is pretty much identical to the pattern along the normal space, but another logic to distinguish -a/+a and -b/+b needs to be added.

But at this point it would make sense to start setting up the base surface for the vase and think about how to map the 5 distinct transformations to the extracted isocurves…

doubleSinus.gh (26.1 KB)

This was alot of effort and a very good explanation!