WISH: Adjust the UV mapping upon Bend and similar deformations

Bent objects (nurbs & mesh) should preserve UV mapping. There are some e.g. scanned mesh objects with the custom mapping such as road curbs that would work very well as objects that flow along curve if their texture mapping would survive this operation. Especially needed in Grasshopper.

Similar to this more general wish:
Bending/deforming placed blocks - #16 by Czaja .

Hi @Czaja ,

Can you post a scan mesh or NURBS model with a texture map before and after a bend to show the issue you’re trying to solve? This will help in communicating the request if I can’t find a workaround presently. Thanks.

System Info

Rhino 8 SR16 2024-12-30 (Rhino 8, 8.16.24365.02001, Git hash:master @ 53a751178efd1a931ad72ff4c6af9d26be01d19b)
License type: Educational, build 2024-12-30
License details: Cloud Zoo

Windows 11 (10.0.22631 SR0.0) or greater (Physical RAM: 64GB)
.NET 7.0.11

Computer platform: LAPTOP - Plugged in [96% battery remaining]

Non-hybrid graphics configuration.
Primary display and OpenGL: NVIDIA RTX A3000 12GB Laptop GPU (NVidia) Memory: 11GB, Driver date: 12-11-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 553.50
> Integrated accelerated graphics device with 4 adapter port(s)
- Secondary monitor is laptop’s integrated screen or built-in port
- Windows Main Display attached to adapter port #1
Primary OpenGL: NVIDIA RTX A3000 12GB Laptop GPU (NVidia) Memory: 11GB, Driver date: 12-11-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 553.50
> Integrated accelerated graphics device with 4 adapter port(s)
- Secondary monitor is laptop’s integrated screen or built-in port
- Windows Main Display attached to adapter port #1

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
GPU Tessellation is: Off
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 8x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 12-11-2024
Driver Version: 31.0.15.5350
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 11520 MB

Rhino plugins that do not ship with Rhino
C:\ProgramData\McNeel\Rhinoceros\8.0\Plug-ins\Datasmith Rhino Exporter (d1fdc795-b334-4933-b680-088119cdc6bb)\DatasmithRhino8.rhp “Datasmith Exporter” 5.5.1.0
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\8.0\Plug-ins\Bella (813de3fb-18eb-405f-bfcd-b0b4d3da91fb)\24.6.0.0\bella_rhino.rhp “Bella” 24.6.0.0
C:\Users\Czaja\Desktop\HDR Light Studio Texture Plugin\HDRLightStudioTexture.rhp “HDRLightStudioTexture”
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\7.0\Plug-ins\Crayon (39629248-4fa6-47b8-83c7-745a7efea259)\1.2.0.0\Crayon\Crayon.rhp “Crayon” 1.0.0.0
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Crash\1.4.2-beta\Crash.rhp “Crash” 1.4.0.0
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\SubstanceImporter\2.0.7\Substance.Win.rhp “SubstanceImporter” 2.0.7.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\RhinoCode\RhinoCodePlugin.rhp “RhinoCodePlugin” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.16.24365.2001
C:\Program Files\Rhino 8\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

I had luck with one imported mesh, but doing tests on Rhino objects yielded bad results.


bend test 01.3dm (18.8 MB)

Ok, I think I understand the difference now. This mesh uses surface mapping

This one uses custom mapping, although they might look similar in the UV Editor.


The question is, how can I use custom unwrapped UV to act as if it were surface mapping during bending?

Hi , everyone

I just requested features that tackle this exact problem in another discussion then I saw this post. It’s talking about the same problem of curving the UV mapping so that textures look realistic on road geometry.

What do you guys think about “Follow Active Quads” and “Spline Mapping” feature from Blender and Max going to rhino?

1 Like

Hi @Czaja ,

Select the extracted render mesh > run SetMeshSurfaceParameters on it > change the mapping method in Properties to Surface. The bend will then keep the same UVs.

Hi, thank you.
For meshes, it worked but this seems like a secret knowledge, there is nothing about that in the UI.

What about NURBS objects?

In the case of custom-mapped meshes, what are the arguments against that this operation should be performed automatically while bending?

Hi @Czaja ,

The issue, as I see it, is that UDT tools like Bend on BREPs will create more polygons in the render mesh. This new render mesh no longer directly relates to the UV meshes previously unwrapped. I don’t think there is a way to automatically update the density of the existing UV meshes based on the deformation of the BREP. @Jussi_Aaltonen may be able to say more.

Yes, the SetMeshSurfaceParameters command is ‘secret knowledge’, I’m hoping we can do this automatically behind the scenes but I’m not sure that is possible. It can be used for maintaining different mapping methods on meshes once joined as well. I’ll see if we can get something added to the Help too. https://mcneel.myjetbrains.com/youtrack/issue/RH-66671