Seeking workflow for the reverse of UnrollSrf

Searching the docs, tutorials and forum posts is failing me on this one - there are many near-cases covered, but none that actually achieve what I’m trying to do.

“Roll” a (developable) surface onto another (also developable) target curved surface in such a way that the result will exactly or closely UnrollSrf back to the original. ApplyCrv is the closest that I’ve found to this, but it doesn’t work for surfaces and scales the input to the target surface bounds.

(FlowAlongSrf seemed promising at first - but it appears to be intended for a very different set of functions).

Rhino_itU4XCB6Aq

The goal is to take the irregular red surface and “lay” it onto the curved surface in such a way that the resulting surface, if unrolled would be identical (or nearly so) to the originating shape.

Seems like it should theoretically possible for any developable set of inputs. (in the image below the grey surface was created with DevLoft and unrolls with about ~4% deviation from the original area)

Rhino_nnyuN3wBiw

Thanks for any pointers on this one!

Squish and Squishback is worth a try.

Flowalongsrf should also work.

I don’t think so, you would need to describe some very specific logic for what this tool is supposed to do for a wide variety of input, which I haven’t the foggiest.

The only thing I can see to do is in fact use something like FlowAlongSrf to get the red surface ‘on’ the curved surface at all then an iterative feedback loop to see how the input needs to be distorted to match up.

Mind you now that I think of it I’m guessing one big reason FlowAlongSrf isn’t working for you is that this random target surface(like most random surfaces) does not have “even parameterization.” It would likely come closer to working with a proxy target surface that’s been Rebuilt with a large number of points and then not touched.

FlowAlongSrf is what I use for this purpose.

UnrollSrfUV the developable surface. (UnrollSrf can also be used, but the overall results may not be as accurate.

FlowAlongSrf using the unrolled surface as the base and the developable surface as the target.

I consider a deviation in area of 4% as indicating a significant deviation from "developable’. Whether that amount of deviation is acceptable depends on the use of digital model.

UnrollSrfUV preserves the UV structure, which should eliminate problems from non-uniform parameterization.

That’s what it does different from Unrollsrf?

But I’m thinking that getting the original flat shape ON TO the target surface will have non-uniform parameterization, so flowing on to a rebuilt surface would be better…

Thanks guys - I’m still striking out with FlowAlongSrf, (it seems to expect three distinct input objects? the demos all look like they’re geared towards arrays and (at least with defaults there is significant distortion)) - can’t see how to get it functional with only the two objects.

What I’m going for is essentially what I see with ApplyCrv - but for a surface and without the scaling …

Rhino_0Lnwb5CeuD

(as seen above - it’s tantalizingly close but not really it - at least not without several awkward extra operations, could see getting there with splitting and trimming, but the sizing is bit of a killer). Could imagine there needs to be a base-point reference or some such but otherwise it’s almost there.

that was just what DevLoft outputted so I assumed it was but it’s probably a sidetrack though, the first case with the simple target surface probably covers the territory at interest.

Am building models that wind up integrating with materials cut from flat sheet stock and these are often already defined - (sometimes weird backward workflows), a certain amount of deviations are acceptable but the general goal is to be able to wrap or roll specific irregular flat outlines/shapes onto somewhat arbitrarily defined, but always developable surfaces.

Upload a .3dm file with your two surfaces.

Your video appears to show that you are not unrolling the original surface to use as the base surface.

Try this workflow.

UnrollSrfUV the (almost) developable surface. The unrolled surface can be moved and rotated if desired.

Move/copy the surface to be flowed to the unrolled surface. Position and rotate the surface to be flowed to the desired position.

FlowAlongSrf
Object to be flowed - the surface to be flowed
Base surface - the unrolled surface
Target surface - the developable surface


FlowAlongSrf Example.3dm (2.1 MB)

2 Likes

UnrollSrfUV creates an unrolled surface with knots which are a super-set of the knots of the original surface. It starts with the knots of the original surface and then inserts knots as needed. The result can be better mapping of points on the developable surface points on the unrolled surface. This is the older algorithm used by UnrolSrf in Rhino 4 and earlier, and became UnrollSrfUV in Rhino 5.

UnrollSrf creates a surface with a new set of knots, which are independent of the knots of the developable surface. This algorithm was introduced in Rhino 5. and is claimed to have better overall accuracy for some surfaces.

That makes it much more clear - yes, was missing the proxy surface step.

That workflow with history on looks like it should do the trick with a bit of fiddling.

fwiw here is my file

FlowAlongSrf Mapping Exercise.3dm (258.9 KB)

Visually comparing the inputs at different positions along the curved surface and unrolled outputs -

Rhino_BgboBkJNTd

… they are very close to the original, but with some apparent deviation. If I’m seeing it correctly the deviation is greater the steeper the curvature is away from the base plane, if that’s the case that could provide some rules of thumb for minimization.

Rhino_Lm11pbw74i

Comparing these - for my present application that level of deviation should be fine - I’ll always have relief borders around my inset sheet wraps.

Thanks for the help demystifying that tool!

Based on my understanding of how FlowAlongSrf works result should be independent of the orientation of the base surface to the target surface. FlowAlongSrf does a mapping of the object to be flowed in the UV coordinates of the base surface to the UV coordinates of the target surface.

That’s good to know, and could explain how it seems like the orientation can flip around input to output unexpectedly. Looks like I’ll being getting more familiar with the ShowDir tool to keep those in view.

In UnrollSrfUV use Labels=Yes for labels which assist with showing the correspondence of the unrolled surface orientation to the original surface.