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);
相关推荐
恋猫de小郭1 天前
你是不是觉得 R8 很讨厌,但 Android 为什么选择 R8 ?也许你对 R8 还不够了解
android·前端·flutter
城东米粉儿1 天前
Android Glide 笔记
android
城东米粉儿1 天前
Android TheRouter 笔记
android
城东米粉儿2 天前
Android AIDL 笔记
android
城东米粉儿2 天前
Android 进程间传递大数据 笔记
android
城东米粉儿2 天前
Android KMP 笔记
android
冬奇Lab2 天前
WMS核心机制:窗口管理与层级控制深度解析
android·源码阅读
松仔log2 天前
JetPack——Paging
android·rxjava
城东米粉儿2 天前
Android Kotlin DSL 笔记
android