Tail Animator - Procedural tail animation for tentacles, simple capes, squids and more!

Hi, I’m having a little issue here, the Tail Animator seems to have different behaviours depending on what machine is running it.

We are using exactly the same configs and all (same commit), one of our objects is crazy bouncy in one of our machines and the other object don’t limit the angle properly.

Any help?

That’s probably caused by different framerate, in Tail Animator V2 there will be option to unify the behaviour.
Can you check if setting project’s framerate to fixed 60fps will make them look the same with current version?

60fps not, but 30fps will make everything work fine (not a viable framerate for us hehehe)

The 2 week estimate for V2 is still valid?

Thank you!

I am not sure but I am near completing, strugging with few things to solve.
I doing like 14 hours or more per day on that now :face_with_spiral_eyes: it will be really big update.

2 Likes

Tail Animator V2 is submitted for review.
Before releasing you can check what new will be there :wink:

Right now I will focus on update for my other package: Optimizers
after working on that I will work on DOTS and ECS implementation for Tail Animator.

5 Likes

Love this, gonna play with it asap!

TAIL ANIMATOR V2.0.0 Released
Important Tips for Update from V1:

  • Now Tail Animator is using just one component (TailAnimator2.cs)

  • You need to convert Tail Animator V1 components in order to use new features, to convert go to “Packages - Demos - Converter” directory and unpack “Tail Animator V1 to V2 Converter + Old Examples.unitypackage”
    It will override some code from previous version of Tail Animator and add buttons “Convert To V2” on top of your Tail Animator V1 components.
    After converting you should try to tweak parameters for tail behaviour from scratch since Version 2 parameters are basing on slightly different logics.

  • Demo scenes are packed into .unitypacakge files to avoid importing many scripts and assets if not needed.

Changelog

  • New component containing all other components features (only it should used from V2) - Tail Animator V2
  • New GUI
  • Language support for inspector tabs titles
  • New parameters: “Slithery” → V2 Slithery setted to 1 / 1.2 will make motion look almost the same like V1 motion
    “Curling”: Similar to V1 “Sensitivity” parameter
    “Sustain” (experimental): Making tail bounce more after moving (more noticable with boosted “Springiness”)
    “Unify Bendiness” (experimental): Making tail bend in similar way no matter how many bones / how long tail model is
    “Reaction Speed” / “Rotation Relevancy” / “Animation Mode”: Working in almost the same way like V1 "positions / rotations speed
  • Fixed Update Rate mode to make Tail Animator motion look the same in Higher / Low fps domain
  • “Prewarm” option to pre-animate tail before first game frame to avoid jiggly start in some cases
  • “Root to parent” parameter replaced by “Include” / “Exclude” dropdown next to “Start Bone”
  • “Queue to last update” renamed to “Update as last”
  • “Blend To Original” renamed to “Tail Animator Amount” and reacting in reverse way than old “Blend To Original”
  • New parameter “Limit Axis 2D” to restrict tail animator for rotating around 2D space (please adjust auto waving axis if you using “Auto Waving” - some cases can’t be restricted)
  • All main parameters now have possibility to spread values separately on each tail segment with curve
  • “Use Waving” renamed to “Auto Waving” and putted into new “Additional Modules” tab
  • “Fixed Cycle” for syncing tails waving animation for “Auto Waving”
  • “Collisions” feature in additional modules tab
  • Collisions algorithm upgraded and enchanced with some new paramters
  • “Collision Swapping” renamed to “Reflect Collisions” and working in reverse way than V1 parameter
  • Experimental “Collisions Slippery” parameter to make tails slide a bit less on colliders
  • Selective collision space have new tab “Dynamic World Colliders Inclusion” to dynamically add colliders from scene with trigger collider
  • “Partial Blend” as module
  • New “Inverse Kinematics” feature using CCD IK
  • New experimental “Deflection” feature to make collision affect back tail segments when deflecting it
  • New “Disable when Far” feature to smoothly disable tail animator when is far from main camera or other object
  • Experimental wind effector
  • Upgraded Mesh Skinning API to be used in Editor but also in Playmode
  • New demo scenes
  • Possibility and examples of cutting tail to smaller ones and generating additional segments dynamically
  • Example of generating tail model procedurally and skinning it in runtime
  • And much more small improvements

Now I will focus on big update for my other package: Optimizers.
After that I will work on DOTS or ECS implementation for Tail Animator 2.

Release Video:

5 Likes

truly impressive update. Really love the physics interaction!

1 Like

Hey, I just installed version 2 and unpacked the examples and “tails to use” packages. I pulled-out the short optimal tail into my scene and set the gravity to 0,10,0 in the “physical effectors” roll-out. The gravity seems to have no effect on the tail at all, though.

Edit: I figured-out the problem. I simply had the tail animator amount % set to low number for some reason. Seems to work fine at 100%

1 Like

Hey, awesome work!
:slight_smile:

We are in the way to release a playable this next week, but after that we’ll update and check all this awesome new stuff.
Thanks for the good work <o/

1 Like

Thanks!
Waiting to see how you used Tail Animator :smile:

Hey there! We’ve recently acquired Tail and Spine animator and we’ve noticed that they do not work with optimized model hierarchies but require the bones to be in a regular child-chain. Are there any plans to support flat hierarchies and let us manually add the bone chain? Especially for mobile games, optimized, flat hierarchies (enabling “Optimize Game Objects” in the rig section of a model and manually exposing individual bones) are quite commonly used to reduce the amount of transform updates.

1 Like

Yes I know about “optimized hierarchy” but this option just removes possibility to make changes on any bone.
Yes you can add exposed bone but you can only get it’s position and rotation but not edit it, you can apply custom positioning and rotating.

If your models are just tails without keyframe animation, you could hit “Detach children” toggle, it can make motion work 5 times faster thanks to unparented transform hierarchy.

Soon I will try implement ECS for tail animator which could bring giant boost for the algorithm.

Hello Fimpossible!

Your asset looks really impressive and I think it will be useful for a number of things in the project I am currently working on.

I wanted to ask before I bought the package if it would be possible to have dynamic bones that are generated at runtime and still effected by the tail animator.

The idea is to generate stuff like plants, roots or flowers growing at runtime but dynamically add the bones to the tail chain as they are generated. Do you think this is possible?

I saw that wenzy in a previous post was using it on a procedurally generated mesh during runtime. I wondered if this was some behind the scenes magic where he had several setups and was just cycling through them or if the tail chain was being procedurally generated and plugged in to the tail animator.

I’m excited to see how it performs with your plans of implementing ECS, should be amazing!

Thanks in advance and keep up the good work!

Thank you and Hello!
Yes it is possible and package includes example demo scenes with such usage.

Wenzy was generating meshes for tails but using tail animator skinning API to make them bend (skinning in playmode) and then adding tail animator.

1 Like

Hi there, a colleague of mine recently purchased this plugin for me and so far it’s working great!

I haven’t checked the documentation thoroughly yet, but when a character is destroyed with the tail object attached a null reference exception is triggered:

MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.Transform.get_lossyScale () (at <e2bce5d33e704a76a5c9576f4d43769b>:0)
FIMSpace.FTail.TailAnimatorWind.Update () (at Assets/Plugins/FImpossible Creations/Plugins/Tail Animator/Utilities/TailAnimatorWind.cs:138)

I’m happy to make a few edits for this to work but wanted to check whether there is a safe, preferred method to destroy a game object with the tail object attached?

The tail animator is great, however I need to use it for 2D, including collisions, for instance where the tail bends around a 2D object, as is possible in 3D. Is there a way to support this with the current version? I think currently the code for collisions is mostly setup for 3D. If so, is there a plan to add 2D support?

Thanks!

Thank you.
Support for collider 2D is not yet considered, but I will check it soon. For now I suggest trying to use 3D colliders in 2D world like in the 2D example scene, but then all sprites must have equal Z axis position.
I am not sure if 2D polygon collider support will be possible.

Version 2.0.5 Released

  • Added experimental version for 2D collision detection (Polygon collider since unity version 2019.1)
  • Optimized some collision algorithms
  • Added “Animate” Roll toggle (under “Additional Parameters”) which will make smooth rotate bones in forward axis (Tail Animator V1 style)
  • Inspector window now is less vertical long, tweak categories are selected in horizontal menu

Hello! Just bought your asset and didn’t have an opportunity to explore it in-depth. Visually it works great, but I couldn’t find info on detecting collisions in the manual… Is it possible to detect the collision with a tail via script? Like if I want to “punch” an object with a tail and add force on collision or something like that.