Announcement

Collapse
No announcement yet.

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

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    [RELEASED] [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 - detereny86@gmail.com

    Current plugin version : 1.0

    DemoProject - Last Updated Date :
    10.26.2019 (If you downloaded the demo project earlier than this date - please update)
    What's new:
    I redid the character blueprint, also added a simple character(See the code for both characters) - 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):
    https://youtu.be/6CUyEbYx5k4


    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)



    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:

    Click image for larger version  Name:	1_.png Views:	1 Size:	43.9 KB ID:	1657258

    So that the character can run, do a sprint, have an idle pose and jump, you just need to call these two functions
    Click image for larger version  Name:	2_.png Views:	1 Size:	134.4 KB ID:	1657259
    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
    Click image for larger version  Name:	3_.png Views:	1 Size:	176.8 KB ID:	1657261
    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
    Click image for larger version  Name:	4_.png Views:	1 Size:	119.6 KB ID:	1657260
    On Moved in this case sets animations for movement in these states.

    We can even swim or lie down to rest

    Click image for larger version  Name:	5_.png Views:	1 Size:	144.1 KB ID:	1657262
    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.
    Click image for larger version  Name:	6_.png Views:	1 Size:	149.3 KB ID:	1657263
    There are also versions for synchronizing Anims(Mostly need for legs.)


    Want to make a variation for animations - very easy:

    Click image for larger version  Name:	7_.png Views:	1 Size:	237.2 KB ID:	1657264
    You can make variations for any animation.

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

    Click image for larger version  Name:	8_.png Views:	1 Size:	73.6 KB ID:	1657265
    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



    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
    Click image for larger version  Name:	TZone.jpg Views:	1 Size:	224.9 KB ID:	1655675
    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 - https://www.youtube.com/watch?v=0rOovYNEBeI

    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

    https://www.youtube.com/watch?v=g0Lz7P0OHMQ


    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)

    https://www.youtube.com/watch?v=dE5rBblrw5Y&t=142s

    -------------------------------------------------------------------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

    https://www.youtube.com/watch?v=gIO6OrbW65o



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

    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!
    Attached Files
    Last edited by anadre; 11-08-2019, 02:54 PM.

    #2
    Saw some of the example vids earlier.
    Was wondering where the associated thread was.
    Looking good.
    Rule#21: Be polite, be professional, but have a plan to kill everyone you meet.

    Comment


      #3
      Originally posted by Kris View Post
      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

      Comment


        #4
        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?

        Comment


          #5
          Originally posted by Data24 View Post
          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
          Last edited by anadre; 10-01-2019, 05:08 PM.

          Comment


            #6
            Originally posted by anadre View Post

            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.

            Comment


              #7
              Originally posted by Data24 View Post

              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 instructionsClick image for larger version  Name:	6.jpeg Views:	1 Size:	332.7 KB ID:	1670008

              3 normal textures and 2 foam textures are included

              Click image for larger version  Name:	5.jpeg Views:	1 Size:	481.9 KB ID:	1670009

              Click image for larger version

Name:	17.jpeg
Views:	120
Size:	359.0 KB
ID:	1670027


              Last edited by anadre; 10-02-2019, 02:24 AM.

              Comment


                #8
                i like it !!

                Comment


                  #9
                  Originally posted by HERO4K60 View Post
                  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

                  Comment


                    #10
                    DynamicNode plugin is now published on the marketplace!
                    https://www.unrealengine.com/marketp...micnode-plugin

                    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

                    Comment


                      #11
                      Originally posted by anadre View Post

                      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 -
                      Originally posted by anadre View Post
                      https://youtu.be/GDdoDvfqa5Q/
                      2. Foot Locking - Remove foot sliding after changing pose
                      3. Climbing System(Animations + IK(maybe CCDIK) + MovementComponent) -
                      myprepaidcenter login 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

                      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.
                      Last edited by Emealy125; 10-25-2019, 12:30 AM.

                      Comment


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

                        Comment


                          #13
                          Originally posted by dandezign View Post
                          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
                          Last edited by anadre; 10-26-2019, 08:22 AM.

                          Comment


                            #14
                            Originally posted by anadre View Post

                            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.
                            Last edited by dandezign; 10-26-2019, 11:32 PM.

                            Comment


                              #15
                              Originally posted by dandezign View Post

                              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
                              Last edited by anadre; 10-27-2019, 02:30 AM.

                              Comment

                              Working...
                              X