Bug Report: Surface Mesh fails to import in Substance Painter (UVs)

Always exporting this
AM65 fail Painter mesh.3dm (801.0 KB)
mesh or surface from a simple triangular NURBS surface (created from three boundary curves) produces a file that fails to import properly into Substance Painter (up to version 2026)

and Rizom.


[AM65 fail Painter mesh.3dm|attachment]

The UV coordinates appear inverted (upside-down) when inspected in external tools
Sometimes the geometry is valid inside Rhino but becomes problematic after export. Sometimes is not load in Substance Painter

Expected Result
The mesh should import correctly into Substance Painter with UV orientation matching the original Rhino surface.

Rhino Version Rhino 8 SR30 (8.30.26103.11001, 2026-04-13)
Rhino 8 SR30 2026-4-13 (Rhino 8, 8.30.26103.11001, Git hash:master @ 3ad61623b0ac4561e2f13265580c56a9f50596d8)
License type: Commercial, build 2026-04-13
License details: Cloud Zoo

Windows 11 (10.0.26200 SR0.0) or greater (Physical RAM: 64GB)
.NET 8.0.14

Computer platform: DESKTOP

Standard graphics configuration.
Primary display and OpenGL: NVIDIA GeForce RTX 5090 (NVidia) Memory: 32GB, Driver date: 3-4-2026 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 595.79
> Accelerated graphics device with 4 adapter port(s)
- Secondary monitor attached to adapter port 0
- Windows Main Display attached to adapter port 1

Secondary graphics devices.
Intel(R) UHD Graphics 770 (Intel) Memory: 2GB, Driver date: 10-18-2024 (M-D-Y).
> Integrated graphics device with 4 adapter port(s)
- There are no monitors attached to this device!

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

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

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 3-4-2026
Driver Version: 32.0.15.9579
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 32607 MB

Rhino plugins that do not ship with Rhino
C:\Users\a_mat\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.30.26103.11001
C:\Program Files\Rhino 8\Plug-ins\Export_FBX.rhp “Export_FBX”
C:\Program Files\Rhino 8\Plug-ins\import_OBJ.rhp “Import_OBJ” 8.30.26103.11001
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\export_OBJ.rhp “export_OBJ” 8.30.26103.11001
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.30.26103.11001
C:\Program Files\Rhino 8\Plug-ins\RhinoRender.rhp “Legacy Rhino Render”
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.30.26103.11001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.30.26103.11001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.30.26103.11001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.30.26103.11001
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

AM65 fail Painter mesh.3dm (801.0 KB)

@andy any ideas here?

I presume that Is an error from my side.
That i’m adding Position -1 to X
And the screenshot shows that

II found other meshes with the same UV issues.

Same problem, and this time all the properties are correct.

When copying and pasting into Rhino 9, the properties change.

But the real problem is that it scales when imported into other applications.

If you want to troubleshoot this issue, here’s the Rh8 file:
AM65 UV mapping fail 2.3dm (7.8 MB)

Here’s another very similar UV mapping error. It’s not exactly the same.

And while recording the video, a second material error occurred.
AM65 UV mapping fail 3.3dm (12.9 MB)

Video: https://youtu.be/PEzKERLGwqc

@Jussi_Aaltonen or @andy will want to take a look at these.

Hi @AlanMattano

Let me first try to explain how this thing works.

Moving the mapping primitive in case of a custom object mapping rarely makes sense. If you click Show mapping you can see what happens.
MovingMappingPrimitive
Custom mapping is a closest point projection to the mapping primitive. That mapping primitive stores the UV coordinates. In most cases the mapping primitive is a mesh.

UV editor works by modifying UV coordinates stored on a mapping primitive mesh - that’s why it was originally called mapping mesh editor. And that’s why the UV islands in the UV Editor do not always correspond to what you see in the Rendered view.

If you export from Rhino as OBJ or FBX and then take those files into Substance Painter and Rizom, do they show correct UVs?

I’ve logged the bug about the custom display mode not using correct texture mapping:
RH-95930 Custom display mode material UV issue

Your explanations are great, very helpful. Thanks for your time.

I answer here.