Material mapped to match surface control points

I am trying to map a material onto a warped surface so it produces a anamorphic illusion like this, but with an image. The image is not stretch linearly, and so the uv of the surface is generated to be warped (I’ve got this covered already). The problem I am having is that the UV warping is not proportional to the control points of the surface. How do I make the UV follow the control points of the surface more strictly? The diagram below illustrates what I am talking about. If you can think of another way to do it, please let me know (Is there a way to map a material by projection?).

Hi Lawrence - if the surface is flat, make it a degree 1 by 1 (plane). InsertKnot at the mid point of one of the horizontal edges (in your diagram). Slide the points left or right ti adjust the mapping.

Does that work for what you need?


Thanks Pascal.

Your method works. I’ll have to see if I can reproduce this in grasshopper, since there are multiple surfaces that the material needs to be mapped onto.

The only downside is that the warping is uniform. I rebuild the surface so that it is one degree and so that there are 3 control points along the U direction. When I move the middle U control point, the left and right side of the image warps in a way that is closer to a scale/stretch than it is the kind of warp I want (warping starts small and then increases). I tried rebuilding with more points in the U and distributing them in a Fibonacci/quadratic fashion and that seemed to help, but it is still an approximation.


I’m having difficulty making a 1 degree surface from a list of points in grasshopper. Surface from points and loft gives me surfaces that are not 1 degree. All the points are planar. What works in rhino is to first rebuild to 1 degree and then move the points, but there is no way to move control points in grasshopper. Can this workflow be done in ghpython (moving control points of an existing surface)?