Microsoft Hololens开发上手(4)

磨刀不误砍柴功,我们总有一些小工程师,不了解全貌,不好好思考,上手就开始写代码,这种做法是非常不可取的。对于Hololens的开发也是一样。今天我们来重点看看Hololens里面的一些概念,比如Holograms, 坐标系,还有Gaze。好吧,今天没有demo的原因是因为Hololens被借走了,没法部署,仔细看看概念对开发也是非常非常非常重要的。

Hologram

Hololens可以让你创建一个叫做Hologram的东西,它其实就是虚拟空间中的对象,由光和声组成,就好像是真的东西一样。这里吐槽一下,其实真正看到的还是有区别的,光影效果明显不同。如果我们真的可以把虚拟的东西做得和真实的东西一样,那不知道有多少人会变得神经错乱。Hologram能够对注视(Gaze),手势(Gestures)和语音命令做出反应,当然要通过写代码的方式。还可以和真实世界的表面进行交互。我们可以放一个假的小狗在桌子上。带上Hololens以后,它会把Holograms渲染在眼前,同时和你以及周围环境交互。比如说,昨天我把这只小狗放在桌子的左上角,那下次我在运行这个程序的时候,他可以记住我的房间和小狗位置,从而出现在同一个地方。这个功能叫Spatial Anchor。另外Holograms支持发出声音,而且是声音是带方向和距离的,叫做Spatial Sound,晚点我们再具体看。

坐标系

以下内容涉及到高中数学,如果不熟悉可以回去复习一下高中数学。所有的三维应用程序都是使用笛卡尔坐标系来描述物体的位置和方向,就是X, Y, Z轴。Hololens里有虚拟和实际的坐标系统,叫做空间坐标系(Spatial Coordinate System)。其中定义的单位是米,也就是说(0,0,0)到(1,1,1)的距离是1.732米,看不懂为什么的同学们以后就没法辅导小孩的高中数学了,哈哈哈。hololens里使用的是右手坐标系,也就是x朝右,y朝上,z超内。

hololens支持2种参照系。一个是静止参照系(stationary frame of reference),目的是为了保证holograms的位置相对不变,另外一个叫做附加参照系(Attached Frame of reference), 就是说有些场景下需要让holograms跟着人的移动而移动,这些内容叫body-locked content。简单而言,静止参照系要解决的问题是,在程序启动的时候,你所在的位置是原点,那么你可以把一个Hologram放在某个位置上,然后你站起来,看着这个位置,不管你怎么移动,在眼镜里看到的holograms的位置都不能移动,这需要hololens传感器收集空间中的大量信息才能实现,也是AR或者叫混合现实中最难做的部分之一。万一之前扫描的空间信息有误差,那么会导致对象漂移(drift),这样人看起来就会非常不真实。附加参照系比较简单,只要总是以眼镜作为原点渲染holograms和原点对象的相对距离就可以了。

静止参照系在编程模型中的解决方法叫做Spatial Anchor,翻译成空间锚。Hololens会不断扫描Spatial Anchor的位置以保证所有在Spatial Anchor坐标系里的Holograms的位置都固定。我们举个简单的例子,假设我们使用静止参照系,把房间左侧角落C1设为原点(0,0,0),右侧角落C2(10,0,0),那么我分别分别放了2个Holograms在X1(2,0,0)和X2(8,0,0)的位置。这时候hololens的渲染会也很好,看上去也非常的完美。这时候使用者站起来在房间里到处走动,突然hololens传感器发现,从房间左侧到房间右侧的距离不是10米,而是9.9米,这时候c1和c2的距离变化会导致中间x1和x2的位置也变化了。那么在渲染x1和x2的时候,这个相对坐标就可能变成了(1.9,0,0)和(7.9,0,0),这时holograms就会突然跳动一下,位置变掉了,这会导致非常严重的问题。所以hololens的做法是在x1上放一个anchor, x2上也放一个anchor。无论hololens如何移动,这两个anchor的位置是不会移动的,那么相对于anchor 1坐标系里的对象1和anchor2坐标系里的对象2,他们的相对坐标都不会变动,也就不会出现holograms位置突然变化的情况了。好吧,简而言之就是在环境中多设置几个原点,让相对位置不变化,这都要依赖于hololens的硬件足够强大,万一spatial mapping有bug的话,还是解决不了这个问题的。

Spatial anchor的位置可以保存或者共享,这样下次程序在相同房间里面运行起来,那么holograms还可以在老地方出现,还可以把位置共享给其他人,他们也可以在相同位置看到一样的东西。当然还是那句话,要保证hololens能断定是相同的房间,如果传感器被挡住了,环境中人来人往或者家具被移动了位置,或者在另外一个一模一样的房间里面,都可以让hololens失去方向。

附加参照系比较简单,距离和方向也相对固定,当用户移动或转动头部的时候,内容也会跟着走。当hololens不知道自己在哪里的时候,就只会渲染基于附加参照系的holograms,比如告诉用户你丢了,不知道在哪的通知框(Fallback UI)可以基于这种附加参照系来构造,所有的应用程序都需要提供这种功能。另外还有一种叫”Head-Locked content",就是无论hololens怎么改变,这个东西都不会变。比如Gaze里面的中间那个点。这个东西极度不推荐,因为会让人很不舒服。

关于坐标系的内容,具体可以参考https://developer.microsoft.com/en-us/windows/holographic/coordinate_systems

Gaze

Gaze就是看,让hololens知道当前正在看的是哪个hologram或者是实际的对象,就好比鼠标移动到哪个位置。可以想象成有个激光扫到某个对象,这个对象就被选中了。这个一带而过,大家可以再复习一下坐标系的概念。

 

转载于:https://www.cnblogs.com/hotcan/articles/5629070.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wo-27s管理员账户和密码_Mac管理员忘记密码怎么办?

在使用Mac电脑时,为了安全很多用户通常都会设置管理员密码。不过如果不小心忘记Mac管理员密码怎么办?幸运的是,有些方法可以重置Mac密码并重新获得访问权限。下面小编就教给大家几种重置用户密码的方法。未开启FileVault的用户方法一&#xf…

电脑怎么彻底删除软件_电脑在使用的过程中如何彻底删除今日热点广告弹窗的方法...

电脑在使用的过程中如何彻底删除今日热点广告弹窗的方法在今日热点弹窗弹出来之后,我们在键盘上同时按下“CtrlAltDel”键,调出“任务管理器”,在任务管理器进程找到“今日热点”,我们右键点击“今日热点”选择“打开文件所在的位…

不用电脑怎么设置苹果铃声_苹果手机怎么设置铃声?完整教程分享

很多人的苹果手机铃声设置的都是用原始默认的铃声,因为苹果手机不支持直接将音乐设置为铃声,而且大多数人不清楚苹果怎么换铃声。当然安卓系统就没有这个问题啦。但是苹果的默认铃声听久了也挺腻的,鉴于有不少粉丝在问苹果手机怎么设置铃声&a…

mysql优化之连接优化

Posted by Money Talks on 2012/02/23 | 第一篇 序章第二篇 连接优化第三篇 索引优化第四篇 查询优化第五篇 到实战中去 连接优化 连接优化主要指客户端连接数据库以及数据库为响应客户端的请求而打开数据表和索引的过程中涉及到的参数调整。原文可以参考这里或者这里。(原文链…

家用电脑配置_游戏搬砖必看教程,游戏工作室电脑如何配置

文章只针对新手对电脑硬件配置了解,大佬可直接关闭,电脑如何配置只代表个人观点!想游戏搬砖赚钱,资金方面也有这个能力的小伙伴可能对手机开那么几个号无法满足,那么今天要说的就是如何利用电脑多开,来达到利益最大化这…

基于MATLAB的Dijkstra算法实现及案例分析

摘要:为研究两地点之间距离(或耗时)最短路线规划,采用MATLAB编程的方法来实现,并利用Floyd算法记录距离(或耗时)最短路线。在不考虑各种影响因素的情况下,以随机小样本数据为例进行演示&#xf…

win10共享打印机怎么设置_关于win10网络共享,选择“启用文件和打印机共享”之后,无法保存设置的解决办法...

写个流水账,把我解决这个问题的前因后果记录一下,供遇到相同问题的同学参考之用,希望能有点启发。这个问题的来源,是我想利用客厅的小米盒子,访问同一个路由器局域网之下的pc,直接访问共享文件的方式&#…

MATLAB中BP神经网络用于回归拟合算法实现(另附GRNN代码)

BP神经网络:是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。神经网络是把生活中的常见情节推广到计算仿真的范畴,这样的启发式算法还有许…

前端性能优化知识,包括css和js

作者:野次链接:http://www.zhihu.com/question/33032042/answer/95948831来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 1. 减少HTTP请求次数 尽量合并图片、CSS、JS。比如加载一个页面&#xf…

快速理解编程结构_为什么系统编程全都用英文而不用中文?听完专家的解释恍然大悟!...

全球博弈(quanqiuboyi)——不一样的观点,不一样的解读,8000万人订阅的超级微信大号。不关注时事,你将会被这个世界抛弃,点击标题下蓝字“全球博弈”关注,我们将为您提供有价值、有意思的时事解读。人类走进科技发展的道…

用了十年的昵称badboy_怎样用5秒钟看清一对夫妻的真实感情状况?

“只要一分钟,我就能看清一对夫妻感情的状况。”从事情感咨询几十年的行业前辈告诉我,她的诀窍就是——听他们之间如何称呼对方。“大部分情侣在恋爱时都会给对方起一个专属的爱称,比如:小白猪、大宝宝之类的,总之很亲…

MATLAB—经纬度坐标转换为平面坐标

原理示意图: Mercator投影变换示意图 2. 公式: XY平面被当作Mercator投影平面,Y轴和X轴原点分别设为0纬度和0经度。通过如下公式将地理坐标变换到Mercator投影平面。由于标准电子海图/航道图使用WGS84坐标系,本文使用WGS84参数进行变换。投影…

io密集型和cpu密集型_和小胖一起理解CPU负载和利用率

作者:小胖前言凌晨一点,正整着炸鸡的小胖,微信一呼“你的服务器CPU持续超载 … “麻溜的连上服务器,先把CPU负载摁下来。仔细一想,最近1分钟平均负载很大,但CPU利用率却≤30%,不经陷入了深思&am…

gui显示文本动态框

软件文本框,显示一些希望被阅读的文本; 包含main函数(kuang),gui作为子函数,以及必要的txt文件。 直接运行kuang函数即可。时间0.5秒内。 可以顺序显示希望输入的内容,并保存记录,如下 也可以每次只显示新…

redis5 外部不能连接_【硬见小百科】PCB连接的方法

PCB是电子产品的基本元器件,任何电子产品都需要PCB才能制成。那么,PCB在电子产品之中,必须要与其他器件相互连接在一起,这就是PCB的互连。总的来说,PCB的连接有三个方面:芯片到PCB、PCB内部、PCB与外部器件…

最小费用最大流问题

最小费用最大流问题 解决如下最小费用最大流问题。 以前的资源由于matlab版本问题等已不适用。现在做出修改,适用于matlab2014a以后的版本。 注意,数据格式按代码中的例子的格式,否则需要修改代码。 查了很多资源发现用MATLAB操作的好用的不多…

windows7无人值守应答文件.rar_数智化赋能人力共享运营,人力管理走向“无人值守”...

关键词:人力共享,HR,数智化,用友,NC Cloud,无人值守人力共享是近几年人力资源从业者持续关注的热点话题。无论是从效率提升、体验改进,还是助力人力资源角色转型,对人力共享能带来的…

iphone彻底删除照片如何恢复_手机删除的照片如何恢复?OPPO最新照片恢复

手机删除的照片如何恢复?小编给大家带来了OPPO最新照片恢复方法,可谓是专属福利啊!手机照片误删,焕发出来的照片很模糊?这有何难!手机照片管家APP竟然可以恢复高清图片, 不过现在安卓机只有OPPO…

社区发现SLPA算法

社区(community)定义:同一社区内的节点与节点之间关系紧密,而社区与社区之间的关系稀疏。 设图GG(V,E),所谓社区发现是指在图G中确定nc(>1)个社区C{C1,C2,...,Cnv},使得各社区的顶点集合构成V的一个覆盖。 若任意两个社区的顶点…

bucket sort sample sort 并行_MOOSE: 实现大规模并行多物理场仿真(二)

转载自wx公众号:CS guy来源于文章 MOOSE: Enabling massively parallel multiphysics simulation网址:https://www.sciencedirect.com/science/article/pii/S2352711019302973?via%3Dihub2.软件说明2.1 软件架构MOOSE旨在促进创建FEM工具,以…