26#ifndef vtkOpenXRUtilities_h
27#define vtkOpenXRUtilities_h
44 vtkMatrix4x4* result,
const XrFovf fov,
const float nearZ,
const float farZ);
74 const XrViewConfigurationType& viewConfigType);
98 static const XrPosef pose = {
99 { 0.0, 0.0, 0.0, 1.0 },
107 vtkMatrix4x4* result,
const XrFovf fov,
const float nearZ,
const float farZ)
109 const float tanAngleLeft = tanf(fov.angleLeft);
110 const float tanAngleRight = tanf(fov.angleRight);
112 const float tanAngleDown = tanf(fov.angleDown);
113 const float tanAngleUp = tanf(fov.angleUp);
115 const float tanAngleWidth = tanAngleRight - tanAngleLeft;
119 const float tanAngleHeight = (tanAngleUp - tanAngleDown);
121 double matrixArray[16] = { 0 };
125 matrixArray[0] = 2 / tanAngleWidth;
127 matrixArray[8] = (tanAngleRight + tanAngleLeft) / tanAngleWidth;
131 matrixArray[5] = 2 / tanAngleHeight;
132 matrixArray[9] = (tanAngleUp + tanAngleDown) / tanAngleHeight;
137 matrixArray[10] = -1;
138 matrixArray[14] = -(nearZ + nearZ);
142 matrixArray[11] = -1;
148 matrixArray[0] = 2 / tanAngleWidth;
150 matrixArray[8] = (tanAngleRight + tanAngleLeft) / tanAngleWidth;
154 matrixArray[5] = 2 / tanAngleHeight;
155 matrixArray[9] = (tanAngleUp + tanAngleDown) / tanAngleHeight;
160 matrixArray[10] = -(farZ + nearZ) / (farZ - nearZ);
161 matrixArray[14] = -2 * farZ * nearZ / (farZ - nearZ);
165 matrixArray[11] = -1;
178 const double x2 = quat.x + quat.x;
179 const double y2 = quat.y + quat.y;
180 const double z2 = quat.z + quat.z;
182 const double xx2 = quat.x * x2;
183 const double yy2 = quat.y * y2;
184 const double zz2 = quat.z * z2;
186 const double yz2 = quat.y * z2;
187 const double wx2 = quat.w * x2;
188 const double xy2 = quat.x * y2;
189 const double wz2 = quat.w * z2;
190 const double xz2 = quat.x * z2;
191 const double wy2 = quat.w * y2;
193 result[0] = 1.0 - yy2 - zz2;
194 result[4] = xy2 + wz2;
195 result[8] = xz2 - wy2;
198 result[1] = xy2 - wz2;
199 result[5] = 1.0 - xx2 - zz2;
200 result[9] = yz2 + wx2;
203 result[2] = xz2 + wy2;
204 result[6] = yz2 - wx2;
205 result[10] = 1.0 - xx2 - yy2;
218 const XrQuaternionf& xrQuat = xrPose.orientation;
219 const XrVector3f& xrPos = xrPose.position;
221 double* elems = result->
GetData();
237 case XR_ACTION_TYPE_BOOLEAN_INPUT:
238 return "XR_ACTION_TYPE_BOOLEAN_INPUT";
239 case XR_ACTION_TYPE_FLOAT_INPUT:
240 return "XR_ACTION_TYPE_FLOAT_INPUT";
241 case XR_ACTION_TYPE_VECTOR2F_INPUT:
242 return "XR_ACTION_TYPE_VECTOR2F_INPUT";
243 case XR_ACTION_TYPE_POSE_INPUT:
244 return "XR_ACTION_TYPE_POSE_INPUT";
245 case XR_ACTION_TYPE_VIBRATION_OUTPUT:
246 return "XR_ACTION_TYPE_VIBRATION_OUTPUT";
248 return "UNRECOGNIZED_ACTION_TYPE";
254 const XrViewConfigurationType& viewConfigType)
256 switch (viewConfigType)
258 case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO:
259 return "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO";
260 case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO:
261 return "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO";
262 case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO:
263 return "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO";
264 case XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT:
265 return "XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT";
267 return "UNRECOGNIZED_VIEW_CONFIGURATION_TYPE";
273 const XrStructureType& structureType)
275 switch (structureType)
277 case XR_TYPE_API_LAYER_PROPERTIES:
278 return "XR_TYPE_API_LAYER_PROPERTIES";
279 case XR_TYPE_EXTENSION_PROPERTIES:
280 return "XR_TYPE_EXTENSION_PROPERTIES";
281 case XR_TYPE_INSTANCE_CREATE_INFO:
282 return "XR_TYPE_INSTANCE_CREATE_INFO";
283 case XR_TYPE_SYSTEM_GET_INFO:
284 return "XR_TYPE_SYSTEM_GET_INFO";
285 case XR_TYPE_SYSTEM_PROPERTIES:
286 return "XR_TYPE_SYSTEM_PROPERTIES";
287 case XR_TYPE_VIEW_LOCATE_INFO:
288 return "XR_TYPE_VIEW_LOCATE_INFO";
290 return "XR_TYPE_VIEW";
291 case XR_TYPE_SESSION_CREATE_INFO:
292 return "XR_TYPE_SESSION_CREATE_INFO";
293 case XR_TYPE_SWAPCHAIN_CREATE_INFO:
294 return "XR_TYPE_SWAPCHAIN_CREATE_INFO";
295 case XR_TYPE_SESSION_BEGIN_INFO:
296 return "XR_TYPE_SESSION_BEGIN_INFO";
297 case XR_TYPE_VIEW_STATE:
298 return "XR_TYPE_VIEW_STATE";
299 case XR_TYPE_FRAME_END_INFO:
300 return "XR_TYPE_FRAME_END_INFO";
301 case XR_TYPE_HAPTIC_VIBRATION:
302 return "XR_TYPE_HAPTIC_VIBRATION";
303 case XR_TYPE_EVENT_DATA_BUFFER:
304 return "XR_TYPE_EVENT_DATA_BUFFER";
305 case XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING:
306 return "XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING";
307 case XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED:
308 return "XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED";
309 case XR_TYPE_ACTION_STATE_BOOLEAN:
310 return "XR_TYPE_ACTION_STATE_BOOLEAN";
311 case XR_TYPE_ACTION_STATE_FLOAT:
312 return "XR_TYPE_ACTION_STATE_FLOAT";
313 case XR_TYPE_ACTION_STATE_VECTOR2F:
314 return "XR_TYPE_ACTION_STATE_VECTOR2F";
315 case XR_TYPE_ACTION_STATE_POSE:
316 return "XR_TYPE_ACTION_STATE_POSE";
317 case XR_TYPE_ACTION_SET_CREATE_INFO:
318 return "XR_TYPE_ACTION_SET_CREATE_INFO";
319 case XR_TYPE_ACTION_CREATE_INFO:
320 return "XR_TYPE_ACTION_CREATE_INFO";
321 case XR_TYPE_INSTANCE_PROPERTIES:
322 return "XR_TYPE_INSTANCE_PROPERTIES";
323 case XR_TYPE_FRAME_WAIT_INFO:
324 return "XR_TYPE_FRAME_WAIT_INFO";
325 case XR_TYPE_COMPOSITION_LAYER_PROJECTION:
326 return "XR_TYPE_COMPOSITION_LAYER_PROJECTION";
327 case XR_TYPE_COMPOSITION_LAYER_QUAD:
328 return "XR_TYPE_COMPOSITION_LAYER_QUAD";
329 case XR_TYPE_REFERENCE_SPACE_CREATE_INFO:
330 return "XR_TYPE_REFERENCE_SPACE_CREATE_INFO";
331 case XR_TYPE_ACTION_SPACE_CREATE_INFO:
332 return "XR_TYPE_ACTION_SPACE_CREATE_INFO";
333 case XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING:
334 return "XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING";
335 case XR_TYPE_VIEW_CONFIGURATION_VIEW:
336 return "XR_TYPE_VIEW_CONFIGURATION_VIEW";
337 case XR_TYPE_SPACE_LOCATION:
338 return "XR_TYPE_SPACE_LOCATION";
339 case XR_TYPE_SPACE_VELOCITY:
340 return "XR_TYPE_SPACE_VELOCITY";
341 case XR_TYPE_FRAME_STATE:
342 return "XR_TYPE_FRAME_STATE";
343 case XR_TYPE_VIEW_CONFIGURATION_PROPERTIES:
344 return "XR_TYPE_VIEW_CONFIGURATION_PROPERTIES";
345 case XR_TYPE_FRAME_BEGIN_INFO:
346 return "XR_TYPE_FRAME_BEGIN_INFO";
347 case XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW:
348 return "XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW";
349 case XR_TYPE_EVENT_DATA_EVENTS_LOST:
350 return "XR_TYPE_EVENT_DATA_EVENTS_LOST";
351 case XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING:
352 return "XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING";
353 case XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED:
354 return "XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED";
355 case XR_TYPE_INTERACTION_PROFILE_STATE:
356 return "XR_TYPE_INTERACTION_PROFILE_STATE";
357 case XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO:
358 return "XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO";
359 case XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO:
360 return "XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO";
361 case XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO:
362 return "XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO";
363 case XR_TYPE_ACTION_STATE_GET_INFO:
364 return "XR_TYPE_ACTION_STATE_GET_INFO";
365 case XR_TYPE_HAPTIC_ACTION_INFO:
366 return "XR_TYPE_HAPTIC_ACTION_INFO";
367 case XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO:
368 return "XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO";
369 case XR_TYPE_ACTIONS_SYNC_INFO:
370 return "XR_TYPE_ACTIONS_SYNC_INFO";
371 case XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO:
372 return "XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO";
373 case XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO:
374 return "XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO";
375 case XR_TYPE_COMPOSITION_LAYER_CUBE_KHR:
376 return "XR_TYPE_COMPOSITION_LAYER_CUBE_KHR";
377 case XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR:
378 return "XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR";
379 case XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR:
380 return "XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR";
381 case XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR:
382 return "XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR";
383 case XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT:
384 return "XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT";
385 case XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR:
386 return "XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR";
387 case XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR:
388 return "XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR";
389 case XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT:
390 return "XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT";
391 case XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT:
392 return "XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT";
393 case XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:
394 return "XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT";
395 case XR_TYPE_DEBUG_UTILS_LABEL_EXT:
396 return "XR_TYPE_DEBUG_UTILS_LABEL_EXT";
397 case XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR:
398 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR";
399 case XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR:
400 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR";
401 case XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR:
402 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR";
403 case XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR:
404 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR";
405 case XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR:
406 return "XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR";
407 case XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR:
408 return "XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR";
409 case XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR:
410 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR";
411 case XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR:
412 return "XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR";
413 case XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR:
414 return "XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR";
415 case XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR:
416 return "XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR";
417 case XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR:
418 return "XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR";
419 case XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR:
420 return "XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR";
421 case XR_TYPE_GRAPHICS_BINDING_D3D11_KHR:
422 return "XR_TYPE_GRAPHICS_BINDING_D3D11_KHR";
423 case XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR:
424 return "XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR";
425 case XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR:
426 return "XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR";
427 case XR_TYPE_GRAPHICS_BINDING_D3D12_KHR:
428 return "XR_TYPE_GRAPHICS_BINDING_D3D12_KHR";
429 case XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR:
430 return "XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR";
431 case XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR:
432 return "XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR";
433 case XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT:
434 return "XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT";
435 case XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT:
436 return "XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT";
437 case XR_TYPE_VISIBILITY_MASK_KHR:
438 return "XR_TYPE_VISIBILITY_MASK_KHR";
439 case XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR:
440 return "XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR";
441 case XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX:
442 return "XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX";
443 case XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX:
444 return "XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX";
445 case XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR:
446 return "XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR";
447 case XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT:
448 return "XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT";
449 case XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT:
450 return "XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT";
451 case XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT:
452 return "XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT";
453 case XR_TYPE_GRAPHICS_BINDING_EGL_MNDX:
454 return "XR_TYPE_GRAPHICS_BINDING_EGL_MNDX";
455 case XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT:
456 return "XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT";
457 case XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT:
458 return "XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT";
459 case XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT:
460 return "XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT";
461 case XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT:
462 return "XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT";
463 case XR_TYPE_HAND_JOINT_LOCATIONS_EXT:
464 return "XR_TYPE_HAND_JOINT_LOCATIONS_EXT";
465 case XR_TYPE_HAND_JOINT_VELOCITIES_EXT:
466 return "XR_TYPE_HAND_JOINT_VELOCITIES_EXT";
467 case XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT:
468 return "XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT";
469 case XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT:
470 return "XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT";
471 case XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT:
472 return "XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT";
473 case XR_TYPE_HAND_MESH_MSFT:
474 return "XR_TYPE_HAND_MESH_MSFT";
475 case XR_TYPE_HAND_POSE_TYPE_INFO_MSFT:
476 return "XR_TYPE_HAND_POSE_TYPE_INFO_MSFT";
477 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT:
478 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT";
479 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT:
480 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT";
481 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT:
482 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT";
483 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT:
484 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT";
485 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT:
486 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT";
487 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT:
488 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT";
489 case XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT:
490 return "XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT";
491 case XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT:
492 return "XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT";
493 case XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT:
494 return "XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT";
495 case XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT:
496 return "XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT";
497 case XR_TYPE_CONTROLLER_MODEL_STATE_MSFT:
498 return "XR_TYPE_CONTROLLER_MODEL_STATE_MSFT";
499 case XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC:
500 return "XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC";
501 case XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT:
502 return "XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT";
503 case XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB:
504 return "XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB";
505 case XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE:
506 return "XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE";
507 case XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR:
508 return "XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR";
509 case XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR:
510 return "XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR";
511 case XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR:
512 return "XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR";
513 case XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR:
514 return "XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR";
515 case XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR:
516 return "XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR";
517 case XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB:
518 return "XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB";
519 case XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB:
520 return "XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB";
521 case XR_TYPE_BINDING_MODIFICATIONS_KHR:
522 return "XR_TYPE_BINDING_MODIFICATIONS_KHR";
524 return "UNRECOGNIZED_XR_TYPE";
represent and manipulate 4x4 transformation matrices
void DeepCopy(const vtkMatrix4x4 *source)
Set the elements of the matrix to the same values as the elements of the given source matrix.
double * GetData()
Returns the raw double array holding the matrix.
static void Transpose(const vtkMatrix4x4 *in, vtkMatrix4x4 *out)
Transpose the matrix and put it into out.
abstract base class for most VTK objects
virtual void Modified()
Update the modification time for this object.
Header file that contains utility functions for OpenXR.
static void CreateFromQuaternion(double result[16], const XrQuaternionf &quat)
Given a quaternion, return elements of equivalent matrix as an array.
static void SetMatrixFromXrPose(vtkMatrix4x4 *result, const XrPosef &xrPose)
Given an XR pose (orientation quaternion + position vector), set the provided matrix from it.
vtkOpenXRUtilities()=default
static const char * GetActionTypeAsString(const XrActionType &actionType)
Return string representation of given XrActionType.
static const char * GetStructureTypeAsString(const XrStructureType &structureType)
Return string representation of given XrStructureType.
static const char * GetViewConfigurationTypeAsString(const XrViewConfigurationType &viewConfigType)
Return string representation of given XrViewConfigurationType.
static vtkOpenXRUtilities * New()
~vtkOpenXRUtilities() override=default
static const XrPosef & GetIdentityPose()
static void CreateProjectionFov(vtkMatrix4x4 *result, const XrFovf fov, const float nearZ, const float farZ)
Given a field of view (left, right, up, down angles) and near/far clipping builds,...