mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 04:37:23 +02:00
Merge branch 'master' of https://github.com/highfidelity/hifi into lemon
This commit is contained in:
commit
add811e404
5 changed files with 34 additions and 18 deletions
|
@ -3228,7 +3228,9 @@ void Application::update(float deltaTime) {
|
||||||
controller::Pose leftHandPose = userInputMapper->getPoseState(controller::Action::LEFT_HAND);
|
controller::Pose leftHandPose = userInputMapper->getPoseState(controller::Action::LEFT_HAND);
|
||||||
controller::Pose rightHandPose = userInputMapper->getPoseState(controller::Action::RIGHT_HAND);
|
controller::Pose rightHandPose = userInputMapper->getPoseState(controller::Action::RIGHT_HAND);
|
||||||
auto myAvatarMatrix = createMatFromQuatAndPos(myAvatar->getOrientation(), myAvatar->getPosition());
|
auto myAvatarMatrix = createMatFromQuatAndPos(myAvatar->getOrientation(), myAvatar->getPosition());
|
||||||
myAvatar->setHandControllerPosesInWorldFrame(leftHandPose.transform(myAvatarMatrix), rightHandPose.transform(myAvatarMatrix));
|
auto worldToSensorMatrix = glm::inverse(myAvatar->getSensorToWorldMatrix());
|
||||||
|
auto avatarToSensorMatrix = worldToSensorMatrix * myAvatarMatrix;
|
||||||
|
myAvatar->setHandControllerPosesInSensorFrame(leftHandPose.transform(avatarToSensorMatrix), rightHandPose.transform(avatarToSensorMatrix));
|
||||||
|
|
||||||
updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process...
|
updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process...
|
||||||
updateDialogs(deltaTime); // update various stats dialogs if present
|
updateDialogs(deltaTime); // update various stats dialogs if present
|
||||||
|
@ -3315,6 +3317,9 @@ void Application::update(float deltaTime) {
|
||||||
|
|
||||||
qApp->updateMyAvatarLookAtPosition();
|
qApp->updateMyAvatarLookAtPosition();
|
||||||
|
|
||||||
|
// update sensorToWorldMatrix for camera and hand controllers
|
||||||
|
myAvatar->updateSensorToWorldMatrix();
|
||||||
|
|
||||||
avatarManager->updateMyAvatar(deltaTime);
|
avatarManager->updateMyAvatar(deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3374,9 +3379,6 @@ void Application::update(float deltaTime) {
|
||||||
QMetaObject::invokeMethod(DependencyManager::get<AudioClient>().data(), "sendDownstreamAudioStatsPacket", Qt::QueuedConnection);
|
QMetaObject::invokeMethod(DependencyManager::get<AudioClient>().data(), "sendDownstreamAudioStatsPacket", Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// update sensorToWorldMatrix for rendering camera.
|
|
||||||
myAvatar->updateSensorToWorldMatrix();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -418,7 +418,7 @@ void MyAvatar::updateFromHMDSensorMatrix(const glm::mat4& hmdSensorMatrix) {
|
||||||
_hmdSensorFacing = getFacingDir2D(_hmdSensorOrientation);
|
_hmdSensorFacing = getFacingDir2D(_hmdSensorOrientation);
|
||||||
}
|
}
|
||||||
|
|
||||||
// best called at end of main loop, just before rendering.
|
// best called at end of main loop, after physics.
|
||||||
// update sensor to world matrix from current body position and hmd sensor.
|
// update sensor to world matrix from current body position and hmd sensor.
|
||||||
// This is so the correct camera can be used for rendering.
|
// This is so the correct camera can be used for rendering.
|
||||||
void MyAvatar::updateSensorToWorldMatrix() {
|
void MyAvatar::updateSensorToWorldMatrix() {
|
||||||
|
@ -1087,24 +1087,32 @@ static controller::Pose applyLowVelocityFilter(const controller::Pose& oldPose,
|
||||||
return finalPose;
|
return finalPose;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::setHandControllerPosesInWorldFrame(const controller::Pose& left, const controller::Pose& right) {
|
void MyAvatar::setHandControllerPosesInSensorFrame(const controller::Pose& left, const controller::Pose& right) {
|
||||||
if (controller::InputDevice::getLowVelocityFilter()) {
|
if (controller::InputDevice::getLowVelocityFilter()) {
|
||||||
auto oldLeftPose = getLeftHandControllerPoseInWorldFrame();
|
auto oldLeftPose = getLeftHandControllerPoseInSensorFrame();
|
||||||
auto oldRightPose = getRightHandControllerPoseInWorldFrame();
|
auto oldRightPose = getRightHandControllerPoseInSensorFrame();
|
||||||
_leftHandControllerPoseInWorldFrameCache.set(applyLowVelocityFilter(oldLeftPose, left));
|
_leftHandControllerPoseInSensorFrameCache.set(applyLowVelocityFilter(oldLeftPose, left));
|
||||||
_rightHandControllerPoseInWorldFrameCache.set(applyLowVelocityFilter(oldRightPose, right));
|
_rightHandControllerPoseInSensorFrameCache.set(applyLowVelocityFilter(oldRightPose, right));
|
||||||
} else {
|
} else {
|
||||||
_leftHandControllerPoseInWorldFrameCache.set(left);
|
_leftHandControllerPoseInSensorFrameCache.set(left);
|
||||||
_rightHandControllerPoseInWorldFrameCache.set(right);
|
_rightHandControllerPoseInSensorFrameCache.set(right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
controller::Pose MyAvatar::getLeftHandControllerPoseInSensorFrame() const {
|
||||||
|
return _leftHandControllerPoseInSensorFrameCache.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
controller::Pose MyAvatar::getRightHandControllerPoseInSensorFrame() const {
|
||||||
|
return _rightHandControllerPoseInSensorFrameCache.get();
|
||||||
|
}
|
||||||
|
|
||||||
controller::Pose MyAvatar::getLeftHandControllerPoseInWorldFrame() const {
|
controller::Pose MyAvatar::getLeftHandControllerPoseInWorldFrame() const {
|
||||||
return _leftHandControllerPoseInWorldFrameCache.get();
|
return _leftHandControllerPoseInSensorFrameCache.get().transform(getSensorToWorldMatrix());
|
||||||
}
|
}
|
||||||
|
|
||||||
controller::Pose MyAvatar::getRightHandControllerPoseInWorldFrame() const {
|
controller::Pose MyAvatar::getRightHandControllerPoseInWorldFrame() const {
|
||||||
return _rightHandControllerPoseInWorldFrameCache.get();
|
return _rightHandControllerPoseInSensorFrameCache.get().transform(getSensorToWorldMatrix());
|
||||||
}
|
}
|
||||||
|
|
||||||
controller::Pose MyAvatar::getLeftHandControllerPoseInAvatarFrame() const {
|
controller::Pose MyAvatar::getLeftHandControllerPoseInAvatarFrame() const {
|
||||||
|
|
|
@ -247,7 +247,9 @@ public:
|
||||||
|
|
||||||
virtual void rebuildCollisionShape() override;
|
virtual void rebuildCollisionShape() override;
|
||||||
|
|
||||||
void setHandControllerPosesInWorldFrame(const controller::Pose& left, const controller::Pose& right);
|
void setHandControllerPosesInSensorFrame(const controller::Pose& left, const controller::Pose& right);
|
||||||
|
controller::Pose getLeftHandControllerPoseInSensorFrame() const;
|
||||||
|
controller::Pose getRightHandControllerPoseInSensorFrame() const;
|
||||||
controller::Pose getLeftHandControllerPoseInWorldFrame() const;
|
controller::Pose getLeftHandControllerPoseInWorldFrame() const;
|
||||||
controller::Pose getRightHandControllerPoseInWorldFrame() const;
|
controller::Pose getRightHandControllerPoseInWorldFrame() const;
|
||||||
controller::Pose getLeftHandControllerPoseInAvatarFrame() const;
|
controller::Pose getLeftHandControllerPoseInAvatarFrame() const;
|
||||||
|
@ -451,9 +453,9 @@ private:
|
||||||
bool _hoverReferenceCameraFacingIsCaptured { false };
|
bool _hoverReferenceCameraFacingIsCaptured { false };
|
||||||
glm::vec3 _hoverReferenceCameraFacing { 0.0f, 0.0f, -1.0f }; // hmd sensor space
|
glm::vec3 _hoverReferenceCameraFacing { 0.0f, 0.0f, -1.0f }; // hmd sensor space
|
||||||
|
|
||||||
// These are stored in WORLD frame
|
// These are stored in SENSOR frame
|
||||||
ThreadSafeValueCache<controller::Pose> _leftHandControllerPoseInWorldFrameCache { controller::Pose() };
|
ThreadSafeValueCache<controller::Pose> _leftHandControllerPoseInSensorFrameCache { controller::Pose() };
|
||||||
ThreadSafeValueCache<controller::Pose> _rightHandControllerPoseInWorldFrameCache { controller::Pose() };
|
ThreadSafeValueCache<controller::Pose> _rightHandControllerPoseInSensorFrameCache { controller::Pose() };
|
||||||
|
|
||||||
float AVATAR_MOVEMENT_ENERGY_CONSTANT { 0.001f };
|
float AVATAR_MOVEMENT_ENERGY_CONSTANT { 0.001f };
|
||||||
float AUDIO_ENERGY_CONSTANT { 0.000001f };
|
float AUDIO_ENERGY_CONSTANT { 0.000001f };
|
||||||
|
|
|
@ -380,6 +380,7 @@ void Resource::finishedLoading(bool success) {
|
||||||
_failedToLoad = true;
|
_failedToLoad = true;
|
||||||
}
|
}
|
||||||
_loadPriorities.clear();
|
_loadPriorities.clear();
|
||||||
|
emit finished(success);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resource::reinsert() {
|
void Resource::reinsert() {
|
||||||
|
|
|
@ -201,6 +201,9 @@ signals:
|
||||||
/// This can be used instead of downloadFinished to access data before it is processed.
|
/// This can be used instead of downloadFinished to access data before it is processed.
|
||||||
void loaded(const QByteArray& request);
|
void loaded(const QByteArray& request);
|
||||||
|
|
||||||
|
/// Fired when the resource has finished loading.
|
||||||
|
void finished(bool success);
|
||||||
|
|
||||||
/// Fired when the resource failed to load.
|
/// Fired when the resource failed to load.
|
||||||
void failed(QNetworkReply::NetworkError error);
|
void failed(QNetworkReply::NetworkError error);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue