From 9bead94faee6fc225e23959dd7af3876e22c14a0 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 26 Oct 2015 12:07:12 -0700 Subject: [PATCH 1/3] Remove cmake debug code --- tests/render-utils/CMakeLists.txt | 2 -- tests/shaders/CMakeLists.txt | 2 -- 2 files changed, 4 deletions(-) diff --git a/tests/render-utils/CMakeLists.txt b/tests/render-utils/CMakeLists.txt index 62ed401d2e..b56297d05e 100644 --- a/tests/render-utils/CMakeLists.txt +++ b/tests/render-utils/CMakeLists.txt @@ -8,6 +8,4 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") # link in the shared libraries link_hifi_libraries(render-utils gpu shared) -message(${PROJECT_BINARY_DIR}) - copy_dlls_beside_windows_executable() diff --git a/tests/shaders/CMakeLists.txt b/tests/shaders/CMakeLists.txt index 9b2a079e88..42766c98e3 100644 --- a/tests/shaders/CMakeLists.txt +++ b/tests/shaders/CMakeLists.txt @@ -17,6 +17,4 @@ include_directories("${PROJECT_BINARY_DIR}/../../libraries/render-utils/") include_directories("${PROJECT_BINARY_DIR}/../../libraries/entities-renderer/") include_directories("${PROJECT_BINARY_DIR}/../../libraries/model/") -message(${PROJECT_BINARY_DIR}) - copy_dlls_beside_windows_executable() From 485e36d824c5d843beec47cde01c525ba272ddca Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 26 Oct 2015 17:11:46 -0700 Subject: [PATCH 2/3] Bug fix for hand IK when using the Owen avatar. The IK was assiming that the "Hips" bone index was always 0. This was not the case for Owen. Now we lookup the Hips index and cache it for use during the hipsOffset computation. --- libraries/animation/src/AnimInverseKinematics.cpp | 4 +++- libraries/animation/src/AnimInverseKinematics.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 516d4116d8..42e9472819 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -366,7 +366,7 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars if (offsetLength > MIN_HIPS_OFFSET_LENGTH) { // but only if offset is long enough float scaleFactor = ((offsetLength - MIN_HIPS_OFFSET_LENGTH) / offsetLength); - _relativePoses[0].trans = underPoses[0].trans + scaleFactor * _hipsOffset; + _relativePoses[_hipsIndex].trans = underPoses[_hipsIndex].trans + scaleFactor * _hipsOffset; } solveWithCyclicCoordinateDescent(targets); @@ -758,8 +758,10 @@ void AnimInverseKinematics::setSkeletonInternal(AnimSkeleton::ConstPointer skele if (skeleton) { initConstraints(); _headIndex = _skeleton->nameToJointIndex("Head"); + _hipsIndex = _skeleton->nameToJointIndex("Hips"); } else { clearConstraints(); _headIndex = -1; + _hipsIndex = -1; } } diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index b96dd3711e..f8f7fd9e9e 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -80,6 +80,7 @@ protected: // experimental data for moving hips during IK int _headIndex = -1; + int _hipsIndex = -1; glm::vec3 _hipsOffset = Vectors::ZERO; // _maxTargetIndex is tracked to help optimize the recalculation of absolute poses From cbade6a095079e1ac8527342c8a5cb0e9fd5b266 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Mon, 26 Oct 2015 19:27:22 -0700 Subject: [PATCH 3/3] Do not shut down hydra when it says there are no devices. Count to allowedHydraFailures in settings. --- .../input-plugins/src/input-plugins/SixenseManager.cpp | 8 +++++++- .../input-plugins/src/input-plugins/SixenseManager.h | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp index 3950fdea43..8ea05fc300 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.cpp +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.cpp @@ -167,7 +167,10 @@ void SixenseManager::update(float deltaTime, bool jointsCaptured) { if (sixenseGetNumActiveControllers() == 0) { if (_hydrasConnected) { - qCDebug(inputplugins, "hydra disconnected"); + qCDebug(inputplugins) << "hydra disconnected" << _badDataCount; + if (_badDataCount++ < _allowedBadDataCount) { // gotta get some no-active in a row before we shut things down + return; + } } _hydrasConnected = false; if (_deviceID != 0) { @@ -181,6 +184,7 @@ void SixenseManager::update(float deltaTime, bool jointsCaptured) { PerformanceTimer perfTimer("sixense"); if (!_hydrasConnected) { _hydrasConnected = true; + _badDataCount = 0; registerToUserInputMapper(*userInputMapper); assignDefaultInputMapping(*userInputMapper); UserActivityLogger::getInstance().connectedDevice("spatial_controller", "hydra"); @@ -555,6 +559,7 @@ void SixenseManager::saveSettings() const { settings.setVec3Value(QString("avatarPosition"), _avatarPosition); settings.setQuatValue(QString("avatarRotation"), _avatarRotation); settings.setValue(QString("reachLength"), QVariant(_reachLength)); + settings.setValue(QString("allowedHydraFailures"), 120); } settings.endGroup(); } @@ -567,6 +572,7 @@ void SixenseManager::loadSettings() { settings.getVec3ValueIfValid(QString("avatarPosition"), _avatarPosition); settings.getQuatValueIfValid(QString("avatarRotation"), _avatarRotation); settings.getFloatValueIfValid(QString("reachLength"), _reachLength); + _allowedBadDataCount = settings.value(QString("allowedHydraFailures"), 120).toInt(); } settings.endGroup(); } diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.h b/libraries/input-plugins/src/input-plugins/SixenseManager.h index 9fa7f84a86..90bd830650 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.h +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.h @@ -114,6 +114,8 @@ private: #endif bool _hydrasConnected; + int _badDataCount; + int _allowedBadDataCount; static const QString NAME; static const QString HYDRA_ID_STRING;