Comments (8)
Bisect points to #90064 as the culprit:
from godot.
I, @TokageItLab and @lyuma are looking into this.
from godot.
I think this is an intended behaviot rather than a bug. Is the Hips scale track you intended? If you don't need it, enable the remove unimportant track option.
from godot.
Oh sorry I, the scale track is not removed with that option.
So, do we need an additional option to remove the scale track? Also, I am wondering what the scale track is on the software that created the glb. We need to determine if there is a problem with the scale track conversion (Apply Node Scale) or if the animation is oddly to begin with on DCC.
from godot.
For the mesh I downloaded the fbx from mixamo, imported into the latest Blender, changed nothing and immediately exported as glb with default options - just the animation checkbox unchecked.
from godot.
Thank you for providing the reproduction project for4.2.x. I can confirm that the issue is also present in that version (tested on 4.2.1) when Remove Immutable Tracks is unchecked.
The reason Remove Immutable Tracks concealed the problem in 4.2 is it removed all tracks that had only one keyframe if the initial pose was the same as the keyframe.
from godot.
The problem is that after applying Apply Node Scale, the Scale track values mismatch with the Skeleton's rest.
Even in 4.2.1, Remove Immutable Tracks did not specifically hide the problem, but guaranteed that the rest would match the Skeleton Node, so removal there made sense.
Since #90064, Remove Immutable Tracks is now done after Apply Node Scale, so the comparison needs to be changed.
@lyuma The current importer process matches which of the following flows? Or other?
- Override Rest -> Fix Silhouette -> Apply Node Scale -> Remove Immutable Tracks
- Override Rest -> Fix Silhouette -> Remove Immutable Tracks -> Apply Node Scale
- Apply Node Scale -> Override Rest -> Fix Silhouette -> Remove Immutable Tracks
If Remove Immutable Tracks is running after Apply Node Scale, there are two possible fixes.
- Move Remove Immutable Tracks before Apply Node Scale
- Apply Node Scale to all keys in the scale track
Probably the former should be chosen, since the latter could corrupt the animation if the bones have scale intendedly as glTF. But considering the role of retargeting in matching the appearance, the latter may be preferable, then we need to be careful if the glTF specification allows such cases as Scale of 0.
from godot.
Probably #3.
It is incorrect to remove tracks before the retargeting flow. We need to be able to compare against the bone rest. The reason is because animation mixer may use bone rest as the reference point when no explicit reset animation exists (and indeed, when the user requests creating a RESET animation, it is based on the bone rest)
Move Remove Immutable Tracks before Apply Node Scale
This is incorrect, because it will remove things that match the old bone rest which will then lead to incorrect blending after we change the rest.
I strongly believe that this bug is unrelated to Remove Immutable Tracks. It only appeared to be related because remove immutable was incorrect previously
Apply Node Scale to all keys in the scale track
This is kind of what I am trying, but the code is written to only touch the toplevel bones (get_parentless_bones)
from godot.
Related Issues (20)
- Autocompletion fails when script is attached in the current scene HOT 1
- Crash to desktop when setting an AnimationTree AnimationNodeBlendSpace2D's blend mode before creating points. HOT 1
- Toggling distraction-free mode with external script editor enabled opens a new editor every time. HOT 2
- Resource on Dictionary
- Regression in "GDScript: fix segfault on invalid script" with `const foo : GDScript= preload(...)`
- `Geometry2D.is_polygon_clockwise` always returns false for some triangles. HOT 2
- Editing StringName argument adds extra `&`
- Tooltips don't scroll when editor is in `Single Window Mode`
- Missing "Manage Groups" Button in "Scene -> Node -> Groups" Menu HOT 2
- Error when using `TextEdit`'s minimap with horizontal scrolling
- [glTF] Very high light range values of imported lights are causing shadows not to render HOT 5
- RichText Justified Behavior is Not Correct HOT 6
- PackedStringArray missing methods HOT 6
- GDScript editor IntelliSense is displaying the wrong type for a defined variable HOT 1
- Null references not working as intended in Godot 4.3 dev6? HOT 1
- AnimationTree fails resolving track on node with unique name (%) HOT 3
- Parse_mapping error on Steam version only
- Project crashes after starting because breakpoint HOT 2
- override.cfg gets pulled into project.godot on reload when external modifications are detected HOT 1
- MinGW-GCC internal compiler error on Windows x86_32 with LTO enabled HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from godot.