Weekly Reports: 2021

July 19 - July 25

Committed VR patches for reference space improvements (rB36c0649d) and viewport denoising fixes (rBc41b93bd).

Also added basic controller model drawing using the OpenXR controller model extension and refactored controller poses to include both grip and aim components, which are needed to properly display the controllers.

Commits (master):

  • XR: Reference Space Improvements (rB36c0649d)
  • VR: Add "absolute tracking" session option to UI (rBAac92e71)
  • XR: Fix for Viewport Denoising Artifacts (rBc41b93bd)


Next Week

Update next VR patches based on review feedback.

July 12 - July 18

Updated next VR patch (D10943) based on discussion with Julian and Brecht (T88839, #xr channel).

Updated patches:

  • XR Actions [part 2]: Actionmaps (D10943). Removed code for action map storage/customization.

Next Week

Add support for OpenXR controller model extension.

July 5 - July 11

Submitted patch for a user-reported issue from master when using EEVEE and viewport denoising in VR (scene geometry could sometimes be occluded for one eye).

Also made adjustments to the XR grab and teleport operators based on user feedback.


  • XR: Fix render artifacts with viewport denoising (rBf7d42065)
  • XR: Fix mirror view not matching navigation (rB6ee46d5e)
  • XR: Show selection/controller overlays by default (rB1f1589b4)
  • XR: Add teleport offset option (rB7863f2fb)
  • XR: Fix action state querying from Python (rB872484df)
  • XR: Fix grab interp/offsets for parented objects (rB3feb3a47)

Created patches:

  • VR: Fix for Viewport Denoising Artifacts (D11858)

June 28 - July 4

Added haptic feedback support for actions. Users can configure the duration, frequency, and amplitude of the feedback as well as when it will be applied (press, release, press/release, or repeat).

Also made adjustments to the XR grab and fly operators based on user feedback.


  • XR: Fix grab transform for parented objects (rB004034f8)
  • XR: Add option to raycast from viewer pose (rBe8926d40)
  • XR: Add cubic interpolation option for fly speed (rB1184da29)
  • XR: Support haptic feedback for actions (rB714224ee)
  • VR: Add haptic feedback settings (rBAa708524)
  • XR: Direction lock, frame based speed fly options (rB7a7ee11f)

June 21 - June 27

Added XR fly navigation operator, which allows users to navigate the scene by moving/turning relative to navigation space or the VR viewer/controller.

Also enabled multiple modal actions at a time to improve action fluidity and added default actions for gamepad input.


  • XR: Update controller data again in viewer update (rB8ace7897)
  • XR: Add fly navigation operator (rBe3cab5c2)
  • VR: Add fly navigation, gamepad profile defaults (rBA2c6f9cb)
  • VR: Rename some actions for better clarity (rBA9c20bc0)
  • XR: Use prior nav data to calculate viewer pose (rB80c80f5e)
  • XR: Allow multiple modal actions at a time (rBe022f99e)

June 14 - June 20

Added XR grab navigation operator, which allows users to move/rotate/scale themselves relative to the scene by using inputs from one or both controllers. Also fixed clipping/shading issues and pose calculation when a scale factor is applied to the VR viewmat.


  • XR: Fixes/adjustments when viewer scale != 1.0 (rB6732d31f)
  • XR: Smooth transition between modal actions (rBeed31613)
  • XR: Add grab navigation operator (rB2585d7f1)
  • XR: Add location/rotation locks for navigation (rB65804b20)
  • VR: Add grab navigation to default actions (rBA3012fff)

June 7 - June 13

Improved mapping of VR inputs to actions via axis region/bimanual flags. Using the new bimanual flag, extended the XR grab operator to scale objects by pressing inputs on both controllers.


  • XR: Add axis region, bimanual action flags (rBeeb948f4)
  • VR: Add axis region, bimanual flags (rBA91a8d30)
  • XR: Add bimanual scale mode for grab operator (rB9ce38d17)
  • VR: Add bimanual scale mode for grab operator (rBA71a834f)
  • XR: Fix viewer pose and teleport calculation (rB0c92bf5e)

June 1 - June 6

Started adding VR navigation support, beginning with session state modifications and a simple teleport operator (work performed in the xr-controller-support branch).