Can I use Oculus Quest 2 PC link mode for SteamVR development?
Hi, I want to develop content for Vive pro and Vive Cosmos but I don't really want to buy them because I plan to get a Oculus Q2 Can I develop and test SteamVR content for VIVE and use Oculus in the development for testing? Will it cause any problems? for example Key bindings? I would be very grateful if you could help me with this! Thanks!Solved6.9KViews0likes5CommentsOVR Camera Rig does not work on SteamVR
I used Oculus Integration-V.1.31.0, which is fully compatible with OpenXR, and set RunTime for SteamVR. However, the OVRCameraRig cannot receive tracking, the camera is fixed, and the arm does not move. SteamVR has been updated to the latest version. If anyone faces the same problem, can you tell me how it was solved?2.7KViews0likes2CommentsUnity XR: Is Oculus Platform SDK required in Player Settings?
I have my app working fine with both Vive and Rift when using only OpenVR SDK in player settings. To prepare for submission to oculus store, I need to run the Validation tools, (VRC Validator etc) none of the test passed until I added Oculus to the list of "Virtual Reality SDK's" in the "XR Settings\Virtual Reality Supported" settings. Obviously the Oculus plugin is running with only OpenVR or else it would not work in my Rift, which leads to my first question: Q1: Why should I need to add the Oculus SDK in the XR settings? Once I added the Oculus SDK and made it the FIRST SDK in the list, the first few tests started passing.. Starting TestSdkVersion SDK version detected 1.27 for processId 0x1ed0 SDK version detected 1.27 for processId 0x1ed0 Engine Identification for processId 0x1ed0 EngineName: Unity EnginePluginName: OVRPlugin EnginePluginVersion: 1.27.0 EngineVersion: 2018.1.3.10828496 Cleaning up... Test PASSED Starting TestEntitlementCheck Cleaning up... Test PASSED Starting TestOculusDLLIncludes Enumerating the DLLs loaded by the application and verifying that Oculus DLLs are loaded from the Oculus runtime directory. Cleaning up... Test PASSED .... Yeah, some test are passing.. but the rest of the tests fail.. the game just doesn't work anymore.. Q2: When Oculus SKD is first in the list I get Unity console spam with these errors: Assertion failed: Assertion failed on expression: 'IsMatrixValid(matrix)' Screen position out of view frustum (screen pos 0.000000, 0.000000, 1.000000) (Camera rect 0 0 1344 1600) Screen position out of view frustum (screen pos 1344.000000, 0.000000, 1.000000) (Camera rect 0 0 1344 1600) Im sure the errors above are due to my using the STEAM VR camera rig prefab.. I could probably fix it.. but I want both SteamVR and Oculus option. Or is that against the rules?1.3KViews0likes1CommentOculus rift CV1 shows unstable speed, sometimes very slow
Hello everyone, Sometimes oculus helmets have to wait on the head for a long time before they can see the picture. VR is developed by HTC vive development kit.what is the way to remove the helmet recognition light function so that the helmet always shows images? Does the helmet always show the image will not affect the helmet? For example, if there is a long period of fever, will it be possible to burn it?466Views0likes0CommentsSteamVR Oculus driver fights with other OnPoseUpdate hooks.
Trying to make an app that lets you adjust your playspace on the fly. (Lets you climb around in other games like VRChat.) VR Input emulator has an OnPoseUpdate hook that simply offsets the vecPosition of devices which is exactly what I need to let the player grab and move themselves around. Though it seems as though Oculus's SteamVR driver interferes with it asynchronously, causing an extreme amount of jitter. The exact same code running with a Vive works perfectly, and I believe this is because there isn't multiple OnPoseUpdate hooks interfering with each other. Here's a minimal app that only requires OpenVR and VR Input Emulator as dependencies that causes the problem. #include <iostream> #include <algorithm> #include <string> #include <thread> #include <openvr.h> #include <vrinputemulator.h> static vr::IVRSystem* m_VRSystem; static vrinputemulator::VRInputEmulator inputEmulator; static vr::HmdVector3d_t lastLeftPos; static vr::HmdVector3d_t lastRightPos; static vr::HmdVector3d_t offset; static int currentFrame; static vr::TrackedDevicePose_t devicePoses[vr::k_unMaxTrackedDeviceCount]; void updateOffset() { float fSecondsSinceLastVsync; vr::VRSystem()->GetTimeSinceLastVsync(&fSecondsSinceLastVsync, NULL); float fDisplayFrequency = vr::VRSystem()->GetFloatTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_DisplayFrequency_Float); float fFrameDuration = 1.f / fDisplayFrequency; float fVsyncToPhotons = vr::VRSystem()->GetFloatTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_SecondsFromVsyncToPhotons_Float); float fPredictedSecondsFromNow = fFrameDuration - fSecondsSinceLastVsync + fVsyncToPhotons; vr::VRSystem()->GetDeviceToAbsoluteTrackingPose(vr::TrackingUniverseStanding, fPredictedSecondsFromNow, devicePoses, vr::k_unMaxTrackedDeviceCount); vr::HmdVector3d_t delta; delta.v[0] = 0; delta.v[1] = 0; delta.v[2] = 0; auto leftId = vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(vr::TrackedControllerRole_LeftHand); if (leftId != vr::k_unTrackedDeviceIndexInvalid ) { vr::TrackedDevicePose_t* leftPose = devicePoses + leftId; if (leftPose->bPoseIsValid && leftPose->bDeviceIsConnected) { vr::HmdMatrix34_t* leftMat = &(leftPose->mDeviceToAbsoluteTracking); vr::HmdVector3d_t leftPos; leftPos.v[0] = leftMat->m[0][3] - offset.v[0]; leftPos.v[1] = leftMat->m[1][3] - offset.v[1]; leftPos.v[2] = leftMat->m[2][3] - offset.v[2]; vr::VRControllerState_t leftButtons; vr::VRSystem()->GetControllerState(leftId, &leftButtons, sizeof(vr::VRControllerState_t)); if (leftButtons.ulButtonPressed & (1<<7) ) { delta.v[0] = leftPos.v[0] - lastLeftPos.v[0]; delta.v[1] = leftPos.v[1] - lastLeftPos.v[1]; delta.v[2] = leftPos.v[2] - lastLeftPos.v[2]; } lastLeftPos.v[0] = leftPos.v[0]; lastLeftPos.v[1] = leftPos.v[1]; lastLeftPos.v[2] = leftPos.v[2]; } } auto rightId = vr::VRSystem()->GetTrackedDeviceIndexForControllerRole(vr::TrackedControllerRole_RightHand); if (rightId != vr::k_unTrackedDeviceIndexInvalid ) { vr::TrackedDevicePose_t* rightPose = devicePoses + rightId; if (rightPose->bPoseIsValid && rightPose->bDeviceIsConnected) { vr::HmdMatrix34_t* rightMat = &(rightPose->mDeviceToAbsoluteTracking); vr::HmdVector3d_t rightPos; rightPos.v[0] = rightMat->m[0][3] - offset.v[0]; rightPos.v[1] = rightMat->m[1][3] - offset.v[1]; rightPos.v[2] = rightMat->m[2][3] - offset.v[2]; vr::VRControllerState_t rightButtons; vr::VRSystem()->GetControllerState(rightId, &rightButtons, sizeof(vr::VRControllerState_t)); if (rightButtons.ulButtonPressed & (1<<7) ) { delta.v[0] = rightPos.v[0] - lastRightPos.v[0]; delta.v[1] = rightPos.v[1] - lastRightPos.v[1]; delta.v[2] = rightPos.v[2] - lastRightPos.v[2]; } lastRightPos.v[0] = rightPos.v[0]; lastRightPos.v[1] = rightPos.v[1]; lastRightPos.v[2] = rightPos.v[2]; } } offset.v[0] -= std::clamp(delta.v[0], (double)-0.1f, (double)0.1f); offset.v[1] -= std::clamp(delta.v[1], (double)-0.1f, (double)0.1f); offset.v[2] -= std::clamp(delta.v[2], (double)-0.1f, (double)0.1f); } void viveMove() { for (uint32_t deviceIndex = 0; deviceIndex < vr::k_unMaxTrackedDeviceCount; deviceIndex++) { if (!vr::VRSystem()->IsTrackedDeviceConnected(deviceIndex)) { continue; } vrinputemulator::DeviceInfo info; inputEmulator.getDeviceInfo(deviceIndex, info); if (info.offsetsEnabled == false) { inputEmulator.enableDeviceOffsets(deviceIndex, true); } inputEmulator.setDriverTranslationOffset(deviceIndex, offset); } } int main( int argc, char** argv ) { // Initialize stuff vr::EVRInitError error = vr::VRInitError_Compositor_Failed; std::cout << "Looking for SteamVR..."; while (error != vr::VRInitError_None) { m_VRSystem = vr::VR_Init(&error, vr::VRApplication_Background); if (error != vr::VRInitError_None) { std::this_thread::sleep_for(std::chrono::seconds(1)); } } std::cout << "Success!\n"; std::cout << "Looking for VR Input Emulator..."; while (true) { try { inputEmulator.connect(); break; } catch (vrinputemulator::vrinputemulator_connectionerror e) { std::this_thread::sleep_for(std::chrono::seconds(1)); continue; } } std::cout << "Success!\n"; lastLeftPos.v[0] = 0; lastLeftPos.v[1] = 0; lastLeftPos.v[2] = 0; lastRightPos.v[0] = 0; lastRightPos.v[1] = 0; lastRightPos.v[2] = 0; offset.v[0] = 0; offset.v[1] = 0; offset.v[2] = 0; // Main loop bool running = true; while (running) { if (vr::VRCompositor() != NULL) { vr::Compositor_FrameTiming t; bool hasFrame = vr::VRCompositor()->GetFrameTiming(&t, 0); if (hasFrame && currentFrame != t.m_nFrameIndex) { currentFrame = t.m_nFrameIndex; updateOffset(); viveMove(); } } } return 0; } Anyone know if Oculus's SteamVR driver is modifiable so I can get it and vrinputemulator to sync on the same mutex lock? Or should I be submitting this problem elsewhere?844Views0likes1CommentUploading a build failed with invalid DLLs present
Hi, We are releasing on both Steam and Oculus so our build contains DLLs for both systems. However trying to upload this to the Oculus system results in an error as it contains invalid DLLs. To remove these from the package would take considerable effort and making 2 separate packages of the game every time, which is quite time consuming. Is there a way around this? Sam969Views0likes2CommentsOculus ASW doesn't play nice with SteamVR / Unity / The Lab Renderer
Hi, we're using The Lab Renderer (https://www.assetstore.unity3d.com/en/#!/content/63141) with Unity and SteamVR and getting Oculus-only artifacts that make our VR app basically unusable. Whenever the CPU throttles, on Oculus only, every other frame is shifted up around 50% and rotated/scaled slightly. This is extremely uncomfortable. We diagnosed and found that, to reproduce this, it's as simple as create a new Unity project (we tested 5.4 and 5.5) install a fresh copy of The Lab Renderer from the Unity asset store open the 4_spots sample scene add a script that prints to the debug console 40 times every frame (or any other task that throttles the CPU). e.g. void Update() { for (int i=0; i<40; i++) { Debug.Log("foo"); }} When we run the built .exe, we get this artifact on two different computers. Pressing Ctrl + 1 on the numpad fixes the artifact, which points to ASW as the culprit. We see this on Oculus only (it's fine on Vive). We are using SteamVR. I understand there is no way to disable ASW programmatically in 1.10 (https://www.reddit.com/r/oculus/comments/5eqow7/how_to_disable_asw_for_a_computer/). We are left now having to ask our users to disable ASW because this artifact results in extreme VR nausea. My questions for the community is anyone else experiencing this? any ideas for a fix? (our hypothesis is that ASW is not using the SteamVR calibration data..... and thus the ASW frames are massively shifted relative to the SteamVR, non-ASW frames) any one know a way to disable ASW programmatically for our app? we hate having to ask our users to manually press Ctrl + NumPad1 to get a nausea-free experience, but have no other workaround at this point. (https://forums.oculus.com/community/discussion/44941/how-to-disable-asw) please help!3.4KViews0likes9CommentsOculus shutting down after repositioning it on my head
Hi, i am developing the game 'Elena' and I have the problem that every time try to test a Bugfix (we just released :smile:) the headset shuts down when I put my hands on the rift to adjust it for perfect vision. A notification appears that the headset could not be found and Steam VR shuts down and the Unreal Engine shuts down too. Could someone help me try fixing this? It seems the problem is the check whether the headset is used or not because the errors do not appear when I press my finger against the little sensor. Regards, Kasimir398Views0likes0Comments