When gathering bone transforms during armature expansion, don't assume armature's local transform is zeroed
This commit is contained in:
parent
aa8f05dd42
commit
43b1f9650e
|
@ -389,12 +389,26 @@ def expand_armature(armature: bpy.types.Object) -> List[Model]:
|
||||||
# set model parent to SKIN object if there is one
|
# set model parent to SKIN object if there is one
|
||||||
# set model parent to armature parent if there is one
|
# set model parent to armature parent if there is one
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
bone_world_matrix = armature.matrix_world @ transform
|
||||||
|
parent_obj = None
|
||||||
|
|
||||||
for child_obj in armature.original.children:
|
for child_obj in armature.original.children:
|
||||||
if child_obj.vertex_groups and not get_is_model_hidden(child_obj) and not child_obj.parent_bone:
|
if child_obj.vertex_groups and not get_is_model_hidden(child_obj) and not child_obj.parent_bone:
|
||||||
model.parent = child_obj.name
|
#model.parent = child_obj.name
|
||||||
|
parent_obj = child_obj
|
||||||
break
|
break
|
||||||
if not model.parent and armature.parent:
|
|
||||||
|
if parent_obj:
|
||||||
|
transform = parent_obj.matrix_world.inverted() @ bone_world_matrix
|
||||||
|
model.parent = parent_obj.name
|
||||||
|
elif not parent_obj and armature.parent:
|
||||||
|
transform = armature.parent.matrix_world.inverted() @ bone_world_matrix
|
||||||
model.parent = armature.parent.name
|
model.parent = armature.parent.name
|
||||||
|
else:
|
||||||
|
transform = bone_world_matrix
|
||||||
|
model.parent = ""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local_translation, local_rotation, _ = transform.decompose()
|
local_translation, local_rotation, _ = transform.decompose()
|
||||||
|
|
Loading…
Reference in New Issue