Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2019-03-25 13:01:31 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-03-25 13:02:01 +0300
commite676e8b2a72dd6e025fd8e42e598f20a93c7b1c7 (patch)
tree3935ba3c6418ee2d95a982fefc9c767ad2967aae /io_scene_fbx
parent40cf5c253eee0657bec2e29742c2c261dcd55f2d (diff)
FBX Export: Make empty shape keys exportable
Currently all empty shape keys are not exported when exporting as FBX. The reason for this is that empty shape keys cause issues like crashing Unity. This can cause confusion because it is done without explanation. This patch fixes this by making the shape keys technically empty while still keeping them intact and working as shape keys. Reviewers: campbellbarton, mont29 Reviewed By: mont29 Tags: #bf_blender_2.8, #addons Differential Revision: https://developer.blender.org/D4496
Diffstat (limited to 'io_scene_fbx')
-rw-r--r--io_scene_fbx/export_fbx_bin.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/io_scene_fbx/export_fbx_bin.py b/io_scene_fbx/export_fbx_bin.py
index 5ecc8706..cbcc8675 100644
--- a/io_scene_fbx/export_fbx_bin.py
+++ b/io_scene_fbx/export_fbx_bin.py
@@ -2245,7 +2245,6 @@ def fbx_data_from_scene(scene, depsgraph, settings):
for shape in me.shape_keys.key_blocks[1:]:
# Only write vertices really different from org coordinates!
- # XXX FBX does not like empty shapes (makes Unity crash e.g.), so we have to do this here... :/
shape_verts_co = []
shape_verts_idx = []
@@ -2258,8 +2257,13 @@ def fbx_data_from_scene(scene, depsgraph, settings):
continue
shape_verts_co.extend(Vector(sv_co) - Vector(ref_co))
shape_verts_idx.append(idx)
+
+ # FBX does not like empty shapes (makes Unity crash e.g.).
+ # To prevent this, we add a vertex that does nothing, but it keeps the shape key intact
if not shape_verts_co:
- continue
+ shape_verts_co.extend((0, 0, 0))
+ shape_verts_idx.append(0)
+
channel_key, geom_key = get_blender_mesh_shape_channel_key(me, shape)
data = (channel_key, geom_key, shape_verts_co, shape_verts_idx)
data_deformers_shape.setdefault(me, (me_key, shapes_key, {}))[2][shape] = data