virtualreality.html 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Asciidoctor 1.5.4"><title>Virtual Reality</title><link rel="stylesheet" href="./asciidoctor.css">
  2. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
  3. <link rel="stylesheet" href="./coderay-asciidoctor.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css"><link rel="stylesheet" href="/home/travis/build/jMonkeyEngine/wiki/build/asciidoc/html5/jme3/twemoji-awesome.css"></head><body class="article toc2 toc-left"><div id="header"><div id="toolbar"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/src/docs/asciidoc/jme3/virtualreality.adoc"><i class="fa fa-pencil-square" aria-hidden="true"></i></a><a href="https://github.com/jMonkeyEngine/wiki/new/master/src/docs/asciidoc/jme3/"><i class="fa fa-plus-square" aria-hidden="true"></i></a><input dir="auto" style="position: relative; vertical-align: top;" spellcheck="false" autocomplete="off" class="searchbox__input aa-input" id="doc-search" name="search" placeholder="Search in the doc" required="required" type="search"></div><h1>Virtual Reality</h1><div class="details"><span class="author" id="author"></span><br><span id="revnumber">version ,</span> <span id="revdate">2016/10/23 11:22</span></div><div id="toc" class="toc2"><div id="toctitle">Table of Contents</div><ul class="sectlevel1"><li><a href="#sample-application">Sample Application</a></li><li><a href="#google-cardboard-vr-sdk-1-0-integration">Google Cardboard VR SDK 1.0 integration</a></li><li><a href="#legacy">Legacy</a></li></ul></div></div><div id="content"><div id="preamble"><div class="sectionbody"><div class="paragraph"><p>Please see this <a href="https://hub.jmonkeyengine.org/t/official-vr-module/37830/67">forum post</a> for additional information on JME Official VR module.</p></div>
  4. <div class="paragraph"><p>jMonkeyEngine 3 has a wide range of support for Virtual Reality (VR). The known supported systems are:</p></div>
  5. <div class="paragraph"><p>HTC Vive and systems supporting SteamVR/OpenVR</p></div>
  6. <div class="paragraph"><p>Native Oculus Rift support (and through SteamVR)</p></div>
  7. <div class="paragraph"><p>Razer HDK and systems supporting OSVR</p></div>
  8. <div class="paragraph"><p>Google Cardboard / GoogleVR</p></div>
  9. <div class="paragraph"><p>Two implementations exist for OpenVR. A community maintained JNA based binding and LWJGL&#8217;s JNI based.</p></div>
  10. <div class="paragraph"><p>To use the JNA based bindings, put:</p></div>
  11. <div class="literalblock"><div class="content"><pre>settings.put(VRConstants.SETTING_VRAPI, VRConstants.SETTING_VRAPI_OPENVR_VALUE);</pre></div></div>
  12. <div class="paragraph"><p>in your settings. To use LWJGL, instead put:</p></div>
  13. <div class="literalblock"><div class="content"><pre>settings.put(VRConstants.SETTING_VRAPI, VRConstants.SETTING_VRAPI_OPENVR_LWJGL_VALUE);</pre></div></div>
  14. <div class="paragraph"><p>Note that the LWJGL bindings require LWJGL3 (jme3-lwjgl3) to be used.</p></div></div></div>
  15. <div class="sect1"><h2 id="sample-application">Sample Application</h2><div class="sectionbody"><div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Main</span> <span class="directive">extends</span> SimpleApplication {
  16. <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> main(<span class="predefined-type">String</span><span class="type">[]</span> args) {
  17. AppSettings settings = <span class="keyword">new</span> AppSettings(<span class="predefined-constant">true</span>);
  18. settings.put(VRConstants.SETTING_VRAPI, VRConstants.SETTING_VRAPI_OPENVR_LWJGL_VALUE);
  19. settings.put(VRConstants.SETTING_ENABLE_MIRROR_WINDOW, <span class="predefined-constant">true</span>);
  20. VREnvironment env = <span class="keyword">new</span> VREnvironment(settings);
  21. env.initialize();
  22. <span class="comment">// Checking if the VR environment is well initialized</span>
  23. <span class="comment">// (access to the underlying VR system is effective, VR devices are detected).</span>
  24. <span class="keyword">if</span> (env.isInitialized()){
  25. VRAppState vrAppState = <span class="keyword">new</span> VRAppState(settings, env);
  26. vrAppState.setMirrorWindowSize(<span class="integer">1024</span>, <span class="integer">800</span>);
  27. Main app = <span class="keyword">new</span> Main(vrAppState);
  28. app.setLostFocusBehavior(LostFocusBehavior.Disabled);
  29. app.setSettings(settings);
  30. app.setShowSettings(<span class="predefined-constant">false</span>);
  31. app.start();
  32. }
  33. }
  34. <span class="directive">public</span> Main(AppState... appStates) {
  35. <span class="local-variable">super</span>(appStates);
  36. }
  37. <span class="annotation">@Override</span>
  38. <span class="directive">public</span> <span class="type">void</span> simpleInitApp() {
  39. <span class="predefined-type">Box</span> b = <span class="keyword">new</span> <span class="predefined-type">Box</span>(<span class="integer">1</span>, <span class="integer">1</span>, <span class="integer">1</span>);
  40. Geometry geom = <span class="keyword">new</span> Geometry(<span class="string"><span class="delimiter">&quot;</span><span class="content">Box</span><span class="delimiter">&quot;</span></span>, b);
  41. Material mat = <span class="keyword">new</span> Material(assetManager, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>);
  42. mat.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Color</span><span class="delimiter">&quot;</span></span>, ColorRGBA.Blue);
  43. geom.setMaterial(mat);
  44. rootNode.attachChild(geom);
  45. }
  46. <span class="annotation">@Override</span>
  47. <span class="directive">public</span> <span class="type">void</span> simpleUpdate(<span class="type">float</span> tpf) {
  48. <span class="comment">//TODO: add update code</span>
  49. }
  50. <span class="annotation">@Override</span>
  51. <span class="directive">public</span> <span class="type">void</span> simpleRender(RenderManager rm) {
  52. <span class="comment">//TODO: add render code</span>
  53. }
  54. }</code></pre></div></div>
  55. <div class="paragraph"><p>Project source: <a class="bare" href="https://github.com/neph1/VRSampleApplication">https://github.com/neph1/VRSampleApplication</a></p></div></div></div>
  56. <div class="sect1"><h2 id="google-cardboard-vr-sdk-1-0-integration">Google Cardboard VR SDK 1.0 integration</h2><div class="sectionbody"><div class="paragraph"><p>gvr-android-jme (<a class="bare" href="https://github.com/nordfalk/gvr-android-jme">https://github.com/nordfalk/gvr-android-jme</a>)</p></div></div></div>
  57. <div class="sect1"><h2 id="legacy">Legacy</h2><div class="sectionbody"><div class="paragraph"><p>The following projects are not up to date, but may provide functionality not found in the other packages.
  58. Google Cardboard up to version 0.6: <a class="bare" href="https://github.com/neph1/jme-cardboard">https://github.com/neph1/jme-cardboard</a></p></div></div></div></div><div id="footer"><div id="footer-text">Version <br>Last updated 2020-05-21 00:29:23 +00:00</div></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script><script>docsearch({
  59. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  60. indexName: 'jmonkeyengine',
  61. inputSelector: '#doc-search',
  62. debug: false // Set debug to true if you want to inspect the dropdown
  63. });</script></body></html>