Thomas Barlow
dab724afe2
Exporting meshes with duplicate materials combines them into a single material slot (Material->Model connection) when exporting as FBX because the material indices dict is keyed by materials. This resulted in unused duplicate material slots being included in the export. [1] removed these unused duplicate material slots, however, because the materials for each object are keyed by the object's mesh, this meant that linked duplicates sharing the same mesh (aside from the first linked duplicate processed) would not get any material slots because their materials would already be present in their mesh's dict that mapped from materials to material indices. Without larger changes to how materials and material slots are exported, it is not currently possible to simultaneously remove the unused duplicate material slots and support linked duplicates. The code for exporting materials and material slots needs some redesigning anyway so that linked duplicates with differing materials are actually exported as linked duplicates instead of duplicating their meshes on export, but this would be more of a target for 4.0. As noted in [1], reverting [0] was also an option, so this patch does as noted and reverts the functional changes of [0], but keeps the comment because it's still relevant. This patch changes the export of meshes containing duplicate materials to export unused duplicate material slots as they did before [1]. Note that because of [2], these unused duplicate material slots are visible to users when importing the .fbx back into Blender, just like any meshes with duplicate materials exported as .fbx by Blender 3.5 and earlier. [0]: |
||
---|---|---|
.. | ||
__init__.py | ||
data_types.py | ||
encode_bin.py | ||
export_fbx_bin.py | ||
fbx2json.py | ||
fbx_utils.py | ||
import_fbx.py | ||
json2fbx.py | ||
parse_fbx.py |