IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Hololens2-OpenXR开发(四)-坐标系同步 -> 正文阅读

[游戏开发]Hololens2-OpenXR开发(四)-坐标系同步

Coordinate System Synchronization with Holographic Remoting and the OpenXR API

本文是根据官方示例的学习笔记

https://docs.microsoft.com/en-us/windows/mixed-reality/develop/native/holographic-remoting-coordinate-system-synchronization-openxr

为了结合计算机视觉相关任务,统一眼镜端坐标系和渲染的虚拟世界坐标系是十分必要的。
官方示例:

https://github.com/microsoft/HoloLens2ForCV

1. 创建眼镜端中的用户坐标系统

调用xrCreateReferenceSpace中用 XR_REMOTING_REFERENCE_SPACE_TYPE_USER_MSFT参数创建用户坐标系

xr::SpaceHandle space;
XrReferenceSpaceCreateInfo createInfo{XR_TYPE_REFERENCE_SPACE_CREATE_INFO};
createInfo.referenceSpaceType = static_cast<XrReferenceSpaceType>(XR_REMOTING_REFERENCE_SPACE_TYPE_USER_MSFT);
createInfo.poseInReferenceSpace = xr::math::Pose::Translation({0.0f, 0.0f, 0.0f});
CHECK_XRCMD(xrCreateReferenceSpace(m_session.Get(), &createInfo, space.Put()));

2. 获取眼镜坐标参数

在SampleRemoteOpenXR示例中,viewProjections包含了眼镜坐标的基本信息。

 std::vector<xr::math::ViewProjection> viewProjections(viewCount);//viewCount = 2 左右眼
 for (uint32_t i = 0; i < viewCount; i++) {
     viewProjections[i] = {m_renderResources->Views[i].pose, m_renderResources->Views[i].fov, m_nearFar};
}

眼镜的前方是Z轴正方向,右手法则。

左眼的方向,FOV,位置:

const DirectX::XMMATRIX spaceToView = xr::math::LoadXrPose(viewProjections[0].Pose);
//spaceToView是4x4的矩阵,代表左眼xyz的三个方向的向量
const DirectX::XMVECTOR a = spaceToView.r[0];//X
float x1 = DirectX::XMVectorGetX(a);
float x2 = DirectX::XMVectorGetY(a);
float x3 = DirectX::XMVectorGetZ(a);
const DirectX::XMVECTOR b = spaceToView.r[1];//Y
float y1 = DirectX::XMVectorGetX(b);
float y2 = DirectX::XMVectorGetY(b);
float y3 = DirectX::XMVectorGetZ(b);
const DirectX::XMVECTOR c = spaceToView.r[2];//Z
float z1 = DirectX::XMVectorGetX(c);
float z2 = DirectX::XMVectorGetY(c);
float z3 = DirectX::XMVectorGetZ(c);
//获取左眼FOV的相关信息
float Left_FOV_up = viewProjections[0].Fov.angleUp;
float Left_FOV_right = viewProjections[0].Fov.angleRight;
//获取左眼的位置
float Left_Pos_X = viewProjections[0].Pose.position.x;
float Left_Pos_Y = viewProjections[0].Pose.position.y;
float Left_Pos_Z = viewProjections[0].Pose.position.z;

同理,右眼:

const DirectX::XMMATRIX spaceToView = xr::math::LoadXrPose(viewProjections[1].Pose);
//spaceToView是4x4的矩阵,代表右眼xyz的三个方向的向量
const DirectX::XMVECTOR a = spaceToView.r[0];//X
float x1 = DirectX::XMVectorGetX(a);
float x2 = DirectX::XMVectorGetY(a);
float x3 = DirectX::XMVectorGetZ(a);
const DirectX::XMVECTOR b = spaceToView.r[1];//Y
float y1 = DirectX::XMVectorGetX(b);
float y2 = DirectX::XMVectorGetY(b);
float y3 = DirectX::XMVectorGetZ(b);
const DirectX::XMVECTOR c = spaceToView.r[2];//Z
float z1 = DirectX::XMVectorGetX(c);
float z2 = DirectX::XMVectorGetY(c);
float z3 = DirectX::XMVectorGetZ(c);
//获取右眼FOV的相关信息
float Right_FOV_up = viewProjections[1].Fov.angleUp;
float Right_FOV_right = viewProjections[1].Fov.angleRight;
//获取右眼的位置
float Right_Pos_X = viewProjections[1].Pose.position.x;
float Right_Pos_Y = viewProjections[1].Pose.position.y;
float Right_Pos_Z = viewProjections[1].Pose.position.z;



**未完待续**去看看官方给的那一大坨文件
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:53:59  更:2022-03-12 17:55:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/17 3:18:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码