Download

Why after importing a static mesh to ue4 it's amount of vertacies getting huge ?

I’v already checked for double vertacies eventhough the amount of vertacies that shown in blender is right.

From 425 to 2498 !
It got about five times more !

UE4:
UE4_WireFrame.PNG

An other picture so you can see the mesh and more settings of it:
UE4_2.PNG.jpg

Blender:
Blender.PNG

How can i fix it ?

You have 838 triangles, that’s means if you have 838*3=2514 vertices, indexed strip vertices will always be less then that. I am not sure what vertices number show Blender, probable is index triangle strip. Also Unreal when import a mesh have an option to remove degenerates, that’s why probable in the mesh view you see 2498 vertices, this should be a warning to you also that you may have some problems or you can make some improvements with your geometry. You can removed degenerates in Blender also before export.

But there are vertices that are part of more then one triangle, this is why this decimated mesh save performance ! otherwise it should make no sense !
This is why blender gives me the “Right” count, and unreal for some weird reason, don’t.

956aed2d4f2359ee5dc98772be387567b6996401.png

For a triangle you need 3 vertexes no matter what. If you have a mesh, you will have x triangles, and x*3 vertices. But, if you use an index buffer into the triangle list, you can process an indexed strip triangle, meaning you can share a vertex and reuse a vertex to more triangles instead. Indexed triangle strip is used mostly (or was, i am not sure if today hardware still benefit at max from this) because of GPU cache, and of course you store less vertexes into the memory, but you need to have and index buffer also to know how to render them.

Is explained pretty good here:

So does it means that ue4 benefit the shared vertices but count the full number of them to to user anyway ? It wouldn’t make sense that unrealengine4 cannot do what all of the programs do…

I am sure UE4 use triangle strip, since there is nvTriStrip library from nVidia in UE4 source code as dependency. It is inside the optional dependency’s pack, probable there is something already inside the engine to do this, but I am to lazy to search for that, also, what kind of normals you have? Usually you can share a “vertex”, but keep in mind a vertex is not just a 3D position.

So if this is the case i shouldn’t be worried about that high vertices number right ?

I would say, go for triangles count, let the engine manage for you rest of optimizations.

Hi Sahkan,

This is expected behavior for game engines.

Here is a really good video for understanding why this is. While the video looks at the vert counts between Maya and Unity the information presented can help explain why you’re seeing the vast difference in vert counts and the reasons behind it.

It’s a very informative video and well worth the half hour to watch.

Tim

https://youtube.com/watch?v=RoZlTAvH9O0

Thank you very much TDoro and Tim Hobson ! I will watch that video right now :slight_smile:

This is a great video !!!
I’v realized the smoothing was off in the blender export options.
So if the gpu sees a sharp edge it splits the vertex to two because otherwise he don’t know how to handle it.
And also, i’v found i have too many UVsplit islands and it causes the same thing.