Post by giftfish on Apr 11, 2017 23:26:06 GMT
PROBLEM
Thane has a second pair of eyelids that "side-blink" in ME2. This animation isn't in ME3 and I'm trying to restore it.
RESEARCH
After reviewing Thane's ME2 files, the missing animation is a result of changes to his stuntactor between ME2 and ME3. ME2's version of Thane has several unique animations that take advantage of his BODY'S unique bone count (115). This additional pair of eyelids are on his BODY MESH, not his head mesh. They are not controlled by FaceFX. Instead, they are built into his stuntactor series and are always used, both outside conversations at idle, and inside conversations.
FIXING THE PROBLEM
I've been struggling with implementing this, and while I've finally gotten the animation imported -- and working -- in ME3, it's having some unintended side-effects.
Here's comparison between ME2, ME3, and the ME3 modded file:
Lovely, blinking side-lids
To get this to work, all I did was:
-import PTY_EX_Assasin_AM_Eyenoise animsequence; change the SequenceName to "AM_Eyeblink_ME3"
-import PTY_EX_Assasin_Bioanimsetdata
-added an animset reference to the BodySMC of Thane's second level stunt actor (this is how Javik's unique eye animation is implemented in ME3)
-point the new biodynamicanimset to the new animation
This results in the working eye animation, but Thane's arms twisting in on themselves (and I think his legs are a little wonky, too, but it wasn't as obvious).
LINGERING ISSUES
The problem I then ran into is the ME2 animation is having unintended effects on the rest of Thane's body:

I tried many things to fix this, including:
-Adding a eyenoise (copied existing animation) and eyenoise_offset (Thane's ME2 "basepose") animation to make Thane more akin to Javik's implementation
-Removing the UseTranslationBoneNames properties from the bioanimsetdata in various combinations
-Removing bones from the TrackBoneNames property in the bioanimsetdata
-Changing "root" to "Root" (ME3 has a case difference)
-Porting in the entire ME2 "ActionStation" animtree (this seems to be what's used in Thane is in life support)
The only two things above that made any difference were changing the UseTranslationBone names, and messing with the animtree. However....
1. Removing bones from UseTranslationBone names will then bork Thane's face.
2. The ME2 animtree does not translate properly into ME3.
The BIO_G_ActionStation object itself contains two errors upon import. Two properties are read wrong: PrioritizedSkelBranches is read as an INT and not NAME property, and PriorityList (which doesn't seem to exist in ME3) is read as INT and not BYTE.
So.
I don't know this is fixable. The problem SEEMS to be that the imported animation will not work within the framework of the ME3 animtree. And, importing the ME2 one into ME3 doesn't work. There might also be an issue with the bioanimsetdata itself. Javik's is quite different from Thane's, but any editing to the UseTranslationBone list borks everything, and edits to TrackBoneNames seem not to matter.
If anyone has any ideas, please let me know. Thanks
Thane has a second pair of eyelids that "side-blink" in ME2. This animation isn't in ME3 and I'm trying to restore it.
RESEARCH
After reviewing Thane's ME2 files, the missing animation is a result of changes to his stuntactor between ME2 and ME3. ME2's version of Thane has several unique animations that take advantage of his BODY'S unique bone count (115). This additional pair of eyelids are on his BODY MESH, not his head mesh. They are not controlled by FaceFX. Instead, they are built into his stuntactor series and are always used, both outside conversations at idle, and inside conversations.
FIXING THE PROBLEM
I've been struggling with implementing this, and while I've finally gotten the animation imported -- and working -- in ME3, it's having some unintended side-effects.
Here's comparison between ME2, ME3, and the ME3 modded file:
Lovely, blinking side-lids

To get this to work, all I did was:
-import PTY_EX_Assasin_AM_Eyenoise animsequence; change the SequenceName to "AM_Eyeblink_ME3"
-import PTY_EX_Assasin_Bioanimsetdata
-added an animset reference to the BodySMC of Thane's second level stunt actor (this is how Javik's unique eye animation is implemented in ME3)
-point the new biodynamicanimset to the new animation
This results in the working eye animation, but Thane's arms twisting in on themselves (and I think his legs are a little wonky, too, but it wasn't as obvious).
LINGERING ISSUES
The problem I then ran into is the ME2 animation is having unintended effects on the rest of Thane's body:

I tried many things to fix this, including:
-Adding a eyenoise (copied existing animation) and eyenoise_offset (Thane's ME2 "basepose") animation to make Thane more akin to Javik's implementation
-Removing the UseTranslationBoneNames properties from the bioanimsetdata in various combinations
-Removing bones from the TrackBoneNames property in the bioanimsetdata
-Changing "root" to "Root" (ME3 has a case difference)
-Porting in the entire ME2 "ActionStation" animtree (this seems to be what's used in Thane is in life support)
The only two things above that made any difference were changing the UseTranslationBone names, and messing with the animtree. However....
1. Removing bones from UseTranslationBone names will then bork Thane's face.
2. The ME2 animtree does not translate properly into ME3.
The BIO_G_ActionStation object itself contains two errors upon import. Two properties are read wrong: PrioritizedSkelBranches is read as an INT and not NAME property, and PriorityList (which doesn't seem to exist in ME3) is read as INT and not BYTE.
So.
I don't know this is fixable. The problem SEEMS to be that the imported animation will not work within the framework of the ME3 animtree. And, importing the ME2 one into ME3 doesn't work. There might also be an issue with the bioanimsetdata itself. Javik's is quite different from Thane's, but any editing to the UseTranslationBone list borks everything, and edits to TrackBoneNames seem not to matter.
If anyone has any ideas, please let me know. Thanks
