diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2021-08-31 10:43:04 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2021-08-31 11:47:59 +0300 |
commit | 4e30cfd30603c3bd8e4f7ecdea77cc65ec213d3a (patch) | |
tree | 829d01e53acd748e86a1daba93ec16655b186f98 /io_scene_fbx | |
parent | 36671a4e21b2e2ad7fd381a0529cde2a63505097 (diff) |
FBX Import: skip invalid custom enum properties
This was (correctly) asserting before, now handle this more gracefully
and just skip (and warn about this) a custom property that has an
invalid value set.
Seems there are a couple of exporters out there that do this wrong, I
think this tradeoff can be made though.
Fixes T91062, T81657, T83501, T86595
Maniphest Tasks: T91062, T86595, T83501, T81657
Differential Revision: https://developer.blender.org/D12354
Diffstat (limited to 'io_scene_fbx')
-rw-r--r-- | io_scene_fbx/__init__.py | 2 | ||||
-rw-r--r-- | io_scene_fbx/import_fbx.py | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/io_scene_fbx/__init__.py b/io_scene_fbx/__init__.py index 71ae6ec3..01bc5421 100644 --- a/io_scene_fbx/__init__.py +++ b/io_scene_fbx/__init__.py @@ -21,7 +21,7 @@ bl_info = { "name": "FBX format", "author": "Campbell Barton, Bastien Montagne, Jens Restemeier", - "version": (4, 22, 0), + "version": (4, 23, 0), "blender": (2, 90, 0), "location": "File > Import-Export", "description": "FBX IO meshes, UV's, vertex colors, materials, textures, cameras, lamps and actions", diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py index ec16b6d1..ba11757a 100644 --- a/io_scene_fbx/import_fbx.py +++ b/io_scene_fbx/import_fbx.py @@ -369,8 +369,10 @@ def blen_read_custom_properties(fbx_obj, blen_obj, settings): val = fbx_prop.props[4] if settings.use_custom_props_enum_as_string and fbx_prop.props[5]: enum_items = fbx_prop.props[5].decode('utf-8', 'replace').split('~') - assert(val >= 0 and val < len(enum_items)) - blen_obj[prop_name] = enum_items[val] + if val >= 0 and val < len(enum_items): + blen_obj[prop_name] = enum_items[val] + else: + print ("WARNING: User property '%s' has wrong enum value, skipped" % prop_name) else: blen_obj[prop_name] = val else: |