Skip to content

Commit

Permalink
Merge pull request #176 from richardTingle/deprecateOpenVr
Browse files Browse the repository at this point in the history
Deprecate the jme3-vr module in the wiki
  • Loading branch information
richardTingle authored Mar 27, 2024
2 parents 17eb0b9 + 7d6ed48 commit 9cfcb73
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 102 deletions.
3 changes: 2 additions & 1 deletion docs/modules/core/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,5 @@
** xref:ui/hud.adoc[Head-Up Display (HUD)]
* Virtual Reality
** xref:vr/virtualreality.adoc[Virtual Reality]
** xref:vr/virtualrealitycontrollers.adoc[Virtual Reality Controllers]
** xref:vr/legacyOpenVr.adoc[Virtual Reality Legacy Support]
** xref:vr/virtualrealitycontrollers.adoc[Virtual Reality Legacy Controller Support]
105 changes: 105 additions & 0 deletions docs/modules/core/pages/vr/legacyOpenVr.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
= Virtual Reality Legacy support
:revnumber: 2.0
:revdate: 2020/07/27


== Introduction

The jMonkeyEngine module jme3-vr is deprecated and will be removed in a future version. This documents that deprecated functionality.

jMonkeyEngine 3 supports several VR specifications. The most modern of those is OpenVR, which is currently a widely supported standard. However, vendors are beginning to move towards OpenXR as a fully open cross-platform standard. OpenXR is available with jMonkeyEngine via xref:contributions:vr/topic_contributions_vr.adoc[user contributed virtual reality libraries].

The known supported systems are:

HTC Vive and systems supporting SteamVR/OpenVR

Native Oculus Rift support (and through SteamVR)

Oculus Quest 2 (through SteamVR with Virtual Desktop)

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.

== Required dependencies

- org.jmonkeyengine:jme3-core
- org.jmonkeyengine:jme3-lwjgl3
- org.jmonkeyengine:jme3-vr

== 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
104 changes: 6 additions & 98 deletions docs/modules/core/pages/vr/virtualreality.adoc
Original file line number Diff line number Diff line change
@@ -1,104 +1,12 @@
= Virtual Reality
:revnumber: 2.0
:revdate: 2020/07/27

Please see this link:https://hub.jmonkeyengine.org/t/official-vr-module/37830/67[forum post] for additional information on JME Official VR module.
:revnumber: 3.0
:revdate: 2024/01/01

== Introduction

jMonkeyEngine 3 supports several VR specifications. The most modern of those is OpenVR, which is currently a widely supported standard. However, vendors are beginning to move towards OpenXR as a fully open cross-platform standard. OpenXR is available with jMonkeyEngine via xref:contributions:vr/topic_contributions_vr.adoc[user contributed virtual reality libraries].

The known supported systems are:

HTC Vive and systems supporting SteamVR/OpenVR

Native Oculus Rift support (and through SteamVR)

Oculus Quest 2 (through SteamVR with Virtual Desktop)

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.

== Required dependencies

- org.jmonkeyengine:jme3-core
- org.jmonkeyengine:jme3-lwjgl3
- org.jmonkeyengine:jme3-vr

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

Virtual reality is well-supported in jMonkeyEngine 3. The VR support is provided by xref:contributions:vr/topic_contributions_vr.adoc[user contributed virtual reality libraries], for
example xref:contributions:contributions.adoc#tamarin-openxr[Tamarin OpenXR].

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

OpenVr support (and other old virtual reality standards) are documented at xref:vr/legacyOpenVr.adoc[Virtual Reality Legacy support] but will be removed in a future release.
4 changes: 1 addition & 3 deletions docs/modules/core/pages/vr/virtualrealitycontrollers.adoc
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
= Virtual Reality Controllers
= Virtual Reality Controllers Legacy Support
:revnumber: 1.0
:revdate: 2021/12/29

Having successfully seen a VR cube in the xref:vr/virtualreality.adoc[Virtual reality hello world] a common next step is to put hands in the world so players can start interacting.

== Where are we, what are we pointing at

Be aware that the controllers positions and rotations are in world coordinates, not relative to the camera
Expand Down

0 comments on commit 9cfcb73

Please sign in to comment.