[PLUGIN] DynamicNode - Very large animation plugin(Locomotion,Swimm,Flying,Ragdoll,IK,CCDIK,LookAt)

**MarketPlace ** - https://www.unrealengine.com/marketp…micnode-plugin
**YouTube Channel **- https://www.youtube.com/playlist?lis…8obgliDD7hlTgC
**Email - [EMAIL=“detereny86@gmail.com”]detereny86@gmail.com

Discord - DynamicNode Plugin**

**Current plugin version **:

1.2 - 4.23, 4.24, 4.25
1.0 - 4.21, 4.22

DemoProject - Last Updated Date :
10.06.2020 (If you downloaded the demo project earlier than this date - please update)
What’s new:
a lot of new things - Highly recommend!

In developing:

  1. Foot Locking - Remove foot sliding after changing pose
  2. Climbing System(Animations + IK(maybe CCDIK) + MovementComponent) - I want to make it so that to configure the entire system you only need to call one function from the Begin Play
  3. Full network support
  4. If you bought a plugin, then I can listen to your suggestions what else to do

What’s New(Last Video):

Known Issues

  1. If you used the LookAt function(with the param “CalculateOnce” turned on), the following LookAt do not work correctly
    How To Solve : Call the function - PauseLookAt(false) in the same place where you call DisableLookAt
    Target Fix : in the next version - I’ll fix it in such a way that you don’t have to call an additional PauseLookAt(false)

How can I use only the post process from the plugin (IK, CCDIK, …)

1. Reparent AnimBlueprint

**2.**Setup AnimBlueprint, I used the Layered node to set the animation for the right hand through the plugin. This is necessary for some purposes, let’s say CCDIK. You can get animations from the plugin only through the PROC Pose branch
Base Pose(Layered node) - These are your animations from the AnimGraph, can be any
If you need a late post process, you can connect it after the node - DynamicHub

  1. Character Blueprint Setup. As animations you can set IDLE everywhere


3.1 But if you don’t need animations from the plugin, you just need IK(not CCDIK). Then you can call just one function to initialize the internal nodes of the plugin

4.At the time of using the CCDIK function, set the variable to 1 to use animations for the right hand from the Plugin


5. Remember to reset this variable later.

  1. If you have a very complex Anim Graph and you need to have a tick of your pose always - you can use this scheme on the input PurePose - This is necessary, because the ProcPose is not ticking 100% of the time. 0.01 percent - this is because you only need to get the update, not the animation itself! It is important
    Do not forget to cache your pose before

Old Text:

A plugin that provides both for working with animations, and with IK. The plugin can do almost everything you need when working with animations and IK.

The plugin provides a completely different system for working with animations.
One function in the plugin replaces the entire set of programming, conditions and nodes in the Stat Machine.
And transferring all the code to the Character blueprint.
As a result, the process is greatly simplified especially if you use not only walking, but also swimming, flying, and more.

In an anim graph, you need to configure only one node.
And he is completely dynamic.
For example, if you do not use the jump now, then it will not be used in calculations at all.
This applies to all the heavy functions of the plugin.
So the performance should be great.

However, there is still the possibility of using the AnimGraph with Unreal Engine Nodes - that is, you can combine different approaches.

For the plugin to work, you just need to do:

1_.png

So that the character can run, do a sprint, have an idle pose and jump, you just need to call these two functions


They have a lot of parameters, but in fact it’s enough to just set the animations and you’re done
No additional coding required
The MoveMachine also supports BlendSpace1D and 2D

we can complicate a little graph, and add additional features


Here we set up special animation for the case when we crashed into a wall at full speed
But note, this is not easy to set up the animation - there is even physics there, there are also additional settings in the MoveComponent
Air control is a special animation for movement in air control mode
For this mod, by the way, it is also possible to Set Impact function

Next, let’s say we need a Crouch, and we want to be able to fly


On Moved in this case sets animations for movement in these states.

We can even swim or lie down to rest


If you set the OnMoved exit for LayMachine, you will be able to move crawling
There are also custom Machine to create your own state.

There are more sophisticated features that provide more features.


There are also versions for synchronizing Anims(Mostly need for legs.)

Want to make a variation for animations - very easy:


You can make variations for any animation.

Want to make an attack animation and play it just for the UpperBody(for example) - easy


Fast Tutorial How to quickly setup animations for character - https://www.youtube.com/watch?v=Jcvx…ature=youtu.be

The plugin also solves a bunch of more small problems, similar to:
For example, a lot of people came across this situation:
You bought an asset, but there is only one jump animation. Although you need three.
Using the plugin, this issue can be solved very simply using just one function.

The plugin has IK support for both hands and feet(Foot Placement).
In addition to this, a large module for working with CCDIK (opening doors, chests, taking items, using levers, keys and even creating a gearbox and much more)

I have listed only a small part of the features, here is a more detailed list:

The whole blend happens automatically (up to 7 animations at a time), animations can be interrupted anywhere!!

-------------------------------------------------------------------Part 1:
MoveMachine functions group, in them you essentially just Set animations, do a little setup and everything works without additional conditions and programming:

MoveMachine(One function, replace Stat Machine) - Sets animations for walking, running, and idle
MoveMachineExt - Sets animations for walking, running, and idle but also for start the movement and stop
MoveMachineMulti - Same but using SyncMarkers for Sync Animations.

These Functions also support working with Bledspace1d, Bledspace2d Doing all the calculations automatically.

JumpMachineSimple - If you have only one animation for a jump(The plugin will do almost all the work for you)
JumpMachine - Sets animations for startJumping, Looping, Landing
JumpMachineExt - Same but it’s possible to set animations for PreLanding(Using Trace) and for long falling

SwimmMachine - Sets animations for start of swimming, end of swimming,Idle Underawater, Idle Surface, swimming(4 different types) as well as walking in shallow water. And even Jump In Water or jumping out of water
The standard MoveComponent does not provide even half of these features, for example, you can’t swim on the surface, you won’t be able to jump out of the water - like it’s implemented in WOW, for example, and so on, for this the plugin has its own DNMoveComponent. This is in addition to setting animations using SwimmMachine.

Swimm - https://www.youtube.com/watch?v=gChK…ature=youtu.be

FlyMachine - You can set animations for: Start of flight, end of flight, Idle, Accelerated flight, inertia flight
it’s possible to set up animations even for AirControl movement or when you hit a wall

LayMachine- You can configure a lot of animations for different states

CrouchMachine - Very flexible function, allows you to accept a different number of animations.
Suppose you have only idle, or just start Crouching or in general one frame of Idle - This function will work.

CustomMachine- you can set animations to enter, idle, exit from it, as well as motion animations + impact

Impact - When you bump into a wall at full speed. Set a special animation and may even push you off the wall, the vector is calculated automatically, but you can override it. Can be applied to any of the “Machines” when you just walk, fly, swim etc.

Turn - A great feature for adjusting the animation for Turn, it Blends itself with everyone else( turn while Movement at low speeds)
Turn In Place - It’s a little different when the character is standing without any movement at all(The plugin also allows you to adjust what angle and how to rotate the character when he stands still)

Turn in place - https://www.youtube.com/watch?v=UFUj…ature=youtu.be

**Equip **(You can equip even 2-3 items for one animation, set just the necessary Notify)
I will also show how to enter the battle mode and change all motion animations for this mode

UnEquip
Grabing
Throw Item

Equip/UnEquip Weapon - https://www.youtube.com/watch?v=wJ8C…ature=youtu.be

[ATTACH=JSON]{“data-align”:“none”,“data-size”:“full”,“data-tempid”:“temp_171675_1566847495568_627”,“title”:“1v_.png”}[/ATTACH]

SlopeDetection
The plugin allows you to determine whether you are going uphill or downhill, this is done using only one function and of course you can set different animations.
This function has many settings for this, and you can even choose one of two algorithms.

TransitionZones
Sometimes for certain zones on the map you need to use a certain animation, the plugin easily allows you to do this


Let’s say you want to use special animation when you go up the stairs
In the code itself, you need to use only one function with the name of the zone, the output of which just use different MoveMachines

With this plugin you can easily play any animation for UpperBody or other Bone, blend happens automatically
In total, up to three layers are supported.

The plugin has a special function for working with It

For example:
basic animation, UpperBody, and on top of all - head animation

Work with Single Animation
Work with AnimMontage

The plugin can track automatically when you for example start jumping and abort the root motion and AnimMontage - Many different settings

Animations Chain

9 Functions for Work With Notify

Work With AimOffset - A lot of settings for auto calculations, you do not need to program

Work with Curves:
Acceleration Curve. Foot sliding Solver - https://www.youtube.com/watch?v=7qzY…ature=youtu.be

MaxSpeed Curve(Creates uneven movement) - A little detail but adding a lot of realism - UE4 Velocity Curves - DynamicNode Plugin - YouTube

Velocity Curve(Simulate Root Motion When you Do not have it in Anim) - https://www.youtube.com/watch?v=FDx6…ature=youtu.be

Work with Ragdoll - Many functions(Getting up and other)

You can set 3 types of animations.
When you get up from a pose on the stomach or from the back, and even from a vertical pose - this is such a position when horizontal vectors cannot be calculated because you are not in a lying position. Something prevented, let’s say the wall

There is also a handling of situations when the character cannot stand in this place, in this case, the most suitable position is selected. Many different settings. You can adjust smoothness, speed, animations, camera behavior and more

You can customize Variations to any animations.
YES, absolutely to any(From here presented Machines functions - To any animation of these functions) - there are 2 classes for this
One is used for manual change, as well as change using the counter
With another, you can set the chance for animations

You do not need programming, just set the desired set and you’re done

Sprint and Variations - https://www.youtube.com/watch?v=hhM5…ature=youtu.be

-------------------------------------------------------------------Part2:

IKHands Module
Allows you to implement shield defense mechanics
A shield or any other object will track the target using the IK algorithm, as well as the rotation of the shoulder and arm(so it’s not just simple IK)
You can also manually set the offset to simulate a shield slam, etc.

https://www.youtube.com/watch?v=uLtD…ature=youtu.be

Shield slam - https://www.youtube.com/watch?v=Av_2…ature=youtu.be

-------------------------------------------------------------------Part3:

CCDIKHands Module
A very large module that will allow you(Without using animations, fully Procedural):

Open a door, chests, boxes… - https://www.youtube.com/watch?v=RVM0…ature=youtu.be
Grabbing - https://www.youtube.com/watch?v=5Y1O…ature=youtu.be
Pressing a Button - https://www.youtube.com/watch?v=MNsm…ature=youtu.be
Spider Presses Buttons - https://www.youtube.com/watch?v=u_Wd…ature=youtu.be
Code Set
Align Object to Objects - Let’s say you take the key and insert it into the lock - https://www.youtube.com/watch?v=blhG…ature=youtu.be

Align Objects to the sockets
Creating complex objects - say a manual gearbox

-------------------------------------------------------------------Part4:

LegsIK Module

Foot Placement for(Separate algorithms):
Humanoids - https://www.youtube.com/watch?v=NQWy…ature=youtu.be
Animals - https://www.youtube.com/watch?v=_9aD…7hlTgC&index=1
Spiders - https://www.youtube.com/watch?v=MoRd…7hlTgC&index=2
Worms

I tried to make the algorithm very fast, so even for animals it works perfect only with 1 trace per 1 frame - Having a solve of 4 legs and spine
To solve the back, I did not use heavy algorithms like the FABRIK
the algorithm also takes into account at what angle the humanoid’s foot can be rotated

Many different settings and functions

-------------------------------------------------------------------Part5:

LookAt Module

LookAt Actor
LooAt Character Head(or other Bone - You can look at the foot or hand)
LookAt own Bone
Look At + Control Rotation (Look in the direction the controller is turned)
Align to Target(As if tied to chains)

-------------------------------------------------------------------Part6:

Easy Retarget
Using only one node you can do IK + rotation of the shoulder and arm.
This node requires a very simple setup - just enter the desired bone and you’re done

You can even create your own animations based on available

------------------------------------------------------------------------------

Preview - https://www.youtube.com/playlist?lis…8obgliDD7hlTgC
Tutorials - https://www.youtube.com/playlist?lis…TOoVQNyUP77_By

------------------------------------------------------------------------------
------------------------------------------------------------------------------

**This is the result of my work for 2 years without days off and it is almost finished, the plugin will be available soon!

Sorry for my English.
Thank you!**

Saw some of the example vids earlier.
Was wondering where the associated thread was.
Looking good.

Thank you!

I added a lot of pictures and videos for better understanding what this plugin is, see the first post

I will try to submit the Plugin this week

Very nice. I also working on a movement and animation component with nearly the same features but not for the marketplace. Will your plugin support network/multiplayer?

Most functions work fine on the network. The movements are based on the move component (nothing extra is needed). . You need to replicate the variables that are responsible for the branches(Let’s say you are in a battle at the moment) - it’s very simple(just process the callback on the server), you also need to replicate the actions yourself - but it’s not so difficult - play animations on all machines, but process callbacks and notifications only on the server
Basic knowledge of the network should be enough

That’s generally true. So was my first version. However, it quickly comes to the point where the amount of data through multiple motion calls per second becomes a heavy network load. An analysis of the code of the Unreal Engine reveals that the RPC calls from the autonomous client to the server are battling for each bit.
Distributing the data from the server to the simulated clients then increases exponentially. 4 Player on a dedicated server receives 4 RPC calls from client to server but the server has to inform each client about the other 3 clients. So we have 12 calls back to the clients.
Therefore the data is not distributed by RPC calls (to the simulated clients) but by replicate of variables. Here the system can optimize per frame with the result that not all data is distributed synchronously. Data arrive late or not at all. The simulated client has to interpolate the data. This is easy with normal movements. Adaptive start and stop movements (MoveMachineExt in your plugin) make it more complex. I had to change the system significantly. Since then I have included the network with every new component.

Yes, the first version of the product is more aimed at the solo player
Although this will work over the network, in the future I will add more complete support for it. I think it will take me a month or two.

By the way, I forgot to write a plugin already submitted for approval.

Water/Underwater(PostProcess) materials is provided with the plugin.
Game ready materials - only 570 instructions

3 normal textures and 2 foam textures are included

i like it !!

Thanks!)

By the way - I forgot to write - that despite the fact that I sent the first version for approval, I still continue to develop

  1. IK Solver for Prone(+getting up after ragdoll)
    Almost finished - https://youtu.be/GDdoDvfqa5Q
  2. Foot Locking - Remove foot sliding after changing pose
  3. Climbing System(Animations + IK(maybe CCDIK) + MovementComponent) - I want to make it so that to configure the entire system you only need to call one function from the Begin Play
  4. Full network support
  5. If you bought a plugin, then I can listen to your suggestions what else to do

My goal is to make a plugin that will cover all the needs when working with animations(+MovementComponent)
And of course, to make it really simple, without a lot of programming, fuss with the anim graph and other things

DynamicNode plugin is now published on the marketplace!

In the first version of the Plugin I managed to include the Prone System(+IK Solver)

Be sure to download the Demo Map - it has a lot of examples

If you bought a plugin and you had questions, suggestions or even noticed a bug - then write here on the forum or on my email - detereny86@gmail.com
I will try to solve your problem quickly

Thanks!)

By the way - I forgot to write - that despite the fact that I sent the first version for approval, I still continue to develop

  1. IK Solver for Prone(+getting up after ragdoll)

  2. Foot Locking - Remove foot sliding after changing pose

  3. Climbing System(Animations + IK(maybe CCDIK) + MovementComponent) - I want to make it so that to configure the entire system you only need to call one function from the Begin Play

  4. Full network support

  5. If you bought a plugin, then I can listen to your suggestions what else to do

My goal is to make a plugin that will cover all the needs when working with animations(+MovementComponent)
And of course, to make it really simple, without a lot of programming, fuss with the anim graph and other things
[/QUOTE]

That’s generally true. So was my first version. However, it quickly comes to the point where the amount of data through multiple motion calls per second becomes a heavy network load. An analysis of the code of the Unreal Engine reveals that the RPC calls from the autonomous client to the server are battling for each bit.
Distributing the data from the server to the simulated clients then increases exponentially. 4 Player on a dedicated server receives 4 RPC calls from client to server but the server has to inform each client about the other 3 clients. So we have 12 calls back to the clients.

Is there a reason why you have yo run your machines on tick?

For the same reason why use EventBlueprintUpdateAnimation (the function is called every tick too) in AnimBlueprint
The character’s status needs to be updated, character can suddenly jump, fall into the water and so on
Also, you can very easily change the current animation that plays in each machine. There are even 2 special classes for these purposes - so for updating animations too.

Also, data need to be updated - let’s say Blendspaces, …

You can also do branching using your variable and use different MoveMachine for each branch(Let’s say you need special animations when you run with weapons in your hands and without them). This also requires a real time update.

These machines, by the way, are macros, and there is a workaround in each of them.
Plus, if any machine captures the calculation, then the following machines are not called at all

Here you can make a small optimization - call not every tick, but let’s say through the tick
Especially for AI who moved away a long distance from the player

Yeah i forgot about that thank you for the detailed answer. Im having one problem tho, when i use MoveMachine ext multi and fill it all the necessary stuff it needs to run i get a crash and it says the the DynamicNode is not connected in the final output in the animbp when i know it is, are you familiar with this?

When i get some time im gonna post a clip of the error im getting.

I tried using the "MoveMachine ext multi " in the demo project - there are no problems.
Check out this:

  1. Open the character blueprint
  2. Сick on the mesh
  3. See which Anim Class is selected.
  4. An Anim class should be selected that inherits from AnimMultiNodeInstance_DN ( Not the one that defaults )
  5. Create a new anim Blueprint that inherits from AnimMultiNodeInstance_DN
  6. Do not forget to create a DynamicNode in this AnimBlueprint and connect it to the final pose
  7. Look at this tutorial - at the very beginning it tells about it
    https://youtu.be/5eGPgd_ZStY
  8. Also, if you have not downloaded the demo project, please do so, there are a lot of examples
    Link to the latest version of the demo project is always on the plugin page on the market place - https://www.unrealengine.com/marketp…micnode-plugin

By the way, Perhaps you have chosen the wrong class yet.
You need to choose not the AnimMultiNodeInstance_DN , but the class that you created based on it.

I forgot to say an important thing!
If you are going to use MoveMachineExt
Do not forget to correctly set acceleration, braking and maximum speed of the character
Otherwise, there may be out of sync with animations!
I.e. an animation of the start of the movement will play, but in fact the character is already at max speed.
Negative moments such the foot sliding may also appear.

Take a look at the parameters (in the MovementComponent):
MaxAcceleration
BrakingDecelerationWalking
BrakingFrictionFactor
MaxWalkSpeed

Thanks!

I figure it out why it was giving me the error where it was saying is missing the DynamicNode in the final pose when I really did have it plugged in, to resolve the problem I had to Include DNCharacter in my current BaseCharacter and then make BP class based on it and that fixed the problem

what setting you recommend for acceleration, braking and maximum speed for it to work correctly?

Heavily dependent on animations.

Check the Maximum Speed first - just start moving and see if there is Foot Sliding at max speed.

Next, adjust the acceleration - see if there is Foot Sliding when the Character accelerates, but has not yet reached max speed
Also do not forget that you can use the Acceleration Curve(Use for StartMove Animation - see tutorial)
The curve is needed to make the acceleration not linear

Next, you need to check the braking - it must meet the animation to stop the movement. Also, do not forget that there is a StartStoppingCoef (It assigns at what speed from the maximum to apply the stop animation. 1 - at 99% of the maximum speed , 0.1 - 10%)

Hey, any news on the network support and is it going to use epics Client-side prediction on lag compensation? also, why do I need to reparent my character bp to DNCharacter for MoveMachineExtMulti to work?