浏览代码

Merge pull request #71077 from rsjtdrjgfuzkfg/obj-import

obj: Avoid empty names and meshes
Rémi Verschelde 2 年之前
父节点
当前提交
14a6a5b79f
共有 1 个文件被更改,包括 9 次插入4 次删除
  1. 9 4
      editor/import/resource_importer_obj.cpp

+ 9 - 4
editor/import/resource_importer_obj.cpp

@@ -218,7 +218,8 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh>> &r_meshes, bool p_
 	Vector<Vector3> normals;
 	Vector<Vector2> uvs;
 	Vector<Color> colors;
-	String name;
+	const String default_name = "Mesh";
+	String name = default_name;
 
 	HashMap<String, HashMap<String, Ref<StandardMaterial3D>>> material_map;
 
@@ -395,9 +396,12 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh>> &r_meshes, bool p_
 
 			if (l.begins_with("o ") || f->eof_reached()) {
 				if (!p_single_mesh) {
-					mesh->set_name(name);
-					r_meshes.push_back(mesh);
-					mesh.instantiate();
+					if (mesh->get_surface_count() > 0) {
+						mesh->set_name(name);
+						r_meshes.push_back(mesh);
+						mesh.instantiate();
+					}
+					name = default_name;
 					current_group = "";
 					current_material = "";
 				}
@@ -460,6 +464,7 @@ Node *EditorOBJImporter::import_scene(const String &p_path, uint32_t p_flags, co
 	for (const Ref<Mesh> &m : meshes) {
 		Ref<ImporterMesh> mesh;
 		mesh.instantiate();
+		mesh->set_name(m->get_name());
 		for (int i = 0; i < m->get_surface_count(); i++) {
 			mesh->add_surface(m->surface_get_primitive_type(i), m->surface_get_arrays(i), Array(), Dictionary(), m->surface_get_material(i));
 		}