= Virtual Reality :author: :revnumber: :revdate: 2016/10/23 11:22 :relfileprefix: ../ :imagesdir: .. ifdef::env-github,env-browser[:outfilesuffix: .adoc] Please see this link:https://hub.jmonkeyengine.org/t/official-vr-module/37830/67[forum post] for additional information on JME Official VR module. jMonkeyEngine 3 has a wide range of support for Virtual Reality (VR). The known supported systems are: HTC Vive and systems supporting SteamVR/OpenVR Native Oculus Rift support (and through SteamVR) Razer HDK and systems supporting OSVR Google Cardboard / GoogleVR Two implementations exist for OpenVR. A community maintained JNA based binding and LWJGL's JNI based. To use the JNA based bindings, put: settings.put(VRConstants.SETTING_VRAPI, VRConstants.SETTING_VRAPI_OPENVR_VALUE); in your settings. To use LWJGL, instead put: settings.put(VRConstants.SETTING_VRAPI, VRConstants.SETTING_VRAPI_OPENVR_LWJGL_VALUE); Note that the LWJGL bindings require LWJGL3 (jme3-lwjgl3) to be used. == Sample Application [source,java] ---- public class Main extends SimpleApplication { public static void main(String[] args) { AppSettings settings = new AppSettings(true); settings.put(VRConstants.SETTING_VRAPI, VRConstants.SETTING_VRAPI_OPENVR_LWJGL_VALUE); settings.put(VRConstants.SETTING_ENABLE_MIRROR_WINDOW, true); VREnvironment env = new VREnvironment(settings); env.initialize(); // Checking if the VR environment is well initialized // (access to the underlying VR system is effective, VR devices are detected). if (env.isInitialized()){ VRAppState vrAppState = new VRAppState(settings, env); vrAppState.setMirrorWindowSize(1024, 800); Main app = new Main(vrAppState); app.setLostFocusBehavior(LostFocusBehavior.Disabled); app.setSettings(settings); app.setShowSettings(false); app.start(); } } public Main(AppState... appStates) { super(appStates); } @Override public void simpleInitApp() { Box b = new Box(1, 1, 1); Geometry geom = new Geometry("Box", b); Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); mat.setColor("Color", ColorRGBA.Blue); geom.setMaterial(mat); rootNode.attachChild(geom); } @Override public void simpleUpdate(float tpf) { //TODO: add update code } @Override public void simpleRender(RenderManager rm) { //TODO: add render code } } ---- Project source: https://github.com/neph1/VRSampleApplication == Google Cardboard VR SDK 1.0 integration gvr-android-jme (https://github.com/nordfalk/gvr-android-jme) == Legacy The following projects are not up to date, but may provide functionality not found in the other packages. Google Cardboard up to version 0.6: https://github.com/neph1/jme-cardboard