Animation Techniques used in Paragon and January Game Jam Theme Announcement - Live From Epic HQ

After a long time I’ve actually finally gotten back to the curve lookup and marker stuff.

The function above has proven extremely valuable, I ran into a different issue - how the hell do I get the animation curve out of my montage / animation?

This ended up working but I am not quite sure if it’s the right approach. Any confirmation from Epic would be grand.


float FindPositionFromDistanceCurve_BP(const FName AnimationCurveName, const float& Distance) const
{
	for (FFloatCurve& FC : CurrentAttackMontage->RawCurveData.FloatCurves)
	{
		if (FC.Name.DisplayName == AnimationCurveName)
		{
                        //This is the function from above.
			return FindPositionFromDistanceCurve(FC, Distance);
		}
	}

	return 0.f;
}

Hey

Not sure if you are still reading it.
I recently implemented bare bones (pun not intended), version of animation switching from Paragon.
As of now my implementation consis of bnuch of if’s with carefuly handrafted conditions, to decide where character is currently going (forwards, back, left, right) and while it somewhat working is nowhere near as smooth as it is in Paragon. There are occasional hitches due the inability to decided which direction character is going.

My question. Could you show us, how do you select current direction for animation ?

when you mention current direction for animation, you meant, what is the condition for select certain animation in the animgrah/event based in the character direction ?
using C++ is quite simple, you just need to extract the current player controller rotation normalized. if you want to get the absolute control rotation vectorized data:



float JoyRight, JoyUp;
FVector X(FVector::ZeroVector);
FVector Y(FVector::ZeroVector);
FVector Z(FVector::ZeroVector);

const FRotationMatrix R(Controller->GetControlRotation());
R.GetUnitAxes(X, Y, Z);

//or...
//X = R.GetScaledAxis(EAxis::X);
//Y = R.GetScaledAxis(EAxis::Y);
//Z = R.GetScaledAxis(EAxis::Z);

PCOwner->GetInputAnalogStickState(EControllerAnalogStick::CAS_LeftStick, JoyRight, JoyUp);

//current controller direction
FVector Direction = ((JoyRight* X) + (JoyUp* Y)).Normalize();


…if you use BP, the animinstance offers a const direction function with a float output. based on that they use a custom blendspace for the direction animations.

@huatson

Hey thanks.
What I mean, Is what to know in which direction character is moving (Left, right, forward, backward, left forward, etc). I have it somewhat workin. Calculating the exact direction is not that much of an issue, as so knowing when to exactly switch direction (ie, from forward to left). Right now I do it something like this:



if(Direction > 0.2 && Direction < 0.5)
{
  //switch to left
}


And there is bunch of those ifs. I wonder if there better way to do it.

I will try, what are you suggesting.
From what I see, it will not work on non-player characters ?

Are you using a special animation graph node to do the evaluation of the distance curves or are you evaluating it in the animInstance class?

Need tutorial

This is one of those things that would defiantly increase sales of all the released games made on the Unreal Engine, which is why Epic should have some nice videos showing exactly how to do this and what custom animation blueprint nodes is required. Instead, it seems more like its all kept top secret. We need a pre-recorded Ray Arnett tutorial on how to make these animation controllers.

+1 for a tutorial for a kickass animation player controller, THAT REPLICATES!

Even a content example would do wonders.

@iniside

Late Answer…still hope this works on what ever you want… the Animinstance has A lot of animation functions available, since you want to know which direction is the Pawn/Actor moving, you can use “Calculate Direction”… watch a video showing some locomotion that i’ve working.
v=I1iYJDLkP_Q

[QUOTE=huatson;705894]
@iniside

Late Answer…still hope this works on what ever you want… the Animinstance has A lot of animation functions available, since you want to know which direction is the Pawn/Actor moving, you can use “Calculate Direction”… watch a video showing some locomotion that i’ve working.?v=I1iYJDLkP_Q[/QUOTE]

thanks.

I actually found my answer here:

Was easier than I thought ;d.

How do you predict the character position? Is there some method in Character movement component?
I suppose the acceleration is linear but I don’t understand how to calculate deceleration.

I watched this live streaming recently and that was great, i want to know is there any plan to add slope and speed warping in 4.19 or 4.20 ?
I want to ask if any body knows advance animation tutorial please send link.

Not is possible download this project? The example have used in the video? Can download?

I too would love to pick this project apart. for those asking about speed warping there is a plugin that’s not exactly the same as seen in the videos.

Now that we have all this warping tech in UE5. Any we will get an updated tutorial on how to actually achieve this with the paragon assets? Even just a single paragon character setup to learn from would be extremely valuable. (Not like the currently basic and useless examples currently included with them, more like the level of polish shown in the live stream.)

I know Lyra is very similar to how Paragon did it and is a great learning resource, but unfortunately the Paragon character animations do not work even with the Lyra example. Even a basic anim blueprint with the new warping nodes does not work with Paragon assets due to root motion issues. I thought the warping tech would work better with the paragon characters because they are the reason the tech exists, but it doesn’t work at all.

Please Epic give us an advanced paragon animation tutorial, updated paragon assets (or just a sample to dig our teeth into and learn from.)