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";
abstract base class for most VTK objects
represent and manipulate 4x4 transformation matrices
static const XrPosef & GetIdentityPose()
static vtkOpenXRUtilities * New()
~vtkOpenXRUtilities() override=default
static const char * GetViewConfigurationTypeAsString(const XrViewConfigurationType &viewConfigType)
Return string representation of given XrViewConfigurationType.
static void SetMatrixFromXrPose(vtkMatrix4x4 *result, const XrPosef &xrPose)
Given an XR pose (orientation quaternion + position vector), set the provided matrix from it...
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 CreateFromQuaternion(double result[16], const XrQuaternionf &quat)
Given a quaternion, return elements of equivalent matrix as an array.
virtual void Modified()
Update the modification time for this object.
static const char * GetActionTypeAsString(const XrActionType &actionType)
Return string representation of given XrActionType.
static void Transpose(const vtkMatrix4x4 *in, vtkMatrix4x4 *out)
Transpose the matrix and put it into out.
static const char * GetStructureTypeAsString(const XrStructureType &structureType)
Return string representation of given XrStructureType.
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, return a projection matrix in result.
vtkOpenXRUtilities()=default