Hey everyone,
I've been texturing hard surface assets for a
while now but still run into the same issue, that especially coated
metal surfaces (Anodized Aluminium, Blued Steel etc.) get later on
critiqued as not quite PBR correct.
While this
is somewhat of a problem with Metal/Rough where I am not sure how much
to reduce the metallic value for for example an anodized surface, it is
even more so a problem with Spec/Gloss.
While the progress of
anodizing aluminum is oxidization, rust itself is approached mostly
colorless in the specular when following the Substance PBR guide.
Nevertheless, colored anodized surfaces require the Specular to have
stronger color information to look right.
Resources on that
topic that go in-depth are rare and I do not want to settle on the
common "just do what looks right" because it's subjective.
If a
technique, approach, or resource exists that makes it less of a
guesswork with these types of surfaces, I would really appreciate the
help!
Replies
Thanks for offering the BRDF resources but you are right, from an artist's perspective this might not be the right approach.
However, there are some hard(ish) rules
metallic specular/basecolor values should never be fully saturated (eg. 255,0,0)
minimum valid value for metallic specular/basecolor (usually around 150(sRGB) )
minimum valid value for basecolor (usually 50(sRGB) but sometimes 30) - that would be your vantablack.
minimum practical value for basecolor (usually 70(sRGB) but sometimes 50) - generally referred to as coal black
maximum practical value for basecolor (usually around 234(sRGB)) - generally referred to as paper white
Exactly where the boundaries lie depends on your renderer so check the docs but stepping outside them actually can cause the maths to go a bit wonky.
TLDR - eyeball it within the hard boundaries.
and a note on roughness.
Measuring roughness is bollocks unless you've tested the precise surface you're trying to represent and averaged the value over the area of a texel on the final model.
You don't do that for two reasons
1 : it would cost a fortune
2 : it still wouldn't look right because environment maps are lower resolution than reality.
But what would bother me is the lack of AO on the rotating dial and the general lighting, otherwise this seems perfectly fine
- On one hand, the feedback they gave you is meaningless (litterally), which indeed could suggest that it is just an excuse for them to not give deeper feedback or the actual reason for rejecting the test.
- On the other hand, you textures *are* odd. Simply looking at the little blue anodized thmbscrew tells me that the shader you are using isn't the default widely accepted kind (broadly speaking : as used in UE4/UE5 PBR) where the blue would be in the diffuse texture, the metalness pass would be pure white, the roughness would be medium to low-ish, and specular would be a fixed .5 value or left unplugged. So this tells me that this is more of "specular-based" approach, which isn't wrong per say but certainly not the most straightforward to author and give feedback on, since it is less intuitive to read. This could have been very easily clarified with some simple communication between both parties though.
- And lastly, you are underselling your work by not showing the background plate and light sources that are generating the reflections.
None of the above is related to precisely dialing PBR values, and is more related to common practices really.
if we're going to look at the textures,
In the specular texture the bulk of that asset wants to be at or very close to a value of 0.5 since that's where plastics (and 99% of common materials) live.
I'd hazard a guess that the darker values on the stickers are there because the stickers look too shiny - dont do that, make them rougher in the gloss texture instead.
This is a common 'trick' and it is risky - specular reflectance controls reflectivity which is a property of the material, if you piss around with that, you're representing something other than plastic. In this case you have dielectric surfaces that can be adequately represented using the disney BRDF so you should be sticking very close to the default 0.5 value for specular.
As a note, I will drop specular level to between 0.37 and 0.5 when attempting to represent a complex surface where light scatters and I cannot use a material that supports scattering or for very rough surfaces where you would ideally be using oren-nayer rather than lambertian lighting. This is a hack but you can justify it by telling yourself that less light would be scattered towards the camera given the complexity of the surfaces involved.
The Bolt things are a bit weird, if they're painted as the specular suggests then you need to bump the basecolor up to a lighter value, if they're metal then you want to bump the value of the specular on the darker bits up somewhat - as i said in my previous post, you can eyeball that to an extent depending on the finish you're trying to achieve.
For me there's the gloss texture is where a lot of the weaknesses lie, its very noisy which is hiding the separation between surfaces and there's very little range in value.
I find it helpful to make panel gaps or anything that is under heavy occlusion very rough and also to paint very dark/black values into your specular map in the same places - this will occlude specular highlights under direct light and support your ambient occlusion texture under indirect lighting all of which leads to the shape of the object feeling more solid.
Marmoset looks very plastic-y and juicy, unreal / Unity hrdp similar but a bit less with their GGX implementation. Cryengine has a more flat and realistic look with a better diffuse model I assume but which also might look more "boring". Octane is also more stilized looking than some other offline renderers, you can basically see the different renderers there by their BRDF style.
Using a different model for diffuse and for gloss also makes a big difference, such as Lambertian or Oren Nayar, which most realtime renderers do not have. Marmoset offers a seperate diffuse model but somehow still looks super juicy. Im no expert but so there must be noticeable differences in implementations I assume.
However there are also different rendering stacks. Blender has a outdated Tonemapper which gives too much saturation in the highlights, making things look unrealistically juicy in saturation, but the raw output might be not too different. Evee and Cycles are also realtime vs offline. You cannot compare rasterization with pathtracing, even if the base shading model is the same.
It has to be said that this is no render but just a screengrab from substance with no AO applied. The text and screws should be within the limits poopipe posted above. Might be that the screengrab is messing things up. But thanks for the feedback!
Oh, you might be getting things wrong here, the Arttest had hard limitations and I was required to use Spec/Gloss in this one (it's superior anyway lol).
Furthermore, this is just a screen grab I took to emphasize on my textures. It's by no means a finished render!
Great tips and great feedback here, really appreciate it! Especially the approach for complex surfaces that normally scatter light sounds good, I need to try that because I run into the problem often.