From f9495f6a3d54bf8764a54faecfd7ce84018ff125 Mon Sep 17 00:00:00 2001 From: Bastiaan Olij Date: Mon, 11 Apr 2022 22:31:06 +1000 Subject: [PATCH] Writing introduction to XR support in Godot 4 --- tutorials/xr/basic_xr_locomotion.rst | 7 ++ tutorials/xr/img/openxr_settings.png | Bin 0 -> 41728 bytes tutorials/xr/img/xr_basic_scene.png | Bin 0 -> 12281 bytes tutorials/xr/img/xr_left_hand.png | Bin 0 -> 16180 bytes tutorials/xr/img/xr_right_hand.png | Bin 0 -> 14948 bytes tutorials/xr/img/xr_shaders.png | Bin 0 -> 29237 bytes tutorials/xr/index.rst | 27 ++++++- tutorials/xr/openxr_action_map.rst | 7 ++ tutorials/xr/openxr_hand_tracking.rst | 7 ++ tutorials/xr/setting_up_xr.rst | 107 ++++++++++++++++++++++++++ 10 files changed, 151 insertions(+), 4 deletions(-) create mode 100644 tutorials/xr/basic_xr_locomotion.rst create mode 100644 tutorials/xr/img/openxr_settings.png create mode 100644 tutorials/xr/img/xr_basic_scene.png create mode 100644 tutorials/xr/img/xr_left_hand.png create mode 100644 tutorials/xr/img/xr_right_hand.png create mode 100644 tutorials/xr/img/xr_shaders.png create mode 100644 tutorials/xr/openxr_action_map.rst create mode 100644 tutorials/xr/openxr_hand_tracking.rst create mode 100644 tutorials/xr/setting_up_xr.rst diff --git a/tutorials/xr/basic_xr_locomotion.rst b/tutorials/xr/basic_xr_locomotion.rst new file mode 100644 index 000000000..36ce168f7 --- /dev/null +++ b/tutorials/xr/basic_xr_locomotion.rst @@ -0,0 +1,7 @@ +.. _doc_basic_xr_locomotion: + +Basic XR Locomotion +=================== + +This is just a placeholder + diff --git a/tutorials/xr/img/openxr_settings.png b/tutorials/xr/img/openxr_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..05e76064ac2b0a70eabedf99829e05277cbfdaec GIT binary patch literal 41728 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 SqtL$wess04BbOYcS?hxG$Y+0F~lGs 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 XM!`*DEeqhd{tZQ0HJNfL^LPIXWjtFE literal 0 HcmV?d00001 diff --git a/tutorials/xr/img/xr_left_hand.png b/tutorials/xr/img/xr_left_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..52021d4a96c865859ef37dec1487e1e2c6a1585b GIT binary patch literal 16180 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 aVi;qt)eNLlcYt4pV#rA;Nft{O`u`8ZyTttf literal 0 HcmV?d00001 diff --git a/tutorials/xr/img/xr_shaders.png b/tutorials/xr/img/xr_shaders.png new file mode 100644 index 0000000000000000000000000000000000000000..a20511ee99b284782e9a374657ed3a734384de20 GIT binary patch literal 29237 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 literal 0 HcmV?d00001 diff --git a/tutorials/xr/index.rst b/tutorials/xr/index.rst index 1b8b554e8..d86bbbd31 100644 --- a/tutorials/xr/index.rst +++ b/tutorials/xr/index.rst @@ -1,8 +1,27 @@ XR == -Work in progress... -------------------- +Basic Tutorial +-------------- -Documentation for XR in Godot 4.0 XR hasn't been written yet. -Please check back in the future. +.. toctree:: + :maxdepth: 1 + :name: xr-basic-tutorial + + setting_up_xr + basic_xr_locomotion + +Advanced topics +--------------- + +.. toctree:: + :maxdepth: 1 + :name: openxr-advanced-topics + + openxr_action_map + openxr_hand_tracking + +.. note: + + Documentation for XR in Godot 4.0 XR is still a work in progress. + Please check back in the future. diff --git a/tutorials/xr/openxr_action_map.rst b/tutorials/xr/openxr_action_map.rst new file mode 100644 index 000000000..b848f01fb --- /dev/null +++ b/tutorials/xr/openxr_action_map.rst @@ -0,0 +1,7 @@ +.. _doc_openxr_action_map: + +The OpenXR action map +===================== + +This is just a placeholder + diff --git a/tutorials/xr/openxr_hand_tracking.rst b/tutorials/xr/openxr_hand_tracking.rst new file mode 100644 index 000000000..b80679d7f --- /dev/null +++ b/tutorials/xr/openxr_hand_tracking.rst @@ -0,0 +1,7 @@ +.. _doc_openxr_hand_tracking: + +The OpenXR hand tracking +======================== + +This is just a placeholder + diff --git a/tutorials/xr/setting_up_xr.rst b/tutorials/xr/setting_up_xr.rst new file mode 100644 index 000000000..8bad3deb3 --- /dev/null +++ b/tutorials/xr/setting_up_xr.rst @@ -0,0 +1,107 @@ +.. _doc_setting_up_xr: + +Setting up XR +============= + +Introduction to the XR system in Godot +-------------------------------------- + +Godot provides a modular XR system that abstracts many of the different XR platform specifics away from the user. +At the core sits the :ref:`XRServer ` which acts as a central interface to the XR system that allows users to discover interfaces and interact with the components of the XR system. + +Each supported XR platform is implemented as an :ref:`XRInterface `. Supported interfaces register themselves with the :ref:`XRServer ` and can be queried with the ``find_interface`` method on the :ref:`XRServer `. When the desired interface is found it can be initialised by calling ``initialize`` on the interface. + +.. warning:: + A registered interface means nothing more than that the interface is available, if the interface is not supported by the host system, initialization may fail and return ``false``. This can have many reasons and sadly the reasons differ from platform to platform. It can be because the user hasn't installed the required software, or that the user simply hasn't plugged in their headset. You as a developer must thus react properly on an interface failing to initialize. + +Due to the special requirements for output in XR, especially for head mounted devices that supply different images to each eye, the :ref:`XRServer ` in Godot will override various features in the rendering system. For stand-alone devices this means the final output is handled by the :ref:`XRInterface ` and Godot's usual output system is disabled. For desktop XR devices that work as a second screen it is possible to dedicate a separate :ref:`Viewport ` to handle the XR output, leaving the main Godot window available for displaying alternative content. + +.. note:: + Note that only one interface can be responsible for handling the output to an XR device, this is known as the primary interface and by default will be the first interface that is initialized. Godot currently thus only supports implementations with a single headset. + It is possible, but increasingly uncommon, to have a secondary interface, for example to add tracking to an otherwise 3DOF only device. + +There are three XR specific node types that you will find in nearly all XR applications: + +- :ref:`XROrigin3D ` represents, for all intents and purposes, the center point of your play space. That is an oversimplified statement but we'll go into more detail later. All objects tracked in physical space by the XR platform are positioned in relation to this point. +- :ref:`XRCamera3D ` represents the (stereo) camera that is used when rendering output for the XR device. The positioning of this node is controlled by the XR system and updated automatically using the tracking information provided by the XR platform. +- :ref:`XRController3D ` represents a controller used by the player, commonly there are two, one held in each hand. These nodes give access to various states on these controllers and send out signals when the player presses buttons on them. The positioning of this node is controlled by the XR system and updated automatically using the tracking information provided by the XR platform. + +There are other XR related nodes and there is much more to say about these three nodes, but we'll get into that later on. + +Prerequisites for XR in Godot 4 +------------------------------- + +While in Godot 3 most things worked out of the box, Godot 4 needs a little more setup. This is mainly due to the more advanced nature of the Vulkan renderer. There are many rendering features in Vulkan the XR system uses that aren't enabled by default. They are very easy to turn on, simply open up your project settings and tick the XR shaders tickbox in the XR section: + +.. image:: img/xr_shaders.png + +.. warning:: + As Godot 4 is still in development, many post process effects have not yet been updated to support stereoscopic rendering. Using these will have adverse effects. + +.. note:: + Godot also has the choice between a desktop and mobile Vulkan renderer. There are a number of optimisations added to the mobile renderer that benefit XR applications. You may wish to enable this even on desktop. + +OpenXR +------ + +OpenXR is a new industry standard that allows different XR platforms to present themselves through a standardised API to XR applications. This standard is an open standard maintained by the Khronos Group and thus aligns very well with Godots interests. + +The Vulkan implementation of OpenXR is closely integrated with Vulkan, taking over part of the Vulkan system. This requires tight integration of certain core graphics features in the Vulkan renderer which are needed before the XR system is setup. This was one of the main deciding factors to include OpenXR as a core interface. + +This also means OpenXR needs to be enabled when Godot starts in order to set things up correctly. The required setting can be found in your project settings: + +.. image:: img/openxr_settings.png + +As setup is brought forward with OpenXR you can find several other settings related to OpenXR here as well. These can't be changed while your application is running. +The default settings will get us started and we will go into detail in another section of the documentation. + +Setting up the XR scene +----------------------- + +Every XR application needs at least an :ref:`XROrigin3D ` and an :ref:`XRCamera3D ` node. Most will have two :ref:`XRController3D `, one for the left hand and one for the right. Keep in mind that the camera and controller nodes should be children of the origin node. Add these nodes to a new scene and rename the controller nodes to ``LeftHand`` and ``RightHand``, your scene should look something like this: + +.. image:: img/xr_basic_scene.png + +Next you need to configure the controllers, select the left hand and set it up as follows: + +.. image:: img/xr_left_hand.png + +And the right hand: + +.. image:: img/xr_right_hand.png + +Right now all these nodes are on the floor, the will be positioned correctly in runtime. To help during development, it can be helpful to move the camera upwards so its ``y`` is set to ``1.7``, and move the controller nodes to ``-0.5, 1.0, -0.5`` and ``0.5, 1.0, -0.5`` for respectively the left and right hand. + +Next we need to add a script to our root node. Add the following code into this script: + +:: + + extends Node3D + + var interface : XRInterface + + func _ready(): + interface = XRServer.find_interface("OpenXR") + if interface and interface.is_initialized(): + print("OpenXR initialised successfully") + + get_viewport().use_xr = true + else: + print("OpenXR not initialised, please check if your headset is connected") + +This code fragment assumes we are using OpenXR, if you wish to use any of the other interfaces you can change the ``find_interface`` call. + +If you run your project at this point in time, everything will work but you will be in a dark world. So to finish off our starting point add a :ref:`DirectionalLight3D ` and a :ref:`WorldEnvironment ` node to your scene. +You may wish to also add a mesh instance as a child to each controller node just to temporarily visualise them. +Make sure you configure a sky in your world environment. + +Now run your project, you should be floating somewhere in space and be able to look around. + +.. note: + + While traditional level switching can definitely be used with XR applications, where this scene setup is repeated in each level, most find it easier to set this up once and loading levels as a subscene. If you do switch scenes and replicate the XR setup in each one, do make sure you do not run ``initialize`` multiple times. The effect can be unpredictable depending on the XR interface used. + + For the rest of this basic tutorial series we will create a game that uses a single scene. + + +