Skip to content

Commit 8fb2716

Browse files
committed
Fix retargeting of mixamorig:Bonename names with colons
1 parent 71a6d7f commit 8fb2716

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

asset_adapter.gd

+7-8
Original file line numberDiff line numberDiff line change
@@ -1786,7 +1786,7 @@ class FbxHandler:
17861786
godot_sanitized_to_orig_remap["meshes"][mesh_mangled_name] = try_name
17871787
if node.skeleton >= 0:
17881788
# For meshes that are also bones that are also nodes (since the current godot importer makes bones for meshes)
1789-
godot_sanitized_to_orig_remap["nodes"][godot_mangled_name.validate_node_name()] = try_name
1789+
godot_sanitized_to_orig_remap["nodes"][godot_mangled_name] = try_name
17901790
if node.skeleton >= 0:
17911791
used_godot_skel_names[node.resource_name] = 2
17921792
var material_idx_by_mesh = {}
@@ -2226,7 +2226,7 @@ class FbxHandler:
22262226
var skel: Skeleton3D = Skeleton3D.new()
22272227
for node in json["nodes"]:
22282228
var node_name = node.get("name", "")
2229-
skel.add_bone(node_name)
2229+
skel.add_bone(sanitize_bone_name(node_name))
22302230
var i: int = 0
22312231
for node in json["nodes"]:
22322232
var node_name = node.get("name", "")
@@ -2269,8 +2269,7 @@ class FbxHandler:
22692269
for node in json["nodes"]:
22702270
var node_name = node.get("name", "")
22712271
# pkgasset.log_debug("AAAA node name " + str(node_name))
2272-
if bone_map_dict.has(node_name):
2273-
var godot_human_name: String = bone_map_dict[node_name]
2272+
if bone_map_dict.has(sanitize_bone_name(node_name)):
22742273
human_skin_nodes.push_back(node_idx)
22752274
human_skin_set[node_idx] = true
22762275
node_idx += 1
@@ -2338,8 +2337,8 @@ class FbxHandler:
23382337
# Finally, record the original post-silhouette transforms for transform_fileid_to_rotation_delta
23392338
for node in json["nodes"]:
23402339
var node_name = node.get("name", "")
2341-
if bone_map_dict.has(node_name):
2342-
var godot_human_name: String = bone_map_dict[node_name]
2340+
if bone_map_dict.has(sanitize_bone_name(node_name)):
2341+
var godot_human_name: String = bone_map_dict[sanitize_bone_name(node_name)]
23432342
if godot_human_name not in humanoid_original_transforms:
23442343
humanoid_original_transforms[godot_human_name] = gltf_to_transform3d(node)
23452344

@@ -2418,8 +2417,8 @@ class FbxHandler:
24182417
if is_humanoid and json.has("nodes") and (importer.keys.get("avatarSetup", 1) >= 1 or pkgasset.parsed_meta.is_force_humanoid()):
24192418
for node in json["nodes"]:
24202419
var node_name: String = node.get("name", "")
2421-
if bone_map_dict.has(node_name):
2422-
node_name = bone_map_dict[node_name]
2420+
if bone_map_dict.has(sanitize_bone_name(node_name)):
2421+
node_name = bone_map_dict[sanitize_bone_name(node_name)]
24232422
if not humanoid_original_transforms.has(node_name):
24242423
humanoid_original_transforms[node_name] = gltf_to_transform3d(node)
24252424
# humanoid_original_transforms uses post-sanitized node names.

object_adapter.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -6822,7 +6822,7 @@ class UnidotModelImporter:
68226822
var bone_map_dict: Dictionary = generate_bone_map_dict_from_human()
68236823
for skeleton_bone_name in bone_map_dict:
68246824
var profile_bone_name = bone_map_dict[skeleton_bone_name]
6825-
bone_map.set_skeleton_bone_name(profile_bone_name, skeleton_bone_name)
6825+
bone_map.set_skeleton_bone_name(profile_bone_name, skeleton_bone_name.replace("/", "_").replace(":", "_"))
68266826
return bone_map
68276827

68286828

0 commit comments

Comments
 (0)