Showing the changes to interface/src/avatar/SkeletonModel.cpp (1 of 5 files). Show all
Unified · Split
| @@ -97,7 +97,7 @@ void SkeletonModel::initJointStates(QVector<JointState> states) { · 96 unmodified lines | |||
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | const float PALM_PRIORITY = DEFAULT_PRIORITY; | 99 | const float PALM_PRIORITY = DEFAULT_PRIORITY; |
| 100 | 100 | // Called within Model::simulate call, below. | |
| 101 | void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { | 101 | void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { |
| 102 | if (_owningAvatar->isMyAvatar()) { | 102 | if (_owningAvatar->isMyAvatar()) { |
| 103 | _rig->computeMotionAnimationState(deltaTime, _owningAvatar->getPosition(), _owningAvatar->getVelocity(), _owningAvatar->getOrientation()); | 103 | _rig->computeMotionAnimationState(deltaTime, _owningAvatar->getPosition(), _owningAvatar->getVelocity(), _owningAvatar->getOrientation()); |
| @@ -105,26 +105,37 @@ void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { · 1 unmodified line | |||
| 105 | Model::updateRig(deltaTime, parentTransform); | 105 | Model::updateRig(deltaTime, parentTransform); |
| 106 | if (_owningAvatar->isMyAvatar()) { | 106 | if (_owningAvatar->isMyAvatar()) { |
| 107 | const FBXGeometry& geometry = _geometry->getFBXGeometry(); | 107 | const FBXGeometry& geometry = _geometry->getFBXGeometry(); |
| 108 | Head* head = _owningAvatar->getHead(); | ||
| 108 | 109 | ||
| 109 | Rig::HeadParameters params; | 110 | Rig::HeadParameters params; |
| 110 | params.modelRotation = getRotation(); | 111 | params.modelRotation = getRotation(); |
| 111 | params.modelTranslation = getTranslation(); | 112 | params.modelTranslation = getTranslation(); |
| 112 | params.leanSideways = _owningAvatar->getHead()->getFinalLeanSideways(); | 113 | params.leanSideways = head->getFinalLeanSideways(); |
| 113 | params.leanForward = _owningAvatar->getHead()->getFinalLeanForward(); | 114 | params.leanForward = head->getFinalLeanForward(); |
| 114 | params.torsoTwist = _owningAvatar->getHead()->getTorsoTwist(); | 115 | params.torsoTwist = head->getTorsoTwist(); |
| 115 | params.localHeadOrientation = _owningAvatar->getHead()->getFinalOrientationInLocalFrame(); | 116 | params.localHeadOrientation = head->getFinalOrientationInLocalFrame(); |
| 116 | params.worldHeadOrientation = _owningAvatar->getHead()->getFinalOrientationInWorldFrame(); | 117 | params.worldHeadOrientation = head->getFinalOrientationInWorldFrame(); |
| 117 | params.eyeLookAt = _owningAvatar->getHead()->getLookAtPosition(); | 118 | params.eyeLookAt = head->getLookAtPosition(); |
| 118 | params.eyeSaccade = _owningAvatar->getHead()->getSaccade(); | 119 | params.eyeSaccade = head->getSaccade(); |
| 119 | params.leanJointIndex = geometry.leanJointIndex; | 120 | params.leanJointIndex = geometry.leanJointIndex; |
| 120 | params.neckJointIndex = geometry.neckJointIndex; | 121 | params.neckJointIndex = geometry.neckJointIndex; |
| 121 | params.leftEyeJointIndex = geometry.leftEyeJointIndex; | 122 | params.leftEyeJointIndex = geometry.leftEyeJointIndex; |
| 122 | params.rightEyeJointIndex = geometry.rightEyeJointIndex; | 123 | params.rightEyeJointIndex = geometry.rightEyeJointIndex; |
| 123 | 124 | ||
| 124 | _rig->updateFromHeadParameters(params); | 125 | _rig->updateFromHeadParameters(params); |
| 126 | } else if (true) { //(_owningAvatar->getHead()->isLookingAtMe()) { | ||
| 127 | // Other avatars joint, including their eyes, will already be set just like any other joints | ||
| 128 | // from the wire data. But when looking at me, we want the eyes to use the corrected lookAt. | ||
| 129 | const FBXGeometry& geometry = _geometry->getFBXGeometry(); | ||
| 130 | Head* head = _owningAvatar->getHead(); | ||
| 131 | _rig->updateEyeJoints(geometry.leftEyeJointIndex, geometry.rightEyeJointIndex, | ||
| 132 | getTranslation(), getRotation(), | ||
| 133 | head->getFinalOrientationInWorldFrame(), head->getCorrectedLookAtPosition()); | ||
| 125 | } | 134 | } |
| 126 | } | 135 | } |
| 127 | 136 | ||
| 137 | // Called by Avatar::simulate after it has set the joint states (fullUpdate true if changed), | ||
| 138 | // but just before head has been simulated. | ||
| 128 | void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { | 139 | void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { |
| 129 | setTranslation(_owningAvatar->getSkeletonPosition()); | 140 | setTranslation(_owningAvatar->getSkeletonPosition()); |
| 130 | static const glm::quat refOrientation = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); | 141 | static const glm::quat refOrientation = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); |