Vertical bar ("pipe" character) in action names on FBX export #72680
Labels
No Label
Interest
Animation & Rigging
Interest
Blender Cloud
Interest
Collada
Interest
Core
Interest
Documentation
Interest
Eevee & Viewport
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
Import and Export
Interest
Modeling
Interest
Modifiers
Interest
Nodes & Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds, Tests & Devices
Interest
Python API
Interest
Rendering & Cycles
Interest
Sculpt, Paint & Texture
Interest
Translations
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Meta
Good First Issue
Meta
Papercut
Module
Add-ons (BF-Blender)
Module
Add-ons (Community)
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
11 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender-addons#72680
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
When exporting an FBX with an action the action will be named the armature name + "|" + action name.
This does not cause problems in blender itself but for programs like Unity the vertical bar (|) is an illegal character.
This means that action names have to be manually renamed in unity and other programs in order to be usable outside the FBX, i.e. being applied to another rig.
I tried modifying the FBX import and export code to replace the | with another character but this resulted in the FBX being invalid.
Added subscriber: @09williamsad
blender/blender#90991 was marked as duplicate of this issue
No vertical bar in action names on FBX exportto Vertical bar in action names on FBX exportAdded subscriber: @mont29
This is a design issue, there is no bug here from Blender pov…
Changing/removing the
|
is trivial code-wise, but it might give issues:Depending on the answers to those questions, we can:
_
separator e.g.), or try to find another, uncommon yet 'valid' char (!?§*%+@#&::
… e.g.).This needs input from users of this tool before we can take any action…
Can you advise which lines of code would need to be changed for this?
I attemped this myself the but resulting FBX was invalid.
@09williamsad would expect a search & replace over
"|"
(replacing the pipe char by something else, or even an empty string) to work, in thefbx_utils.py
file?That is what I tried using the lines that have "|" and action name, it resulting in an invalid FBX.
Added subscriber: @lamoot
There is a workaround for this that I've been using for a few years now. If you assign the animations to the rig object in the NLA editor and then use the appropriate settings in the FBX exporter, the animations will be exported as separate clips (within the same fbx file) into Unity and without the "armature name + |" prefix.
The animation clips will take the name and visual result of the clips (meaning clip scaling and modifiers get taken into account). Also make sure there is at least a single frame gap between the clips, so they don't interfere with one another's first/last frames.
Perhaps this issue could be solved with better documentation, as the exporter already provides a way to export animations without the mentioned prefix.
I just tried that but in my case I am handling tens of animations per file so making sure each assigned correctly is time consuming and changing the NLA strips without that has no effect.
Right, forgot to mention that if you mute individual NLA strips or if you mute the whole track that they are on, they will not be exported. So once you have the animations added to the NLA tracks, you simply mute whichever animations you don't need and unmute them after export.
I hope the discussion isn't going too much into user support direction, but so far the fbx exporter worked well for me with this way of working. Regardless, I'm not advocating to not solve this by changing the exporter, just that it's already possible to work with it.
Added subscriber: @Jayanam
It's very annoying, Unity just declined my asset because of this, now I have to change all the imported actions manually (> 60)
Vertical bar in action names on FBX exportto Vertical bar ("pipe" character) in action names on FBX exportAdded subscribers: @MattCROK, @lichtwerk
Changed status from 'Needs Triage' to: 'Confirmed'
Added subscriber: @BClark
hanging/removing the | is trivial code-wise, but it might give issues:
By default:
I can't answer part 1, except for myself, I never want the name changed/added to and have to work around/rename it all the time when dealing with it.
So to answer part 2, knowing what "owns the action" by name is very blender spesfic and isn't an issue once it leaves blender, and even in Blender, having the extra name makes it very hard to deal with because the action editor can't display longer names... so it is in the way in Blender also. I have in my own test file, removed any action name change on import so I get in exactly the name of the animation from the FBX..but now I can't get it back out to the same name.
Requested change:
The FBX export should export an action name as it is, it shouldn't be adding prefixes or | characters to it.
If you need or want the old behavior could be toggled back on as a preference or an option if we want to support possible situations where it is expecting that behavior.
Added subscriber: @ChristiaanMoleman
Added subscriber: @elamhut
As a Pipeline developer for both Unity and Unreal this issue is a bit non-trivial for the reasons stated above and I'd love to see a way for us to manually set Animation names by ourselves for each Action.
In games we usually reuse animations across many rigs/characters so having an Animation's name ALWAYS linked to its Rig can cause confusion and pipeline problems.
In my opinion Auto Rig Pro has the perfect answer to this:
You can select which separator fits best for your needs and in the last enum option you can just export without the Rig name, just the Action name. Which would fit PERFECTLY for my case, since I can just manually set my Action names by script.
Please give this issue some more thought.
Is there any workaround available for this issue?
As in my bug report described it not only affects actions but also appears when you link a collection from another .blend. For a working pipeline to UE or Unity it is crucial to have standardized naming convention in export formats.
The easiest universal solution would be a checkbox for a "short naming" selection or the AutoRigPro way as described, so default doesn't break pipeline for user who rely on the full name and users to engines can check the box.
This naming behavior also effects the usability of UCX Meshes (Collision in UnrealEngine)
When nesting a collection from different .blend files and export to fbx the renaming of the objects destroys the assignment.
Example:
I've got a wall named
SM_Wall_R
and corresponding collision meshes:
UCX_SM_Wall_R_001
UCX_SM_Wall_R_002
The exporter renames all to:
CollectionName|SM_Wall_R + _L_FileName|SomeWeiredStuff
CollectionName|UCX_SM_Wall_R_001 + _L_FileName|SomeWeiredStuff
CollectionName|UCX_SM_Wall_R_002 + _L_FileName|SomeWeiredStuff
On import UE can not detect the corresponding meshes anymore.