diff options
author | Aras Pranckevicius <aras@nesnausk.org> | 2022-09-01 20:38:56 +0300 |
---|---|---|
committer | Aras Pranckevicius <aras@nesnausk.org> | 2022-09-01 20:38:56 +0300 |
commit | f366d197db24cf611866a8d847b4022a6a46504e (patch) | |
tree | ea79b5c35d6103fcacaba7d8006a43ffee61adbb /source/blender/io/alembic/intern | |
parent | ad4dcfe2273790584743abd83dacb57ce99d16a6 (diff) |
Fix T100737: OBJ/USD import: imported object has no active material, material has 2 users
Fixes issues in importers written in C++ (T100737):
- Materials had one reference count too much. Affected Collada,
Alembic, USD, OBJ importers, looks like "since forever".
- Active material index was not properly set on imported meshes.
Regression since 3.3 (D15145). Affected Alembic, USD, OBJ. Note:
now it sets the first material as the active one, whereas
previously the last one was set as active. First one sounds more
"intuitive" to me.
Reviewed By: Bastien Montagne
Differential Revision: https://developer.blender.org/D15831
Diffstat (limited to 'source/blender/io/alembic/intern')
-rw-r--r-- | source/blender/io/alembic/intern/abc_reader_mesh.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/io/alembic/intern/abc_reader_mesh.cc b/source/blender/io/alembic/intern/abc_reader_mesh.cc index bacc1f06599..5b68b80b181 100644 --- a/source/blender/io/alembic/intern/abc_reader_mesh.cc +++ b/source/blender/io/alembic/intern/abc_reader_mesh.cc @@ -26,6 +26,7 @@ #include "BLI_math_geom.h" #include "BKE_attribute.h" +#include "BKE_lib_id.h" #include "BKE_main.h" #include "BKE_material.h" #include "BKE_mesh.h" @@ -93,6 +94,7 @@ static void assign_materials(Main *bmain, mat_iter = matname_to_material.find(mat_name); if (mat_iter == matname_to_material.end()) { assigned_mat = BKE_material_add(bmain, mat_name.c_str()); + id_us_min(&assigned_mat->id); matname_to_material[mat_name] = assigned_mat; } else { @@ -101,6 +103,9 @@ static void assign_materials(Main *bmain, BKE_object_material_assign_single_obdata(bmain, ob, assigned_mat, mat_index); } + if (ob->totcol > 0) { + ob->actcol = 1; + } } } /* namespace utils */ |