mirror of
https://github.com/lubosz/overte.git
synced 2025-04-27 07:55:55 +02:00
fixed hand calibration
This commit is contained in:
parent
07102cc98d
commit
2015f059c7
2 changed files with 13 additions and 12 deletions
interface/resources/qml/hifi/tablet
plugins/openvr/src
|
@ -768,6 +768,6 @@ Rectangle {
|
|||
function sendConfigurationSettings() {
|
||||
var settings = composeConfigurationSettings();
|
||||
InputConfiguration.setConfigurationSettings(settings, pluginName);
|
||||
updateCalibrationText();
|
||||
//updateCalibrationText();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -330,19 +330,22 @@ void ViveControllerManager::InputDevice::configureCalibrationSettings(const QJso
|
|||
auto iter = configurationSettings.begin();
|
||||
auto end = configurationSettings.end();
|
||||
while (iter != end) {
|
||||
if (iter.key() == "trackerConfiguration") {
|
||||
if (iter.key() == "bodyConfiguration") {
|
||||
setConfigFromString(iter.value().toString());
|
||||
} else if (iter.key() == "overrideHead") {
|
||||
bool overrideHead = iter.value().toBool();
|
||||
} else if (iter.key() == "headConfiguration") {
|
||||
QJsonObject headObject = iter.value().toObject();
|
||||
bool overrideHead = headObject["override"].toBool();
|
||||
if (overrideHead) {
|
||||
_headConfig = HeadConfig::Puck;
|
||||
} else {
|
||||
_headConfig = HeadConfig::HMD;
|
||||
}
|
||||
} else if (iter.key() == "overrideHandController") {
|
||||
bool overrideHands = iter.value().toBool();
|
||||
} else if (iter.key() == "handConfiguration") {
|
||||
QJsonObject handsObject = iter.value().toObject();
|
||||
bool overrideHands = handsObject["override"].toBool();
|
||||
if (overrideHands) {
|
||||
_handConfig = HandConfig::Pucks;
|
||||
qDebug() << "--------> configure hands <---------";
|
||||
} else {
|
||||
_handConfig = HandConfig::HandController;
|
||||
}
|
||||
|
@ -876,8 +879,7 @@ void ViveControllerManager::InputDevice::calibrateLeftHand(glm::mat4& defaultToR
|
|||
glm::mat4 handPoseAvatarMat = createMatFromQuatAndPos(handPose.getRotation(), handPose.getTranslation());
|
||||
glm::vec3 handPoseTranslation = extractTranslation(handPoseAvatarMat);
|
||||
glm::vec3 handPoseZAxis = glmExtractRotation(handPoseAvatarMat) * glm::vec3(0.0f, 0.0f, 1.0f);
|
||||
glm::vec3 avatarHandYAxis = transformVectorFast(glm::inverse(handPoseAvatarMat), glm::vec3(1.0f, 0.0f, 0.0f));
|
||||
|
||||
glm::vec3 avatarHandYAxis = transformVectorFast(inputCalibration.defaultLeftHand, glm::vec3(0.0f, 1.0f, 0.0f));
|
||||
const float EPSILON = 1.0e-4f;
|
||||
if (fabsf(fabsf(glm::dot(glm::normalize(avatarHandYAxis), glm::normalize(handPoseZAxis))) - 1.0f) < EPSILON) {
|
||||
handPoseZAxis = glm::vec3(0.0f, 0.0f, 1.0f);
|
||||
|
@ -891,7 +893,7 @@ void ViveControllerManager::InputDevice::calibrateLeftHand(glm::mat4& defaultToR
|
|||
glm::vec4(zPrime, 0.0f), glm::vec4(0.0f, 0.0f, 0.0f, 1.0f));
|
||||
|
||||
|
||||
glm::vec3 translationOffset = glm::vec3(0.0f, HAND_PUCK_Y_OFFSET, HAND_PUCK_Z_OFFSET);
|
||||
glm::vec3 translationOffset = glm::vec3(0.0f, -HAND_PUCK_Y_OFFSET, 0.0f);
|
||||
glm::quat initialRotation = glmExtractRotation(handPoseAvatarMat);
|
||||
glm::quat finalRotation = glmExtractRotation(newHandMat);
|
||||
|
||||
|
@ -908,8 +910,7 @@ void ViveControllerManager::InputDevice::calibrateRightHand(glm::mat4& defaultTo
|
|||
glm::mat4 handPoseAvatarMat = createMatFromQuatAndPos(handPose.getRotation(), handPose.getTranslation());
|
||||
glm::vec3 handPoseTranslation = extractTranslation(handPoseAvatarMat);
|
||||
glm::vec3 handPoseZAxis = glmExtractRotation(handPoseAvatarMat) * glm::vec3(0.0f, 0.0f, 1.0f);
|
||||
glm::vec3 avatarHandYAxis = transformVectorFast(glm::inverse(handPoseAvatarMat), glm::vec3(1.0f, 0.0f, 0.0f));
|
||||
|
||||
glm::vec3 avatarHandYAxis = transformVectorFast(inputCalibration.defaultRightHand, glm::vec3(0.0f, 1.0f, 0.0f));
|
||||
const float EPSILON = 1.0e-4f;
|
||||
if (fabsf(fabsf(glm::dot(glm::normalize(avatarHandYAxis), glm::normalize(handPoseZAxis))) - 1.0f) < EPSILON) {
|
||||
handPoseZAxis = glm::vec3(0.0f, 0.0f, 1.0f);
|
||||
|
@ -924,7 +925,7 @@ void ViveControllerManager::InputDevice::calibrateRightHand(glm::mat4& defaultTo
|
|||
|
||||
|
||||
|
||||
glm::vec3 translationOffset = glm::vec3(0.0f, HAND_PUCK_Y_OFFSET, HAND_PUCK_Z_OFFSET);
|
||||
glm::vec3 translationOffset = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||
glm::quat initialRotation = glmExtractRotation(handPoseAvatarMat);
|
||||
glm::quat finalRotation = glmExtractRotation(newHandMat);
|
||||
|
||||
|
|
Loading…
Reference in a new issue