mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 03:19:24 +02:00
add offset function
This commit is contained in:
parent
8e2b25eacc
commit
fb502a7fed
1 changed files with 5 additions and 3 deletions
|
@ -54,8 +54,9 @@ const char* ViveControllerManager::NAME { "OpenVR" };
|
||||||
|
|
||||||
glm::mat4 computeOffset(glm::mat4 defaultRefrence, glm::mat4 defaultJointMat, controller::Pose puckPose) {
|
glm::mat4 computeOffset(glm::mat4 defaultRefrence, glm::mat4 defaultJointMat, controller::Pose puckPose) {
|
||||||
qDebug() << "-------------> computing offset <-------------";
|
qDebug() << "-------------> computing offset <-------------";
|
||||||
glm::mat4 puckMat = create
|
glm::mat4 poseMat = createMatFromQuatAndPos(puckPose.rotation, puckPose.translation);
|
||||||
return mat4();
|
glm::mat4 refrenceJointMat = defaultRefrence * defaultJointMat;
|
||||||
|
return glm::inverse(poseMat) * refrenceJointMat;
|
||||||
}
|
}
|
||||||
bool sortPucksYPosition(std::pair<uint32_t, controller::Pose> firstPuck, std::pair<uint32_t, controller::Pose> secondPuck) {
|
bool sortPucksYPosition(std::pair<uint32_t, controller::Pose> firstPuck, std::pair<uint32_t, controller::Pose> secondPuck) {
|
||||||
controller::Pose firstPose = firstPuck.second;
|
controller::Pose firstPose = firstPuck.second;
|
||||||
|
@ -221,10 +222,11 @@ void ViveControllerManager::InputDevice::calibrate(const controller::InputCalibr
|
||||||
if (!_calibrated) {
|
if (!_calibrated) {
|
||||||
glm::mat4 controllerToAvatar = glm::inverse(inputCalibration.avatarMat) * inputCalibration.sensorToWorldMat;
|
glm::mat4 controllerToAvatar = glm::inverse(inputCalibration.avatarMat) * inputCalibration.sensorToWorldMat;
|
||||||
glm::mat4 currentHead = inputCalibration.hmdSensorMat * controllerToAvatar;
|
glm::mat4 currentHead = inputCalibration.hmdSensorMat * controllerToAvatar;
|
||||||
|
glm::mat4 defaultHeadOffset = glm::inverse(inputCalibration.defaultCenterEyeMat) * inputCalibration.defaultHeadMat;
|
||||||
glm::quat canceledRollAndPitch = cancelOutRollAndPitch(glmExtractRotation(currentHead));
|
glm::quat canceledRollAndPitch = cancelOutRollAndPitch(glmExtractRotation(currentHead));
|
||||||
glm::vec3 currentHeadPosition = extractTranslation(currentHead);
|
glm::vec3 currentHeadPosition = extractTranslation(currentHead);
|
||||||
currentHead = createMatFromQuatAndPos(canceledRollAndPitch, currentHeadPosition);
|
currentHead = createMatFromQuatAndPos(canceledRollAndPitch, currentHeadPosition);
|
||||||
glm::mat4 defaultRefrenceXform = currentHead * glm::inverse(inputCalibration.defaultHeadMat);
|
glm::mat4 defaultRefrenceXform = currentHead * defaultHeadOffset;
|
||||||
auto puckCount = _validTrackedObjects.size();
|
auto puckCount = _validTrackedObjects.size();
|
||||||
if (puckCount == 2) {
|
if (puckCount == 2) {
|
||||||
qDebug() << "-------------< configure feet <-------------";
|
qDebug() << "-------------< configure feet <-------------";
|
||||||
|
|
Loading…
Reference in a new issue