blender/tests/python
Julian Eisel dc2df8307f VR: Initial Virtual Reality support - Milestone 1, Scene Inspection
NOTE: While most of the milestone 1 goals are there, a few smaller features and
improvements are still to be done.

Big picture of this milestone: Initial, OpenXR-based virtual reality support
for users and foundation for advanced use cases.
Maniphest Task: https://developer.blender.org/T71347
The tasks contains more information about this milestone.

To be clear: This is not a feature rich VR implementation, it's focused on the
initial scene inspection use case. We intentionally focused on that, further
features like controller support are part of the next milestone.

- How to use?
Instructions on how to use this are here:
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/How_to_Test
These will be updated and moved to a more official place (likely the manual) soon.

Currently Windows Mixed Reality and Oculus devices are usable. Valve/HTC
headsets don't support the OpenXR standard yet and hence, do not work with this
implementation.

---------------

This is the C-side implementation of the features added for initial VR
support as per milestone 1. A "VR Scene Inspection" Add-on will be
committed separately, to expose the VR functionality in the UI. It also
adds some further features for milestone 1, namely a landmarking system
(stored view locations in the VR space)

Main additions/features:
* Support for rendering viewports to an HMD, with good performance.
* Option to sync the VR view perspective with a fully interactive,
  regular 3D View (VR-Mirror).
* Option to disable positional tracking. Keeps the current position (calculated
  based on the VR eye center pose) when enabled while a VR session is running.
* Some regular viewport settings for the VR view
* RNA/Python-API to query and set VR session state information.
* WM-XR: Layer tying Ghost-XR to the Blender specific APIs/data
* wmSurface API: drawable, non-window container (manages Ghost-OpenGL and GPU
  context)
* DNA/RNA for management of VR session settings
* `--debug-xr` and `--debug-xr-time` commandline options
* Utility batch & config file for using the Oculus runtime on Windows.
* Most VR data is runtime only. The exception is user settings which are saved
  to files (`XrSessionSettings`).
* VR support can be disabled through the `WITH_XR_OPENXR` compiler flag.

For architecture and code documentation, see
https://wiki.blender.org/wiki/Source/Interface/XR.

---------------

A few thank you's:
* A huge shoutout to Ray Molenkamp for his help during the project - it would
  have not been that successful without him!
* Sebastian Koenig and Simeon Conzendorf for testing and feedback!
* The reviewers, especially Brecht Van Lommel!
* Dalai Felinto for pushing and managing me to get this done ;)
* The OpenXR working group for providing an open standard. I think we're the
  first bigger application to adopt OpenXR. Congratulations to them and
  ourselves :)

This project started as a Google Summer of Code 2019 project - "Core Support of
Virtual Reality Headsets through OpenXR" (see
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/).
Some further information, including ideas for further improvements can be found
in the final GSoC report:
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/Final_Report

Differential Revisions: D6193, D7098

Reviewed by: Brecht Van Lommel, Jeroen Bakker
2020-03-17 21:42:44 +01:00
..
collada Cleanup: CMake formatting 2020-02-15 10:40:41 +11:00
modules Fix Cycles fluid motion blur not working after recent refactor 2020-02-18 17:11:57 +01:00
view_layer
alembic_tests.py
batch_import.py
bevel_operator.py Cleanup: Fix typo in instruction comments 2020-01-16 19:13:37 -05:00
bl_alembic_io_test.py Alembic: fix unit test on Windows 2020-02-17 11:31:09 +01:00
bl_blendfile_io.py Cleanup: Deduplicate some code in new blenfile io/linking tests. 2020-02-14 12:18:21 +01:00
bl_blendfile_liblink.py Remove debug prints from blendfile_liblink. 2020-02-18 10:28:33 +01:00
bl_blendfile_utils.py Cleanup: Deduplicate some code in new blenfile io/linking tests. 2020-02-14 12:18:21 +01:00
bl_bundled_modules.py Cleanup: formatting, strip trailing space 2020-03-05 08:05:21 +11:00
bl_constraints.py Constraints: replace 'Set Inverse' operator with an eval-time update 2020-02-27 10:37:59 +01:00
bl_id_management.py Cleanup: formatting, strip trailing space 2020-03-05 08:05:21 +11:00
bl_keymap_completeness.py
bl_load_addons.py VR: Initial Virtual Reality support - Milestone 1, Scene Inspection 2020-03-17 21:42:44 +01:00
bl_load_py_modules.py VR: Initial Virtual Reality support - Milestone 1, Scene Inspection 2020-03-17 21:42:44 +01:00
bl_mesh_modifiers.py
bl_mesh_validate.py
bl_pyapi_bpy_path.py
bl_pyapi_bpy_utils_units.py
bl_pyapi_idprop.py
bl_pyapi_idprop_datablock.py
bl_pyapi_mathutils.py Document that tessellate_polygon() doesn't handle degenerate geometry 2020-01-27 16:42:25 +01:00
bl_pyapi_prop_array.py Python: add foreach_get and foreach_set methods to pyrna_prop_array 2020-03-13 12:59:36 +01:00
bl_rna_defaults.py
bl_rna_manual_reference.py
bl_rst_completeness.py
bl_run_operators.py
bl_test.py
boolean_operator.py Cleanup: Fix typo in instruction comments 2020-01-16 19:13:37 -05:00
CMakeLists.txt Python: add foreach_get and foreach_set methods to pyrna_prop_array 2020-03-13 12:59:36 +01:00
cycles_render_tests.py
eevee_render_tests.py Fix T73921: Eevee volume render test memory leak in Mantaflow 2020-03-14 00:30:55 +01:00
ffmpeg_tests.py
modifiers.py Apply patch D6620, Adde tests for Deform modifiers. 2020-02-29 14:07:14 -05:00
opengl_draw_tests.py
operators.py Accepting patch D5357: Modifiers and operators automated testing. 2020-01-13 07:11:45 -05:00
pep8.py
rna_array.py
rna_info_dump.py
rst_to_doctree_mini.py
workbench_render_tests.py