[Bf-extensions-cvs] [7bdf9eb] fbx_io_development: FBX export: add vgroups support for shapes.
Bastien Montagne
noreply at git.blender.org
Mon Jun 16 15:57:27 CEST 2014
Commit: 7bdf9eb02cbd97bf215eb421284a84a8c4ee4d46
Author: Bastien Montagne
Date: Mon Jun 16 15:55:32 2014 +0200
https://developer.blender.org/rBA7bdf9eb02cbd97bf215eb421284a84a8c4ee4d46
FBX export: add vgroups support for shapes.
Note since Unity does not support that (it does not use/read deformers system for vgroups),
I'm not sure it's done right, will have to wait for others to test on 'official'
FBX products...
===================================================================
M io_scene_fbx/export_fbx_bin.py
===================================================================
diff --git a/io_scene_fbx/export_fbx_bin.py b/io_scene_fbx/export_fbx_bin.py
index 8c804ba..ceaa31e 100644
--- a/io_scene_fbx/export_fbx_bin.py
+++ b/io_scene_fbx/export_fbx_bin.py
@@ -716,7 +716,16 @@ def fbx_data_mesh_shapes_elements(root, me_obj, me, scene_data, fbx_me_tmpl, fbx
channels = []
for shape, (channel_key, geom_key, shape_verts_co, shape_verts_idx) in shapes.items():
- shape_verts_weights = [100.0] * (len(shape_verts_co) // 3) # for now, we can use vgroup later here!
+ # Use vgroups as weights, if defined.
+ if shape.vertex_group and shape.vertex_group in me_obj.bdata.vertex_groups:
+ shape_verts_weights = [0.0] * (len(shape_verts_co) // 3)
+ vg_idx = me_obj.bdata.vertex_groups[shape.vertex_group].index
+ for sk_idx, v_idx in enumerate(shape_verts_idx):
+ for vg in me.vertices[v_idx].groups:
+ if vg.group == vg_idx:
+ shape_verts_weights[sk_idx] = vg.weight * 100.0
+ else:
+ shape_verts_weights = [100.0] * (len(shape_verts_co) // 3)
channels.append((channel_key, shape, shape_verts_weights))
geom = elem_data_single_int64(root, b"Geometry", get_fbx_uuid_from_key(geom_key))
More information about the Bf-extensions-cvs
mailing list