Home Adobe Substance

What normal maps work seamless with SP1?

christopheduron
polycounter lvl 2
Offline / Send Message
christopheduron polycounter lvl 2
Usually when i create an object (for use in Cryengine) i have to make my normal maps with Xnormal and some plugins so i avoid seams. When i start to paint them in SP1 i bake everything in that program again so i avoid having seams on my model when im painting on it.

Now for some reason when i try to bake my maps within painter it keeps creating errors so instead of baking with substance i was wondering if i can bake textures with a different program so i can import them in substance painter and use them without seams. When i use the normals i created so far with Xnormal i get seams where my UVs are split.

Replies

  • musashidan
    Offline / Send Message
    musashidan high dynamic range
    Is Cryengine using mikktspace? If so you can set all your vertex/surface normals to averaged, and apply a single smoothing group. Allow Substance/CryE to compute the normals on import. This will be a synced workflow. But that is only if CryE uses mikkt space as a tangent basis.
  • christopheduron
    Offline / Send Message
    christopheduron polycounter lvl 2
    I'm not sure actually, i'll look it up. Howmany different types of tangent space are there anyway?

    EDIT: I found somewhat of an answer and posted it below. I don't quite understand all this tangent space stuff so i usually just find a way that works and then keep using it. How would you set your vertex/surface normals to averaged by the way?
  • christopheduron
    Offline / Send Message
    christopheduron polycounter lvl 2
    "Out of curiosity, why was this approach chosen, rather than making the engine use an industry standard tangent basis like MikkTSpace?"

    The engine uses MikkTSpace since the release after August 2013. Ryse was shipped with it too.

    It is just not exactly compatible on every level of the implementation. The reason is that we need to have sovereignty over the coding of vertex attributes and the math in the shader system. Tangent-space is by definition surface local, and the surface is defined by the compiled engine data and the shaders, and for this reason we don't think that MikkTSpace over CGFs is a good standard.
    Technically it's possible to re-target any tangent-space to our tangent-space, though.

    Our envisioned standard exchange format for baked normals are "Object Space" normals. They are not relative to any low-res geometry or any tangent-space and can be re-targeted much much easier.
  • musashidan
    Offline / Send Message
    musashidan high dynamic range
    Oh that's  right CryE has it's own object space to Tangent space converter that ships with the engine.

    It really depends on your workflow/pipeline. For me, I bake everything in Substance Painter. I use UE4 which also uses mikkt so they are synced  making the baking process simple and painless. 

    Averaging all your normal vectors just means that smoothing the normals of the surface. It depends on your software. In Max you just set all your faces to a single smoothing group, or edit them with an edit normals modifier. 

    There are still some applications that haven't adopted mikkt, so they have their own tangent basis: Max and Maya being the primary 2. Newer apps like Modo and Blender have adopted it. Most engines have it: Marmoset, SP/SD, UE4, Unity. And xnormal uses it.
  • christopheduron
    Offline / Send Message
    christopheduron polycounter lvl 2
    So let's say i want to create a normal map that works in substance painter 1 by creating it in Xnormal from geometry files that come from 3dsMax. Once i create the normal i would drag the .tif file (yea, i like tif files) into the 'textures' tab from SP and then drag it into the 'select normal map' section so it would show on my model.

    When exporting my low poly model from Max (as an .fbx) i would export it with the following setting, making sure 'Tangents and binormals' isn't selected since 3dsmax does not use Mikktspace.


    Then i would use Xnormal to bake the normalmap as a Tangent base normalmap and if i'm correct this normalmap should have to work seamlessly in SP1 since Xnormal DOES use MikktSpace. 

    Correct? (i'll test this in the meantime, correct me if i'm wrong)
  • musashidan
    Offline / Send Message
    musashidan high dynamic range
    All good yes. Just make sure your mesh is triangulated and has xform reset before export. I can't remember if you have to manually set mikkt as the basis in Xnormal or if it's on by default. It's been so long since I've used it. You can change it in the settings if it isn't. Why not just bake in SP? So easy to set up and you get realtime feedback in the viewport.
  • christopheduron
    Offline / Send Message
    christopheduron polycounter lvl 2
    I have to get my end result to workd in Cryengine. The only method of getting a normal map bake to work seamlessly in Cryengine is by first creating a worldspace normalmap and then dragging it through a Cryengine tool to create a tangent space normal map for cryengine without seams.

    I'm not sure if the worlspace map HAS to be made with Xnormal, but i just never really tried to export one out of SP.

    Another reason why i can't bake it in Substance painter is because my character consists of 4 different materials. One for the face, one for the chest, one for the arms and one for the legs. (i wanted to go really high res :p) So after making each individual UV unwrap i collapsed all 4 unwraps on top of eachother. When i try to bake the face (and the others) in SP parts of the body, arms and legs get pulled into the face aswel since all 4 materials are collapsed on eachother. (not sure if im making sense, but i don't think baking something like this is possible in SP?)
  • christopheduron
    Offline / Send Message
    christopheduron polycounter lvl 2
    You're a genius :). It's working now. I'm getting nice seamless normalmaps in substance painter now. I was getting seams at first, but turns out SP uses green -Y channels instead of cryengine's +Y.
  • musashidan
    Offline / Send Message
    musashidan high dynamic range
    You can also bake OpenGL in SP so you don't need to flip Y. You can bake multiple texture sets in SP based on MatID. Just import all 4 meshes as a single .fbx making sure you have assigned 4 unique mats when exporting from your 3d package.
    What a weird setup in CryE?

    Glad you sorted it.
  • Thane-
    Offline / Send Message
    Thane- polycounter lvl 3
    Does SP perform operations faster when models are broken up into different texture sets?
  • Froyok
    Offline / Send Message
    Froyok greentooth
    Thane- said:
    Does SP perform operations faster when models are broken up into different texture sets?
    On the contrary, the less texture sets you have, the less textures the engine will have to manage.
  • Thane-
    Offline / Send Message
    Thane- polycounter lvl 3
    But if i've got like 40 layers all contributing to the final result of each pixel on a complex model, like semi-transparent multiple layers of dust, dirt, faded paint areas, dark marks, light burnishing, scratches; all with lots of redundancy due to generator working in one area, but maybe too much/too little for other areas, wouldn't having less layer make some operations like paint operations faster, especially if im painting underneath?
  • Jerc
    Offline / Send Message
    Jerc interpolator
    Yes it will make things faster on eahc texture set individually as you'll have less blending operations between layers, but you may have to recomposite the different parts together manually after export.
Sign In or Register to comment.