diff --git a/interface/src/avatar/SkeletonModel.cpp b/interface/src/avatar/SkeletonModel.cpp index bf4e2bb65b..64288effc4 100644 --- a/interface/src/avatar/SkeletonModel.cpp +++ b/interface/src/avatar/SkeletonModel.cpp @@ -176,10 +176,15 @@ void SkeletonModel::applyPalmData(int jointIndex, const QVector& fingerJoin float proportion = fingerIndices.size() / (float)fingerJointIndices.size(); for (int i = 0; i < fingerJointIndices.size(); i++) { int fingerIndex = fingerIndices.at(roundf(i * proportion)).index; + glm::vec3 fingerVector = palm.getFingers()[fingerIndex].getTipPosition() - + palm.getFingers()[fingerIndex].getRootPosition(); + int fingerJointIndex = fingerJointIndices.at(i); int fingertipJointIndex = fingertipJointIndices.at(i); - setJointPosition(fingertipJointIndex, palm.getFingers()[fingerIndex].getTipPosition(), - fingerJointIndex, true, -palm.getNormal()); + glm::vec3 jointVector = extractTranslation(geometry.joints.at(fingertipJointIndex).bindTransform) - + extractTranslation(geometry.joints.at(fingerJointIndex).bindTransform); + + setJointRotation(fingerJointIndex, rotationBetween(palmRotation * jointVector, fingerVector) * palmRotation, true); } }