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);
相关推荐
李游Leo1 小时前
《HarmonyOS 7 精准碰一碰跨设备协作开发实战》07:异常恢复、状态机与CrossDrop工程收尾【鸿蒙心迹】
android·harmonyos
方白羽4 小时前
Android APK安全防护
android·安全·apk
小黄人软件4 小时前
AndroidStudio老项目 macOS运行BlueTooth蓝牙串口助手(Android+Studio源码).rar
android·macos
00后程序员张4 小时前
苹果App Store上架指南:费用、原理与步骤详解
android·ios·小程序·https·uni-app·iphone·webview
天神哥哥啊4 小时前
cocos联调注意事项-安卓
android
TDengine (老段)4 小时前
TDengine TSDB 实战排障四(升级与兼容)
android·java·大数据·数据库·物联网·时序数据库·tdengine
蓝速科技5 小时前
政务自助终端信创选型与无人值守落地方案
android·大数据·数据库·人工智能·科技·技术分享·政务
硫酸锌016 小时前
在手机上运行Python增量备份手机数据到PC电脑
android·windows·python
hai_android7 小时前
子 View 被压小时,如何向父容器"告状"?——MEASURED_STATE_TOO_SMALL 向上传递机制
android·kotlin·android jetpack
AFinalStone7 小时前
Android 7 多用户源码解析(七)系统服务的多用户感知处理
android·系统架构·多用户