From ba71bf3235dde006db59ac7fb301254365040526 Mon Sep 17 00:00:00 2001 From: Mikulas Florek Date: Tue, 26 Nov 2024 21:43:49 +0100 Subject: [PATCH] fbx import refactor WIP --- .../anim_stress_test/anim_stress_test.unv | Bin 0 -> 188510 bytes src/renderer/editor/fbx_importer.cpp | 30 ++++++------------ src/renderer/editor/fbx_importer.h | 1 - 3 files changed, 10 insertions(+), 21 deletions(-) create mode 100644 data/maps/anim_stress_test/anim_stress_test.unv diff --git a/data/maps/anim_stress_test/anim_stress_test.unv b/data/maps/anim_stress_test/anim_stress_test.unv new file mode 100644 index 0000000000000000000000000000000000000000..a0ee87f5c698489278decafe3e5ab749e50c45b7 GIT binary patch literal 188510 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 literal 0 HcmV?d00001 diff --git a/src/renderer/editor/fbx_importer.cpp b/src/renderer/editor/fbx_importer.cpp index 3f81c83212..40efc74fac 100644 --- a/src/renderer/editor/fbx_importer.cpp +++ b/src/renderer/editor/fbx_importer.cpp @@ -863,10 +863,7 @@ void FBXImporter::postprocessMeshes(const ImportConfig& cfg, const Path& path) const ofbx::GeometryData& geom = mesh->getGeometryData(); ofbx::GeometryPartition partition = geom.getPartition(import_mesh.submesh == -1 ? 0 : import_mesh.submesh); - if (partition.polygon_count == 0) { - import_mesh.import = false; - continue; - } + ASSERT(partition.polygon_count > 0); // gatherMeshes should filter out such meshes PROFILE_BLOCK("FBX convert vertex data") profiler::pushInt("Triangle count", partition.triangles_count); @@ -1002,6 +999,10 @@ void FBXImporter::gatherMeshes() const ofbx::Mesh* fbx_mesh = (const ofbx::Mesh*)m_scene->getMesh(mesh_idx); const int mat_count = fbx_mesh->getMaterialCount(); for (int j = 0; j < mat_count; ++j) { + const ofbx::GeometryData& geom = fbx_mesh->getGeometryData(); + ofbx::GeometryPartition partition = geom.getPartition(mat_count > 1 ? j : 0); + if (partition.polygon_count == 0) continue; + ImportMesh& mesh = m_meshes.emplace(m_allocator); mesh.is_skinned = false; const ofbx::Skin* skin = fbx_mesh->getSkin(); @@ -2132,7 +2133,6 @@ void FBXImporter::writeGeometry(const ImportConfig& cfg) { Vec2 bounding_cylinder = Vec2(0); for (const ImportMesh& import_mesh : m_meshes) { - if (!import_mesh.import) continue; if (import_mesh.lod != 0) continue; origin_radius_squared = maximum(origin_radius_squared, import_mesh.origin_radius_squared); @@ -2142,7 +2142,6 @@ void FBXImporter::writeGeometry(const ImportConfig& cfg) { const Vec3 center = (aabb.min + aabb.max) * 0.5f; const Vec3 center_xz0(0, center.y, 0); for (const ImportMesh& import_mesh : m_meshes) { - if (!import_mesh.import) continue; if (import_mesh.lod != 0) continue; const u8* positions = import_mesh.vertex_data.data(); @@ -2165,7 +2164,6 @@ void FBXImporter::writeGeometry(const ImportConfig& cfg) { for (u32 lod = 0; lod < cfg.lod_count - (cfg.create_impostor ? 1 : 0); ++lod) { for (const ImportMesh& import_mesh : m_meshes) { - if (!import_mesh.import) continue; const bool are_indices_16_bit = areIndices16Bit(import_mesh, cfg); @@ -2222,8 +2220,6 @@ void FBXImporter::writeGeometry(const ImportConfig& cfg) { for (u32 lod = 0; lod < cfg.lod_count - (cfg.create_impostor ? 1 : 0); ++lod) { for (const ImportMesh& import_mesh : m_meshes) { - if (!import_mesh.import) continue; - if ((import_mesh.lod == lod && !hasAutoLOD(cfg, lod)) || (import_mesh.lod == 0 && hasAutoLOD(cfg, lod))) { write((i32)import_mesh.vertex_data.size()); write(import_mesh.vertex_data.data(), import_mesh.vertex_data.size()); @@ -2284,7 +2280,7 @@ void FBXImporter::writeMeshes(const Path& src, int mesh_idx, const ImportConfig& else { for (ImportMesh& mesh : m_meshes) { if (mesh.lod >= cfg.lod_count - (cfg.create_impostor ? 1 : 0)) continue; - if (mesh.import && (mesh.lod == 0 || !hasAutoLOD(cfg, mesh.lod))) ++mesh_count; + if (mesh.lod == 0 || !hasAutoLOD(cfg, mesh.lod)) ++mesh_count; for (u32 i = 1; i < cfg.lod_count - (cfg.create_impostor ? 1 : 0); ++i) { if (mesh.lod == 0 && hasAutoLOD(cfg, i)) ++mesh_count; } @@ -2294,7 +2290,6 @@ void FBXImporter::writeMeshes(const Path& src, int mesh_idx, const ImportConfig& write(mesh_count); auto writeMesh = [&](const ImportMesh& import_mesh ) { - const ofbx::Mesh& mesh = *import_mesh.fbx; const ofbx::GeometryData& geom = mesh.getGeometryData(); @@ -2365,8 +2360,8 @@ void FBXImporter::writeMeshes(const Path& src, int mesh_idx, const ImportConfig& else { for (u32 lod = 0; lod < cfg.lod_count - (cfg.create_impostor ? 1 : 0); ++lod) { for (ImportMesh& import_mesh : m_meshes) { - if (import_mesh.import && import_mesh.lod == lod && !hasAutoLOD(cfg, lod)) writeMesh(import_mesh); - else if (import_mesh.lod == 0 && import_mesh.import && hasAutoLOD(cfg, lod)) writeMesh(import_mesh); + if (import_mesh.lod == lod && !hasAutoLOD(cfg, lod)) writeMesh(import_mesh); + else if (import_mesh.lod == 0 && hasAutoLOD(cfg, lod)) writeMesh(import_mesh); } } } @@ -2419,7 +2414,6 @@ void FBXImporter::writeLODs(const ImportConfig& cfg) { i32 lods[4] = {}; for (auto& mesh : m_meshes) { - if (!mesh.import) continue; if (mesh.lod >= cfg.lod_count - (cfg.create_impostor ? 1 : 0)) continue; if (mesh.lod == 0 || !hasAutoLOD(cfg, mesh.lod)) { @@ -2464,7 +2458,7 @@ int FBXImporter::getAttributeCount(const ImportMesh& mesh, const ImportConfig& c bool FBXImporter::areIndices16Bit(const ImportMesh& mesh, const ImportConfig& cfg) const { int vertex_size = getVertexSize(*mesh.fbx, mesh.is_skinned, cfg); - return !(mesh.import && mesh.vertex_data.size() / vertex_size > (1 << 16)); + return mesh.vertex_data.size() / vertex_size < (1 << 16); } void FBXImporter::bakeVertexAO(const ImportConfig& cfg) { @@ -2752,11 +2746,7 @@ bool FBXImporter::writeModel(const Path& src, const ImportConfig& cfg) PROFILE_FUNCTION(); postprocessMeshes(cfg, src); - bool import_any_mesh = false; - for (const ImportMesh& m : m_meshes) { - if (m.import) import_any_mesh = true; - } - if (!import_any_mesh && m_animations.empty()) return false; + if (m_meshes.empty() && m_animations.empty()) return false; m_out_file.clear(); writeModelHeader(); diff --git a/src/renderer/editor/fbx_importer.h b/src/renderer/editor/fbx_importer.h index c0d380f80a..ecc06476c0 100644 --- a/src/renderer/editor/fbx_importer.h +++ b/src/renderer/editor/fbx_importer.h @@ -138,7 +138,6 @@ struct FBXImporter { const ofbx::Material* fbx_mat = nullptr; bool is_skinned = false; int bone_idx = -1; - bool import = true; u32 lod = 0; int submesh = -1; OutputMemoryStream vertex_data;