12-16-2020, 12:30 AM
Hi, this is my first thread so I expect it to not follow certain site/community rules/standards. Apologies in advance.
I'm posting this because after getting no help and not knowing a place to go to ask for help, I did eventually figure it out
Software: Blender 2.91.0
Model and Texture Files
The names of the files I'm using are:
• Player Body Model (includes cheek, nose, and skin textures) - PlayerBody.Nin_NX_NVN
• Eye Textures - PlayerEye00.Nin_NX_NVN
• Mouth Textures - PlayerMouth01.Nin_NX_NVN
Here are some attached screenshots of my node setups per face material
Some Notes:
• Green Nodes - The green nodes are node groups. This was specifically necessary for the skin color, so that it was in sync with all the materials. I just selected an RGB node, pressed Ctrl+G to create a group, and press TAB to go in and out of the node group with it selected. Name the node group "SkinColor" (or Eye or Cheek Color) and you can pull that node group into other materials by copying and pasting it or pressing Shift+A (Add Menu) > Group > [theNameOfYourNodeGroupHere]
• Color Space - Make sure to double check your texture's Color Space setting if you're getting funky results. Rule of thumb: Any grayscale textures, normal maps, or "mix" maps (that contain different material surface property information per color channel of the texture) should be set to "Non-Color". Alb (Albedo) textures should be left at "sRGB".
• Normal Map Setup - The nodes following the normal map texture are because the Normal Map file contains no value in the Blue channel of the texture. Without going into heavy detail, the game engine used for AC:NH probably automatically adds that blue value/vector information in their shader, and Blender doesn't have that by default. Normal Maps are typically a blue/purple color, and that's because the Blue channel has a value of 1.0. So we're simply adding in a Blue value.
Perhaps a more efficient way of doing this is connecting the Normal Map texture Color output into the Color1 input of a "MixRGB" node, setting the Blending Mode to "Add", setting the Color2 RGB values to R=0.0, G=0.0, B=1.0, and setting the Fac to 1.0. That is just simply putting a blue value into our texture. Then feeding the output of that node directly into a "Normal Map" node.
• UV Sets - The "UV Map" node is necessary, at least in my case, because I combined all the face mesh objects into the main body object, so the materials needed to know which UV set to display for. Otherwise they don't render (by default).
• Mix Maps - I don't understand what all the "Mix" map color channels are supposed to be assigned to which material property... but in my case, I'm doing this for a 3D print and that information is irrelevant. Though I would like to know what channel is for what material property anyway.
• MixRGB Nodes ("Mix", "Multiply", "Add" Nodes) - The yellow nodes are "MixRGB" nodes. Searching for a "Add" or "Multiply" node will come up with nothing (they need to change this in my opinion, it would be helpful to search for the function and have the node that provides that function show up in the search).
• Merging Vertices for Shading Errors - Once combining the face objects, I selected all the vertices and pressed M > Merge By Distance to remove any overlapping vertices so that the shading would run smooth across the head. Otherwise you have separated sections where the vertex normals are different and don't get a nice smooth shade across the head.
• mPaint Material - I just hid this mesh and didn't use the material because for my specific case it didn't make any difference. But not really sure what it's for, maybe just for specific accessories like face paint or shadows or something? Certain emote textures? Not sure.
Hope this helps
**EDIT** - I think the normal map's green channel needs inverting. If you're using the "Separate RGB" to "Combine RGB" to add your Blue value, just put an "Invert" node in between the Green channel connection. But only for the face textures, not for clothing...?
I'm posting this because after getting no help and not knowing a place to go to ask for help, I did eventually figure it out
Software: Blender 2.91.0
Model and Texture Files
The names of the files I'm using are:
• Player Body Model (includes cheek, nose, and skin textures) - PlayerBody.Nin_NX_NVN
• Eye Textures - PlayerEye00.Nin_NX_NVN
• Mouth Textures - PlayerMouth01.Nin_NX_NVN
Here are some attached screenshots of my node setups per face material
Some Notes:
• Green Nodes - The green nodes are node groups. This was specifically necessary for the skin color, so that it was in sync with all the materials. I just selected an RGB node, pressed Ctrl+G to create a group, and press TAB to go in and out of the node group with it selected. Name the node group "SkinColor" (or Eye or Cheek Color) and you can pull that node group into other materials by copying and pasting it or pressing Shift+A (Add Menu) > Group > [theNameOfYourNodeGroupHere]
• Color Space - Make sure to double check your texture's Color Space setting if you're getting funky results. Rule of thumb: Any grayscale textures, normal maps, or "mix" maps (that contain different material surface property information per color channel of the texture) should be set to "Non-Color". Alb (Albedo) textures should be left at "sRGB".
• Normal Map Setup - The nodes following the normal map texture are because the Normal Map file contains no value in the Blue channel of the texture. Without going into heavy detail, the game engine used for AC:NH probably automatically adds that blue value/vector information in their shader, and Blender doesn't have that by default. Normal Maps are typically a blue/purple color, and that's because the Blue channel has a value of 1.0. So we're simply adding in a Blue value.
Perhaps a more efficient way of doing this is connecting the Normal Map texture Color output into the Color1 input of a "MixRGB" node, setting the Blending Mode to "Add", setting the Color2 RGB values to R=0.0, G=0.0, B=1.0, and setting the Fac to 1.0. That is just simply putting a blue value into our texture. Then feeding the output of that node directly into a "Normal Map" node.
• UV Sets - The "UV Map" node is necessary, at least in my case, because I combined all the face mesh objects into the main body object, so the materials needed to know which UV set to display for. Otherwise they don't render (by default).
• Mix Maps - I don't understand what all the "Mix" map color channels are supposed to be assigned to which material property... but in my case, I'm doing this for a 3D print and that information is irrelevant. Though I would like to know what channel is for what material property anyway.
• MixRGB Nodes ("Mix", "Multiply", "Add" Nodes) - The yellow nodes are "MixRGB" nodes. Searching for a "Add" or "Multiply" node will come up with nothing (they need to change this in my opinion, it would be helpful to search for the function and have the node that provides that function show up in the search).
• Merging Vertices for Shading Errors - Once combining the face objects, I selected all the vertices and pressed M > Merge By Distance to remove any overlapping vertices so that the shading would run smooth across the head. Otherwise you have separated sections where the vertex normals are different and don't get a nice smooth shade across the head.
• mPaint Material - I just hid this mesh and didn't use the material because for my specific case it didn't make any difference. But not really sure what it's for, maybe just for specific accessories like face paint or shadows or something? Certain emote textures? Not sure.
Hope this helps
**EDIT** - I think the normal map's green channel needs inverting. If you're using the "Separate RGB" to "Combine RGB" to add your Blue value, just put an "Invert" node in between the Green channel connection. But only for the face textures, not for clothing...?