No announcement yet.

Black triangles in Unity? (HDRP)

  • Filter
  • Time
  • Show
Clear All
new posts

  • Black triangles in Unity? (HDRP)

    So I purchased a Unity subscription for SpeedTree Modeller today and tried out my first tree. Unfortunately I'm getting these ugly flickering black triangles randomly scattered around after importing into Unity.
    Any idea what might be causing this / how I can fix it? Note that it ONLY happens if I have a normal map assigned (but any normal map whatsoever causes it to show up, even with a strength of 0). Without a normal map it vanishes.

    Click image for larger version

Name:	blackTris_Speedtree.png
Views:	676
Size:	356.9 KB
ID:	6334

  • #2

    This indeed is strange. Was this model made in the ST modeler? Was any part of it taken into an outside program or made in an outside program? When importing the asset and converting the materials to work with HDRP, did you apply the fix normal option? If you didn't, this could cause something similar to this effect to happen.

    Would you mind sending a screen shot of the model and it's materials inside the ST modeler?



    • #3
      Hm, where's the fix normal option? I can't seem to find it anywhere.
      This was entirely inside the ST modeler, and then exported using the "Export To Unity" option (as an ST file)

      Attached screenshots of the tree and its materials inside ST modeler.
      Attached Files


      • #4
        Some more odd clues....
        Some triangles aren't pure black and instead flash back and forth between normal and a weird UV stretched version of the triangle. It's almost like SpeedTree is putting extra triangles here or something weird.


        • #5
          Hmm...not quite sure what could be causing the black flickering. I will log this to look into further. However, to answer your question about the Fix Normals option, it pops up when Unity is loading the asset. If it has already been loaded into the scene, try deleting it and exporting into that folder again.


          • #6
            Oh you mean the fix normal maps thing!
            Yep, that was already done.


            • #7
              Bump. I am having the same issue with v8.3.0 Unity version. I bring my trees into Unity using the HDRP export settings and I get these black triangles and the blending doesn't work for branches.Click image for larger version

Name:	treeeeeeee.PNG
Views:	467
Size:	952.3 KB
ID:	6524


              • #8
                What I had to do to fix this issue was export the tree as an FBX from unity to Maya then re-export. As for the blend for the branches not working. I had to create my own shader in shadergraph that read vertex alpha for the Decal-like collars that are created at the branch connections and add vertex alpha myself.

                The issue (from the looks of it) seems to be UV related. The tree from ST imported into Maya has 4 UV sets. and most are extremely broken looking. If you remove those, the black goes away. So I'm guessing there is something with the model export and HDRP reading UVs incorrectly or speed tree Unity exporting with too many/broken UVs. Here is the same tree re-imported as an FBX with my shader. I've also included the simple shader graph setup that reads the vertex alpha added to the blend mesh vertices. This is a very hacky work around that breaks the speed tree pipeline but the HDRP setup is not finished so you gotta do what you gotta do.

                Click image for larger version  Name:	tree2.PNG Views:	0 Size:	1.01 MB ID:	6527

                Click image for larger version  Name:	graph.PNG Views:	0 Size:	120.5 KB ID:	6530
                Last edited by Grumpntug; 03-26-2019, 10:34 PM.


                • #9
                  The other thing I think worth noting here is that when I set the bark shader "Base UV mapping" to Triplanar, the issue goes away on normal speed tree assets. This is what initially lead me to believe that it is a UV export issue with Speed Tree Unity for HDRP.


                  • #10

                    The UVs are not "broken". That is where we store wind and other data, which will not look correct when drawn. Only UV0 is an actual texture coordinate.

                    Why the HDRP/Lit shader gets weird with it, I do not know at this time. In the test cases I have seen, making a shader graph instead of using HDRP/Lit will fix it on its own, no reexporting needed. Is that not the case with yours?