mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-25 18:55:01 +02:00
Fix avatars with extra joints during mirrored animations
When the avatar is rotated it will play a mirrored and non mirrored versions of the rotation animation. The mirrored version would also mirror extra joints on the model, yielding unexpected results. This refines the logic that determines which joints are NOT mirrored, so that extra joints remain unaffected by the mirrored animation playback.
This commit is contained in:
parent
b3798553ed
commit
ed67a5b408
1 changed files with 5 additions and 1 deletions
|
@ -192,7 +192,11 @@ void AnimSkeleton::buildSkeletonFromJoints(const std::vector<FBXJoint>& joints)
|
|||
_nonMirroredIndices.clear();
|
||||
_mirrorMap.reserve(_jointsSize);
|
||||
for (int i = 0; i < _jointsSize; i++) {
|
||||
if (_joints[i].name.endsWith("tEye")) {
|
||||
if (_joints[i].name != "Hips" && _joints[i].name != "Spine" &&
|
||||
_joints[i].name != "Spine1" && _joints[i].name != "Spine2" &&
|
||||
_joints[i].name != "Neck" && _joints[i].name != "Head" &&
|
||||
!((_joints[i].name.startsWith("Left") || _joints[i].name.startsWith("Right")) &&
|
||||
_joints[i].name != "LeftEye" && _joints[i].name != "RightEye")) {
|
||||
// HACK: we don't want to mirror some joints so we remember their indices
|
||||
// so we can restore them after a future mirror operation
|
||||
_nonMirroredIndices.push_back(i);
|
||||
|
|
Loading…
Reference in a new issue