14#ifndef vtkOpenXRUtilities_h
15#define vtkOpenXRUtilities_h
20VTK_ABI_NAMESPACE_BEGIN
53 const XrViewConfigurationType& viewConfigType);
74 static const XrPosef pose = {
75 { 0.0, 0.0, 0.0, 1.0 },
83 vtkMatrix4x4* result,
const XrFovf fov,
const float nearZ,
const float farZ)
85 const float tanAngleLeft = tanf(fov.angleLeft);
86 const float tanAngleRight = tanf(fov.angleRight);
88 const float tanAngleDown = tanf(fov.angleDown);
89 const float tanAngleUp = tanf(fov.angleUp);
91 const float tanAngleWidth = tanAngleRight - tanAngleLeft;
95 const float tanAngleHeight = (tanAngleUp - tanAngleDown);
97 double matrixArray[16] = { 0 };
101 matrixArray[0] = 2 / tanAngleWidth;
103 matrixArray[8] = (tanAngleRight + tanAngleLeft) / tanAngleWidth;
107 matrixArray[5] = 2 / tanAngleHeight;
108 matrixArray[9] = (tanAngleUp + tanAngleDown) / tanAngleHeight;
113 matrixArray[10] = -1;
114 matrixArray[14] = -(nearZ + nearZ);
118 matrixArray[11] = -1;
124 matrixArray[0] = 2 / tanAngleWidth;
126 matrixArray[8] = (tanAngleRight + tanAngleLeft) / tanAngleWidth;
130 matrixArray[5] = 2 / tanAngleHeight;
131 matrixArray[9] = (tanAngleUp + tanAngleDown) / tanAngleHeight;
136 matrixArray[10] = -(farZ + nearZ) / (farZ - nearZ);
137 matrixArray[14] = -2 * farZ * nearZ / (farZ - nearZ);
141 matrixArray[11] = -1;
154 const double x2 = quat.x + quat.x;
155 const double y2 = quat.y + quat.y;
156 const double z2 = quat.z + quat.z;
158 const double xx2 = quat.x * x2;
159 const double yy2 = quat.y * y2;
160 const double zz2 = quat.z * z2;
162 const double yz2 = quat.y * z2;
163 const double wx2 = quat.w * x2;
164 const double xy2 = quat.x * y2;
165 const double wz2 = quat.w * z2;
166 const double xz2 = quat.x * z2;
167 const double wy2 = quat.w * y2;
169 result[0] = 1.0 - yy2 - zz2;
170 result[4] = xy2 + wz2;
171 result[8] = xz2 - wy2;
174 result[1] = xy2 - wz2;
175 result[5] = 1.0 - xx2 - zz2;
176 result[9] = yz2 + wx2;
179 result[2] = xz2 + wy2;
180 result[6] = yz2 - wx2;
181 result[10] = 1.0 - xx2 - yy2;
194 const XrQuaternionf& xrQuat = xrPose.orientation;
195 const XrVector3f& xrPos = xrPose.position;
197 double* elems = result->
GetData();
213 case XR_ACTION_TYPE_BOOLEAN_INPUT:
214 return "XR_ACTION_TYPE_BOOLEAN_INPUT";
215 case XR_ACTION_TYPE_FLOAT_INPUT:
216 return "XR_ACTION_TYPE_FLOAT_INPUT";
217 case XR_ACTION_TYPE_VECTOR2F_INPUT:
218 return "XR_ACTION_TYPE_VECTOR2F_INPUT";
219 case XR_ACTION_TYPE_POSE_INPUT:
220 return "XR_ACTION_TYPE_POSE_INPUT";
221 case XR_ACTION_TYPE_VIBRATION_OUTPUT:
222 return "XR_ACTION_TYPE_VIBRATION_OUTPUT";
224 return "UNRECOGNIZED_ACTION_TYPE";
230 const XrViewConfigurationType& viewConfigType)
232 switch (viewConfigType)
234 case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO:
235 return "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO";
236 case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO:
237 return "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO";
238 case XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO:
239 return "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO";
240 case XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT:
241 return "XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT";
243 return "UNRECOGNIZED_VIEW_CONFIGURATION_TYPE";
249 const XrStructureType& structureType)
251 switch (structureType)
253 case XR_TYPE_API_LAYER_PROPERTIES:
254 return "XR_TYPE_API_LAYER_PROPERTIES";
255 case XR_TYPE_EXTENSION_PROPERTIES:
256 return "XR_TYPE_EXTENSION_PROPERTIES";
257 case XR_TYPE_INSTANCE_CREATE_INFO:
258 return "XR_TYPE_INSTANCE_CREATE_INFO";
259 case XR_TYPE_SYSTEM_GET_INFO:
260 return "XR_TYPE_SYSTEM_GET_INFO";
261 case XR_TYPE_SYSTEM_PROPERTIES:
262 return "XR_TYPE_SYSTEM_PROPERTIES";
263 case XR_TYPE_VIEW_LOCATE_INFO:
264 return "XR_TYPE_VIEW_LOCATE_INFO";
266 return "XR_TYPE_VIEW";
267 case XR_TYPE_SESSION_CREATE_INFO:
268 return "XR_TYPE_SESSION_CREATE_INFO";
269 case XR_TYPE_SWAPCHAIN_CREATE_INFO:
270 return "XR_TYPE_SWAPCHAIN_CREATE_INFO";
271 case XR_TYPE_SESSION_BEGIN_INFO:
272 return "XR_TYPE_SESSION_BEGIN_INFO";
273 case XR_TYPE_VIEW_STATE:
274 return "XR_TYPE_VIEW_STATE";
275 case XR_TYPE_FRAME_END_INFO:
276 return "XR_TYPE_FRAME_END_INFO";
277 case XR_TYPE_HAPTIC_VIBRATION:
278 return "XR_TYPE_HAPTIC_VIBRATION";
279 case XR_TYPE_EVENT_DATA_BUFFER:
280 return "XR_TYPE_EVENT_DATA_BUFFER";
281 case XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING:
282 return "XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING";
283 case XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED:
284 return "XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED";
285 case XR_TYPE_ACTION_STATE_BOOLEAN:
286 return "XR_TYPE_ACTION_STATE_BOOLEAN";
287 case XR_TYPE_ACTION_STATE_FLOAT:
288 return "XR_TYPE_ACTION_STATE_FLOAT";
289 case XR_TYPE_ACTION_STATE_VECTOR2F:
290 return "XR_TYPE_ACTION_STATE_VECTOR2F";
291 case XR_TYPE_ACTION_STATE_POSE:
292 return "XR_TYPE_ACTION_STATE_POSE";
293 case XR_TYPE_ACTION_SET_CREATE_INFO:
294 return "XR_TYPE_ACTION_SET_CREATE_INFO";
295 case XR_TYPE_ACTION_CREATE_INFO:
296 return "XR_TYPE_ACTION_CREATE_INFO";
297 case XR_TYPE_INSTANCE_PROPERTIES:
298 return "XR_TYPE_INSTANCE_PROPERTIES";
299 case XR_TYPE_FRAME_WAIT_INFO:
300 return "XR_TYPE_FRAME_WAIT_INFO";
301 case XR_TYPE_COMPOSITION_LAYER_PROJECTION:
302 return "XR_TYPE_COMPOSITION_LAYER_PROJECTION";
303 case XR_TYPE_COMPOSITION_LAYER_QUAD:
304 return "XR_TYPE_COMPOSITION_LAYER_QUAD";
305 case XR_TYPE_REFERENCE_SPACE_CREATE_INFO:
306 return "XR_TYPE_REFERENCE_SPACE_CREATE_INFO";
307 case XR_TYPE_ACTION_SPACE_CREATE_INFO:
308 return "XR_TYPE_ACTION_SPACE_CREATE_INFO";
309 case XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING:
310 return "XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING";
311 case XR_TYPE_VIEW_CONFIGURATION_VIEW:
312 return "XR_TYPE_VIEW_CONFIGURATION_VIEW";
313 case XR_TYPE_SPACE_LOCATION:
314 return "XR_TYPE_SPACE_LOCATION";
315 case XR_TYPE_SPACE_VELOCITY:
316 return "XR_TYPE_SPACE_VELOCITY";
317 case XR_TYPE_FRAME_STATE:
318 return "XR_TYPE_FRAME_STATE";
319 case XR_TYPE_VIEW_CONFIGURATION_PROPERTIES:
320 return "XR_TYPE_VIEW_CONFIGURATION_PROPERTIES";
321 case XR_TYPE_FRAME_BEGIN_INFO:
322 return "XR_TYPE_FRAME_BEGIN_INFO";
323 case XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW:
324 return "XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW";
325 case XR_TYPE_EVENT_DATA_EVENTS_LOST:
326 return "XR_TYPE_EVENT_DATA_EVENTS_LOST";
327 case XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING:
328 return "XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING";
329 case XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED:
330 return "XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED";
331 case XR_TYPE_INTERACTION_PROFILE_STATE:
332 return "XR_TYPE_INTERACTION_PROFILE_STATE";
333 case XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO:
334 return "XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO";
335 case XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO:
336 return "XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO";
337 case XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO:
338 return "XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO";
339 case XR_TYPE_ACTION_STATE_GET_INFO:
340 return "XR_TYPE_ACTION_STATE_GET_INFO";
341 case XR_TYPE_HAPTIC_ACTION_INFO:
342 return "XR_TYPE_HAPTIC_ACTION_INFO";
343 case XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO:
344 return "XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO";
345 case XR_TYPE_ACTIONS_SYNC_INFO:
346 return "XR_TYPE_ACTIONS_SYNC_INFO";
347 case XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO:
348 return "XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO";
349 case XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO:
350 return "XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO";
351 case XR_TYPE_COMPOSITION_LAYER_CUBE_KHR:
352 return "XR_TYPE_COMPOSITION_LAYER_CUBE_KHR";
353 case XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR:
354 return "XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR";
355 case XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR:
356 return "XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR";
357 case XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR:
358 return "XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR";
359 case XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT:
360 return "XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT";
361 case XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR:
362 return "XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR";
363 case XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR:
364 return "XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR";
365 case XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT:
366 return "XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT";
367 case XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT:
368 return "XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT";
369 case XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:
370 return "XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT";
371 case XR_TYPE_DEBUG_UTILS_LABEL_EXT:
372 return "XR_TYPE_DEBUG_UTILS_LABEL_EXT";
373 case XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR:
374 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR";
375 case XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR:
376 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR";
377 case XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR:
378 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR";
379 case XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR:
380 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR";
381 case XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR:
382 return "XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR";
383 case XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR:
384 return "XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR";
385 case XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR:
386 return "XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR";
387 case XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR:
388 return "XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR";
389 case XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR:
390 return "XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR";
391 case XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR:
392 return "XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR";
393 case XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR:
394 return "XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR";
395 case XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR:
396 return "XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR";
397 case XR_TYPE_GRAPHICS_BINDING_D3D11_KHR:
398 return "XR_TYPE_GRAPHICS_BINDING_D3D11_KHR";
399 case XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR:
400 return "XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR";
401 case XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR:
402 return "XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR";
403 case XR_TYPE_GRAPHICS_BINDING_D3D12_KHR:
404 return "XR_TYPE_GRAPHICS_BINDING_D3D12_KHR";
405 case XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR:
406 return "XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR";
407 case XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR:
408 return "XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR";
409 case XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT:
410 return "XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT";
411 case XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT:
412 return "XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT";
413 case XR_TYPE_VISIBILITY_MASK_KHR:
414 return "XR_TYPE_VISIBILITY_MASK_KHR";
415 case XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR:
416 return "XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR";
417 case XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX:
418 return "XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX";
419 case XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX:
420 return "XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX";
421 case XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR:
422 return "XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR";
423 case XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT:
424 return "XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT";
425 case XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT:
426 return "XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT";
427 case XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT:
428 return "XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT";
429 case XR_TYPE_GRAPHICS_BINDING_EGL_MNDX:
430 return "XR_TYPE_GRAPHICS_BINDING_EGL_MNDX";
431 case XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT:
432 return "XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT";
433 case XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT:
434 return "XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT";
435 case XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT:
436 return "XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT";
437 case XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT:
438 return "XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT";
439 case XR_TYPE_HAND_JOINT_LOCATIONS_EXT:
440 return "XR_TYPE_HAND_JOINT_LOCATIONS_EXT";
441 case XR_TYPE_HAND_JOINT_VELOCITIES_EXT:
442 return "XR_TYPE_HAND_JOINT_VELOCITIES_EXT";
443 case XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT:
444 return "XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT";
445 case XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT:
446 return "XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT";
447 case XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT:
448 return "XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT";
449 case XR_TYPE_HAND_MESH_MSFT:
450 return "XR_TYPE_HAND_MESH_MSFT";
451 case XR_TYPE_HAND_POSE_TYPE_INFO_MSFT:
452 return "XR_TYPE_HAND_POSE_TYPE_INFO_MSFT";
453 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT:
454 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT";
455 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT:
456 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT";
457 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT:
458 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT";
459 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT:
460 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT";
461 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT:
462 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT";
463 case XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT:
464 return "XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT";
465 case XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT:
466 return "XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT";
467 case XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT:
468 return "XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT";
469 case XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT:
470 return "XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT";
471 case XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT:
472 return "XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT";
473 case XR_TYPE_CONTROLLER_MODEL_STATE_MSFT:
474 return "XR_TYPE_CONTROLLER_MODEL_STATE_MSFT";
475 case XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC:
476 return "XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC";
477 case XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT:
478 return "XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT";
479 case XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB:
480 return "XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB";
481 case XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE:
482 return "XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE";
483 case XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR:
484 return "XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR";
485 case XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR:
486 return "XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR";
487 case XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR:
488 return "XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR";
489 case XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR:
490 return "XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR";
491 case XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR:
492 return "XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR";
493 case XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB:
494 return "XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB";
495 case XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB:
496 return "XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB";
497 case XR_TYPE_BINDING_MODIFICATIONS_KHR:
498 return "XR_TYPE_BINDING_MODIFICATIONS_KHR";
500 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 void CreateProjectionFov(vtkMatrix4x4 *result, XrFovf fov, float nearZ, float farZ)
Given a field of view (left, right, up, down angles) and near/far clipping builds,...
static vtkOpenXRUtilities * New()
~vtkOpenXRUtilities() override=default
static const XrPosef & GetIdentityPose()
Defines the OpenXR types and extensions common to all platforms.