Expected Behavior
Arms and head “look” in the same direction as the UpperTorso when UpperTorso.Waist.C0 is rotated, even when the head and arms are being animated (UpperTorso.Waist is a motor6D, also the AnimationPriority is Enum.AnimationPriority.Action).
Actual Behavior
Arms and head look in the same direction as they were before the rotation of the UpperTorso when the arms and head are animated.
Example:
Reproduction steps
option 1
go to this game and observe how the arms are not looking in the same direction as the UpperTorso when you move the mouse up or down: TPS - Roblox
option 2
make an animation that has the arms and/or head rotated
start a playtest
once the game has loaded copy this into the command bar and run it:
local animator = workspace.YOUR_CHARACTER_NAME.Humanoid.Animator
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://YOUR_ANIMTION_ID"
local animationTrack = animator:LoadAnimation(animation)
animationTrack.Looped = true
animationTrack.Priority = Enum.AnimationPriority.Action
animationTrack:Play()
task.wait(3)
local waist = workspace.YOUR_CHARACTER_NAME.UpperTorso.Waist
waist.C0 *= CFrame.Angles(45,0,0)
option 3
download and open this place file: bug_repro.rbxl (53.4 KB)
open the roblox animation editor plugin and click on the dummy
in the animation editor window press … > Publish to roblox
copy the id in the window.
open replicated storage and paste the id into the string value.
start a playtest.
press the button on the left, observe the animation, and then press the button on the right.
Workarounds
Setting workspace.AnimationWeightedBlendFix to disabled.
Setting workspace.Retargeting to disabled.
Issue Area: Engine Issue Type: Display Impact: High Frequency: Constantly Date First Experienced: 2022-10-02 10:35 (+0:00) Date Last Experienced: 2022-10-08 5:32 (+10:00)
I’ve experienced this issue as well. Setting Workspace.AnimationWeightedBlendFix to ‘disabled’ serves as a temporary fix but hopefully the official fix comes soon as the AnimationWeightedBlendFix property is slated to be removed on November 1, 2022.
This happens for every limb, not just the upper torso and head. Happens with the arms and legs as well.
Apparrently, another work around is to change the animation to the Core priority, but this isn’t ideal. Any priority below Movement will allow some motion, but Core allows all freedom of C0.
We’re actively exploring ways to make it easier to do procedural animation through Lua code that will actually replicate to the server and other clients. You can currently animate joints via Lua by updating the Motor6D.Transform property on RunService.Stepped, but if done from a LocalScript on your own character, it will not replicate to the Server or to other clients. It requires manual replication via RemoteEvents, which is cumbersome.
Motor6D.C0 and Motor6D.C1 are the part-to-joint-pivot CFrames that are initialized when your character spawns, from pairs of attachments that have “RigAttachment” in their names. Local changes to them don’t replicate either. These values aren’t meant to be animated; there is a separate animatable Transform property sandwiched between them that is intended changed every frame. A Motor6D’s three CFrames all get multiplied together in the order C0 * Transform * C1:Inverse() when the joints are evaluated, so anything you would have done to C0 directly should instead be done as a post-multiply using Transform. The Animator also sets Transform, so if you’re blending a procedural change with animation changes, you may not want to just set (overwrite) Transform, you may need to modify it instead.
Wherever possible though, animation should be done with animations, not code. There is no mechanism available right now to procedurally animate on the client from Lua and have it replicate automatically, or with temporal consistency or interpolation, to the server or other clients. Animation on the other hand is synched to a real-time clock on each machine, and interpolated, so it’s smooth.
Setting Workspace.Retargetting to disabled does infact unlock the arms, but it won’t stay disabled for me. If I set it to disabled, it switches to default in player or if I restart studio. If anybody else is having this issue, you can set it to disabled during runtime with this code:
I am also experiencing this issue. I am very upset that not only has Roblox forced AnimationWeightBlendedFix onto us, but will also presumably force Retargeting onto us. While retargeting mostly fixes the issue, I am completely unsure how to make arms rotate with the torso with it enabled. I need that to make the weapon I’m holding point towards the way the torso is orientated.
EDIT: It would seem that using Motor6D.Transform mostly resolves the issue