Revision dc2df83 by Julian Eisel March 17, 2020, 20:42 (GMT) |
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 |
Revision 406bfd4 by Julian Eisel March 17, 2020, 20:39 (GMT) |
Ghost: Ghost-XR API to abstract away and access OpenXR functionality Extends Ghost to include an abstraction for OpenXR, which I refer to as Ghost-XR. Such an API is the base for the following commit, which introduces VR support to Blender. Main features: * Simple and high-level interface for Blender specific code to call. * Extensible for muliple graphics backends, currently OpenGL and a DirectX compatibility layer are supported. * Carefully designed error handling strategy allowing Blender to handle errors gracefully and with useful error messages. * OpenXR extension and API-layer management. * OpenXR session management. * Basic OpenXR event management. * Debug utilities for Ghost-XR and OpenXR For more information on this API, check https://wiki.blender.org/wiki/Source/Interface/XR. Reviewed by: Brecht Van Lommel Differential Revision: https://developer.blender.org/D6188 |
Revision c9a8de1 by Aaron Carlisle March 17, 2020, 20:32 (GMT) |
Fluid: Correct Tooltip |
Revision 3af51ca by Aaron Carlisle March 17, 2020, 20:28 (GMT) |
Online Manual Reference: Update |
Revision a7c660f by Ray molenkamp March 17, 2020, 19:45 (GMT) |
Cleanup: Fix warnings about function signature of register pass RE_engine_register_pass is sometimes in the headers with type as an integer parameter, sometimes as eNodeSocketDatatype. This caused warnings, the root cause was makesrna was not able to generate the proper type for enums and defaulted to int. makesrna has been extended with the RNA_def_property_enum_native_type that allows telling makesrna the native type of an enum, if set it will be used otherwise it will still fall back to int. Differential Revision: https://developer.blender.org/D7117 Reviewed By: brecht |
Revision e09f0ca by Antonio Vazquez March 17, 2020, 18:02 (GMT) |
GPencil: Fix crash joining objects The weights array can be NULL. |
March 17, 2020, 17:35 (GMT) |
make deps: Fixes to make OpenXR to work on CentOS Linux - Harvest to a proper location. - Disable STD's filesystem which is experimental and caused linking errors when OpenXR is usedi n Blender. |
Revision f1eb86c by Antonio Vazquez March 17, 2020, 17:29 (GMT) |
GPencil: Rename old color operators to material The color was used in old version when palettes were used, but now all are materials |
Revision bf9c4af by Sebastián Barschkis March 17, 2020, 17:21 (GMT) |
Fix T74762: Mantaflow: Non emmiting flow source affects simulation |
Revision 07d5b8b by Sergey Sharybin March 17, 2020, 16:48 (GMT) |
Fix T74322: Wrong object bundles with scaled camera Camera scale was not handled correctly when drawing 3d bundles for reconstructed objects (caused by normalization of the matrix). |
Revision 6a0ddb4 by Sergey Sharybin March 17, 2020, 16:40 (GMT) |
Cleanup: Remove unused function Was introduced earlier today and did not turn out to be very useful and clear. |
Revision f958560 by Sergey Sharybin March 17, 2020, 16:40 (GMT) |
Multires: Properly support virtual modifiers for Apply Base The initial code from earlier from today didn't really work reliable since it is not possible to apply virtual modifiers but not the real multires one (in a situation like mesh with shapekeys and multires). New code uses less memory and has better performance for the case when there are actual modifiers leading the multires. The case when there is only multires will not be as performant as possible at this moment. |
Revision 1504cb2 by Brecht Van Lommel March 17, 2020, 16:33 (GMT) |
Cleanup: process colorspace conversion with a 1D pixel array No need to assume it's 2D or 3D. |
Revision 2518f60 by Antonio Vazquez March 17, 2020, 16:28 (GMT) |
GPencil: Fix Parent layer not working The parenting was using the old logic, but with new engine the draw is done using eval data. Fixed the depsgraph relationship missing with bones to get an update when the bone is transformed. Also fixed Snap cursor to Selected |
Revision 964375e by Ray Molenkamp March 17, 2020, 16:12 (GMT) |
Cleanup: blenkernel proper header inclusion for BKE_ocean.h BKE_ocean.h uses the bool type without including stdbool.h counting on someone else including that before it. With D6811 enabling automatic sorting of the includes this can no longer be counted on. This changes includes stdbool.h in BKE_ocean.h so it can build without being depended on others including the right headers before it. |
March 17, 2020, 15:46 (GMT) |
Fix T74838: fix dereferencing of NULL in sculpt_no_multires_poll when no active object exists Fix crash when the operator search is used while no active object exists. The cause of the issue is an attempt to dereference `ob` when it is `NULL`. Therefore this patch checks the return value of `SCULPT_mode_poll()` first, to ensure that `ob` isn't `NULL`. Reviewed By: pablodp606 Maniphest Tasks: T74838 Differential Revision: https://developer.blender.org/D7156 |
Revision 24e4414 by Sergey Sharybin March 17, 2020, 15:41 (GMT) |
Multires: Fix Apply Base when there are deform modifiers Their effect was applied twice after hitting Apply Base since the operator was also applying deformation caused by those modifiers. |
Revision 628d799 by Sergey Sharybin March 17, 2020, 15:41 (GMT) |
Multires: Add utility to create deformed base mesh The new function will use original object as a starting point and apply all enabled deformation modifiers prior to the multires. |
Revision c76d390 by Sergey Sharybin March 17, 2020, 15:41 (GMT) |
Mesh: Fix applying deform modifier up to index The code would have break the first (deform only) modifiers once the index is reached, but it will not prevent second loop (over remaining modifiers) from run. This was applying deform modifier twice in some conditions: having single deform modifier and calculating deformed mesh up to the first modifier (index=0). |
Revision bf5151b by Sergey Sharybin March 17, 2020, 15:41 (GMT) |
Mesh: Add utility to calculate deform modifier up to index Intention is to be used to create mesh at the state which is an input to the multires modifier. |
|