# Flowing on curved surface [How to keep proportions]

Hi,

I am calling to your help because I can´t figure out out to project a planar design all along a surface, so that it strictly applies to it and that I have the posibility to cut holes through the surface. Here is a screenshot of what I obtain with the command “flow along surface”. Even by tweaking the parameters, I can´t seem to do it properly by keeping the proportions of the window.

Hi @malvinbo
Without a file to look at, it’s never easy to guess what’s going on, so post your geometry! But… but one way around it, would be to cut the holes in the flat surface and then use `Flow` to “bend” that surface into shape - rather than flowing the curves.
HTH, Jakob

Here it is, sorry I didn´t think about it before.

Curved windows.3dm (1.8 MB)

The problem is one of parametrization of your surface - it’s a difficult concept to understand. NURBS surfaces are not necessary linear in their parametrization. What that means is if you traveled along the surface from end to end, instead of going at a constant speed everywhere, you will go faster in some places and slower in others. The places where you go faster, the objects being flowed will be ‘stretched’, and where you go slower, they will be ‘compressed’

There are two ways to approach this. One is to try to create a surface with a more even parametrization for your flow target. That is possible by rebuilding the edge curve with a lot of points and then making a new target surface from that.

However, the easiest is to try to duplicate the parametrization of the ‘to’ surface in the ‘from’ surface. You can easily do this in your case by using UnrollSrfUV on your original.

In th file below, I ran UnrollSrfUV, then rotated the result by 90 and moved it near the other. See how the surface isocurves on the unrolled surface match those your curved surface? I then copied your pattern onto the surface. I also needed to use Dir and SwapUV to get the directions right (you need to experiment with this a bit)

Then I used FlowAlongSrf and clicked near the `*` which correspond on the from and to surfaces (make sure you have AutoAdjust=No set in the FlowAlongSrf options).

FlowUV.3dm (1.1 MB)

2 Likes

The two ways I use to fix that issue are:

1. “Unroll” of the target surface, then using the resulting flat surface as the base surface for the “Flow along surface” command, as mentioned above by Helvetosaur.
2. Making a copy of the target surface and rebuilding it with even control point distribution with the “Rebuild surface UV” tool. However, depending on the shape, it may require to set a lot higher number of the control point rows in the desired direction.
1 Like

Thanks a lot, I didn´t suspect this problem of NURBS stretching.
It worked, I rebuilt the surface with lots of points and then “flow along”.
Thank you!

I used the second solution and it worked, thanks a lot!

1 Like

interesting, does that mean that the surface varies in degree (internally or whatever) at these positions? or does it rather mean that the domain if i can call it so, actually compresses/stretches at this positions? have you got some source to read that up in detail?

That…

-Pascal

No variation in degree. Mitch’s analogy of parameterization with speed is an oversimplificaton.

In general for NURBS curves and surfaces the parameter value does not correspond exactly to the distance along the curve or an isocurve of the surface. The amount of variation depends on numerous factors including the shape of the curve or surface and the particular parameter values used for knots.

For an overview of the math used by Rhino see Essential Mathematics 4th Edition

does that coincide with the inflection points or change of acceleration?

i found something in that book, i am not a good reader, i avoid it at all costs
this poked my eye though

but before i bore everybody to death with my egomaniac questions getting back to the problem, why cant rhino linearise the domains by itself for commands like Flow, FlowAlongSrf? too difficult, too much effort, not imminent enough?

2 Likes

Very good question.
This would make using flow and similar commands so much easier.