Home Technical Talk

PBR Workflow problem

rahulcamma
polycounter lvl 6
Offline / Send Message
rahulcamma polycounter lvl 6
Consider a simple example below.

We have a metal sheet and on top of it we have blood splatter.
xid42LM.jpg?1

Some part of the dried blood splatter is present in grainy form.
U1ZupKW.jpg?1

Also the the blood splatter layer inside photoshop is set at 20% opacity.

Photoshop file-https://www.dropbox.com/s/e2uikt5id77lond/PBR.psd?dl=0

Blood splatter brush-https://www.dropbox.com/s/s7o3znxldq0r6m9/Blood_Splatter.abr?dl=0

So,how will you assign the correct spec value to blood splatter.In order to render correctly.

In reality there is no such thing as partially present.Either something is present or not.

So when i set the opacity of dried blood at 20 %.Blood splatter is still there,its just not that intense.


Every object has a fixed spec value.Dried Blood also has a fixed spec value (Which i don't know.Take whatever you want in the non metal range).

In this case we should be getting either dried blood or metal spec value.

If we are getting a spec value which does not represent the blood or metal .Then the result is incorrect.

Replies

  • osman
    Offline / Send Message
    osman polycounter lvl 18
    You're over thinking it. Partially visible blood( 20% opacity ) doesn't mean the blood and metal somehow fused together. Don't think too much about being 'correct'. PBR is not a 1-to-1 translation of how light and matter works in real life.
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    osman wrote: »
    You're over thinking it. Partially visible blood( 20% opacity ) doesn't mean the blood and metal somehow fused together. Don't think too much about being 'correct'. PBR is not a 1-to-1 translation of how light and matter works in real life.

    That's right Partially visible blood don't fuse with metal.Then how do work with something like this.Thanks for the reply
  • osman
    Offline / Send Message
    osman polycounter lvl 18
    Just use the opacity slider to get a little out of both? Not sure If I'm completely missing your point or if you are overthinking it.
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    osman wrote: »
    Just use the opacity slider to get a little out of both? Not sure If I'm completely missing your point or if you are overthinking it.

    I tried to did that but then i get a completely different spec value which does not correspond to blood and the gold metal
  • osman
    Offline / Send Message
    osman polycounter lvl 18
    That's fine, as long as it looks like blood on metal, what's the prob? Don't get too caught on having the correct real life values, those values are of the materials when they are at their base, clean state.

    Say you found out the roughness value of metal is 0.25( just random numbers) and dirt/mud particle = 0.9

    If you sprinkle some dust on your metal, it wont be 0.25 NOR 0.9, it will be in between somewhere. So while, yes in REALITY the dust particles won't fuse with your metal, the perceived value will still have to be an old-fashioned blend.
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    osman wrote: »
    the perceived value will still have to be an old-fashioned blend.

    Hey thanks for helping me out.

    I guess by roughness you meant to say reflectivity.

    If we can use old fashioned spec blend then that's what i will do.:thumbup:


    But then PBR being a physically accurate and a solid pipeline don't make sense.

    Still there would be a lot of guess work on many things of a particular model.

    Anyway thanks
  • SuperFranky
    Offline / Send Message
    SuperFranky polycounter lvl 10
    If you use Metalness workflow, maybe try to use a bit of grey for the blood in Metalness map. Or just have blood be non-metal completely and if it looks good then fine :)
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    If you use Metalness workflow, maybe try to use a bit of grey for the blood in Metalness map. Or just have blood be non-metal completely and if it looks good then fine :)

    When you want to represent something which is partially visible like blood splatter in this case.

    Pbr system breaks apart it does not represent correct reflectivity values.Regardless of specular workflow or Metalness Workflow.

    However you get better looking result in metalness workflow which cannot be achieved in specular workflow.

    In metalness workflow blood at least have its colour.

    XpSzaZI.jpg
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    Would like to hear how you guys do it
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    Okay so i only had access to the one image above (the black one with the blood splatters, and the arrows). And i've managed to make both a specular, and metalness version, with no problems.
    71hzGqn.png

    i don't really see how PBR seems to "fall apart", i think this is largely a case of artist error.

    here's a zip file with the textures i made.
    http://crazyferretstudios.com/public/Body.zip
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    Gir : as far as a blood "look" is concerned you might want to try and replicate what a multiply layer would look like in Photoshop. I am not exactly sure how this would translate here from a technical point of view with specular and/or matalness passes, but visually speaking a thin layer of blood is basically just like an ink wash. Chivarly has an awesome shader that does this on their weapons, also automatically adjusting the reflectivity of the blood layer, and it looks very convincing.

    637x358.resizedimage

    637x358.resizedimage

    Now of course our perception might be skewed by the look of thick fake blood in movies - we see so little blood in real after all ...

    About the OP : you best bet would probably be to grab some reference pictures of exactly the look you are after !
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    I am glad almighty you replied.I wanted your opinion and the other professional out there

    The reason why PBR fall apart is because its accurately rendering the scene is not served.


    Case 1):Grainy texture issue

    Lets assume the spec value of blood is 43,43,43.Now in the scene there are only 2 elements blood and the metal.So how would you go about setting those grainy blood splatter to their respective spec value.If i use some other value its incorrect and it does not represent blood.Some might say its ok to use some in b/w grey values but again that is a incorrect representation.If you zoom into the document try to sample the spec colour on those grainy part.You won't get the right spec value which would be 43,43,43.It will be blended.Which neither represent metal nor the blood.

    More difficult scenario

    Case 2)using texture at low opacity issue

    Make that blood splatter layer to 20 or 30 % opacity.After doing that you would never get the spec value 43,43,43 of the blood as the layer will blend with other elements or the layer beneath it.So how would you correctly represent this case.As i already said something is present or not.There is no such thing called partially present in real life.So when we lower the opacity we are reducing its intensity.But its there.
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    But can blood really have a definite reflective value ? After all, it all depends on its thickness, how fresh it is, the material underneath, and so on. I would be curious to hear how that value of 43 has been measured in the first place !
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    pior wrote: »
    But can blood really have a definite reflective value ? After all, it all depends on its thickness, how fresh it is, the material underneath, and so on. I would be curious to hear how that value of 43 has been measured in the first place !

    I have no idea what dried blood spec value.I said lets assume it or take whatever you want.
    If we are talking about dried blood it will definitely have a single spec value .Every object has. Like water spec is 43,43,43(taken from PBR encyclopaedia)in its pure form with no contamination.So it does not matter whether its a single drop of water or a swimming pool. Water will have same spec value.Its something which is a material property.
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    Yeah - but the point I am trying to make is that when any translucent liquid is applied as a very thin layer (like blood splatter on metal), the material underneath will show through - and from there it makes sense that we cannot just use the absolute reflectivity values of such materials in these cases ...

    A good example would be an acrylic clear coat applied to a metallic or flaked vehicle surface : even though the reflective properties of an acrylic coating are the same as hard plastic, the resulting surface definitely doesn't look like plain plastic because both of the layers contribute to the final look.

    infinity_bumper002.jpg

    So maybe what you are looking for is a specific shader handling dual reflections ? But with the problem at hand (simple blood splatters) the problem can probably be solved with some creative use of the maps available.

    There might be some good insights to be found here :

    [ame]https://www.youtube.com/watch?v=e3FpG3CFlfQ[/ame]


    Good luck !
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    Pior: I agree with you, there are a lot of different factors that go into convincing looking blood. All i really wanted to do was provide a counter example to what was previously posted. I just wanted to show that even with the speckled, almost dusty look of that stamp, it was still possible to provide the renderer with the correct input values.

    I would still put this one up to artist error. the system hasn't fallen apart, it's just not being supplied with the correct values. I didn't know whether the target was dry or wet blood, at what thickness or consistency it should have. i just had some random stamp from the first post of this thread to go by.

    As for the correct values to use? i would assume (operative word here) that the linear reflective value was around 0.028, an incredibly low value, but it's about the same as skin. I would also assume that (like most things in pbr) the thing that sells its look the most is its glossiness. a deep red albedo with a high gloss component would very much sell fresh blood.
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    The problem is not just with the blood its just an example.If you take sand or any other material that is present in a noisy pattern another example would be rust.They are totally opaque the reason why we still see the metal beneath is because of its grainy presence.

    You also reminded me of another issue which i totally forgot thank you for that.

    PBR Case 3):Transparent objects

    A splash of water or any transparent thing is present on a metallic surface.
    Water being transparent thing we would see the reflectivity of both metal and water.Same goes with the roughness.So how would you accurately represent both the elements in a single texture sheet.


    Hey pior thank you for taking the time in helping out :thumbup:

    I should have been more careful with the words.The PBR is not falling apart but the purpose of making the PBR render is falling apart. PBR is doing what it is suppose to be doing. But when even the artist cannot provide the correct input to PBR ,its very purpose for which it was created is not being served
  • Damian Nachman
    Offline / Send Message
    Damian Nachman polycounter lvl 6
    pior wrote: »
    But can blood really have a definite reflective value ? After all, it all depends on its thickness, how fresh it is, the material underneath, and so on. I would be curious to hear how that value of 43 has been measured in the first place !

    The Quixel guys should bleed for science!
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    I'm not really sure what else you want me to say... I even provided an example (using your own content) where a "noisy pattern" was used to create the reflective properties. you can still see the metal underneath, there's no trickery going on at all. The system works, you're trying to create a problem where none exists.

    As for translucent materials overlaying other ones, there are a couple of ways to do this. Parallax, dual layered materials, additive blending etc. there are plenty of ways to do it.

    If you wanted to be facetious about it, then you would want to adjust the reflectivity of the underlaying object to reflect the fact that the top material has "stolen" some of the energy, but this is such a small amount it's largely un-noticed.

    For the record, UE4's clearcoat material is energy conservant and does what i've just suggested. It would also be a really interesting material type to use for blood stains and stuff.
  • osman
    Offline / Send Message
    osman polycounter lvl 18
    But when even the artist cannot provide the correct input to PBR ,its very purpose for which it was created is not being served

    My friend, I think you are overestimating the accuracy of PBR a little too much. PBR is here so that we can be more consistent and base our values more on measured values, but this does not mean that there is such a thing as an incorrect value.

    If an artist creates rubber material without ever measuring any values of rubber and it actually consistently looks like RUBBER in all light environments then what's the problem? IMO the same logic should be applied on your blood on metal material.

    Use the measured values as your base, they are super handy, but don't be scared to play around. Keep it fun :)
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    I'm not really sure what else you want me to say... The system works, you're trying to create a problem where none exists.

    You might be thinking in terms of how TB2 and PBR works.The problem is not with them.The problem is how to convey right things to TB2 so that it looks right. TB2 and PBR are working great.

    For the time being lets just forget about the noisy or graininess issue.

    Use the colour as a 1 solid chunk.Like making a selection in photoshop then filling it with a colour.But use that colour at a lower opacity.

    What you did is you use the blood (dust,rust whatever you want to call) at 100 % opacity.Try to use that in specular and metalness workflow at a lower opacity may be like 20 % and then see the results.Which i already did. Metalness workflow result are far better than specular workflow.But still its not correct.

    I guess there is no solution to it.We have to just convey the idea.

    why the results are wrong
    1)wrong spec value assigned to blood.
    2)When you even try to assign right spec value.The result wont appear as you have made in your albedo map.

    The whole point of this discussion was to find out the answer to certain questions like whether there is a better or right way to do it,am i doing thing in a correct way , to learn etc.

    I am sorry if it comes out confusing.I am just trying my best to explain things in the best possible way i can.
  • EarthQuake
    Really the first step should be to find some reference of exactly the material you're trying to re-create.

    I think you're falling into this trap of doing things haphazardly with values that might not make sense, and not having a base to compare it do, and then coming to the conclusion that none of it works on some subjective basis that is impossible to quantify. You say it doesn't look right but you haven't provided any reference to what it should look.

    Setting the blood opacity to 20% doesn't make much sense, blood is translucent and semi transparent but not transparent like water or glass. Unless it was an extremely thin layer of blood you would probably want the value to be higher than 20%. Even a small amount of blood will generally obscure the material below. Think about the last time you accidentally cut your finger for instance, that tiny amount of blood obscures the skin material below almost entirely unless the blood is spread out very thin or partially wiped away.
  • JordanW
    Offline / Send Message
    JordanW polycounter lvl 19
    EarthQuake wrote: »
    Really the first step should be to find some reference of exactly the material you're trying to re-create.

    Completely true. It's funny, artists are so used to saying use reference for anatomy, mechanicals or environments but people forget that step when making materials, it's extremely important to be able to breakdown what you're seeing and try to replicate that instead of working off how you 'think' a material looks or reacts to light.

    Yeah there's going to be some areas where multi-layer materials are hard to replicate but it honestly has nothing to do with PBR and more to do with having to replicate material attributes in one shading pass. You're pointing out the non-metal layered over metal problem but there's a ton of other inaccuracies that are present when blending materials. Think of dirt on top of shiny plastic. The highlight in real life doesn't transition from broad to sharp, you actually have the rough highlight of the dirt layered on top of the sharp highlight of the plastic. With current real-time rendering the highlights aren't layered, you just have one set of attributes that blend per-pixel which is inaccurate.

    The reality is things aren't going to be perfect but we're inching closer as hardware power allows. At some point we'll be able to do a unique BRDF and lighting pass for each material layer and things will blend correctly, but we're a ways off from that :)
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    EarthQuake wrote: »
    Really the first step should be to find some reference of exactly the material you're trying to re-create.

    I think you're falling into this trap of doing things haphazardly with values that might not make sense, and not having a base to compare it do, and then coming to the conclusion that none of it works on some subjective basis that is impossible to quantify. You say it doesn't look right but you haven't provided any reference to what it should look like nor have you provided particularly convincing images that show you're put in a proper effort to try to make it work.

    First thing i am trying to understand the limitations that i have with current
    system.So that i can work accordingly.I don't have any other person to ask these questions,i am studying and working alone.I am not giving suggestion to improve current generation hardware.Instead i am simply trying to understand what exist in reality and the best possible way to represent it.That's it.Just want to make sure that what i am doing is right.


    EQ for example here you go:

    Base metal gold on top of it viscous dried blood whose opacity i have lowered to 20%.So that its not that intense.But the dried blood is still there.Albedo looks like in the below image and so your outcome should be like somewhat like your abledo.
    hTnSeV8.jpg

    I have used spec value of blood 40,40,40.That's the lowest value i have taken.Since i cannot find the spec value.So i used a lowest value according to your encyclopedia(non metal 40-75).

    Result are:
    A9EY9FK.jpg

    Right spec mean 40 40 40.Which should be like below in case of specular workflow
    aLBUji7.jpg


    Wrong spec mean any other value as a result of blending. Which should be like below in case of specular workflow.
    ideyEkA.jpg

    Metalness workflow when using grey gives the best result.Although in correct
    cKdfoHg.jpg

    Metalness workflow when using just black and white.Dont give right result
    esBIUK1.jpg
  • BagelHero
    Offline / Send Message
    BagelHero interpolator
    ... Those are not the results I would expect in-engine. Where are you putting your spec maps...? Just in a spec slot? Which engine? Show the shader setup if applicable.

    EDIT: Yep, something is wrong here. This is the result (expected) I'm getting in Toolbag2:
    549f18427c431.png

    ...A weird peach color plastered on top of metal. Which, I might add, is exactly what you're describing with these maps. Your albedo for the blood wouldn't really be 20% because this isn't how materials work. Blood can chip and fade sorta but I wouldn't say it did anything like this. Reference! Additionally, why would the 80% metal that you can see through this be non-metallic? :/

    I couldn't replicate your spec problem. At all (even after I fixed the albedo for the spec, which should be a dark brown/grey in the metal areas if I'm understanding correctly). Are you overlaying/multiplying your spec over your albedo or something? Or, alternatively, using UE4 and it's default spec slot? To be entirely honest, even though there are always going to be problems with trying to create materials with multiple layers in one material, this looks a lot like user error from guesswork/flawed logic instead of observation.

    (PS: After a bit of fiddling, this is what I got with spec. Was trying to make a smear, not so dried, since I was working with blood textures I already had that kinda sucked. Without a more complex shader or decals, you're sort of limited here.)
    549f23a87847b.png
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    Solution:

    Out of the 2 workflow:

    1)Specular
    2)Metalness

    Just use metalness workflow for the best result with greys value for partially visible or grainy colour value .Don't use specular workflow for these situation and life will be on better side.

    Thank you all for helping out :thumbup:
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    That really isn't the solution, at all.
  • BagelHero
    Offline / Send Message
    BagelHero interpolator
    That's kind of the opposite of a solution...
    You're doing something weird to get these results in-engine, no matter what engine you're using, don't you want to figure out what that is?
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    That really isn't the solution, at all.

    You cannot use specular workflow for these kind of situation.You will get better result using metalness workflow and that's the best we can do to convey the idea with current hardware limitation.

    The result that you had posted previously both might look same but right one is better.
    I don't even know which one is made using specular workflow or Metalness.
    But i am 100 % sure right one(Better one) is made with metalness workflow
    iuWCK2B.jpg
    BagelHero wrote: »
    That's kind of the opposite of a solution...
    You're doing something weird to get these results in-engine, no matter what engine you're using, don't you want to figure out what that is?

    What metalness workflow is doing something which specular workflow is not is something i don't know.As an artist i just wanted to know the best possible to represent art.

    With partially visible colour values(like setting layer opacity 20%) or colour present in grainy form like rust formation or blood splatter example in this thread ,using metalness workflow will give the best result.

    I tried tested again and again and again and that's what i find out.

    If you guys think i am wrong well just post some result.Specifically lowering the opacity of the colour valuee opacity like 20% and also the colour present in grainy noisy pattern.Use both the workflow and find out yourself.
  • pior
    Offline / Send Message
    pior grand marshal polycounter
    I think I understand that you like the result on the right-hand side on the screenshot above, because the parts covered in "grainy half blood" show the gold peeking through as opposed to the results on the left where the perceived value of these areas is darker.

    But does all this really matter when the blood stains don't look remotely close to actual blood in these screenshots ? Surely enough, the key to achieving a convincing blood splatter look with various levels of coverage is to start by recreating a straightforward blood stain first and foremost ...

    It really all comes down to you showing us your reference imagery, so that we can work together on recreating its visual qualities convincingly. At the moment the spheres above look like wooden spheres painted with matte red paint, with a coat of gold plating on top ... or, thought the other way around, gold spheres with some parts painted with thick and dry red paint.

    [edit] This is what I would personally expect blood on metal to look like :

    bloodstuff_zpsf1658407.jpg~original
  • BagelHero
    Offline / Send Message
    BagelHero interpolator
    To clarify, I'm on a different tangent. I just wanted to see your maps and shader set up for "spec workflow right spec" example, because the result you're getting is inconsistent with what I get when I plug your maps in.
  • rahulcamma
    Offline / Send Message
    rahulcamma polycounter lvl 6
    BagelHero wrote: »
    To clarify, I'm on a different tangent. I just wanted to see your maps and shader set up for "spec workflow right spec" example, because the result you're getting is inconsistent with what I get when I plug your maps in.

    sorry for the wrong post you were asking for right specular set up which is

    gHZgbvq.jpg

    Metalness set up with grey value:
    JlSHr8t.jpg

    Photoshop file:
    https://www.dropbox.com/s/e2uikt5id77lond/PBR.psd?dl=0
    Marmoset file:
    https://www.dropbox.com/s/rguboj4brb7rw7d/test.tbscene?dl=0
  • BagelHero
    Offline / Send Message
    BagelHero interpolator
    Right, so, on the spec one the albedo should actually be red. Straight up the color you want it to be, none of this 20% opacity stuff... Unless you also lower the opacity of the grey dot in the spec map so that it's tinted yellow (which is what the "wrong" metalness map is essentially doing). The reason being is 20% opacity red on black is no longer red... it's red+black. So that will be the color you get if you use greyscale spec.... a weird grey-red. This is actually logical.

    It's not a "limitation of the spec workflow", you're just authoring maps incorrectly. Even what I've said is technically incorrect I think, it just achieves the result you're looking for in one map. :/ I'd also accept it looking like what Pior was expecting, even though that's not really entirely correct either-- it looks nice. The easier of the options, too.
  • Deathrey
    Offline / Send Message
    Deathrey polycounter lvl 4
    @rahulcamma

    Your last screenshot seems a bit strange.
    For specular workflow, blood stain albedo seems too dark and gloss input is missing.
    And for metalness workflow, blood stain part should be somewhat close to dark grey.

    Did a small demo in UE4 for You.

    Blood stain is blended in albedo, metalness and gloss with different opacity.

    xf5rLug.jpg

    As you can see, you cannot use 20% opacity to represent a thin film of blood.
    Adding to that, You would probably want different opacity settings for different maps, something like 80% for albedo,60% for metalness and 90% for gloss. Just a wild guess, but something like that should do. Spec workflow is absolutely same here.
    In reality there is no such thing as partially present.Either something is present or not.
    In reality blood splat and gold plate would be two different objects and they would have had two different reflections and complex interactions with the light. On practice you gotta improvise a bit to get it to look like you want it to be.
  • EarthQuake
    rahulcamma wrote: »
    You cannot use specular workflow for these kind of situation.

    This is a huge misconception and entirely incorrect. Anything you can do with the metalness workflow, you can do with the specular workflow, litterally anything. In fact, you can do many things with the specular workflow that you can't do with the metalness workflow (and many of them don't make much sense to do, but thats not really here nor there).

    I won't spend a lot of time explaining this, because I've written an article that covers the difference between the two workflows here:
    http://www.marmoset.co/toolbag/learn/pbr-conversion

    In fact, you can easily convert textures meant for the metalness workflow to the specular workflow, with near identical results. So if you can't get the same look with the spec workflow, this means you have some sort of flaw in the way you're creating the content for the spec workflow.
  • Pedro Amorim
Sign In or Register to comment.