diff --git a/src/main/java/com/tiedup/remake/client/gltf/GltfPoseConverter.java b/src/main/java/com/tiedup/remake/client/gltf/GltfPoseConverter.java index d19b831..3946f1d 100644 --- a/src/main/java/com/tiedup/remake/client/gltf/GltfPoseConverter.java +++ b/src/main/java/com/tiedup/remake/client/gltf/GltfPoseConverter.java @@ -605,11 +605,15 @@ public final class GltfPoseConverter { } else if ( isFullBodyAnimation && enabledParts.contains(partName) && - partsWithKeyframes.contains(partName) + partsWithKeyframes.contains(partName) && + !"head".equals(partName) ) { // Full-body animation: free part WITH keyframes — enable. // The "Full" prefix is the artist's explicit opt-in to animate // bones outside their declared regions. + // EXCEPTION: head is never enabled as a free bone — vanilla head + // tracking (mouse look) is always preserved unless the item + // explicitly owns a head region (HEAD, EYES, EARS, MOUTH). part.fullyEnablePart(false); } else { // Non-Full animation, other item's part, or free part without keyframes.