New Settings Available in the Animation Editor

Awesome Thank you @HaloArbiter_101!

Hey @sanjay2003, those are good feature requests, thank you! I will bring this up with the team :slight_smile:

1 Like

Hey! I have a question in regards to how curve-based animation will work, as this is potentially game-breaking for our experience.
This is a bit of a long-winded explanation, so bear with me here:
Our studioā€™s game calculates hitboxes on the client using raycasts, and then sends that raycast data to the server.
Now, the server needs to make sure that the hits arenā€™t spoofed by an exploiter, and so itā€™s verified by rolling back the whole animation of that character and verifying from there.

How the rolling back process currently works is it finds the left and right keyframes from an input timeposition: so, if you input the timeposition 0.45, and your keyframe list looks like this:

{
 -- [time] = Keyframe
    [0.3] = Keyframe,
    [0.4] = Keyframe,
    [0.5] = Keyframe,
    [0.6] = Keyframe
}

then the code would find the neighboring keyframes at 0.4 and 0.5.

Now, the tricky part comes in where you need to calculate the limb CFrames from the Motor6D CFrame data provided by the pose objects, and is also what Iā€™m worried about right now. I lerp the CFrames of the left keyframeā€™s poses and the right keyframeā€™s poses, and I calculate the alpha argument like so:

local function GetAlpha(Time, LastPose, NextPose)
	local TimeChunk = GetTimeFromPose(NextPose) - GetTimeFromPose(LastPose)
	local TimeIn = Time - GetTimeFromPose(LastPose)
	local Weight = TimeIn / TimeChunk

	return EasingStyles.GetEasing(LastPose.EasingStyle.Name, LastPose.EasingDirection.Name, 1 - Weight)
end

Now, you mentioned:

  1. Adding curve-based animations
  2. Possibly custom easing styles

and so, Iā€™m a bit confused in regards to how Iā€™d calculate the alphas with the custom easing styles. I currently use the same module as the animation editorā€™s (EasingStyles), and if possible, Iā€™d like to know how I would go about rewriting this code to support the future updates.

Best regards.

There is an issue where changing the frame rate will not do anything.

Hey @KillzIsSomeRandomGuy, can you file a bug report on this issue you found?

Is this the issue where frame rate no longer changes the length of the animation? Thatā€™s part of the latest changes.

The curve based animation format actually supports that kind of thing more naturally: Since curves are the main primitives in the new system, and those curves contain keyframes, the workflow that youā€™re talking about will actually be simpler. Youā€™ll just be able to ask for the interpolated value at a given time right on the curve instance rather than having to do busywork yourself to figure out the interpolated value by looking at keyframes.

3 Likes

Iā€™m a bit confused in terms of how curves will be implemented in the future - will current animations automatically convert to the new system, too? If not, then would I need to handle cases for both ā€œlegacyā€ animations & curve-based ones?

As you can see in the API dump thereā€™s now a common base class AnimationClip, that both KeyframeSequence and the new CurveAnimation inherit from. Basically, on the Animation / Animator side things wonā€™t change, but on the definition side, the animation may be backed by either an old style KeyframeSequence, or new style CurveAnimation (and you may have to use a CurveAnimation to get access to new animation features that KeyframeSequence doesnā€™t support).

4 Likes

Hey @tnavarts, will Blender ever be built in as like a tool to import & export animations from there and into there? Itā€™d be nice and itā€™d lessen the hassle of having to get a seperate plugin. Thanks!

I cannot do bug reports, but what I am trying to say is that when you change the frame rate it does not do anything to the speed. Iā€™m not sure if this is intentional or not but it could be a bug

That is intentional. There is a new speed function in the editor. It is not saved, so if you want a different speed, you need to remember that speed and code it later, OR you edit the times manually. See this post:

We intend to support both formats in the AnimationClipEditor. Existing animations (KeyframeSequences) will not be automatically converted to the new system and you will still be able to work with them as you do today. However, there will be an option to promote an existing KFS animation to a curve-based animation.

3 Likes

Third time asking this question. Can I get an answer?

Hey @STRAWHATJOSHA, sincere apologies for the late reply ā€¦ the team has been working in overdrive preparing for RDC21! Hope you will attend the conference this year :slight_smile:

Also CCā€™ing @PierceMikyoto with a similar question.

We have been discussing several options to better integrate Studio with external DCC tools such as Blender and Maya. In the specific case of Blender, we canā€™t integrate its open source code directly into Studio because the license would force us to open source Studio as well, so any integration will likely be via plugin. At this point, there is no decision on how exactly we will do this integration, but rest assured we do want to improve this process for our developers!

3 Likes

Hey @sanjay2003, thanks for sharing these suggestions with us! I will bring these requests to the team: custom easing methods and custom increments to move keyframes/nodes in the editor :slight_smile:

1 Like

Hey @GolgiToad, just to clarify ā€¦ you want playback speed to also be used during game play, right? Not just in the animation editor.

Also, ā€œplay animations in reverseā€ is a great suggestion ā€¦ I will add it to our backlog so we can work on it soon :slight_smile:

I assume open sourcing the studio might allow exploiter to find new backdoors to abuse. I do however think the studio being open source would also lead to alot good.

Id add a built in plugin into the studio. And in the plugin there could be an option to install an addon into blender.
Another idea i had was adding all the tools into the studio itself. create a tab for animation and give it all the tools that other softwares have (like blender and maya). i think it would be cool if we could do all of our work in studio alone without the need for external tools.

1 Like

I would like the setting chosen for playback speed to be saved as the default speed when exported to Roblox. Right now, you can find the speed you like in editor, but then you have to go program that speed via script.

The purpose of this feature was to decouple the playback speed in the ACE from the animation speed so that it would be easier to edit fine details without having to stretch the timeline and scale it back. We probably do not want to store the playback speed as part of the asset and use that speed in the engine. There already is AnimationTrack:AdjustSpeed(ā€¦) to change the speed of an animation in a script, adding another factor to the mix would just be confusing (ā€œI have a 5 seconds animation, with a playback speed of 0.8x, but AdjustSpeed is 2.5x, so the resulting animation is uuuhā€¦ 5 seconds times 0.8ā€¦ noā€¦ waitā€¦ā€).
However, the use case you mention seems valid to me. It does sound convenient to adjust the playback speed until you have the animation running at the speed youā€™re looking for. So I would rather suggest that we add a tool in the ACE to bake the playback speed into the animation. Using that tool would automatically scale all the keys by the current playback factor using the existing scaling method (meaning that the keys would snap according to the selected snap mode), and it would reset the playback speed to 1x.
I am (very) slightly worried that using that tool repeatedly on the same animation might degrade its quality. Every time we scale keys, we have to align them (either to the selected frame rate, or to the internal timestamp frequency if no snapping is enabled), and aligning keys means that they might be slightly moved earlier or later than where they should theoretically be. Scaling once or twice will not be noticeable, but abusing this tool could eventually result in a poorer animation, not unlike saving a JPEG file over and over and over again.
We will discuss this more internally and see what we can do!

1 Like