OpenXR Reference Space浅析

在OpenXR中space也是一个重要的模块,这里参考Monado的代码分析一下。

入口是oxr_xrLocateSpace -》oxr_space_locate,

其中分两个大部分,一是先获取原始的space pose,

cpp 复制代码
	XrResult ret = get_pure_space_relation(log, spc, baseSpc, time, &pure);

二是和space的pose,以及baseSpace的pose,合到一起。

cpp 复制代码
	// Combine space and base space poses with pure relation
	struct xrt_space_relation result;
	struct xrt_space_graph graph = {0};
	m_space_graph_add_pose_if_not_identity(&graph, &spc->pose);
	m_space_graph_add_relation(&graph, &pure);
	m_space_graph_add_inverted_pose_if_not_identity(&graph, &baseSpc->pose);
	m_space_graph_resolve(&graph, &result);

可以概括成这样计算的: Inverted(baseSpace.pose) * purePose * Space.pose

其中两个transform相乘,C = A * B,计算公式:

cpp 复制代码
C.orientation = A.orientation * B.orientation;

C.position = A.position + (A.orientation * B.position);
相关推荐
消失的旧时光-19436 小时前
Android ADB指令大全详解
android·adb
ashcn20018 小时前
opengl 播放视频的android c++ 方案
android·c++ opengl es
abner.Li8 小时前
android 反编译
android
Digitally8 小时前
如何删除 realme 手机上的短信
android
2501_916008899 小时前
提高 iOS 应用逆向难度的工程实践,多工具联动的全栈安全方案
android·安全·ios·小程序·uni-app·cocoa·iphone
沐怡旸9 小时前
【底层机制】Android图形渲染体系深度解析:VSync信号机制
android·面试
BoomHe9 小时前
Android 13 (API 33)上自定义广播
android
来来走走11 小时前
Android开发(Kotlin) ViewModel基本用法
android·开发语言·kotlin
Digitally11 小时前
在荣耀手机上删除短信的完整指南
android
nono牛11 小时前
Android Binder C/C++ 层详解与实践
android·c语言·binder