[Open Beta] Procedural On-the-Fly Animation in UE4: iTween!

no worries, get well soon.

1 Like

Its crashing on 5.0.3

Just after i open a character blueprint. Plus, the zip file says 0.8.8 500 hot fix, but the inside version says 0.8.7 beta

LoginId:0727c57b4740c26b63e64fbf22fc6864
EpicAccountId:9eeb9b7954204b9186c5bb7e8c55e971

Fatal error: [File:D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Templates\Casts.cpp] [Line: 10] Cast of nullptr to AnimationBlendSpaceSampleGraph failed

UnrealEditor_CoreUObject
UnrealEditor_AnimGraph
UnrealEditor_AnimGraph
UnrealEditor_AnimGraph
UnrealEditor_AnimGraph
UnrealEditor_AnimGraph
UnrealEditor_AnimGraph
UnrealEditor_AnimGraph
UnrealEditor_AnimGraph
UnrealEditor_AnimGraph
UnrealEditor_KismetCompiler
UnrealEditor_KismetCompiler
UnrealEditor_KismetCompiler
UnrealEditor_Kismet
UnrealEditor_Kismet
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_ContentBrowser
UnrealEditor_ContentBrowser
UnrealEditor_ContentBrowser
UnrealEditor_ContentBrowser
UnrealEditor_ContentBrowser
UnrealEditor_ContentBrowser
UnrealEditor_ContentBrowser
UnrealEditor_Slate
UnrealEditor_Slate
UnrealEditor_Slate
UnrealEditor_Slate
UnrealEditor_ApplicationCore
UnrealEditor_ApplicationCore
UnrealEditor_ApplicationCore
UnrealEditor_ApplicationCore
user32
user32
InkObj
atlthunk
user32
user32
UnrealEditor_ApplicationCore
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll

Hi franadoriv,

This doesn’t look like an iTween issue - it never references the AnimationBlendSpaceSampleGraph class. Can you install editor symbols for debugging from the launcher and get some more crash logs? Without the symbols installed the crash log doesn’t say where the issue comes from.

Thankyou so much for your answer. Yeah, indeed, was another unrelated problem. Sorry. However, i had been using iTween on Unity since a lot, and there is something i cant understand on the unreal version. For example; I have an actor with two sub-actors (or components). I want to move Actor A to Actor B local position. Both have the same parent (another component or subactor, not the root). I use relative position of A as source location and relative position of B as destiny. But the Actor A just move from and to a wrong position. Type of movement is parent. The same occurs with actor or components.

Another thing is, on Unity, i modified the onUpdate function for example to receive a lambda object or the function name that will receive the onUpdate function. That was very handly so i can just iTween with inline listeners. Why dont do the same on UE? Provide the imput nodes for all events (onFinish, onUpdate, etc) that can be connected to a custom event.

Thanks!

Hi,

I’m trying out the float tween but i’m not sure how it works. could you make a short tutorial on how it works? I plan on using it to tween the widget’s opacity

Hey CraftedGaming, it’s pretty easy to explain in a screenshot:

The two most important parts are the OnTweenUpdateTarget and Parameters pins.

We’re basically setting up a delegate with no variables in the Event Graph. OnTweenUpdateTarget is the object which will receive the delegate (in this case, it’s this same blueprint) and in Parameters we tell it what function we want to call. It can be any function or event, but in this case I prefer an event right next to the original tween call.

“oufn” in Parameters is short for “OnUpdateFunctionName” which can also be used instead of “oufn”. If you’re using the “Full” version of the node rather than “Simple” there’s a bespoke pin for OnUpdateFunctionName so you don’t have to write it into Parameters.

The tween returns an actor that performs the operation that stays alive as long as the operation is ongoing. I created another custom event nearby with the same name specified beside “oufn”. I get the iTween actor and get DataTypeValues which is a struct containing all the different types of data you’d get from the various Data tweens, then I put the float value into a variable (that you could think of as representing your widget’s opacity).

So to recap:

  • The tween is called with an update target and an update function name.
  • The tween is executed by an iTween actor.
  • Every frame the actor calls the function named on the specified update target object.
  • This function gets the data from the iTween actor’s DataTypeValues struct and acts upon the float data.
1 Like

Hey there, an external team developed a project for me back in 2017 using iTween for UE4.19.2, and now I can’t update without getting an error. I’ve tried changing the game version by right clicking the project file, but then the game won’t compile.

I’ve then downloaded the iTween plugin for 4.27, deleted the old iTween plugin folder and pasted the new one, and it still won’t compile. When I try to build it gives variations of this error:

warning C4996: ‘FString::Trim’: FString::Trim() has been split into separate functions for copy and mutate semantics. Call FString::TrimStart() to return a copy of the string with whitespace trimmed from the start, or FString::TrimStartInline() to modify an FString object in-place. Please update your code to the new API

How do I update the iTween code to a new API?

Hey MegaLach, copying in the new plugin should be enough. I updated the code to the new Trim stuff way back in like, 4.12 I think?

Does your project have the Build, Binaries, Intermediate and DerivedDataCache folders? If so, please delete them, regenerate project files and try to compile again.

Note to all:

iTween is undergoing a massive refactor for speed and code maintenance. There will be only one more version on the forums for 5.1 when the refactor is completed. Following that, iTween will be downloadable from the marketplace only. Our plan is for it to remain free of charge.

The reason for this is it’s easier to push updates through the marketplace. iTween hasn’t seen much active development in a while and a big reason for that is simply not having the time to compile and package everything myself.

The next version, when completed, will include the old version of iTween recompiled for 5.1 as a separate module. The new version will come along with it, which will generally have the same functionality but will be faster to run with a huge simplification for calling events. The simplification just takes a struct with the parameters for the event rather than having to maintain a couple dozen individual nodes.

If you are currently using iTween, make sure you get the 5.1 version from this thread so you can update from the old module to the new one. The marketplace version will only include the new module, so you will likely run into issues if you’ve made extensive use of the plugin without including the old module.

I apologize for the inconvenience this will cause some users, but this is the only way the plugin can be maintained.

I don’t have an ETA for this yet, but look for it within the next few weeks as I squash bugs caused the refactor and polish up unfinished features.

Cheers.

1 Like

Note to all:

The refactor is taking longer than expected. There are still some UX questions to answer, especially on the C++ side. No ETA on the new version still.

However, I have decided to release the 5.1 recompile for users who need to get their projects moving in 5.1 now.

Update 35 (Dec 11 2022)(Recompile of 0.8.8 for 5.1):

I will share more in the coming weeks on the recompile. Sorry for the latency everyone! I just want the transition to be worth it and as painless as possible.

1 Like

Hi everyone, thank you for your patience!

Here is iTween for 5.2! iTween_5_2_0_0.zip - Google Drive

Note that this is the last time I will be publishing iTween to the forums. From now on, iTween will be available from the Unreal Engine marketplace like any other plugin and will continue to be free of charge.

Included in this release is the old iTween plugin and the new one. Please take this opportunity to update your projects to use the new iTween plugin. I will publish a manual soon to outline how to use the new version of the plugin as well as some migration tips to help you get up to speed with the new plugin.

To install, remove the iTween folder from your current project’s plugins folder, then unzip “iTween” and “iTweenOld” to your plugins folder.

The new plugin is much faster but is a complete rewrite, so we couldn’t just automatically convert much of anything - you will need to manually update all of your nodes to use the new plugin. I apologize for this hassle, but this is the cost of progress. Nothing will stop you from using the old plugin, but after 5.2 you will need to compile it yourself.

The new plugin is the same one that will be published to the marketplace when it’s approved by Epic. The marketplace will not include the old plugin, only the new plugin. The new plugin will initially be available on the marketplace for 5.0, 5.1, and 5.2. The release linked in this post only includes 5.2. The old and new plugins can be installed side by side while you convert from the old to the new.

The reason for the rewrite is to have more speed at runtime and flexibility at design time, including for C++ users. The old plugin code was far too bloated at this point so retrofitting new features into it was close to impossible. The new code does everything the old code did in a more modular way, which should be better for designers to also take a modular approach to tweening operations.

The reason for the move to the marketplace is because I can’t keep compiling the plugin for all of its supported platforms on my own. In order to keep fixes and features coming, I need to leverage the marketplace’s continuous integration. Again, the plugin will remain free and there are no plans to monetize iTween for Unreal Engine. Ever.

New features for the new plugin include:

  • Now actual UE delegates are used for OnStart, OnUpdate and OnComplete events which are much faster.
  • Runtime overhead improvements of up to 20%!
  • UMG orientation pointing widgets toward direction of travel, another widget, or a 3D object in your scene!
  • Struct-based functions - create any tween using a single function by passing in struct data. C++ users no longer need to fill out gargantuan function signatures and BP users can get all of the controls that the “Full” node provided in the old plugin with a tenth of the node height!

A sample project using the new plugin for 5.2 is available here: iTweenShowcase.zip - Google Drive

2 Likes

Amazing! Thanks so much for all your hard work :pray:

1 Like

Here’s a recompile of the latest version of iTween for 5.3: iTween_5_3_0_0.zip - Google Drive

Keep in mind, this is the new version of iTween which is incompatible with the old version. If you didn’t use UE5.2, you may be confused about the new functions and workflow. Please see this post. If you haven’t already, you will need to download the 5.2 version, upgrade your code for the new iTween style, then upgrade to 5.3. I apologize for the massive confusion and headaches this may cause!

As for the marketplace, they won’t allow me to post this there until I have extensive documentation, which I am still working on. I don’t have an ETA on that yet and I apologize, time has been a difficult resource to find for a while now.

2 Likes

Hi,
is there a “shortest path” option for rotate events on new version? i can’t find it.

Hi Jared,

I see you’ve been working on this project since 2014. Thank you for almost 10 years of interpolating data. So I tried getting into the plugin with 5.2, just poking around. I love the super simple workflow to easily target actors, component, etc… It handles everything! Being able to create instances of interpolators within sub functions is amazing… not requiring a direct connection to event tick too.

That said, I couldn’t figure out how to access the output of an interpolated float. I would love to read more about the plugin in general but I can’t find where to start reading in this thread for some basic documentation.

I hope you eventually share this on marketplace because for me this kind of tool is much needed. My project relies a lot on data interpolation (on material instance parameters, physics control parameters and component transform) and I feel a bit stuck trying to use ease, interp, timelines and timers in blueprints… it’s a lot of clicking around because they can’t be nested easily…

Thank you for your work on this useful tool!

I removed it because it had been rolled into the engine’s SetActorRotation base function. It should already be taking the shortest path! But if the behaviour is not as you expect, I can look into reimplementing it for the next version. If you have some steps to reproduce an issue where the rotation is not what you expect, please do share them as this will make it easier for me to implement a version local to iTween.