In ue4, animation node uses InternalTimeAccumulator.
For the root motion movements, we use CreateTickRecordForNode function and this function allows character moves in the game world.
When the character moves, animation of character can use different time value. Which means character animation code can use different time value not InternalTimeAccumulator.
In the Evalulate_AnyThread function, we need to set character's Pose and Curve data for displaying character.
we can use different time value for this and set Pose and Curve. In this case character can play different animation and use different root motion moves.
Normally Pose, Curve values and CreateTickRecordForNode function uses same time value. which is InternalTimeAccumulator.
Showing posts with label ue4. Show all posts
Showing posts with label ue4. Show all posts
Sunday, January 12, 2020
Wednesday, December 4, 2019
about vector interpolation
Many of you guys already know that vector interpolation might have different result than you think.
As you can see the below image, red arrow is a forward vector and green arrow is a right vector of the character.
If you interpolate forward vector to right vector, you will get below image.
This is because I didn't account of angle of vector. If I account of angle of vector then I'll get different result like down below.
In unreal engine 4, There are related functions exist.
FMath::RInterpTo is for linear interpolation.
FQuat::Slerp is for spherical linear interpolation.
Friday, November 29, 2019
Animation programming in UE4 and about GetEvaluateGraphExposedInputs
My input data was missed in my custom AnimNode and find out that I missed a call function.
GetEvaluateGraphExposedInputs().Execute(Context);
What GetEvaluateGraphExposedInputs().Execute(Context) does is copy all the input data into AnimNode. (That's why there is some cost...)
If you look at the AnimNodeBase.cpp and line 675 there are function FExposedValueHandler::Execute function.
GetEvaluateGraphExposedInputs().Execute(Context);
What GetEvaluateGraphExposedInputs().Execute(Context) does is copy all the input data into AnimNode. (That's why there is some cost...)
If you look at the AnimNodeBase.cpp and line 675 there are function FExposedValueHandler::Execute function.
Tuesday, November 26, 2019
Use Ue4's DrawDebugSphere in AnimNode
When we use DrawDebugSphere function for debugging, it is working well but when you are trying to use it in anim node's function it will be a problem.
Basically AnimNode will be updated multithreaded so if you want to use DrawDebugSphere in AnimNode then you should use AnimDrawDebugSphere instead.
It will reserve all the command in local TArray and then processed correctly.
Use like above.
Basically AnimNode will be updated multithreaded so if you want to use DrawDebugSphere in AnimNode then you should use AnimDrawDebugSphere instead.
It will reserve all the command in local TArray and then processed correctly.
Context.AnimInstanceProxy->AnimDrawDebugSphere(outTransform.GetLocation(),
3.f, 32, FColor::Green, false, 1.0f);
Use like above.
Wednesday, November 13, 2019
Recently I'm playing around with Unreal Engine 4.
Really fun but I have to think which method I should use because there are too many different choices to achieve same thing. I'll summarize after I finish some work.
Subscribe to:
Posts (Atom)
Task in UnrealEngine
https://www.youtube.com/watch?v=1lBadANnJaw
-
Unity released very good FPS example for people and I decided to analysis how they make this. Personally I wanted to show you how I analys...
-
Because nature of rotation angle, when we interpolate angles we could have some problems. For instance we have angle A0 and A1. A0 is -...
-
http://rogerdudler.github.com/git-guide/index.ko.html

