mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 04:12:46 +02:00
Moved lean and head rotation inside Player class
This commit is contained in:
parent
90d8626615
commit
9e686b4096
3 changed files with 29 additions and 18 deletions
|
@ -272,10 +272,12 @@ void MyAvatar::simulate(float deltaTime) {
|
||||||
// Update avatar head rotation with sensor data
|
// Update avatar head rotation with sensor data
|
||||||
void MyAvatar::updateFromTrackers(float deltaTime) {
|
void MyAvatar::updateFromTrackers(float deltaTime) {
|
||||||
glm::vec3 estimatedPosition, estimatedRotation;
|
glm::vec3 estimatedPosition, estimatedRotation;
|
||||||
|
|
||||||
if (isPlaying()) {
|
if (isPlaying() && !OculusManager::isConnected()) {
|
||||||
estimatedRotation = glm::degrees(safeEulerAngles(_player->getHeadRotation()));
|
return;
|
||||||
} else if (Application::getInstance()->getPrioVR()->hasHeadRotation()) {
|
}
|
||||||
|
|
||||||
|
if (Application::getInstance()->getPrioVR()->hasHeadRotation()) {
|
||||||
estimatedRotation = glm::degrees(safeEulerAngles(Application::getInstance()->getPrioVR()->getHeadRotation()));
|
estimatedRotation = glm::degrees(safeEulerAngles(Application::getInstance()->getPrioVR()->getHeadRotation()));
|
||||||
estimatedRotation.x *= -1.0f;
|
estimatedRotation.x *= -1.0f;
|
||||||
estimatedRotation.z *= -1.0f;
|
estimatedRotation.z *= -1.0f;
|
||||||
|
@ -327,11 +329,6 @@ void MyAvatar::updateFromTrackers(float deltaTime) {
|
||||||
}
|
}
|
||||||
head->setDeltaRoll(estimatedRotation.z);
|
head->setDeltaRoll(estimatedRotation.z);
|
||||||
|
|
||||||
if (isPlaying()) {
|
|
||||||
head->setLeanSideways(_player->getLeanSideways());
|
|
||||||
head->setLeanForward(_player->getLeanForward());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// the priovr can give us exact lean
|
// the priovr can give us exact lean
|
||||||
if (Application::getInstance()->getPrioVR()->isActive()) {
|
if (Application::getInstance()->getPrioVR()->isActive()) {
|
||||||
glm::vec3 eulers = glm::degrees(safeEulerAngles(Application::getInstance()->getPrioVR()->getTorsoRotation()));
|
glm::vec3 eulers = glm::degrees(safeEulerAngles(Application::getInstance()->getPrioVR()->getTorsoRotation()));
|
||||||
|
|
|
@ -229,6 +229,11 @@ void Player::startPlaying() {
|
||||||
_audioThread->start();
|
_audioThread->start();
|
||||||
QMetaObject::invokeMethod(_injector.data(), "injectAudio", Qt::QueuedConnection);
|
QMetaObject::invokeMethod(_injector.data(), "injectAudio", Qt::QueuedConnection);
|
||||||
|
|
||||||
|
// Save head orientation
|
||||||
|
if (_avatar->getHeadData()) {
|
||||||
|
_originalHeadOrientation = _avatar->getHeadOrientation();
|
||||||
|
}
|
||||||
|
|
||||||
_timer.start();
|
_timer.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -252,6 +257,12 @@ void Player::stopPlaying() {
|
||||||
_audioThread, &QThread::deleteLater);
|
_audioThread, &QThread::deleteLater);
|
||||||
_injector.clear();
|
_injector.clear();
|
||||||
_audioThread = NULL;
|
_audioThread = NULL;
|
||||||
|
|
||||||
|
// Restore head orientation
|
||||||
|
if (_avatar->getHeadData()) {
|
||||||
|
_avatar->setHeadOrientation(_originalHeadOrientation);
|
||||||
|
}
|
||||||
|
|
||||||
qDebug() << "Recorder::stopPlaying()";
|
qDebug() << "Recorder::stopPlaying()";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,10 +292,6 @@ void Player::play() {
|
||||||
_avatar->setOrientation(_recording->getFrame(_currentFrame).getRotation());
|
_avatar->setOrientation(_recording->getFrame(_currentFrame).getRotation());
|
||||||
_avatar->setTargetScale(_recording->getFrame(_currentFrame).getScale());
|
_avatar->setTargetScale(_recording->getFrame(_currentFrame).getScale());
|
||||||
_avatar->setJointRotations(_recording->getFrame(_currentFrame).getJointRotations());
|
_avatar->setJointRotations(_recording->getFrame(_currentFrame).getJointRotations());
|
||||||
HeadData* head = const_cast<HeadData*>(_avatar->getHeadData());
|
|
||||||
if (head) {
|
|
||||||
head->setBlendshapeCoefficients(_recording->getFrame(_currentFrame).getBlendshapeCoefficients());
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
_avatar->setPosition(_recording->getFrame(0).getTranslation() +
|
_avatar->setPosition(_recording->getFrame(0).getTranslation() +
|
||||||
_recording->getFrame(_currentFrame).getTranslation());
|
_recording->getFrame(_currentFrame).getTranslation());
|
||||||
|
@ -293,11 +300,16 @@ void Player::play() {
|
||||||
_avatar->setTargetScale(_recording->getFrame(0).getScale() *
|
_avatar->setTargetScale(_recording->getFrame(0).getScale() *
|
||||||
_recording->getFrame(_currentFrame).getScale());
|
_recording->getFrame(_currentFrame).getScale());
|
||||||
_avatar->setJointRotations(_recording->getFrame(_currentFrame).getJointRotations());
|
_avatar->setJointRotations(_recording->getFrame(_currentFrame).getJointRotations());
|
||||||
HeadData* head = const_cast<HeadData*>(_avatar->getHeadData());
|
}
|
||||||
if (head) {
|
HeadData* head = const_cast<HeadData*>(_avatar->getHeadData());
|
||||||
|
if (head) {
|
||||||
head->setBlendshapeCoefficients(_recording->getFrame(_currentFrame).getBlendshapeCoefficients());
|
head->setBlendshapeCoefficients(_recording->getFrame(_currentFrame).getBlendshapeCoefficients());
|
||||||
}
|
head->setLeanSideways(_recording->getFrame(_currentFrame).getLeanSideways());
|
||||||
|
head->setLeanForward(_recording->getFrame(_currentFrame).getLeanForward());
|
||||||
|
glm::vec3 eulers = glm::degrees(safeEulerAngles(_recording->getFrame(_currentFrame).getHeadRotation()));
|
||||||
|
head->setBasePitch(eulers.x);
|
||||||
|
head->setBaseYaw(eulers.y);
|
||||||
|
head->setBaseRoll(eulers.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
_options.setPosition(_avatar->getPosition());
|
_options.setPosition(_avatar->getPosition());
|
||||||
|
|
|
@ -162,6 +162,8 @@ private:
|
||||||
QSharedPointer<AudioInjector> _injector;
|
QSharedPointer<AudioInjector> _injector;
|
||||||
AudioInjectorOptions _options;
|
AudioInjectorOptions _options;
|
||||||
|
|
||||||
|
glm::quat _originalHeadOrientation;
|
||||||
|
|
||||||
AvatarData* _avatar;
|
AvatarData* _avatar;
|
||||||
QThread* _audioThread;
|
QThread* _audioThread;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue