I have been working on my own version of the Fabrik Module created by a git hub community member and added to the Unreal Engine source in the 4.2 update.
Build Version: 4.2.1 - 2101290
My first task was to re-create the engine module as project content plugin. This task was designed so I would familiarize myself with the Plugin System the Unreal engine provides and allow me to create my own version of the Fabrik Algorithm without comprising the the original content.
The plugin features an instance of the Anim Graph node class that has a FabrikController USTRCUT that drives the overridden skeletal control functionality. All went well there, the plug-in builds with no errors or warnings and the Anim Graph node can be pulled into any AnimBP’s anim graph. The correct output of this node can also be seen in the preview panel situated on the left hand side of the AnimBP editor. I can also attach this AnimBP to a CharacterBP featuring the same skeletal mesh no problem. I can then run the build in play-mode and move the character around the scene while it holds the pose outputted form the Fabrik plugin (the pose has been made dramatic by default to ensure the plugin is working).
However, After this CharacterBP to AnimBP dependency has been created if I close the editor and rebuild the project hits an assertion and the following is found in the output window:
Also it should be noted if I break this CharacterBP to AnimBP dependency (by temporarily removing the AnimBP from the content folder, rebuilding then re-adding the AnimBP back in) and rebuild again it succeeds with no errors or warnings. I will attach my plugin, my project.build.cs, my relevant project config files and an example AnimBP that causes the break.
Include my Fabrik plugin to your project (I used the Code Third Person example), I have attached it to this post.
Create an AnimationBlueprint
Search for '‘s Fabrik’ in the anim graph, include this node in the anim graph and connect it to your animation output
If you fill out the required fields in the node and details panel you will be able to manipulate the associate skeletal rig by adjusting the transform position value that is passed to the '‘s Fabrik’ node
Assign this AnimBP to the CharacterBP in your project
Play in editor (No crash will take place and you can see the output from the node)
Rebuild project (this will cause the crash).
Any help regarding this issue would be greatly appreciated
Thanks for reading,
P.S the function BoneIsChildOf() of the FBoneContainer USTRUCT located in the AnimationAsset.h is not exposed to the ENGINE_API. In my local version of the engine source I have included the ENGINE_API preprocessor macro before the definition of the function so my plugin could access it. Is this encapsulation intentional or could it be exposed in later versions of the editor? It is a great utility function and would help greatly for others when producing animation based plugins.
Thanks for your report. I assigned this issue to a member of our support staff, and they will begin investigation as soon as possible. If we are unable to reproduce the issue, or we need additional information, our staff member will comment here with additional questions. Otherwise, we will post an ‘Answer’ once we have logged the issue in our bug database or we have a solution.
In the meantime, please be sure to review our suggestions for how to report a bug, and feel free to edit your post if you have additional information to provide.
I was able to reproduce the issue that you described. I am going to pass my observations along to our development team for some further investigation. I did have a question for you, though. You mentioned that removing your AnimBP from the project and rebuilding the project corrected the issue, then you added the AnimBP back in and rebuilt again. Did you start seeing the error message again when you added the AnimBP back into the project? I was able to rebuild fine, but debugging the project caused the same breakpoint to be triggered.
Also, I just wanted to let you know that I attempted to reproduce the issue using an internal build that is ahead of the currently available version of the Editor, and I received a few compile errors and warnings when building the project with the plugin. I am not sure exactly where the changes were implemented, but it looks like you will need to make some changes to your plugin for it to work in a future version of the Editor.
Thanks for the response! After re-adding the AnimBP the project would rebuild with no errors or warnings. I believe this is because when deleting the AnimBP the reference that the CharacterBP has to AnimBP is removed. However, if the relationship between the two blueprints is re-established the crash would occur again. I believe that it is this relationship post inclusion of the '‘s Fabrik Node’ that causes the error.
Quick order of operation for clarity sake
Create Anim BP
Include 's Fabrik node
Rebuild - This will succeed
Assign AnimBP to Character BP
Rebuild - This will fail
Remove AnimBP from project content folder and store somewhere
Rebuild - This will succeed
Replace AnimBP in the project content folder
Rebuild - This will succeed
Re-Assign AnimBP to CharacterBP
Rebuild - This will fail.
Ah Ok thanks for the heads up! Do you know if it was a linker error? I built my plugin using my own modified engine source, I only made a small change and included the ENGINE_API precompiler macro to the function I mentioned in the P.S. of my original post. If that function is not exposed to the api in the new version of the engine it will throw an error upon compilation.