From 1f2fe5ddee553a0a8e5772f382160dde7a4ebffe Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Fri, 15 Nov 2013 18:06:32 -0800 Subject: [PATCH] Rudimentary Sixense (Razer Hydra) support. --- interface/CMakeLists.txt | 4 ++++ interface/src/Application.cpp | 8 ++++++++ interface/src/Application.h | 4 ++++ interface/src/avatar/Hand.cpp | 2 +- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 4709bf234d..6629398bf7 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -15,6 +15,7 @@ set(LEAP_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/Leap) set(MOTIONDRIVER_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/MotionDriver) set(PORTAUDIO_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/PortAudio) set(OPENCV_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/OpenCV) +set(SIXENSE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/Sixense) set(UVCCAMERACONTROL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/UVCCameraControl) if (APPLE) @@ -95,6 +96,7 @@ find_package(Leap) find_package(MotionDriver) find_package(OpenCV) find_package(OpenNI) +find_package(Sixense) find_package(UVCCameraControl) find_package(ZLIB) @@ -125,6 +127,7 @@ include_directories( ${LEAP_INCLUDE_DIRS} ${MOTIONDRIVER_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS} + ${SIXENSE_INCLUDE_DIRS} ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${OPENCV_INCLUDE_DIRS}") @@ -135,6 +138,7 @@ target_link_libraries( ${MOTIONDRIVER_LIBRARIES} ${OPENCV_LIBRARIES} ${ZLIB_LIBRARIES} + ${SIXENSE_LIBRARIES} ) if (APPLE) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 628a91c69b..ca56301c8e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2205,6 +2205,13 @@ void Application::updateLeap(float deltaTime) { LeapManager::nextFrame(_myAvatar); } +void Application::updateSixense() { + bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings); + PerformanceWarning warn(showWarnings, "Application::updateSixense()"); + + _sixenseManager.update(); +} + void Application::updateSerialDevices(float deltaTime) { bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings); PerformanceWarning warn(showWarnings, "Application::updateSerialDevices()"); @@ -2412,6 +2419,7 @@ void Application::update(float deltaTime) { updateMouseVoxels(deltaTime, mouseRayOrigin, mouseRayDirection, distance, face); // UI/UX related to voxels updateHandAndTouch(deltaTime); // Update state for touch sensors updateLeap(deltaTime); // Leap finger-sensing device + updateSixense(); // Razer Hydra controllers updateSerialDevices(deltaTime); // Read serial port interface devices updateAvatar(deltaTime); // Sample hardware, update view frustum if needed, and send avatar data to mixer/nodes updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process... diff --git a/interface/src/Application.h b/interface/src/Application.h index 78530ecea2..945de07303 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -50,6 +50,7 @@ #include "avatar/HandControl.h" #include "devices/Faceshift.h" #include "devices/SerialInterface.h" +#include "devices/SixenseManager.h" #include "devices/Webcam.h" #include "renderer/AmbientOcclusionEffect.h" #include "renderer/GeometryCache.h" @@ -242,6 +243,7 @@ private: glm::vec3& eyePosition); void updateHandAndTouch(float deltaTime); void updateLeap(float deltaTime); + void updateSixense(); void updateSerialDevices(float deltaTime); void updateThreads(float deltaTime); void updateMyAvatarSimulation(float deltaTime); @@ -337,6 +339,8 @@ private: Faceshift _faceshift; + SixenseManager _sixenseManager; + Camera _myCamera; // My view onto the world Camera _viewFrustumOffsetCamera; // The camera we use to sometimes show the view frustum from an offset mode Camera _mirrorCamera; // Cammera for mirror view diff --git a/interface/src/avatar/Hand.cpp b/interface/src/avatar/Hand.cpp index 2ee8aad4ae..ae22752acb 100755 --- a/interface/src/avatar/Hand.cpp +++ b/interface/src/avatar/Hand.cpp @@ -264,7 +264,7 @@ void Hand::renderLeapHands() { for (size_t i = 0; i < getNumPalms(); ++i) { PalmData& palm = getPalms()[i]; if (palm.isActive()) { - const float palmThickness = 0.002f; + const float palmThickness = 0.02f; glColor4f(handColor.r, handColor.g, handColor.b, 0.25); glm::vec3 tip = palm.getPosition(); glm::vec3 root = palm.getPosition() + palm.getNormal() * palmThickness;