Idea/Request: Match UV maps scale across multiple objects

Hi there, a tedious task I often encounter is scaling UV maps so that the same texture appears at the same scale on multiple different objects for rendering, time consuming and hard to do accurately. I often export models to 3rd party software for rendering, and I want to use the custom unwraped UV’s from Rhino.

I understand its impossible to perfectly scale a UV map, as fundamentally a UV map is a 2D texture wrapped onto a 3D object and the texture in model space will be slightly skewed/scaled differently at different points on the 3D object after it is unwrapped.

But it would be amazing if there was a command where one could:

  1. select reference object.(mesh/subd/polysrf..whatever)

  2. pick point on reference object.

  3. select target object (mesh/subd/polysrf..whatever)

  4. select a point on the face of the target object

  5. Then Rhino would scale the UV mesh of the target object so that at the points selected on the reference object and the target object, the texture appears at the same scale. So then basically the pixels/mm would be the same at those two points. The texture would not be scaled perfectly across the surface of the entire object, but it will be close! and one could select a point on the target object where it is most visible to the camera when rendered.

  6. Ideally this command would “chain” so after clicking on one target object, without quitting the command, the user could simply click the next target object, and select point on next target object, and so on.. and so on…

I am sure this would be a big time saver for many people who do rendering inside Rhino or render in 3rd party software.

ChatGPT and I spent some time trying to make a python script to do this, but after lots of wasted time..no success. Anyone have similar frustrations? Any suggestions? Any other ideas? Is there some Rhino feature I am missing, or could this be requested as a new feature?

Below screenshot shows simple example. 3 objects, same texture, but appear differently scaled, then what I would hope to achieve after scaling.

Thanks for the request. That approach makes sense. Do you always want uniform scaling?

Yes, this is a good one.

For some inspiration, you can take a look e.g. at Texel Density - Zen UV 5.1 for Blender
Texel density, or ‘unifying’ UV scale is a use a lot in other DCC software.

Do you always want uniform scaling?

Ideally options to scale all UVs of a mesh with the same and one that does per UV island scaling.

For our workflow we define a set size for the UV square in meters and scale all UVs based on that. All our materials are created with this in mind. It allows us to just apply materials without needing to adjust material scale or UV size. Of course there are limits, but it works very well for the majority of meshes.

Yes uniform scaling, same in both U and V for the entire mesh.

If the user is applying the same texture over a complex object. Usually They still need to go through the unwrapping process and make any corrections needed in the uv editor first to ensure the texture displays as uniformly as possible across the object.

Yeah that approach would work just as good.

No need for a reference object. Just type in a ‘texel density’ then start clicking on points on objects. Would be fantastic.

Logged as RH-89878 Match UV maps scale across multiple objects