openvr | More information OpenVR and SteamVR can be | Augmented Reality library
kandi X-RAY | openvr Summary
kandi X-RAY | openvr Summary
OpenVR is an API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting. This repository is an SDK that contains the API and samples. The runtime is under SteamVR in Tools on Steam.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of openvr
openvr Key Features
openvr Examples and Code Snippets
Community Discussions
Trending Discussions on openvr
QUESTION
I couldn't find the implementation (aka. source) of the pure virtual functions from the openvr header.
I am mainly interested in the GetProjectionMatrix()
function.
Where I searched (with no results):
- Simple goole search
- Searched the repo for the function name
- In the extracted symbols, import and export tables of most of the included libraries (.dll and .lib)
What I found so far: https://github.com/ValveSoftware/openvr/issues/103 , but this seems to deal with problems generated by different compilers. The error of this issue is generated in vrclient.dll provided by SteamVR. There seems to be no public source for both of them.
Any idea, how (/where) these virtual functions are implemented?
...ANSWER
Answered 2022-Mar-16 at 14:45You won't like the answer, because the sad reality is that it has no open sources available to us.
OpenVR is a purely virtual interface library, yes interfaces are open source, but the actual implementations of those interface are not. In case of libopenvr_api
(it looks like) those are appended as a binary blob to the interface build.
The way that works is through factory functions that are declared in the interface library, but defined somewhere else, those externally defined parts are like a black box to us, and unless Valve suddenly change their minds it'll remain that way.
Those factory functions are declared and used in the OPENVR_INTERFACE_INTERNAL
sections of openvr.h
and openvr_driver.h
(also in case of openvr.h
those factory functions are defined in openvr_capi.h
, but they use factory functions that are defined in a shared library which is just loaded at runtime and the entire pattern is very similar to the one in openvr.h
).
EDIT:
(also in case of
openvr.h
those factory functions are defined inopenvr_capi.h
, but they use factory functions that are defined in a shared library which is just loaded at runtime and the entire pattern is very similar to the one inopenvr.h
)
My memory is clearly failing me, the internal factory functions are defined in openvr_api_public.cpp
which is one of the source files libopenvr_api
is build from, not in openvr_capi.h
(in my defense i didn't look at libopenvr_api
sources in a while).
QUESTION
I'm trying to implement a basic OpenVR C++ app. This is my code:
...ANSWER
Answered 2022-Mar-11 at 16:41Okay, I've found the solution.
QUESTION
I have Installed OpenVR through vcpkg and am trying to link it via CMAKE, the issue is that I don't know how to do it, nor can I find any info on how to.
Unlike other packages where once installed it tells you how to link via CMAKE by using find_package and target_link_libraries, OpenVR doesn't. I initially assumed that
...ANSWER
Answered 2022-Feb-09 at 20:22Here is a find module that seems to work. OpenVR does some very non-standard things with its debug library naming. I tested this on Linux, and it works, but I do not have easy access to a Windows machine right now. Let me see the error message if it fails and I can try to fix it.
You'll use it like this, from the top-level CMakeLists.txt
QUESTION
I downloaded the release build without modifying (https://www.lwjgl.org/customize) I put all the classes in Eclipse. Some classes are not recognized
The codes that do not need these classes in error, work normally. As in https://www.lwjgl.org/guide
All the classes I put:
...ANSWER
Answered 2021-Mar-27 at 09:20You are trying to compile LWJGL 2 code here. All the imports that it cannot find pertain to the verison 2 of LWJGL. The current version that you can get from the mentioned lwjgl site is 3 and version 3 is incompatible with version 2.
Either explicitly download LWJGL 2 from e.g. http://legacy.lwjgl.org/ or rewrite your code to work with LWJGL 3.
If you go the LWJGL 2 route, though, please note that it hasn't been actively maintained anymore for more than 6 years now.
QUESTION
I cloned the openVR repo and went directly to compile the driver_sample and hellovr_dx12 and hellovr_opengl projects. The builds were successful. But both the helloVR applications failed to launch with an error:
...ANSWER
Answered 2021-Mar-22 at 15:46I updated SteamVR to the lastest version and the issue is solved.
QUESTION
I am trying obs-studio-node.
This module require libobs
as dependency. While building this module it download a pre-built version of libobs
if none is specified. We can specify out custom libobs
as mentioned in README.md
I followed these steps to build libobs
. These steps are listed in README.md
git clone https://github.com/stream-labs/obs-studio
cd obs-studio
git submodule update --init --recursive
mkdir build
cd build
cmake .. -DENABLE_UI=false -DDepsPath="C:\Users\alokm\Downloads\dependencies2019\win64" -DENABLE_SCRIPTING=false -G"Visual Studio 16 2019" -A x64
cmake --build .
cpack -G ZIP
Last step (cpack -G ZIP
) is failing with errors
ANSWER
Answered 2021-Feb-25 at 08:04Check what exact configuration you have built. The output of CPack tries to install the Release
configuration. However, you didn't mention any when did project configuration (and it may project-dependent to set some defaults).
Try add explicitly what you want:
QUESTION
So trying to hook a OpenVR method "ITrackedDeviceServerDriver::GetPose" but i'm getting access violations when my custom hooked method returns out (I think something is wrong with calling convention but idk enough about what x64 asm expects).
All other methods I hook in "ITrackedDeviceServerDriver" work fine. Only "GetPose" fails.
Class thats being hooked looks like:
...ANSWER
Answered 2020-Oct-04 at 12:55as already noted in comments
__thiscall
and__fastcall
are not the same calling convention
even for x64. for x86 this is obvious - __thiscall
- pass first parameter (this) via Ecx register, and next parameters via stack (i skip now float/double parameters case). __fastcall
- 1-first via Ecx, 2-second via Edx, and next via stack
in case x64 (again let assume that no float/double parameters) - first 4 parameters via Rcx, Rdx, R8, R9 and next in stack. so look like x64 have single and common calling convention (no difference between __stdcall, __fastcall, __cdecl, __thiscall)
but exist question about implicit parameters. say in case __thiscall - the first parameter - this is implicit parameter, always passed as first parameter via Ecx/Rcx
and now case when function try "return" object. really on any platform function can return something only via cpu registers. it finite count, and only several of it can be used for return value store.
say on x86(x64) - for return value can be used: AL, AX, EAX, RAX, DAX:EAX, RDX:RAX so function can return only something that have size - 1, 2, 4, 8 (and 16 for x64)
if function try "return" object with another size - this is impossible do direct, compiler need transform your code. for example if you write function:
QUESTION
I'm attempting to play Mabinogi by Nexon on Linux Mint 20 (Ulyana) using Lutris. I've previously used Lutris to play Heroes of the Storm but otherwise don't have much experience with it (or with gaming on Linux, in general). There's no installer on the Lutris website for Mabinogi like there was for Heroes of the Storm, so I was on my own to try and figure everything out.
What I've triedI started by downloading the Nexon Launcher Installer from their website. I configured Lutris to launch this executable using Wine within a simulated Windows environment. When it first launched I noticed several files were created ("drive_c", "Program Files", "Users", etc -- mimicking a Windows file system). The launcher installer ran without issue and I installed the launcher to "C:\Program Files (x86)\Nexon"
I then re-configured Lutris to try and launch the Nexon Launcher instead of the Nexon Launcher Installer. When I hit "Play" in Lutris, nothing happened. Running ps -ax | grep "Nexon"
showed that it was theoretically running, but there was no window or visible UI even after several minutes of waiting. I checked the Lutris logs and noticed a message about a file missing (something like "10000.manifest.hash"). I Google'd this error and found plenty of people in Windows who had trouble running the Nexon Launcher with the same error, and the solution was to just install Mabinogi through Steam.
So next I downloaded the "Wine Steam" runner in Lutris and set this as the runner for Mabinogi, plugging in the app ID (212200). After Steam installed, launched, logged in, and downloaded Mabinogi I tried to launch the game. This time I saw a window pop up saying "Mabinogi is launching" and in the bottom-right the Nexon Game Security icon popped up, but then everything closed and the game never started.
Finally out of desperation I tried setting up a virtual computer using VirtualBox to play the game in its native Windows environment. I installed Windows 7 (the minimum required version according to the Nexon website). I downloaded Mabinogi through Steam on the virtual box. Upon trying to launch Mabinogi, I received the error error: "api-ms-win-crt-runtime-l1-1-0.dll is missing". I'm curious if this error is related to why I couldn't get Mabinogi working in Lutris.
Looking at a game that I had previously played in Lutris (Heroes of the Storm), I noticed a very similar DLL was listed in the "DLL overrides" section: "api-ms-win-crt-private-l1-1-0.dll". So I tried adding the runtime DLL to the overrides in Mabinogi with the same value ("n,b") - but this didn't work.
Looking at the Lutris logs when I try to launch Mabinogi through Wine Steam, there are several errors from \main\game-launch.js:109
. I'm not sure if this JS script is part of Lutris of part of the Nexon Launcher, but it could provide some hints. Among the logs the following lines stand out as potentially meaningful:
ANSWER
Answered 2020-Sep-22 at 19:20After a lot of work and research, I've gotten as far as I can and figured out where the major road block lies. The simple answer is: You cannot run Mabinogi in Lutris
Mabinogi uses an anti-cheat system that runs in kernel mode (ring 0). Wine runs in user mode (ring 3) and therefore cannot run this anti-cheat program.
The only solution is to play Mabinogi within a virtual machine (e.g. VirtualBox), since VMs run on a hypervisor (which from my understanding is kind of like a "negative" ring number, but effectively ring 0)
If you want to try some other Nexon games, I got the Nexon Launcher working in Lutris / Wine fairly easily. The trick was to download the latest Nexon Launcher since the older one (linked on the Mabinogi website) isn't sending a valid request to download the manifest file so it gets a 403. The latest launcher can be downloaded here: https://games.nexon.net/nexonlauncher
QUESTION
Odd question, but I'm having trouble boiling it down to a coherent question.
I have sampled data (60Hz) from Brekel OpenVR recorder, which includes the following parameters for the HMD itself:
- X, Y, Z positional coordinates
- Euler angles rotX, rotY, rot.
I'm processing the data in python. Overall, what I'm trying to do is to calculate measures of mobility: did someone look around more or less during a segment, and did they move around more or less?
For the positional coordinates that wasn't too difficult, I was able to calculate displacement, velocity, etc., by using the distances between subsequent positions. Now for the Euler angles, I'm having more trouble.
I've searched for the answer to my question, but none of the answer seemed to 'click'. What I think I need, is to convert the Euler angles to a directional vector, and then calculate the angle between the directional vectors of subsequent samples to see how much the gaze direction shifted. Once I have those, I can calculate means and SDs per subject, to see which of them looked around more (that's the idea anyway). I am unclear on the mathematics though. It would have been easier if my coordinates were roll, pitch, yaw, but I'm struggling with the Euler angles.
Suppose the Euler angles for two subsequent samples are:
- (rotX, rotY, rot) = (20°, 25°, 50°)
- (rotX2, rotY2, rot2) = (30°, 35°, 60°)
How can I quantify with what angle the direction of the HMD changed between those two samples?
...ANSWER
Answered 2020-Jul-27 at 18:32You can write a function to convert Euler angles to unit vectors, and another to take the angle between two unit vectors
QUESTION
I'm making a windows application in C++. There's an API which requires a configuration file, and also the absolute path of that configuration file. ( https://github.com/ValveSoftware/openvr/wiki/Action-manifest ). I would have an easier time reasoning about this if I understood expected practices for publishing an executable.
Should I package MyApp.exe in a folder named MyApp, with MyApp.exe at the root, and all resources/config alongside it? Does that mean that, when run, all relative paths referenced from within the executable should be relative to the MyApp folder? How can I get the absolute path of the folder to which all relative paths are relative? (Whereby I could get the full absolute path of the config file by simply concatenating that absolute path with the relative path of the config file, which I should have control over...)
edit: to clarify, the API requires the filepath to be absolute. See the link: "The full path to the file must be provided; relative paths are not accepted." I'm not looking for c++ workarounds that would let me not need absolute filepaths: I need to find a way to get the absolute file path, because it is a constraint of the API.
...ANSWER
Answered 2020-Jun-03 at 18:37Here's how you can do it on Windows.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install openvr
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page