Home Technical Talk

Blood Masks and other unknown textures

DustyShinigami
polycounter lvl 5
Offline / Send Message
Pinned
DustyShinigami polycounter lvl 5
Hi

I've downloaded a character for a certain game, which I'm using as a reference whilst I make my own. However, I've come across a few texture maps that I've not heard of before, and I can't find much (if anything) online about them, their purpose, or how to make them. Maybe I'm not putting the right names into Google...?

The first one is called a Blood Mask. I'm guessing this is to make the character's face redder...? Possibly when they're in cold environments...? It looks like this...


The next one is just simply referred to as Mb, which is very blue looking:



The third one is just referred to as Ma:



And finally, the last one is similar to the previous, but has been used for the hair and uses darker greens with some orange:



Any help would be appreciated. Thanks.

Replies

  • Noors
    Offline / Send Message
    Noors greentooth
    Those are most likely black and white masks used to control diverse shader behaviors, packed in one texture to spare some memory. You should open them in photoshop and look at each channel separatly to get an idea of each role. It's hard to tell without seeing the actual shader.
    Could be smoothness/AO/thickness/alpha, yeah maybe redder look when cold, sweat etc...
    Doesnt look like anything fancy.
  • Neox
    Offline / Send Message
    Neox godlike master sticky
    don't look at them in RGB, look at R, G and B individually. this should make things in some cases clearer
  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5
    Ohhh, like how Substance Painter combines everything together when exporting out for the Unreal Engine. Gotcha. I take it that sort of thing can be done manually in Photoshop too - by adding the appropriate texture, such as Roughness, to the right channel?

    Well, looking at them in Photoshop's channels, I'm still a bit unsure which one is which. For instance, the orange and green one -

    As I understand it, in Unreal, R is for Ambient Occlusion, G is for Roughness, and B is for Metallic. Though for this one, they look like a curvature, roughness and a regular mask, right...?



  • Noors
    Offline / Send Message
    Noors greentooth
    Yeah Cavity/Roughness/Transmittance i'd say, or whatever they are called in different softwares...
    Those masks can be plugged in any way the user want in a custom shader so there's no really standard for packing them.
  • pior
    Online / Send Message
    pior grand marshal polycounter
    in Unreal, R is for Ambient Occlusion, G is for Roughness, and B is for Metallic.

    Yeah as stated above don't take this for granted - there is absolutely no rule in that regard. Any channel can be plugged into any input.
  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5
    I see. I thought that was the standard, specifically in Unreal. All the guides seem to show it. Although, I don't believe I've set up a custom shader before. Do you have to code those...?
  • Noors
    Offline / Send Message
    Noors greentooth
    I dont use unreal but there's a shadergraph. You just connect little behavior boxes. It doesnt require any coding skills or shader knowledge to just swap channels around. But just repack the maps the unreal way if it's easier.
  • SnowInChina
    Offline / Send Message
    SnowInChina interpolator
    you can create them in the material editor, no coding required, its an visual interface where you can connect different nodes to an output
    whats done here is called channel packing, where you fit as much information in as few textures as possible while still retaining full quality
    most likely they thought they don't need a metalness map on the character shader and plugged a transmission map into that slot

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5
    Cool. You can do that sort of thing in Substance Painter I think, where you can swap different texture channels into the RGB and Alpha channels. I'll just leave things at their defaults, but it's good to know you can customise them and plug the maps into whichever channel.

    Thanks for the info though, guys. At least I've learnt a little something new today. :)
  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    Hi.

    Sorry to resurrect an old thread. I'm still a bit confused with the hair texture for this character. I want to try and get it set up right either in Max or Unreal, but some of the channels are confusing me, and I'd really like to learn from it. :)

    These are the hair cards...

    Hair cards with the albedo added...

    Now, it looks like the albedo has an alpha, but so does the texture called Ab. Not sure what that stands for. The albedo is called Alb, which is simple enough.

    Albedo map in Photoshop:

    And the Ab texture and it's individual channels...

    Red:

    I'm guessing this one is just a root to tip gradient...?

    Green:

    Roughness maybe...?

    Blue:

    Height/depth...?

    And how it looks combined:

    Now, if I try adding the Ab or Alb map to the Opacity slot in Max, everything looks ridiculously transparent and whispy:

    So I'm not quite sure how this would be set up right in Max. I'll try loading it into a scene I have in Unreal next.

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    Okay, so I'm guessing, if I were to set this up in Unreal using Unreal's hair shader, I would need to split up that Ab texture into its separate channels...? One for Alpha, one for Depth, and one for Root...? Unless you can set them to just use a specific channel...?

  • pior
    Online / Send Message
    pior grand marshal polycounter

    Three things :

    • Your guesses are probably in the ballpark, but the best thing to do is probably to just look at some footage of the original game in action. Which game is that ?

    • There is no point to even look at the "combined" map as it is by nature meaningless. It's just a mean of storage.

    • You can do anything you want with any of the RGBA channels in UE - just pull out a connection from the desired channel and plug into anything you want. However the image itself will need to be set to the right gamma settings to match its use (sRGB or not), and there is no way to be 100% sure about how that was done in the orignal game. So this will have to be pure guesswork on your end. All this might be facilitated by working with a texture set split into more manageable textures files (one for each of the individual BW components), at least temporarily. As for the UE hair shader, that's something to worry about later. For now you should only worry about using the plain old defaults imho.

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    Okay. The character and textures in question are from Arthur Morgan. From RDR2. So I’ve no idea how Rockstar’s engine uses shaders etc. I guess my only concern at this stage is figuring out how to correctly set the textures up in Max/Maya? As I’ve been making my own version of Arthur, I’m currently working on the hair. It’d just be nice to see the hair correctly in Max as reference.

  • pior
    Online / Send Message
    pior grand marshal polycounter

    "So I’ve no idea how Rockstar’s engine uses shaders etc."

    Why would it matter that much ? Just plug things in according to your best guess and tweak from there, that's it. 99% of the look will come from the color and transparency anyways.

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    Okay, I've managed to get the hair set-up correctly, for the most part, in Unreal. However, I forgot there's an additional map, and I'm not quite sure what it is or what it's for. The dark green with orange one I've already figured out (I think). but then there's this one:

    Red channel:

    Green:

    Blue:

    If I had to hazard a guess, I would say these are the traditional combos - AO, Roughness, and Metallic...? Although, would that be metallic...? For hair...?

    That other greyscale map from the green/orange one can't be a roughness then...? So maybe it's an ID map...? Just seems a bit fine/faded.

    Just want to figure out how to set it all up in Max now, so I can refer to it whilst adding my own hair cards.

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    I forgot that there's another 'map' that really does confuse me. I've noticed there's a few of these... I'll load them up in Photoshop and discover they're tiny cubes of pixels, usually around 4x4.

    The individual R, G, or B channels look similar to this:

    They always seem to be 'Normal' maps too. Well, there's one with 'N' at the end, which are typical Normal maps and in size (1K, 2K etc) and then these ones with 'Nm'. There's a few that are just colours too, like this:

    Really couldn't guess what purpose these are supposed to serve. Could anyone enlighten me...?

  • Neox
    Offline / Send Message
    Neox godlike master sticky

    This could be anything. It could be a temporary flowmap for the hair, if the UVs of these are layed out correctly this normal down vector could do the job.

    Some might be simple normals to fill some mesh parts without baking and stuff

    Or

    It might just be leftover garbage that nobody cleaned

  • BagelHero
    Offline / Send Message
    BagelHero interpolator

    This one looks baked (has padding), and those channels don't look like seperate maps (weird artifacts, flat). So I would guess this is actually a 2-channel/"yellow" normalmap. These are often the output of game rips because you get all the post-compressed stuff, not the original input maps.

    You're focusing too much on the specifics and not enough on what they generally represent, too. The little 1-shade squares I've always found to be an input for something that has a static value eg spec, normal, or glossiness on something very small, or without enough variance to bother manually authoring. I do not know why these are used sometimes instead of, like, a math node. But they are. The normal ones are.... for things with flat normals (again, do not ask me why or how this comes to be generated or used). The non-normal ones are probably channel packed, because they're random color that doesn't make sense otherwise. (Or what neox said).

    Just jump in, import all the files, and try connecting shit without manually editing anything. If you're left with leftover channels or it doesn't look right THEN you know you have a problem. Trying to reverse engineer without seeing what everything actually does or knowing how shader graphs work is going to be really really hard.


    I also know how tempting it is to muck around with ripped files to learn but it's probably better to just have a go on your own, make a comparison to the RDR one, then ask for feedback when it looks wrong and let people who already know help break it down for you. Unfortunately a lot of this isn't even about the shaders-- it's the artistic effort of card placement and choice that gets like 80% of the "look". 🤷‍♂️

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    Regarding the square maps I've found: Hmm. Still a bit confused and trying to process it all, but yeah, ideally, I need to see how they work. Or where they work. I don't currently have any of those maps plugged in (in 3ds Max) as I'm not quite sure how or where. I've only imported in the ones that I know and make sense, such as the albedo and normal map for the hair or head etc. One of these maps might be for the hair, but I'm not sure how I'd plug that in alongside the main normal map. Likewise if I had all of these set up in Unreal.

    What are 2-channel 'yellow' normal maps...? See, it's things like this I've not come across before, so I'm very curious to research and learn about them. But you're right of course - experimenting/plugging things in to see what they do is a good way of going about it and learning, but in the case of these squares, I'm not sure how to approach them. In Max or Unreal, I'm not sure if I would need to multiply these two normals together or blend them etc. I'll try having a little play around.

    @BagelHero I've also been doing just that - mucking around with a rip from the game and breaking it apart to learn, but also making my own version and using the official as reference. :) Once I'm happy with the final piece, I'll probably share it on here for feedback. :D

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    Okay, firstly - I managed to get the hair to show correctly in 3ds Max. At last. :D Secondly - bringing that square normal map in to the UV editor, the hairs don't even cover the majority of what's in the texture.

    So nothing really overlays on what little is present in that normal map:

    So my best guess is, that due to the number of hair-styles Arthur can have in the game, those other hairs that aren't used would be for those, and that normal map must be for one of them.

  • pior
    Online / Send Message
    pior grand marshal polycounter

    "Really couldn't guess what purpose these are supposed to serve"

    Well TBH I would say you are looking at this from the wrong end. These probably don't have any "purpose" outside of, perhaps, some shader absolutely requiring some maps as an input, but used on an asset that for whatever reason doesn't need any normalmap information - therefore the only solution is to fill up that slot with a proxy/null texture, and obviously it would have to be small as possible.

    Or, perhaps there is a master material somewhere (that instances can be made out from) ; and since it is never a good idea to have a master material call asset-specific textures, perhaps these tiny placeholders were used instead. That's personally exactly what I do on my Unreal assets. And maybe the model extractor the model you're studying has been extracted with a going up the material hierarchy all the way up to the master and seing these textures there.

    Or, perhaps Rockstar has a debug/cleanup too that parses any material to make sure that it has all maps plugged in (perhaps because it breaks on compile if an input is missing, or any other reason really) ; and if needed, it fills up the slots with these.

    Or even, perhaps the extraction tool used to fetch the model and texture data is pulling them from a master material with inputs not directly related to your model, but referenced by it somehow.

    There are so many possible reasons for these that it is almost pointless to try and trace it back ...

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    Well, it doesn't really matter what the definite reason for them are, so long as some examples/opinions on here are shared with me on what they could be for. Just to get some understanding and context behind them. :)

  • pior
    Online / Send Message
    pior grand marshal polycounter

    Of course yeah - but then I would rather suggest to get in touch with the people who actually wrote the extraction tool that has been used to extract the models ; and/or, asking other fans of the game who've been manipulating the models to make renders, like the many accounts doing so on DeviantArt. They will be able to give you very accurate answers ... and if something clever/interesting comes out of, you can then share it here !

    Of course I am not saying that making edicated guesses isn't interesting, as it obviously is. But I also do believe that going straight to the source is always a great way to save time and energy (and avoid misunderstandings).

  • BagelHero
    Offline / Send Message
    BagelHero interpolator

    What are 2-channel 'yellow' normal maps...? See, it's things like this I've not come across before, so I'm very curious to research and learn about them. But you're right of course - experimenting/plugging things in to see what they do is a good way of going about it and learning, but in the case of these squares, I'm not sure how to approach them. In Max or Unreal, I'm not sure if I would need to multiply these two normals together or blend them etc. I'll try having a little play around.

    Iirc there are some technical write-ups about this, but they're just normal maps with the blue channel removed to save space, it seems like it's often automatically done by the engine. I'm not 100% on how to use them in unreal or max, in Marmoset if I apply it like a regular normal map, then flip the Y and Z channels they just work as expected. That may be the specific game I was looking at. Read a little bit more here: https://80.lv/articles/tutorial-types-of-normal-maps-common-problems

    I also had no idea about this, I just made extrapolations. I plugged in all the files I knew, then realized there wasn't a normal map that I was familiar with. There was only a weird green-yellow thing that sorta looked like a normal. I then googled to see if "yellow" normal maps existed and looked until I got an explanation. Anyway, no multiplying or multiple maps or anything needed. Just plug it in and see if it looks wack. If it *does* look weird I googled it and got this:

    https://twitter.com/livingstone3d/status/1160843912170397701

    which looks like it may help with getting your shader graph to work with these kinds of maps. 🙆‍♂️ No secret knowledge necessary.

    --

    For the square maps, imo you don't need to try to put them in anywhere or figure out what they are until you have gaps in your shader. Is there no AO for this material? Maybe that plain white square goes there. No normal for some glasses? Maybe the flat normal map is for that, then, since there's now nowhere else it could go. Trying to guess without that context is sort of futile, it's like trying to guess where a puzzle piece goes before you have any other pieces down.

    Like Neox said-- It could be anything. It could be trash someone forgot.

  • DustyShinigami
    Offline / Send Message
    DustyShinigami polycounter lvl 5

    Sorry, I didn't even see these responses. I usually get a notification via email, but I don't think I did. >_<

    Okay. I'll try asking on DeviantArt and see. I believe there is a very specific extractor for the PS4 version of RDR2 that was used. Never used it myself though. If I get any info I'll share here. :)

    Ahh, that's all they are... Thanks for the link to that article. I think I may have read it before, but it'll certainly be good to re-read and refresh my memory.

    Well, for the square that's part of the hair, I couldn't see anything strange that stood out to me once the shader was applied to the hair mesh. It does have a separate texture sheet for the AO - it's packed with the Specularity and Roughness. It has another sheet that looks to be for the Root, ID and Depth.

  • Ottomotto
    Offline / Send Message
    Ottomotto polycounter lvl 5

    I believe often green is used for roughness because that channel compresses at the best quality but its probably practically negligible

  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter

    It's one extra bit of precision using the default compression type in unreal so it's 20% more range than the other two channels.

    Doesn't necessarily apply to other compression types but in general since the human eye is more sensitive to green where they do have to prioritise a channel it'll be the green one

Sign In or Register to comment.