Virtual Reality
Please see this 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
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