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 | 99 | const float PALM_PRIORITY = DEFAULT_PRIORITY; |
| 100 | − | |
| 100 | +// Called within Model::simulate call, below. | |
| 101 | 101 | void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { |
| 102 | 102 | if (_owningAvatar->isMyAvatar()) { |
| 103 | 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 | 105 | Model::updateRig(deltaTime, parentTransform); |
| 106 | 106 | if (_owningAvatar->isMyAvatar()) { |
| 107 | 107 | const FBXGeometry& geometry = _geometry->getFBXGeometry(); |
| 108 | + Head* head = _owningAvatar->getHead(); | |
| 108 | 109 | |
| 109 | 110 | Rig::HeadParameters params; |
| 110 | 111 | params.modelRotation = getRotation(); |
| 111 | 112 | params.modelTranslation = getTranslation(); |
| 112 | − params.leanSideways = _owningAvatar->getHead()->getFinalLeanSideways(); | |
| 113 | − params.leanForward = _owningAvatar->getHead()->getFinalLeanForward(); | |
| 114 | − params.torsoTwist = _owningAvatar->getHead()->getTorsoTwist(); | |
| 115 | − params.localHeadOrientation = _owningAvatar->getHead()->getFinalOrientationInLocalFrame(); | |
| 116 | − params.worldHeadOrientation = _owningAvatar->getHead()->getFinalOrientationInWorldFrame(); | |
| 117 | − params.eyeLookAt = _owningAvatar->getHead()->getLookAtPosition(); | |
| 118 | − params.eyeSaccade = _owningAvatar->getHead()->getSaccade(); | |
| 113 | + params.leanSideways = head->getFinalLeanSideways(); | |
| 114 | + params.leanForward = head->getFinalLeanForward(); | |
| 115 | + params.torsoTwist = head->getTorsoTwist(); | |
| 116 | + params.localHeadOrientation = head->getFinalOrientationInLocalFrame(); | |
| 117 | + params.worldHeadOrientation = head->getFinalOrientationInWorldFrame(); | |
| 118 | + params.eyeLookAt = head->getLookAtPosition(); | |
| 119 | + params.eyeSaccade = head->getSaccade(); | |
| 119 | 120 | params.leanJointIndex = geometry.leanJointIndex; |
| 120 | 121 | params.neckJointIndex = geometry.neckJointIndex; |
| 121 | 122 | params.leftEyeJointIndex = geometry.leftEyeJointIndex; |
| 122 | 123 | params.rightEyeJointIndex = geometry.rightEyeJointIndex; |
| 123 | 124 | |
| 124 | 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 | 139 | void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { |
| 129 | 140 | setTranslation(_owningAvatar->getSkeletonPosition()); |
| 130 | 141 | static const glm::quat refOrientation = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); |