I have a technical question. I'm working on a project here and my colleague has had really good results in the past in Unreal when he takes a 5 mill polygon object (construction industry projects) and reduces the polycount by removing edges based on an angle selection. In the end its just a bunch of ngons at a way lower count. Unreal of course is just triangulating this mesh when it comes into the engine but he's adamant that the difference in performance is really significant. I'm however convinced this must be a false read and there's gotta be a downside somewhere. Whatcha think? Ive seen the work he created with the ngoned meshes and it does look great. Just seems like the type of thing that's gaming workflow sacrilegious. Would love to hear back from some technical people |
Replies
My educated guess:
He's wrong, you're right.
Ngons are simply triangulated.
Different programs triangulate an ngon in different ways. So if you UE4 triangulates a mesh differently from how your baking software did when you made a normal map, then that normal map will display wrong.
Another reason is that if you wanted to import a mesh to zbrush and subdivide it, ngon's might not subdivide well. This is kind of moot now with all the tools zbrush has at it's disposal.
Basically what your colleague is doing is totally pointless. It's not more preformant one way or the other.*
Your fear of ngon's in this case is also totally pointless. It doesn't sound like they're going to affect the kind of work he's doing.
...But if he gets any rendering issues, tell him to clean up his model and maybe you get to say I told you so. ¯\_(ツ)_/¯
technically some triangles are more expensive than others to render. A long thin tri that overlaps lots of other tris would be more expensive, for example. Manually triangulating the mesh to avoid these triangles would be the best way to fix this. But with multi-million-polygon engineering CAD models/scans then you really should just find a nice way of decimating that preforms well and stick with that, regardless of triangles.
The better option is to smooth the vertex normals on faces that don't need a hard edge. If it's a really high poly count mesh then you could even just smooth every edge since there's probably enough triangles that you won't need the normals to do much work.
"[...]reduces the polycount by removing edges based on an angle selection. In the end its just a bunch of ngons at a way lower count."
I personally have no idea what that means. "Angle selection ?" You mean that he is performing a reduction based on an angle threshold between faces, like what Decimation Master and other simple reduction algorithms do ? If yes then of course the result will be lighter than without such reduction ... because it will be ... well ... reduced.
I was asked to make a digital version of a physical object with a "polygon limit" of 1200. I did it in triangles (target engine was unity) and the director of the animation studio where the model got shipped off to got all pissy because the visual quality wasn't what he was after, but i couldn't alter the silhouette without adding more triangles, i argued.
He emailed me an fbx file that he'd made, he'd essentially rotoscoped the object using splines and converted it to a mesh, the "polygon" count was ~1100 but the triangle count was 9000 lol.
When i pointed this out, an argument ensued and my client was advised not to work with me anymore.
i guess TLDR here is:
Just make them happy, if they want ngons deliver ngons. Some assholes just won't be educated.
FYI, whether you pre-triangulate or let the engine triangulate for you, if the number of triangles is the same, the performance will be the same. BUT you will get fucked up normals if the engine triangulates in a way you hadn't predicted.
http://www.humus.name/index.php?page=News&ID=228
Humus explains it pretty clearly in that article but in addition consider what happens when viewed at glancing angles.
That aside.. Almighty_gir makes a very important point in that if he's doing simple visible edge removal to "reduce" "polycount" (quotes for a reason) and then letting ue4 retriangulate the mesh then his normals are going to be fucked and in all likelihood so is the silhouette.