Real World Map Size

If you are familiar with 3ds Max there is an option called “Real World Map Size” which scales all textures on different objects so they look exactly the same size and Blender lacks this feature.
I found a way to calculate the scale factor that should be applied to each texture. But in order to use it I need to add this scale factor ( which is a float number calculated for each mesh in the scene based on its total surface area and UV map ) to the Geometry Node in the shader node editor, and I don’t know how.
If I could add this factor to the Geometry Node ( so it is a factor based on the mesh which used the material, not the material itself) it can be linked to the scale input in the Mapping Node, and if it does, all the textures linked to that mapping node will appear the same size on all meshes which share the material.
So can anyone Guide me how I can do this?

2 Likes

Where are you stuck?

I just know how to calculate the scale to apply to each texture in any object. I need a way to bring this scale factor into the shader editor.
Right now if I just put the value in a value node in the shader editor it wouldn’t be unique for each object, and all the objects using the material use the same value. I need to tell it to calculate it for each object separately. Just like the random value in the object info node. it gives every object a unique value no matter that they share the same material.

Just want to be clear. What value are you looking for?
Scale? Dimension? Something else?
Screenshot 2023-05-10 at 22.15.55

1 Like

Please see the message on top of this page:

This is a forum for Blender development. For questions about
using Blender, feature requests and bugs, please use the links
above
. - Forum rules

Edit: Sorry if I closed this too fast. It wasn’t clear to me whether you like to implement this feature or were asking for user support.

1 Like

I think there is an intent to implement the feature here, so re-opening.

An Attribute mode set to type Object can access per-object custom properties, so that would be one way of doing it without changing Blender itself.
https://docs.blender.org/manual/en/latest/render/shader_nodes/input/attribute.html

For a native Blender implementation, you’d have to dive into the code and look at the implementation of similar functionality. There’s nothing exactly like it, but it could be some combination of the way random per island and per-mesh single value attributes work.

2 Likes

sure thanks. I am trying to implement a new feature and I needed help to do so. thanks for re-opening it

3 Likes

no, I am talking about the mapping scale. I sent a picture above. I have a script code that evaluates a float number unique to each mesh. I want to add this value to the shader editor for example in the Geometry node ( as shown in the picture).

exactly. Can you please tell me where can I learn how random per island and random per object work and how they are written in code?

You’ll have to ask more pointed questions, there’s a 0% chance you’ll find a guide to implement the feature you want, if that existed, blender would have had said feature.

I’d start with our developer documentation and get blender building first.

If you get stuck somewhere along the way, ask about what you are having problems with.

1 Like

Are you talking about scale of textures to real world while taking uv space usage percent into consideration? Aka texel scale or texel density? There are addons for doing that, but nothing in base blender.

Thanks, everyone specially @Alaska. you mentioned Attributes that I used and made it possible to get what I want. I used Serpens to turn it into an addon that I put here. I am looking forward to hearing your opinions on this idea.
I figured if there is going to be a scale for this matter I consider the scale for the default cube to be 1 and calculate others based on the default cube.

link to the addon