Official VR module

Yes i made this correction myself… I think that is a bug of graddle that can’t determine the running java version properly.

1 Like

Thanks for the follow-up. After pulling master from the main JME repo I was able to make it work…

I had to build JME, then add the VR JAR manually. I also had to download and add the JNA JARs.

Very excited to play with this. :slight_smile:

1 Like

While playing with the sample code above, I can’t seem to get SETTING_DISABLE_VR or SETTING_VR_FORCE to allow me to run the code without my headset. Is this a possibility? I’d like to be able to run with and without VR.

Thanks again!

1 Like

LWJGL v3.1.2 Brings OpenVR Bindings, Tiny OpenEXR

2 Likes

Hello,

I know that LWJGL now handles OpenVR bindings. I will integrate the LWJGL binding as an underlying VR wrapper for the next release of JMonkey. However, my aims its to provide a VR module that is as independant as possible from the native VR systems (as it was aimed with LWJGL/JOGL for JMonkey). So the integration of the LWGJL / OpenVR wrapping should not affect the VR AppState and the other high level VR functionalities.

5 Likes

I’ve been able to get your VRAppStateSample.java to run in Linux (Ubuntu 16.04 NVidia GeForce GTX 950) using OSVR on an HDK 2 using the extended mode json config file. I had to remove the places where you explicitly prevent 64 bit Linux from running. It looks great, and the headset works, but for some reason the keyboard input stops working. Do you have any idea why this might be the case? Does OSVR try to grab the keyboard before JME3 gets to it? It also seems to create 2 windows, a JMonkeyEngine window and a second window called OSVR0. I have to alt-tab to set focus to the new window before it starts rendering, it initially displays a blank window with nothing in it until I alt-tab specifically into the OSVR0 window. Regular JME3 windows don’t exhibit this behavior. Anyone have any ideas why? I’ve pasted the debug output from the console below:

(2017.10.15-00:18:56) CONFIG [VREnvironment] [initialize] Initializing VR environment.
(2017.10.15-00:18:56) CONFIG [VREnvironment] [initialize] Creating OSVR wrapper [SUCCESS]
(2017.10.15-00:18:56) CONFIG [OSVR] [initialize] Initialize OSVR system.
e[1mOct 15 00:18:57.105 info [OSVR]: Logging for /usr/lib/jvm/java-8-oracle/bin/java
e[00me[1mOct 15 00:18:57.105 info [OSVR: j]: OSVR client context initialized for j
e[00me[1mOct 15 00:18:57.125 info [OSVR: j]: Got connection to main OSVR server
e[00me[1mOct 15 00:18:57.458 info [OSVR: j]: Connected 0 of 0 unconnected paths successfully
e[00me[1mOct 15 00:18:57.459 info [OSVR: j]: Connection process took 334ms: have connection to server, have path tree
e[00m(2017.10.15-00:18:57) CONFIG [OSVRInput] [init] Initialize OSVR input.
e[1mOct 15 00:18:57.464 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/hands/left
e[00me[1mOct 15 00:18:57.464 info [OSVR: j]: Could not resolve source for /me/hands/left
e[00me[1mOct 15 00:18:57.464 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/hands/right
e[00me[1mOct 15 00:18:57.464 info [OSVR: j]: Could not resolve source for /me/hands/right
e[00me[1mOct 15 00:18:57.467 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/0
e[00me[1mOct 15 00:18:57.467 info [OSVR: j]: Could not resolve source for /controller/left/0
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/1
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/left/1
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/2
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/left/2
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/3
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/left/3
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/4
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/left/4
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/0
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/right/0
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/1
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/right/1
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/2
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/right/2
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/3
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/right/3
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/4
e[00me[1mOct 15 00:18:57.469 info [OSVR: j]: Could not resolve source for /controller/right/4
e[00me[1mOct 15 00:18:57.469 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/bumper
e[00me[1mOct 15 00:18:57.470 info [OSVR: j]: Could not resolve source for /controller/left/bumper
e[00me[1mOct 15 00:18:57.470 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/bumper
e[00me[1mOct 15 00:18:57.470 info [OSVR: j]: Could not resolve source for /controller/right/bumper
e[00me[1mOct 15 00:18:57.470 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/joystick/button
e[00me[1mOct 15 00:18:57.470 info [OSVR: j]: Could not resolve source for /controller/left/joystick/button
e[00me[1mOct 15 00:18:57.470 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/joystick/button
e[00me[1mOct 15 00:18:57.470 info [OSVR: j]: Could not resolve source for /controller/right/joystick/button
e[00me[1mOct 15 00:18:57.470 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/trigger
e[00me[1mOct 15 00:18:57.470 info [OSVR: j]: Could not resolve source for /controller/left/trigger
e[00me[1mOct 15 00:18:57.470 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/trigger
e[00me[1mOct 15 00:18:57.470 info [OSVR: j]: Could not resolve source for /controller/right/trigger
e[00me[1mOct 15 00:18:57.471 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/joystick/x
e[00me[1mOct 15 00:18:57.471 info [OSVR: j]: Could not resolve source for /controller/left/joystick/x
e[00me[1mOct 15 00:18:57.471 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/left/joystick/y
e[00me[1mOct 15 00:18:57.471 info [OSVR: j]: Could not resolve source for /controller/left/joystick/y
e[00me[1mOct 15 00:18:57.471 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/joystick/x
e[00me[1mOct 15 00:18:57.471 info [OSVR: j]: Could not resolve source for /controller/right/joystick/x
e[00me[1mOct 15 00:18:57.471 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /controller/right/joystick/y
e[00me[1mOct 15 00:18:57.471 info [OSVR: j]: Could not resolve source for /controller/right/joystick/y
e[00me[1mOct 15 00:18:57.479 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/head
e[00me[1mOct 15 00:18:57.542 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Client/TrackerRemoteFactory.cpp:93: Constructed a TrackerHandler for com_osvr_Multiserver/OSVRHackerDevKit0@localhost:3883 sensor 0
e[00me[1mOct 15 00:18:57.542 info [OSVR: j]: Successfully produced handler for /me/head
e[00me[1mOct 15 00:18:57.542 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/head
e[00me[1mOct 15 00:18:57.542 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/head
e[00me[1mOct 15 00:18:57.542 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Client/DisplayConfig.cpp:195: Display:
e[00me[1mOct 15 00:18:57.542 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/ClientKit/DisplayC.cpp:47: Created an OSVR_DisplayConfigObject!
e[00mWaiting for the display to fully start up, including receiving initial pose update…
OK, display startup status is good!
(2017.10.15-00:18:57) CONFIG [VREnvironment] [initialize] VR native wrapper initialized [SUCCESS]
(2017.10.15-00:18:57) CONFIG [VRAppState] [stateAttached] Using given settings.
(2017.10.15-00:18:57) SEVERE [com.jme3.app.VRAppState] [stateAttached] null
(2017.10.15-00:18:57) SEVERE [VRAppState] [stateAttached] caused by null
(2017.10.15-00:18:57) SEVERE [VRAppState] [stateAttached] at com.jme3.app.VRAppState.stateAttached(VRAppState.java:527)
(2017.10.15-00:18:57) SEVERE [VRAppState] [stateAttached] at com.jme3.app.state.AppStateManager.attach(AppStateManager.java:133)
(2017.10.15-00:18:57) SEVERE [VRAppState] [stateAttached] at com.jme3.app.LegacyApplication.(LegacyApplication.java:118)
(2017.10.15-00:18:57) SEVERE [VRAppState] [stateAttached] at com.jme3.app.SimpleApplication.(SimpleApplication.java:104)
(2017.10.15-00:18:57) SEVERE [VRAppState] [stateAttached] at sample.VRAppStateSample.(VRAppStateSample.java:70)
(2017.10.15-00:18:57) SEVERE [VRAppState] [stateAttached] at sample.VRAppStateSample.main(VRAppStateSample.java:510)
(2017.10.15-00:18:57) CONFIG [VRAppState] [stateAttached] Updated underlying application settings.
(2017.10.15-00:18:57) INFO [JmeDesktopSystem] [initialize] Running on jMonkeyEngine 3.2-16

  • Branch: master
  • Git Hash: 556e3de
  • Build Date: 2017-10-03
    (2017.10.15-00:18:58) INFO [LwjglContext] [printContextInitInfo] LWJGL 3.1.2 build 29 context running on thread main
  • Graphics Adapter: GLFW 3.3.0 X11 GLX EGL clock_gettime /dev/js shared
    (2017.10.15-00:18:58) INFO [GLRenderer] [loadCapabilitiesCommon] OpenGL Renderer Information
  • Vendor: NVIDIA Corporation
  • Renderer: GeForce GTX 950/PCIe/SSE2
  • OpenGL Version: 3.2.0 NVIDIA 375.66
  • GLSL Version: 1.50 NVIDIA via Cg compiler
  • Profile: Core
    (2017.10.15-00:18:58) WARNING [AssetConfig] [loadText] Cannot find loader com.jme3.scene.plugins.blender.BlenderModelLoader
    (2017.10.15-00:18:58) INFO [ALAudioRenderer] [initOpenAL] Audio Renderer Information
  • Device: OpenAL Soft
  • Vendor: OpenAL Community
  • Renderer: OpenAL Soft
  • Version: 1.1 ALSOFT 1.17.2
  • Supported channels: 64
  • ALC extensions: ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE ALC_EXT_DEDICATED ALC_EXT_disconnect ALC_EXT_EFX ALC_EXT_thread_local_context ALC_SOFTX_device_clock ALC_SOFT_HRTF ALC_SOFT_loopback ALC_SOFTX_output_limiter ALC_SOFT_pause_device
  • AL extensions: AL_EXT_ALAW AL_EXT_BFORMAT AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_BFORMAT AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_EXT_SOURCE_RADIUS AL_EXT_STEREO_ANGLES AL_LOKI_quadriphonic AL_SOFT_block_alignment AL_SOFT_deferred_updates AL_SOFT_direct_channels AL_SOFT_gain_clamp_ex AL_SOFT_loop_points AL_SOFT_MSADPCM AL_SOFT_source_latency AL_SOFT_source_length AL_SOFT_source_resampler AL_SOFT_source_spatialize
    (2017.10.15-00:18:58) INFO [ALAudioRenderer] [initOpenAL] Audio effect extension version: 1.0
    (2017.10.15-00:18:58) INFO [ALAudioRenderer] [initOpenAL] Audio max auxiliary sends: 2
    (2017.10.15-00:18:58) INFO [VRAppStateSample] [simpleInitApp] Updating asset manager with /home/silicon-admin/workspace3/jme3test
    (2017.10.15-00:18:58) WARNING [Material] [checkSetParam] Material parameter being set: Texture with type Texture2D doesn’'t match definition types TextureCubeMap
    e[1mOct 15 00:18:58.698 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/head
    e[00me[1mOct 15 00:18:58.698 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/head
    e[00me[1mOct 15 00:18:58.698 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/head
    e[00me[1mOct 15 00:18:58.698 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Client/DisplayConfig.cpp:195: Display:
    e[00me[1mOct 15 00:18:58.698 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/ClientKit/DisplayC.cpp:47: Created an OSVR_DisplayConfigObject!
    e[00me[31me[1mOct 15 00:18:58.899 error [createRenderManager]: Got Display info from server (ignore earlier errors that occured while we were waiting to connect)
    e[00mOSVRDisplayConfiguration::parse(): WARNING: Your display descriptor is outdated (using an outdated schema) and may not work with all applications. Please check with your vendor or the OSVR community to get an updated one matching the most recent JSON Schema for display descriptors.
    OSVRDisplayConfiguration::parse(): Using mono point sample distortion.
    OSVRDisplayConfiguration::parse(): Processing JSON data into mono point samples description structure.
    OSVRDisplayConfiguration::parse(): Initial processing complete. Loaded mono point samples data with 1581 and 1581 samples per eye, respectively.
    OSVRDisplayConfiguration::parse(): Using distortion method “mono_point_samples_built_in”: “OSVR_HDK_20_V1”
    e[1mOct 15 00:18:58.929 info [createRenderManager]: Display descriptor reports vendor as OSVR
    e[00me[1mOct 15 00:18:58.929 info [createRenderManager]: Adding direct mode candidate PNPID SEN described as Some OSVR HDK units with early firmware/EDID data
    e[00me[1mOct 15 00:18:58.929 info [createRenderManager]: Adding direct mode candidate PNPID SVR described as Most OSVR HDK units
    e[00me[1mOct 15 00:18:58.929 info [createRenderManager]: Adding direct mode candidate PNPID AUO described as Some OSVR HDK2 firmware versions
    e[00me[1mOct 15 00:18:58.930 info [OSVR: com.osvr.renderManager]: OSVR client context initialized for com.osvr.renderManager
    e[00me[1mOct 15 00:18:58.970 info [OSVR: com.osvr.renderManager]: Got connection to main OSVR server
    e[00me[1mOct 15 00:18:59.303 info [OSVR: com.osvr.renderManager]: Connected 0 of 0 unconnected paths successfully
    e[00me[1mOct 15 00:18:59.304 info [OSVR: com.osvr.renderManager]: Connection process took 334ms: have connection to server, have path tree
    e[00me[1mOct 15 00:18:59.305 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/head
    e[00me[1mOct 15 00:18:59.389 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Client/TrackerRemoteFactory.cpp:93: Constructed a TrackerHandler for com_osvr_Multiserver/OSVRHackerDevKit0@localhost:3883 sensor 0
    e[00me[1mOct 15 00:18:59.389 info [OSVR: com.osvr.renderManager]: Successfully produced handler for /me/head
    e[00me[1mOct 15 00:18:59.389 info [OSVR]: /home/silicon-admin/osvr_linux/OSVR-Core/src/osvr/Common/ClientInterface.cpp:38: Interface initialized for /me/head
    e[00mContext sharing success!
1 Like

I figured out that when the OSVR0 window has focus, keyboard input works. I still haven’t figured out why it requires an alt-tab to begin rendering. Also, I’ve noticed that if I turn my head past 90 degrees in either direction, the display begins mirroring backwards, as if my head is turning back forwards, but its not. This has the effect of me not being able to look behind myself. This doesn’t happen when running the built in OSVR test applications. Is this something that is in the jme3-vr code?

1 Like

I compared VRViewManagerOSVR with VRViewMangerOpenVR and it seems *OSVR is a bit behind in terms of changes. There are a bunch of fields that override the ones from AbstractVRViewManager etc. It’s possible this could cause some of the issues you describe. I’ve made the class more similar and made a PR. I’m however a bit reluctant to merge it since I don’t know if it would cause any runtime issues (since I can’t test it). Most likely NPE in that case. Are you able to pull the change yourself and build it and see? I guess otherwise I can merge it since we don’t know of any other OSVR users.

1 Like

I’d love to try it :slight_smile: Thanks for the quick reply.

1 Like

I looked at the OSVR class and there is some massaging of the orientation quaternion going on there. I compared it with my old OSVR integration and it didn’t do anything that with the orientation. Not saying that that integration was without errors, it’s worth a test and see if it would improve the mirroring.

I’ll merge these changes as soon as Travis is done. Then I expect some trial and error before we get the orientation right. If you have the time, please test it out.

1 Like

That change seems to have inverted the head pitching and added a slight skew when looking up and down. It also didn’t seem to change the other problem where looking backwards doesn’t work. But now that I know changing OSVR.java can tweak how the camera moves, I can play around with it too.

1 Like

Please do. It’s getOrientation that I’ve changed now. But since the mirroring didn’t change, it’s probably not related to that after all, so that change can be reverted.

1 Like

I think it may be due to the coordinate system that OSVR uses. It may not match OpenGL’s coordinate system. I’m looking at some of the OSVR RenderManager’s C code and there is a function called OSVR_PoseState_to_OpenGL. I’ll try to decipher how its using the raw data from the hmd and turning that into an OpenGL usable quaternion.

Could it possibly be a projection matrix problem?

1 Like

I can’t say.
You can have a look at my old OSVR classes and see if they help you get a correct view. Example:

It’s over a year since I worked on those but I think they worked fine then.

1 Like

This is a link to a video showing what I see. With the headset I’m merely turning my head to the left (after first looking up and down and rotating my head too to test all axis). When I hit about 90 degrees from the original orientation, the display appears to warp, and then everything appears to invert. If I continue rotating, around 270 degrees, it corrects itself and the display works when pointing at the original orientation.

I also have a link to a video of a simple working example in the RenderManager (Not in JME3) where I do the same thing, turning the head to the left, and no warping occurs (This demo is just a cube room with different color walls).

I’ve checked the quaternions coming from the HDK2 and how they’re used and I believe they’re fine. The projection matrix also looks fine. What appears to be happening is that the distortion mesh itself looks to be warping and flipping. Notice in the second example that distortion mesh doesn’t move as the head moves. Does anyone have any idea why this would be happening? From looking at the code, it appears that OSVR and OpenVR do the distortion mesh differently, but I haven’t found anywhere yet that could cause the distortion mesh to warp as the head moves. Any clues would be helpful.

2 Likes

Hello,

At this time OSVR implementation for the jme3-vr module relies on a old version of the SDK. I will update it soon but as i do not pocess any OSVR device testing is difficult.

I will investigate the problem !!

1 Like

@seinturier IIRC LWJGL now has OSVR bindings - could you switch to them, to avoid pushing another large set of binaries?

1 Like

What version of the OSVR SDK does the jme3-vr module currently rely on?

1 Like

Hello,

I’m new to jMonkeyEngine.
I’ve been trying to understand how to use the jme3 VR module for a few hours now.

SteamVR is installed and the Home, Tutorial and Setup are working with my HTC Vive.

What I understand (correct me if I’m wrong):

  • This is the engine itself https://github.com/jMonkeyEngine/jmonkeyengine
  • This is the engine integrated in NetBeans: https://github.com/jMonkeyEngine/sdk
  • I assume the 3.1.0 SDK was built with the 3.1.0 Engine
  • This official page states that VR is supported in jme3 https://jmonkeyengine.github.io/wiki/jme3/virtualreality.html

What I did:

  • I installed jMonkeyEngine SDK 3.1.0 Stable (jmonkeyplatform-linux-x64.sh) from https://github.com/jMonkeyEngine/sdk/releases
  • I added https://github.com/neph1/VRSampleApplication to my project folder
  • I opened it in jme SDK
  • I right clicked on the project > Properties > Libraries > Add Libraries > jme3-core

At this point, I was left with 3 errors in Main.java, at the following lines:
import com.jme3.app.VRAppState;
import com.jme3.app.VRConstants;
import com.jme3.app.VREnvironment;

I thought I was going to find a jme3-VR lib… but no.

I this point I reached the end of my java/linux/jme knowledge and I can’t find any help on the web that covers this.

As my colleague like to say: Please explain like I’m 5.

Thank you

1 Like

I think the reason is that there’s been no stable build since jme3-vr was added. This could be made clearer. Currently you need to build GitHub - jMonkeyEngine/jmonkeyengine: A complete 3D game development suite written purely in Java. yourself to get it. I don’t know if it’s possible to make a nightly or unstable for those that don’t build the sources themselves.

1 Like