History

Synchronize eye joint and debugging vectors when the other avatar is looking at me.

Howard Stearns committed 11 years ago

Commit d28c5551 parent 74f695c5 files · +47 −11Browse files

Showing the changes to interface/src/avatar/SkeletonModel.cpp (1 of 5 files). Show all

Unified · Split

interface/src/avatar/SkeletonModel.cpp+19−8
@@ -97,7 +97,7 @@ void SkeletonModel::initJointStates(QVector<JointState> states) { · 96 unmodified lines
9797 }
9898
9999 const float PALM_PRIORITY = DEFAULT_PRIORITY;
100−
100+// Called within Model::simulate call, below.
101101 void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) {
102102 if (_owningAvatar->isMyAvatar()) {
103103 _rig->computeMotionAnimationState(deltaTime, _owningAvatar->getPosition(), _owningAvatar->getVelocity(), _owningAvatar->getOrientation());
@@ -105,26 +105,37 @@ void SkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { · 1 unmodified line
105105 Model::updateRig(deltaTime, parentTransform);
106106 if (_owningAvatar->isMyAvatar()) {
107107 const FBXGeometry& geometry = _geometry->getFBXGeometry();
108+ Head* head = _owningAvatar->getHead();
108109
109110 Rig::HeadParameters params;
110111 params.modelRotation = getRotation();
111112 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();
119120 params.leanJointIndex = geometry.leanJointIndex;
120121 params.neckJointIndex = geometry.neckJointIndex;
121122 params.leftEyeJointIndex = geometry.leftEyeJointIndex;
122123 params.rightEyeJointIndex = geometry.rightEyeJointIndex;
123124
124125 _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());
125134 }
126135 }
127136
137+// Called by Avatar::simulate after it has set the joint states (fullUpdate true if changed),
138+// but just before head has been simulated.
128139 void SkeletonModel::simulate(float deltaTime, bool fullUpdate) {
129140 setTranslation(_owningAvatar->getSkeletonPosition());
130141 static const glm::quat refOrientation = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f));

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t