Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/windowmanager/xr/intern/wm_xr_session.c')
-rw-r--r--source/blender/windowmanager/xr/intern/wm_xr_session.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_session.c b/source/blender/windowmanager/xr/intern/wm_xr_session.c
index 77728e60e23..a64973c9f01 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_session.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_session.c
@@ -136,6 +136,12 @@ static void wm_xr_session_base_pose_calc(const Scene *scene,
tmp_eul[0] = M_PI_2;
tmp_eul[1] = 0;
eul_to_quat(r_base_pose->orientation_quat, tmp_eul);
+
+ /* TODO: copied code from ubisoft guys, temporary fix. */
+ tmp_eul[0] = M_PI_2;
+ tmp_eul[1] = 0;
+ tmp_eul[2] = 0;
+ eul_to_quat(r_base_pose->orientation_quat, tmp_eul);
}
else {
copy_v3_fl(r_base_pose->position, 0.0f);
@@ -282,10 +288,31 @@ void wm_xr_session_state_update(const XrSessionSettings *settings,
state->prev_base_pose_type = settings->base_pose_type;
state->prev_base_pose_object = settings->base_pose_object;
state->is_view_data_set = true;
+
/* Assume this was already done through wm_xr_session_draw_data_update(). */
state->force_reset_to_base_pose = false;
}
+bool WM_xr_session_state_world_matrix_get(const wmXrData *xr,
+ float world_matrix[4][4])
+{
+ if (!WM_xr_session_is_ready(xr)) {
+ unit_m4(world_matrix);
+ return false;
+ }
+
+ float scale[3] = {xr->runtime->session_state.world_scale,
+ xr->runtime->session_state.world_scale,
+ xr->runtime->session_state.world_scale};
+
+ loc_quat_size_to_mat4(world_matrix,
+ xr->runtime->session_state.world_pose.position,
+ xr->runtime->session_state.world_pose.orientation_quat,
+ scale);
+
+ return true;
+}
+
wmXrSessionState *WM_xr_session_state_handle_get(const wmXrData *xr)
{
return xr->runtime ? &xr->runtime->session_state : NULL;