[Bf-extensions-cvs] [cb695e6b] xr-controller-support: VR: Improve controller gizmo display
Peter Kim
noreply at git.blender.org
Thu Jul 22 08:53:27 CEST 2021
Commit: cb695e6bbac911eafb654097482813303f9d3d0d
Author: Peter Kim
Date: Thu Jul 22 15:35:16 2021 +0900
Branches: xr-controller-support
https://developer.blender.org/rBAcb695e6bbac911eafb654097482813303f9d3d0d
VR: Improve controller gizmo display
Uses separate gizmos to draw controller grip and aim components.
===================================================================
M viewport_vr_preview/__init__.py
M viewport_vr_preview/main.py
===================================================================
diff --git a/viewport_vr_preview/__init__.py b/viewport_vr_preview/__init__.py
index 534aeb13..3d2c5ffd 100644
--- a/viewport_vr_preview/__init__.py
+++ b/viewport_vr_preview/__init__.py
@@ -87,7 +87,8 @@ classes = (
main.VIEW3D_OT_vr_actions_clear,
main.VIEW3D_GT_vr_camera_cone,
- main.VIEW3D_GT_vr_controller_axes,
+ main.VIEW3D_GT_vr_controller_grip,
+ main.VIEW3D_GT_vr_controller_aim,
main.VIEW3D_GGT_vr_viewer_pose,
main.VIEW3D_GGT_vr_controller_poses,
main.VIEW3D_GGT_vr_landmarks,
diff --git a/viewport_vr_preview/main.py b/viewport_vr_preview/main.py
index 90d9a09a..c36267b5 100644
--- a/viewport_vr_preview/main.py
+++ b/viewport_vr_preview/main.py
@@ -1373,13 +1373,26 @@ class VIEW3D_GT_vr_camera_cone(Gizmo):
self.draw_custom_shape(self.lines_shape)
-class VIEW3D_GT_vr_controller_axes(Gizmo):
- bl_idname = "VIEW_3D_GT_vr_controller_axes"
+class VIEW3D_GT_vr_controller_grip(Gizmo):
+ bl_idname = "VIEW_3D_GT_vr_controller_grip"
def draw(self, context):
bgl.glLineWidth(1)
bgl.glEnable(bgl.GL_BLEND)
+ self.color = 0.422, 0.438, 0.446
+ self.draw_preset_circle(self.matrix_basis, axis='POS_X')
+ self.draw_preset_circle(self.matrix_basis, axis='POS_Y')
+ self.draw_preset_circle(self.matrix_basis, axis='POS_Z')
+
+
+class VIEW3D_GT_vr_controller_aim(Gizmo):
+ bl_idname = "VIEW_3D_GT_vr_controller_aim"
+
+ def draw(self, context):
+ bgl.glLineWidth(1)
+ bgl.glEnable(bgl.GL_BLEND)
+
self.color = 1.0, 0.2, 0.322
self.draw_preset_arrow(self.matrix_basis, axis='POS_X')
self.color = 0.545, 0.863, 0.0
@@ -1448,17 +1461,25 @@ class VIEW3D_GGT_vr_controller_poses(GizmoGroup):
)
@staticmethod
- def _get_controller_pose_matrix(context, idx, scale):
+ def _get_controller_pose_matrix(context, idx, is_grip, scale):
wm = context.window_manager
loc = None
rot = None
if idx == 0:
- loc = wm.xr_session_state.controller0_grip_location
- rot = wm.xr_session_state.controller0_aim_rotation
+ if is_grip:
+ loc = wm.xr_session_state.controller0_grip_location
+ rot = wm.xr_session_state.controller0_grip_rotation
+ else:
+ loc = wm.xr_session_state.controller0_aim_location
+ rot = wm.xr_session_state.controller0_aim_rotation
elif idx == 1:
- loc = wm.xr_session_state.controller1_grip_location
- rot = wm.xr_session_state.controller1_aim_rotation
+ if is_grip:
+ loc = wm.xr_session_state.controller1_grip_location
+ rot = wm.xr_session_state.controller1_grip_rotation
+ else:
+ loc = wm.xr_session_state.controller1_aim_location
+ rot = wm.xr_session_state.controller1_aim_rotation
else:
return Matrix.Identity(4);
@@ -1472,21 +1493,30 @@ class VIEW3D_GGT_vr_controller_poses(GizmoGroup):
def setup(self, context):
for idx in range(2):
- gizmo = self.gizmos.new(VIEW3D_GT_vr_controller_axes.bl_idname)
+ self.gizmos.new(VIEW3D_GT_vr_controller_grip.bl_idname)
+ self.gizmos.new(VIEW3D_GT_vr_controller_aim.bl_idname)
+
+ for gizmo in self.gizmos:
gizmo.aspect = 1 / 3, 1 / 4
-
- gizmo.color = gizmo.color_highlight = 1.0, 1.0, 1.0
+ gizmo.color_highlight = 1.0, 1.0, 1.0
gizmo.alpha = 1.0
-
- self.gizmo = gizmo
-
+
def draw_prepare(self, context):
- view3d = context.space_data
- scale = 0.5
+ grip_idx = 0
+ aim_idx = 0
idx = 0
+ scale = 1.0
for gizmo in self.gizmos:
- gizmo.matrix_basis = self._get_controller_pose_matrix(context, idx, scale)
- idx += 1
+ is_grip = (gizmo.bl_idname == VIEW3D_GT_vr_controller_grip.bl_idname)
+ if (is_grip):
+ idx = grip_idx
+ grip_idx += 1
+ scale = 0.1
+ else:
+ idx = aim_idx
+ aim_idx += 1
+ scale = 0.5
+ gizmo.matrix_basis = self._get_controller_pose_matrix(context, idx, is_grip, scale)
class VIEW3D_GGT_vr_landmarks(GizmoGroup):
More information about the Bf-extensions-cvs
mailing list