mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-05-10 00:48:20 +02:00
fixed hand calibration
This commit is contained in:
parent
07102cc98d
commit
2015f059c7
2 changed files with 13 additions and 12 deletions
|
@ -768,6 +768,6 @@ Rectangle {
|
||||||
function sendConfigurationSettings() {
|
function sendConfigurationSettings() {
|
||||||
var settings = composeConfigurationSettings();
|
var settings = composeConfigurationSettings();
|
||||||
InputConfiguration.setConfigurationSettings(settings, pluginName);
|
InputConfiguration.setConfigurationSettings(settings, pluginName);
|
||||||
updateCalibrationText();
|
//updateCalibrationText();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -330,19 +330,22 @@ void ViveControllerManager::InputDevice::configureCalibrationSettings(const QJso
|
||||||
auto iter = configurationSettings.begin();
|
auto iter = configurationSettings.begin();
|
||||||
auto end = configurationSettings.end();
|
auto end = configurationSettings.end();
|
||||||
while (iter != end) {
|
while (iter != end) {
|
||||||
if (iter.key() == "trackerConfiguration") {
|
if (iter.key() == "bodyConfiguration") {
|
||||||
setConfigFromString(iter.value().toString());
|
setConfigFromString(iter.value().toString());
|
||||||
} else if (iter.key() == "overrideHead") {
|
} else if (iter.key() == "headConfiguration") {
|
||||||
bool overrideHead = iter.value().toBool();
|
QJsonObject headObject = iter.value().toObject();
|
||||||
|
bool overrideHead = headObject["override"].toBool();
|
||||||
if (overrideHead) {
|
if (overrideHead) {
|
||||||
_headConfig = HeadConfig::Puck;
|
_headConfig = HeadConfig::Puck;
|
||||||
} else {
|
} else {
|
||||||
_headConfig = HeadConfig::HMD;
|
_headConfig = HeadConfig::HMD;
|
||||||
}
|
}
|
||||||
} else if (iter.key() == "overrideHandController") {
|
} else if (iter.key() == "handConfiguration") {
|
||||||
bool overrideHands = iter.value().toBool();
|
QJsonObject handsObject = iter.value().toObject();
|
||||||
|
bool overrideHands = handsObject["override"].toBool();
|
||||||
if (overrideHands) {
|
if (overrideHands) {
|
||||||
_handConfig = HandConfig::Pucks;
|
_handConfig = HandConfig::Pucks;
|
||||||
|
qDebug() << "--------> configure hands <---------";
|
||||||
} else {
|
} else {
|
||||||
_handConfig = HandConfig::HandController;
|
_handConfig = HandConfig::HandController;
|
||||||
}
|
}
|
||||||
|
@ -876,8 +879,7 @@ void ViveControllerManager::InputDevice::calibrateLeftHand(glm::mat4& defaultToR
|
||||||
glm::mat4 handPoseAvatarMat = createMatFromQuatAndPos(handPose.getRotation(), handPose.getTranslation());
|
glm::mat4 handPoseAvatarMat = createMatFromQuatAndPos(handPose.getRotation(), handPose.getTranslation());
|
||||||
glm::vec3 handPoseTranslation = extractTranslation(handPoseAvatarMat);
|
glm::vec3 handPoseTranslation = extractTranslation(handPoseAvatarMat);
|
||||||
glm::vec3 handPoseZAxis = glmExtractRotation(handPoseAvatarMat) * glm::vec3(0.0f, 0.0f, 1.0f);
|
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;
|
const float EPSILON = 1.0e-4f;
|
||||||
if (fabsf(fabsf(glm::dot(glm::normalize(avatarHandYAxis), glm::normalize(handPoseZAxis))) - 1.0f) < EPSILON) {
|
if (fabsf(fabsf(glm::dot(glm::normalize(avatarHandYAxis), glm::normalize(handPoseZAxis))) - 1.0f) < EPSILON) {
|
||||||
handPoseZAxis = glm::vec3(0.0f, 0.0f, 1.0f);
|
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::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 initialRotation = glmExtractRotation(handPoseAvatarMat);
|
||||||
glm::quat finalRotation = glmExtractRotation(newHandMat);
|
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::mat4 handPoseAvatarMat = createMatFromQuatAndPos(handPose.getRotation(), handPose.getTranslation());
|
||||||
glm::vec3 handPoseTranslation = extractTranslation(handPoseAvatarMat);
|
glm::vec3 handPoseTranslation = extractTranslation(handPoseAvatarMat);
|
||||||
glm::vec3 handPoseZAxis = glmExtractRotation(handPoseAvatarMat) * glm::vec3(0.0f, 0.0f, 1.0f);
|
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;
|
const float EPSILON = 1.0e-4f;
|
||||||
if (fabsf(fabsf(glm::dot(glm::normalize(avatarHandYAxis), glm::normalize(handPoseZAxis))) - 1.0f) < EPSILON) {
|
if (fabsf(fabsf(glm::dot(glm::normalize(avatarHandYAxis), glm::normalize(handPoseZAxis))) - 1.0f) < EPSILON) {
|
||||||
handPoseZAxis = glm::vec3(0.0f, 0.0f, 1.0f);
|
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 initialRotation = glmExtractRotation(handPoseAvatarMat);
|
||||||
glm::quat finalRotation = glmExtractRotation(newHandMat);
|
glm::quat finalRotation = glmExtractRotation(newHandMat);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue