Home Technical Talk

Figuring out Tangent Space for Making Game Skins

Hello, I am trying to create a skin for a game called Rust using Substance Painter. The game provides the base model and texture files that I have used to create my skin. It uses Unity, which from all the reading I've been doing is very important for trying to match up the tangent space. I have been having issues with the normal map looking very off in game compared to what I have created in Substance Painter (images below). I set my project settings to OpenGL and disabled "Compute tangent space per fragment." However I did also try toggling the per fragment and using DirectX as well to no avail. I had taken the original model provided by the game into Maya to create some surface details to bake and thought that Maya might have messed with the tangent space, however, when I simply took the game model directly into Substance Painter, applied a smart material that altered the normal, and then put it straight back into the game, I got the same issues. I am hoping someone can point me in the right direction as I have been ripping my hair over this for the past few days when I see other people making skins without the issues I have been running into.
This is the skin in Substance Painter.

This is the result I get when I export my textures into the game. The UV seam is very visible due to the normal map.

Here's a more obvious view from the backside with only the normal map toggled on.

Replies

  • Kanni3d
    Options
    Offline / Send Message
    Kanni3d ngon master
    Are you exporting it as directx or opengl? Changing the project setting to directx/opengl has no effect on what you export, only what you see in the viewport. Has to be opengl exported (flipped y channel) for unity to work.
  • Mioni
    Options
    Offline / Send Message
    I am using the Unity Universal Render Pipeline (Specular) template to export which shows that the normal map is OpenGL (RGB) 8bits +dithering. Do I perhaps need to set up a custom output template?
  • pior
    Options
    Offline / Send Message
    pior grand marshal polycounter
    Before modifying anything or attempting to create any new content, the first thing you need to do is to make sure that you can successfully re-import the provided sample assets (or assets extracted from the game) and making them behave as they should. Anything else is a waste of time before you get that fully figured out. At this time you are just adding extra external factors to an already complex process.
  • Ghogiel
    Options
    Offline / Send Message
    Ghogiel greentooth
    Have you set the imported normal map texture type in unity to normal?

    I can't remember what if compute tangent space per frag applies to URP, but technically it should be on for HDRP according to this resource (which looks pretty accurate and comprehensive, and you might have come across the authors usually indepth helpful posts in the unity forums over the years) https://bgolus.medium.com/generating-perfect-normal-maps-for-unity-f929e673fc57

    In anycase that link is well worth consulting

  • gnoop
    Options
    Offline / Send Message
    gnoop polycounter
    I feel your pain.  I tried Unity several times and  it's always been a puzzle.   

       Decades  ago I believed we are at a brink of truly artist friendly tools , a revolution that would make video games art a new field  of creative self -expression  available to evryone willing to move from traditional canvas to a new media.

    Well, it  never happened and now I think it never will .   Lives will be wasted  in trying to learn and study things as far form true art tasks and creative  ideas as they possibly could be
  • Mioni
    Options
    Offline / Send Message
    Thank you all for your replies, sorry for the delay on my end. I reached out to some other creators for the game and it turns out that the normal maps will always look messed up, like the photos above, until you publish your skin to the Steam Workshop and then reload it in game. Something weird pertaining to Rust skins I suppose. It worked perfectly for me using the same export template, Unity Universal Render Pipeline (Specular). No more normal seams, yay! Hopefully this will help anyone else who might stumble across this in the future. 
Sign In or Register to comment.