Repository navigation
Conversation
The Assimp importer rewrite dropped aiProcess_JoinIdenticalVertices, so FBX meshes import with one vertex per face corner. Bump the import version to regenerate models.
|
@xen2 I can't remember the exact reason why that was the case, not even sure if that was mine or Noa's call. But if it was mine, it's likely that I interpreted this flag as forcing split vertices (unique vertex attribute values, like normals, uvs or colors for each faces connected to it) to be fused back together. Those vertex attributes are split on purpose, but evidently, given the official documentation on this property, it's just spitting back out a standard index+vertex buffer mesh instead of a triangle soup. |
|
@xen2 what about this: i can setup importer path equivalency test, with simple object with different format like sphere.fbx sphere.gltf etc, and also in binary save of it. Even maybe held blender file in the repo for future edits or refence, all of size not passing 4 MiB for example. That would catch these kind of regressions in the future. |
I don't think this should change tangents (except within epsilon). So all good on my side. @icauro sure, it would be good to have some tests, at least for FBX and glTF (note: I don't think Assimp supports Better in a separate PR, so I can merge this one first? |
|
Correction to my previous comment: I checked again after the CI failure, and tangents do change. Stride ships Assimp 6.0.2, where This is fixed upstream in Assimp 6.0.3 (assimp/assimp#6278), but the stride/sources/tools/Stride.Importer.3D/MeshConverter.cs Lines 1042 to 1048 in 5d933ff |
|
ok, i will focus on possible regression test improvements later, possibly after my morph target / compute skinner pr. |
|
@xen2 it's weird to me that so many downstream dependencies are pinned. If they're following semver, then surely it isn't necessary to pin all dependencies like this? Same goes for Stride components itself. |
Restores
aiProcess_JoinIdenticalVertices, dropped in the Assimp importer rewrite (#2163). Since then, FBX, OBJ and Collada meshes import with one vertex per face corner, so no vertex is shared between triangles. Also bumps theImportModelCommandversion so existing projects re-import their models once.Timeline
aiProcess_JoinIdenticalVertices.It went unnoticed because rendering looks the same, and glTF exporters already write shared vertices.
Results
Smaller vertex buffers and content files, and the GPU can reuse already-processed shared vertices again.
Position, normal, UVs, colours and skin weights are byte-identical per triangle before and after. Tangents are now averaged across faces that share a vertex, as for glTF imports and the pre-2024 importer.
Types of changes