From d7f8bf6c724109c64d4b427cfd741a18cf488faa Mon Sep 17 00:00:00 2001 From: NotEvil Date: Fri, 17 Apr 2026 01:37:23 +0200 Subject: [PATCH] fix(gltf): strip armature prefix from bone names in FurnitureGlbParser Strip pipe-delimited armature prefixes (e.g., "MyRig|body" -> "body") from bone names in parseSeatSkeleton and remapSeatAnimations, matching the existing stripping already present in GlbParser. Without this, isKnownBone checks fail when Blender exports prefixed bone names. --- .../v2/furniture/client/FurnitureGlbParser.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/tiedup/remake/v2/furniture/client/FurnitureGlbParser.java b/src/main/java/com/tiedup/remake/v2/furniture/client/FurnitureGlbParser.java index aa8da71..419c73c 100644 --- a/src/main/java/com/tiedup/remake/v2/furniture/client/FurnitureGlbParser.java +++ b/src/main/java/com/tiedup/remake/v2/furniture/client/FurnitureGlbParser.java @@ -1216,6 +1216,10 @@ public final class FurnitureGlbParser { String name = node.has("name") ? node.get("name").getAsString() : "joint_" + j; + // Strip armature prefix (e.g., "MyRig|body" -> "body") + if (name.contains("|")) { + name = name.substring(name.lastIndexOf('|') + 1); + } if (GltfBoneMapper.isKnownBone(name)) { skinJointRemap[j] = filteredJointNodes.size(); filteredJointNodes.add(nodeIdx); @@ -1257,9 +1261,13 @@ public final class FurnitureGlbParser { int nodeIdx = filteredJointNodes.get(j); JsonObject node = nodes.get(nodeIdx).getAsJsonObject(); - jointNames[j] = node.has("name") + String rawBoneName = node.has("name") ? node.get("name").getAsString() : "joint_" + j; + // Strip armature prefix consistently + jointNames[j] = rawBoneName.contains("|") + ? rawBoneName.substring(rawBoneName.lastIndexOf('|') + 1) + : rawBoneName; if (node.has("rotation")) { JsonArray r = node.getAsJsonArray("rotation"); @@ -1432,6 +1440,10 @@ public final class FurnitureGlbParser { String name = node.has("name") ? node.get("name").getAsString() : "joint_" + j; + // Strip armature prefix (e.g., "MyRig|body" -> "body") + if (name.contains("|")) { + name = name.substring(name.lastIndexOf('|') + 1); + } if (GltfBoneMapper.isKnownBone(name)) { filteredJointNodes.add(nodeIdx); }