"Principled v2" feedback/discussion thread

“Radius” is a direct measurement, in whatever unit system, not something relative to a measurement in that unit system.
And the word “Scale” describes how big or small that radius is represented.
Scale is not measured in meters. It’s measured in percentage or a fraction.
This is just how these words are used in the english language…

You don’t ever call the Scale of a map in meters. You say that the scale is “1:100” for example. But you will refer to the size of the map as “A0 paper size”

All measurements always are relative to something. Like, a ruler that can measure millimeters basically measures in per mille of the reference length defined in the SI standard. Before they shifted to a speed of light based standard, it was basically a well-calibrated, carefully measured stick in some vault.
Knowing what stuff is relative to is how numbers obtain concrete meaning. And that is typically called the scale.

The radius is measured relative to the scale you define.

If radius was a relative value, it wouldn’t be measured in meters. We know what a meter is. It is strictly defined constant.

The radius is measured relative to the meter.
If you have a radius of half a meter, it means that radius is 50% of the reference length called a meter.
If you have a radius of two meters, it means it’s 200% that length.

0.5 and 2 here are the values relative to the scale of a normed meter stick.

If you go for a centimeter stick instead, the values will read as 50 and 200. The length is the same, the scale and values have changed.

Even different scales are relative to each other. For instance, the centimeter stick fits into the meter stick 100 times. You can convert between units. And that’s also where map scales come into play: If it’s a 1:100 map, that means a real meter appears like 1cm.
That’s a slightly different notion of scale though.

The whole point is, that the radius can be relative to some scale which in turn might be relative to the scene scale which itself determines what 1BU means.

By default, the scene scale is 1BU = 1m but you can also set it to anything else.
The SSS scale parameter allows you to separately define at what scale that material is supposed to operate.

This is useful, for instance, if you want to match some real life measured radii. The dataset is going to be in some sort of unit, likely not in meters (as a meter is way too large a step for these measurements, unless we are talking atmospheric scattering in which case meters are likely too small instead)

You can then pick the scale found in that dataset and directly put in the values in the radius and no matter how you change the scene scale, it’s going to be the right result.

If you have a radius of 50cm, it is a strict distance, as “meter” is a constant, but you can say that the scale of this distance is half of what a meter is. Still, if a value is called “Scale” you cannot have a constant value (such as meters) in it.
I’ll leave it at that. Let’s not flood this thread.

There are multiple valid ways to use the subsurface radius and scale.

One is that you can use the float to set the scale at which you are working, and then treat the RGB values as a color, that you can texture if needed. Another is that you can set the RGB values to absolute distances, and then have a texture map for the float to vary the distance.

We could easily change the absolute unit to be on the RGB values instead of the float. It’s unclear to me which is more common or useful in practice.

1 Like

I think the way it currently is as it should be (distance is set on one value, and RBG are scale values of that distance). It’s perfectly practical.
I just disagree with the labels.

I really like how SSS is now functioning. The only thing for me is that the ‘Scale’ and ‘Radius’ LABELS seem like they should be swapped. The 3 RGB ‘Radius’ values are scalar to what the ‘Scale’ value is, which is the absolute real world unit serving as the basis for the sss operation. Unless I am not understanding that correctly, but it’s how the function seems to behave.

2 Likes

There was something I missed. Random Walk (Skin) will also automatically adjust the scattering radius based on the IOR and Albedo of the material. Random Walk doesn’t do this.

This is basically the same difference between Random Walk (Fixed Radius) and Random Walk. Where Random Walk (Fixed Radius) is similar to the new Random Walk, and the old Random Walk is similar to Random Walk (Skin) in this aspect.

1 Like

Since the scale is in actual units, if you change the scene scale, renders will appear different accordingly, yes.

Intuitively, it makes sense that, if your scene is supposed to represent a km² of land, you might want to work in a different scene scale than if it represents a single small room or even a slide under a microscope.

Diffuse and reflective materials, of course, behave precisely the same, as these are mere surface effects. But anything to do with volumes (including SSS) is gonna change quite drastically if you look at a tiny bit of it or something huge.

The SSS Radius (Currently called “Scale”) scales proportionally with the scene scale, so the SSS appears the same.
I assume everything else that has to do with size, does so too.
Scene scale is just a multiplier for blender units, it does not, or should not affect renders at all.

vs

So, who is correct?


90% of Blender scenes I’ve downloaded from Blendswap.com had, for example, chairs that were 15 feet tall. Ceilings that were 70 feet tall. I always dreamed there was a way to just change the scene units setting somehow and fix everything but I could never figure it out. I always had to meticulously scale every object down to real world size.

1 Like

I was wondering about the same.
Just to confirm, we’re not talking about the Scene Units (or the Unit Scale), right?

image

This currently does nothing to shading or camera optics.

The units are purely a display option, that affects how values are shown in the interface.

But let’s please stay on topic.

1 Like

Excuse me, I didn’t try to derail this thread.

Here is a little idea after testing the import behavior, it would be nice to have control over the socket group tab collapsing status via python API or if it would be implemented in node_shader_utils.py
The Idea is if a socket is connected, it tab will uncollapse automatically

1 Like

I’d prefer to have the choice to keep tabs closed.
I think a solution could be to have a specific socket icon standing for “inside here something is connected”.
And just before the Off Topic Bell rings, I’ll leave here a quick mockup:

18 Likes

Yes!
Also Julien Kaspar on blender.chat said wires on collapsed panels currently look like there’s another node hidden behind it. Super nice mockup!

That is a good idea, but I meant the possibility to open/close the tab via Python script. My intention was to add a property to bpy.types.ShaderNodeBsdfPrincipled like bpy.types.ShaderNodeBsdfPrincipled.specular_collapsed=True

Is plugging another node into the radius socket meant to be able to work in Eevee, or just Cycles? At the moment it seems you can only input the RGB values directly into the radius fields in Eevee, and I don’t know if it’s not currently implemented or if it’s a bug.

So if you plug a vector scale node into the radius socket and a texture map into the scale float, you have the best of both methods? I’d say that’s a point in the current setup’s favour in terms of versatility.

1 Like