I’m trying to use Mutable for being able to switch between character skins. I found that if I add objects as different skeletal mesh components I can assign different animBP’s which allows for inheriting poses from parent animBP’s and applying procedural solves and physics for dangly bits.
However I am now noticing the skeletal mesh components have a slight offset when animations are playing, their bones are matching 1:1, in my DCC the different components are lining up perfectly (it’s the same skeleton and rig, just exporting the meshes separately to apply physics and allow for adding different bones to pieces so the player skeleton doesn’t explode with a bagillion bones).
If I merge all the mesh sections to one skeletal mesh component, the offset goes away but so does the ability to assign individual ABP’s to each section. If I remove the individual ABP’s the offset is still applied (even happens in the editor)
Is my team the only ones to encounter this issue?
If I understand the question completely, the animation blueprint assignment on skeletal meshes doesn’t actually apply/override the animation blueprint associated with it. That field is actually metadata, so you can decide which animbp is applied once the mutable is complete.
So in your case, I suspect that you are seeing those offsets because the animbp with the different physics assets are not actually applied yet.
You can apply the animbp that is referenced through the metadata in the blueprint or code.
Even without an animbp assigned there is an offset.
A bit more context:
the offset happens not on the bone data, but some how the mesh is getting rendered as if it were moved as a whole (away from its skeleton). The bones for all the skeletal mesh components ride with the ABP perfectly, the first SkeletalMeshComponent is somehow being offset from its skeleton when animations are applied, but only if there is more than one SkeletalMeshComponent.
This happens both in the previewer, and when we play our game, both in play in editor and when we cook a build.
This isn’t something that I’ve seen before (unless you’re using something like the Transform Mesh in Mesh node). Do you have images of your setup that you can share? The things I’m looking for.
1: What your component structure and local offsets look like in your character’s blueprint.
2: The mutable graph.
3: Anything showing the delta in your outputs vs the expected result.
So, this was a doozy, we found a couple work arounds but the cause was Mutable references the skeleton reference pose, and not the skeletal mesh’s reference pose.. so any skeletal mesh that’s in a different pose than the skeletal mesh that the skeleton .uasset was created from, inherits that pose instead of the individual skeletal mesh’s pose. (we are using one skeleton to drive our bipeds, and overriding their animations with animBP’s and child montage entries was working fine until we added mutable).
a work around was to export a new but otherwise unused skeletal mesh component, and generate a new skeleton (but with the bones the same name as the skeleton), then add that to the skeletalMeshComponent of whichever is getting offset. this will pull the generated skeleton to the proper position.
Another work around is to export the skeleton’s base skeletal mesh in the same pose as everything else (not always viable depending on differences between your assets).
HIya @DDeVoe, I’m the engineer who has been working with @gmoney_rigger on these problems. I do have a couple of other items I could use your feedback on.
-
Is there an example of how to use the StaticMesh nodes in customization output? I’ve tried implementing what seems like the obvious flow, but on compile it crashes the editor (we’re on 5.7.4)
-
Every time the editor starts up Mutable marks all of our COs as invalidated as the editor loads, which requires us to re-compile before each PIE session. I wrote a workaround for this, but ideally we could figure out what’s going on there. I wanted to check and see if this was expected behavior? It seemed to begin when we updated to 5.6.3.