12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- = 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
|