Animation Editor | Select Multiple Broken

Description:
Animators used to be able to select multiple parts of a rig and move them in sync perfectly.
Now the parts transform desynchronized on individual axes.

Visual Aid:


(Visual: Group translate being out of sync. Note: This happens, even with a default R6 Rig. This one is holding a shotgun, but the issue is not unique to that case!)

  • suspected due to an update to Roblox’s animation editor

Our animators are not able to animate due to this issue.

3 Likes

Hey there! Thanks for your report!

Can you please send me the place you’re using for this video? We have reverted the flag and it should work properly again, but we’d like to fix that change rather than abandon it.

Cheers!

1 Like

Reverted Flag does appear to resolve Group translate being out of sync.
However, it exposed another issue to our attention:


When moving the Torso in selection with any other part(s), the other part(s) jitter, and do not get to their correct transform, especially over long transformations


(An issue with rotations & displacement)


  • This is suspected to have been an issue prior to this update.

Leaving aside the jittering for now (we’ll look into that), what do you expect to happen when you select multiple parts?

The flag we reverted deals with multiple selections. When applying a transformation to multiple parts, they should all be transformed the same way, meaning that if you start with a chain such as the one on the left below (| are parts, o are joints), then selecting the two upper parts and rotating them should give the following sequence:

|
o       o-
|      /
o     o      o-o
|     |      | |

I still have to look at the place you sent me, but there’s a chance that the parenting of the parts is incorrect there. If the part of the gun that moves is somehow a child of the hand in the hierarchy, you shouldn’t select it. It should be moved with everything that’s in the subtree of the hand.

1 Like

Fig 1: The Pump Last Selected in a Group of Selected Elements, Correctly and uniquely being the Pivot, as the Flag is Disabled.


Desired:
If the Pump is last selected, it becomes the Primary.
It is the Pivot for Transformations.

This is what we expect to happen when you select multiple parts


Specific Motor Hierarchy:
Right Arm → Handle → Pump


This is a popular pattern with guns for R6 Characters.
There is a Motor6D made
from the [Right Arm] or the [Torso]

to the [Handle] of the Gun/Tool.
The Handle is typically an invisible, small part that serves as the Root of sorts for the tool.

The Handle then has Motor6Ds and Welds that connect it to the rest of the guns parts. Moving and static parts respectively.

My animator says the way it is working right now, with the Flag Disabled is Great.
Because he can as he has use the last part as a means to selecting the Primary.


My Perspective on the first video, where the Flag is Enabled:

The [Left Arm] stays as the Primary. Despite the [Pump] being selected last. Behavior change.

FYI, The [Left Arm] is Hierarchically seperate from the [Pump].

The [Pump] does inherit the Transformation of the [Left Hand] identically. However, its on its terms. That is, relative to Handle, in Handle’s ObjectSpace. So they go their separate ways.

Before, [Pump’s] movement was in sync, because it translated relative to WorldSpace, not the handle’s ObjectSpace.

Whether or not this is because [Pump] was not the Primary here or Because of something else included in the Flag should be investigated.


So to answer, no, the Part of the Gun that moves, [Pump] is not a child of the selected hand in the hierarchy, [Left Arm].

In the event that it was, as with [Right Arm], you are correct that [Pump] doesn’t get selected as its already going to move with or rotate with its joint-ancestor Right Arm


Ancestry:

Pump ← Handle ← Right Arm ← Torso → Left Arm


Again, [Left Arm] is not ancestor of [Pump]

For context, the flag was an attempt to resolve this issue reported a long time ago (and which I described above with my state-of-the-art ASCII schema).

An issue that we noticed during development is that draggers don’t work properly (the jittering you noticed) when they transform a part whose pivot is being moved by something else. This is why, with the flag, we made sure that we kept the dragger on a part that does not have a moving parent (within the selection, we pick (one of) the top of the chain(s)). By definition, the parents up to the root of the rig would be immobile (since no part would be selected there), and we would avoid the jittering.

I’ve also been having this issue with the animation editor. Glad it’s resolved.
I’ve been having another issue with the animation editor. Prior to the update I could select animation objects from their names in the editor window and move them around that way.

Now it doesn’t work, I can’t animate due to this bug

Update: Issue solved, I can animate again :smiley:

Can we have a Setting in the AnimationEditor:

GroupTransform Mode:

  • Global (All parts transform relative to ActivePrimary’s Motor6D, Old Behavior)
  • Local (All parts transform relative to their own Motor6D, New Behavior)

Longfrom Justification:

Left Global Translation | Moving the LeftArm in sync with the Pump, relative to Pump globally.
Right Local Rotation | Curling the Bird’s neck, relative to each locally.


Raising Shotgun: Global Rotation | RightArm and unaffiliated LeftArm rotate, relative to RightArm globally.


Engine Cylinders: Local Translation | Translating the cylinders, relative to each locally.


I think this shows why Local and Global need to exist as a setting. As both Rotation and Translation Transformations need it situationally.

2 Likes