诸如头戴式显示器(HMD)系统和手持式移动设备(例如,智能电话、平板计算机等等)之类的混合现实计算设备可以被配置成向用户显示关于在用户的视野中和/或设备的摄像机的视野中的虚拟和/或现实对象的信息。例如,HMD设备可以被配置成使用透视显示系统来显示其中混合有现实世界对象的虚拟环境或者其中混合有虚拟对象的现实世界环境。类似地,移动设备可以使用相机取景器窗口来显示这样的信息。
提供本背景来介绍以下概述和详细描述的简要上下文。本背景不旨在帮助确定所要求保护的主题的范围,也不旨在被看作将所要求保护的主题限于解决以上所提出的问题或缺点中的任一个或全部的实现。
概述
在计算平台上运行的采用三维(3D)建模的应用使用虚拟视口被延伸,3D全息由混合现实头戴式显示器(HMD)设备呈现到虚拟视口中。HMD设备用户可以将视口定位成在现实世界2D监视器旁边被呈现,并且将其用作3D建模应用的自然延伸。例如,用户可以与混合现实中被建模的对象交互并且将对象在监视器与视口之间移动。3D建模应用和HMD设备被配置成交换被建模对象的场景数据(诸如几何形状、光照、旋转和比例)和用户接口数据(诸如鼠标和键盘输入)。HMD设备实现头部追踪以确定用户正看向哪里以使得用户输入被恰适地定向到监视器或视口。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中所提及的任何或所有缺点的实现。应当理解,上述主题可被实现为计算机控制的装置、计算机进程、计算系统或诸如一个或多个计算机可读存储介质等制品。通过阅读下面的详细描述并审阅相关联的附图,这些及各种其他特征将变得显而易见。
附图简述
图1示出一个说明性的混合现实环境,该混合现实环境的一部分被呈现在头戴式显示器(HMD)设备的用户的视野内;
图2示出HMD设备的用户位于其中的说明性现实世界环境;
图3示出了支持在HMD设备的视野内显示的三维(3D)视口的说明性混合现实环境;
图4示出了在虚拟视口与现实世界监视器之间转移的3D模型;
图5示出了在个人计算机(PC)上被实例化的组件与HMD设备之间交换可扩展性数据以支持3D视口;
图6示出了可由图5示出的PC和HMD设备执行的说明性方法;
图7示出了由HMD传感器封装提供的说明性数据;
图8描绘正由HMD设备捕捉的与现实世界对象相关联的表面重构数据;
图9示出了说明性表面重构流水线的框图;
图10、11和12是可以至少部分地使用HMD设备执行的说明性方法的流程图;
图13是虚拟现实HMD设备的说明性示例的图形视图;
图14示出虚拟现实HMD设备的说明性示例的功能框图;
图15和16是可用作虚拟现实HMD设备的组件的说明性封闭面罩的图形前视图;
图17示出了在被部分分解时的封闭面罩的视图;
图18示出了封闭面罩的幻影线前视图;
图19示出了封闭面罩的图形后视图;
图20示出了示例性计算系统;以及
图21是可部分地被用于实现本发明的3D混合现实视口的说明性计算系统(诸如个人计算机(PC))的简化框图。
各附图中相同的附图标记指示相同的元素。除非另外指明否则各元素不是按比例绘制的。
详细描述
3D模型可以由各种应用出于各种目的(诸如CAD(计算间辅助设计)、CAM(计算机辅助制造)、动画化和游戏)来生成。3D模型常常可能是又大又复杂的,并且用户通常仅能够通过有限2D显示和麻烦的用户界面来查看3D模型并且与3D模型工作。尽管3D打印机的介绍帮助用户更容易地查看3D模型并且更自然地与3D模型交互,但在每一次设计被迭代时此类打印可能消耗时间和资源。
本发明的3D视口可以通过使得用户能够以自然方式以3D查看模型并且与模型交互来与3D打印机基本相同的方式被使用,但是没有打印等待时间和成本。模型修订之间的更快迭代因而可以被实现。用户也可利用视口来查看、操纵模型以及在视口与监视器之间移动模型以提供增强的3D建模灵活性和效率。
现在转向各附图,HMD设备上支持的混合现实或增强现实环境通常组合现实世界元素和计算机生成的虚拟元素以实现各种各样的用户体验。在一说明性示例中,如图1所示,用户102可以使用HMD设备104来体验可视地呈现在光学显示器上并在一些实现中可以包括音频和/或触觉/触摸感觉的混合现实环境100。在这一特定非限制性示例中,HMD设备用户在包括具有各种建筑物、商店等的城市街道的现实世界城市区域中以实体行走。HMD设备104所提供的城市景观的视野(由图1中的虚线区域110所表示)随着用户在环境中四处移动而改变,并且设备可以在现实世界视图上呈现虚拟元素。此处,虚拟元素包括标记(tag)115,标记115标识环境中的商业机构以及到感兴趣地点的指示120。
在图2中示出的另一说明性混合现实场景中,在使用HMD设备104时用户占据的物理现实世界环境200可以包含各种现实世界对象,包括PC 205、监视器210和工作表面215。用户可以使用鼠标225、键盘230和在一些情形中可以使用语音(例如,自然语言或语音命令)或姿势的其他用户接口(未在图2中示出)与PC和监视器交互。在这一示例中,监视器被纳入混合现实环境300中,如图3所示,并且在HMD设备104上的视野110内对于用户可以是可见的。
用户通常可以在查看混合现实环境中的监视器210时按照与现实世界环境中基本上相同的方式与PC 205交互。例如,用户可以与桌面305上支持的对象、元素、窗口等交互。PC 205支持在监视器210上呈现3D模型315的应用。HMD设备104定位虚拟3D视口310,虚拟3D视口310与3D应用相互操作以使得模型315可以以3D被呈现在视口中并且以2D被呈现在监视器中。在一些实现中,HMD设备104可以暴露控件以使得用户能够就其位置、大小、形状和其他特性来配置视口310以将视口针对特定需要来定制。在这一示例中,用户已经将视口310配置成具有大约匹配监视器210大小的总大小的矩形体并且将视口定位成与监视器毗邻。视口的边界在这一示例中是可见的,并且在替换实现中,各个边界可以用不同方式被呈现,在一些情形中,在用户控制之下使用对象(诸如具有各种处理和效果的线和虚线,诸如色彩、透明度、动画化等)被呈现。
用户通常可以将视口310看作一种工具,该工具通过使得3D模型能够在最适合于手头任务的特定呈现模式中(不管在监视器210上以2D还是在视口中以3D)被查看并且对其进行操作来将3D应用的功能延伸。各个模型可以在监视器与视口之间被方便地移动,并且相反情况亦是如此,如图4所示。此处,用户可以使用鼠标光标405来选择3D对象并且将3D对象从一种呈现模式拖拽到另一呈现模式。替换用户动作可包括复制/剪切和粘贴,使用语音或姿势来调用传递,和/或通过可由3D应用或HMD设备暴露的各种菜单和接口来工作。
图4还示出了其中HMD设备104可以施加边界的视口310的另一特征,其中超过边界的被呈现的虚拟对象被剪辑。视口因而用作3D边界框,以使得在混合现实环境中被建模对象将不会溢出超过它们的指定虚拟空间。在图4中,视口的后表面410以交叉影线来示出以代表性地指示矩形视口体的六个剪辑平面之一。
PC 205和HMD设备104可被配置成用于互操作以支持具有3D视口310的混合现实环境。图5示出了在各个设备上被实例化的说明性组件以使得可扩展性数据505能够通过网络连接510被共享。网络连接510可以例如使用无线通信协议(诸如Wi-Fi、蓝牙TM等)来实现。可扩展性数据505包括描述正被呈现的场景的场景数据515以及使用例如鼠标225和/或键盘230(图2)描述用户输入的用户接口(UI)数据520。场景数据515通常由在PC 205上执行的3D应用555生成,3D应用555与在HMD设备104上运行并且被耦合至呈现混合现实环境的呈现引擎575(在一些实现中可以被纳入图形处理单元(GPU)中)的视口应用570对接。场景数据515包括描述给定模型的几何形状和类似方面的3D模型数据525。3D环境数据530描述可影响在被呈现时模型如何表现的光照和其他环境条件。相机参数535可以与模型变形相关联,诸如旋转、平移和缩放。数据描述事件540也可被包括在场景数据中。例如,关于给定模型的事件可以由操作系统、实用程序、程序小窗口等来表露。
UI服务器565可以将UI数据520提供给HMD设备上的UI客户端580。UI数据通常包括鼠标消息545和键盘消息550。然而,在替换实现中,与其他用户接口和输入方法有关的数据可以被利用。
图6是可以使用UI服务器565和UI客户端580实现的说明性方法600的流程图。在步骤602,通常确定监视器在现实世界环境中的位置,以使得使用例如键盘和/或鼠标的用户输入可以被合适地定向到视口或PC和监视器。在一些实现中,监视器可以使用可以检测监视器的边缘和表面表面重构(如下所述)、立体成像或其他合适的远程感测技术被定位。在替换实现中,应用代码可以例如被用户动作或使用自动化过程而被调用,导致监视器显示预定图像或HMD设备可用于识别监视器的多个图像。
为了将键盘输入定向到正被呈现在监视器或视口上的恰适的模型,HMD设备104追踪用户的查看位置,其中与用户的视线(即,用户正在看的方向)相对应的假想光线从HMD设备被投影。此类追踪在下文中在伴随图7、8和9的文本中更详细地描述。在步骤605,被追踪的查看位置被用来确定用户正在与视口上呈现的模型交互还是与在监视器上呈现的模型交互,以使得键盘事件被恰适地定向。例如,用户可能想要在模型在视口中被示出时将描述性文本或尺寸添加到模型,并且接着使用各种键盘命令在视口中从不同取向来查看模型。通常,被追踪的查看位置可以被用来可靠地推断哪一设备(监视器或视口)对于键盘事件消耗是恰适的。
对于鼠标输入,在步骤610,UI服务器565通过其与PC 205上的操作系统560的连接来追踪鼠标移动。在决策框615,如果鼠标没有超过监视器210的屏幕限制,则认为用户仍然在桌面上使用鼠标并且控制返回到步骤610。如果鼠标超过了监视器范围,则在步骤620中,UI服务器取得鼠标控制并且阻止鼠标消息传播到在PC205上执行的其他组件。
在步骤625,UI服务器向UI客户端通知鼠标在虚拟世界中操作并且它将鼠标消息(诸如鼠标移动)和用户输入(例如,按钮点击、滚轮动作等))传递到UI客户端。在步骤630,UI客户端基于监视器屏幕上的退出点来计算光标在视口中的初始位置,并且在步骤635,基于鼠标移动的改变来计算光标的下一位置。光标可以使用与光标离视口中的用户距离成比例的大小以3D被动态呈现。即,当更靠近查看者时通常它被呈现地更大,而在更远离时,它被呈现地更小。此类根据距离的动态呈现可能是有益的,因为在用户查看光标以及视口中的任何周围元素或对象时不需要改变他的焦点深度。在步骤640,使得用户能够使用鼠标和键盘(以及其他输入)与视口中呈现的3D模型以及视口本身(例如,改变其配置,包括位置、大小和形状)交互。
在步骤645,UI客户端计算视口中的下一光标位置与当前查看位置之间的光线。如果计算所得的光线与监视器的屏幕相交,则在步骤650UI客户端向UI服务器通知光标已经在转换回到PC桌面并且将最后的光标位置报告给鼠标输入服务器。在步骤655,UI客户端不继续在视口中呈现光标并且停止对鼠标输入事件作出响应。在步骤660,UI服务器使用UI客户端报告的最后位置来计算桌面上的光标重新进入位置。
如图7和8所示,HMD设备104被配置有传感器封装700,并且示例性传感器在下文更详细地描述。传感器封装700可以支持各种功能,包括表面重构710。表面重构技术实现对边缘和表面的检测(如由图7中的参考标号712所指示),并且可以被用于从收集的关于物理环境200(如图8所示)的数据800中标识各种现实世界对象(诸如监视器、工作表面、人等)的位置。表面重构也可被用于头部追踪以确定用户头部的3D(三维)位置和取向以及在环境内的查看位置(如由图7中的参考标号715所指示的)。在一些实现中,传感器封装可以支持注视追踪720以查明用户注视725的方向,在实现本公开的视口时用户注视725的方向可以与头部位置和取向数据一起使用。在替换实现中,可以使用合适的立体图像分析技术来推导深度数据。
图9示出用于获得现实世界环境中的对象的表面重构数据的说明性表面重构数据流水线900。需要强调的是所公开的技术是说明性的,并且根据特定实现的要求可以使用其它技术和方法。原始深度传感器数据902被输入到传感器的3D(三维)姿势估计中(框904)。传感器姿势跟踪可以例如使用在预期表面和当前传感器测量之间的ICP(迭代最近点)算法来实现。传感器的每个深度测量可以使用例如被编码为符号距离场(SDF)的表面被整合(框906)到容积表示中。使用循环,SDF被光线投射(框908)入所估计的系中以提供所述深度图与之对齐的密集表面预测。因而,当用户102环顾虚拟世界时,与现实世界环境200(图2)相关联的表面重构数据可以被收集并且被分析以确定用户头部在环境内的位置和取向。在一些实现中,连同注视检测,头部追踪使得HMD设备104能够查明用户的观看位置。
图10和11是可使用HMD设备104来执行的说明性方法的流程图。图12是可以由计算设备(诸如PC 205)执行的说明性方法的流程图。除非明确说明,否则流程图中所示并且在伴随的文本中描述的方法或步骤不限于特定的次序或顺序。此外,一些方法或其步骤可同时发生或被执行,并且取决于给定实现的要求,在这一实现中不是所有方法或步骤均需要被执行,并且一些方法或步骤可以是可选地被使用。
在图10中的说明性方法1000的步骤1005,虚拟3D视口被实现在HMD设备104的显示器上。在步骤1010,支持到3D建模应用的可扩展性,3D建模应用在远程计算平台(诸如PC)上执行。在步骤1015,通过网络从远程PC接收可包括场景数据和UI数据的可扩展性数据。在步骤1020,远程应用所支持的3D模型被呈现在视口中作为全息图。在步骤1025,全息图可以响应于UI数据被动态地更新。在步骤1030,HMD用户的查看位置被追踪以确定与视口的用户交互。在步骤1035,鼠标光标被HMD设备呈现在视口中,并且当HMD设备用户与视口交互时,键盘输入被消耗。
在步骤1040,HMD设备可以暴露用户控件以调整视口特性,诸如在混合现实空间中的位置、大小和形状。在步骤1045,提供使能以使得用户能够在监视器与视口之间转移3D模型。在步骤1050,剪辑被应用于被呈现的全息图以将3D模型约束到视口的边界。
在图11中示出的说明性方法1100中,在步骤1105,HMD设备104在其显示器上实现虚拟3D视口。在步骤1110,描述3D模型的可扩展性数据从支持3D建模应用的远程计算平台被接收。在步骤1115,3D模型使用可扩展性数据被动态地呈现在视口中。在步骤1120,鼠标光标使用可扩展性数据被呈现在视口中。在步骤1125,3D模型的呈现使用可扩展性数据中包含的键盘消息被控制。在步骤1130,根据HMD设备用户的查看位置,鼠标光标被转换到由附连到计算平台的监视器所支持的桌面。
在图12中所示的说明性方法1200中,在步骤1205,UI服务器追踪描述鼠标移动和输入的鼠标消息。在步骤1210,描述键盘输入的键盘消息被追踪。UI服务器可具有到在计算平台上运行的操作系统的挂钩以追踪鼠标和键盘消息。如果没有UI客户端被检测到,则UI服务器通常仅仅监听消息但不采取其他动作。当客户端通过网络连接被连接时,则UI服务器可以执行追踪。
在步骤1215,当鼠标移动指示光标移动离开监视器边缘时,UI服务器取得鼠标消息的控制并且阻止鼠标消息转播到在设备上运行的其他系统。在步骤1220和1225,鼠标和键盘消息分别通过网络被发送到HMD设备。在步骤1230,UI服务器从HMD设备上的UI客户端接收光标转换到监视器上的桌面的消息。在步骤1235,基于视口中最后报告的光标位置来确定桌面上的初始光标位置。在步骤1240,对鼠标和键盘消息的控制被释放,并且鼠标和键盘被启用以在桌面上正常操作。
现转至各说明性实现细节,根据本布置的混合现实显示设备可以采用任何合适的形式,包括但不限于诸如HMD设备104和/或其它便携式/移动设备之类的近眼设备。尽管在一些实现中可以使用透视显示器,而在其他实现中,使用例如基于相机的传递或面向外的传感器的不透明(即非透视)显示器可以被使用。图13示出了透视混合现实显示系统1300的一个特定说明性示例,而图14显示了系统1300的功能框图。显示系统1300包括形成透视显示子系统1304的一部分的一个或多个透镜1302,以便图像可以使用透镜1302(例如,使用到透镜1302上的投影、并入透镜1302中的一个或多个波导系统和/或以任何其他合适的方式)来显示。显示系统1300进一步包括被配置成获取正在被用户查看的背景场景和/或物理环境的图像的一个或多个面向外的图像传感器1306,并可包括被配置成检测声音(诸如来自用户的语音命令)的一个或多个话筒1308。面向外的图像传感器1306可包括一个或多个深度传感器和/或一个或多个二维图像传感器。在替换布置中,如上所述,代替纳入透视显示子系统,混合现实显示系统可以通过面向外的图像传感器的取景器模式来显示混合现实图像。
显示系统1300还可以进一步包括被配置成检测用户的每一眼睛的注视方向或焦点的方向或位置的注视检测子系统1310,如上文所描述的。注视检测子系统1310可以配置来以任何合适方式确定用户每只眼睛的注视方向。例如,在所示的说明性示例中,注视检测子系统1310包括被配置成导致光的闪烁从用户的每一眼球反射的一个或多个闪光源1312(诸如红外光源),以及被配置成捕捉用户的每一眼球的图像的一个或多个图像传感器1314(诸如面向内的传感器)。根据使用(诸)图像传感器1314收集的图像数据所确定的用户眼球的闪烁和/或用户瞳孔的位置中变化可以用于确定注视方向。
此外,从用户眼睛投射的注视线与外部显示器交叉的位置可以用于确定用户注视的对象(例如,所显示的虚拟对象和/或真实的背景对象)。注视检测子系统1310可以具有任何合适数量和布置的光源以及图像传感器。在一些实现中,可以省略注视检测子系统1310。
显示系统1300还可以包括附加传感器。例如,显示系统1300可以包括全球定位系统(GPS)子系统1316,以允许确定显示系统1300的位置。这可以帮助标识可以位于用户的毗邻物理环境中的现实世界的对象(诸如建筑物等等)。
显示系统1300还可以包括一个或多个运动传感器1318(例如惯性、多轴陀螺仪或加速度传感器),以在用户戴着作为增强现实HMD设备的部分的所述系统时检测用户头的移动和位置/朝向/姿势。运动数据可以潜在地与眼睛跟踪闪烁数据和面向外的图像数据一起被使用来用于注视检测以及用于图像稳定化,以帮助校正来自(诸)面向外图像传感器1306的图像中的模糊。运动数据的使用可以允许注视位置的变化被跟踪,即使不能解析来自(诸)面向外的图像传感器1306的图像数据。
另外,运动传感器1318,以及话筒1308和注视检测子系统1310,还可以被用作用户输入设备,以便用户可以通过眼睛、颈部和/或头部的姿势,以及在一些情况中通过语音命令,与显示系统1300进行交互。可以理解,图13和14中所示出的并在附随的文本中描述的传感器只是出于示例的目的被包括,而不旨在以任何方式作出限制,因为可以使用任何其他合适的传感器和/或传感器的组合来满足增强现实HMD设备的特定实现的需求。例如,生物特征传感器(例如用于检测心脏和呼吸速率、血压、大脑活动、体温等)或环境传感器(例如用于检测温度、湿度、海拔、UV(紫外线)光等级等)可以在一些实现中被使用。
显示系统1300可以进一步包括通过通信子系统1326与传感器、注视检测子系统1310、显示子系统1304,和/或其他组件进行通信的具有逻辑子系统1322和数据存储子系统1324的控制器1320。通信子系统1326还可以便利于显示系统与位于远程的资源,例如处理、存储、功率、数据和服务结合操作。就是说,在一些实现中,HMD设备可以被作为一种系统的部分来操作,该系统可以在不同的组件和子系统间分布资源和能力。
存储子系统1324可以包括存储在其上的指令,这些指令能被逻辑子系统1322执行例如用以:接收并解释来自传感器的输入、标识用户的移动、使用表面重构和其它技术标识真实对象,以及基于到对象的距离模糊/淡出所述显示以便允许所述对象被用户看到,以及其它任务。
显示系统1300被配置有一个或多个音频换能器1328(例如扬声器、耳机等),这样,音频可以被用作增强现实体验的部分。功率管理子系统1330可以包括一个或多个电池1332和/或保护电路模块(PCMs)以及相关联的充电接口1334和/或用于对显示系统1300中的组件供电的远程电源接口。
可以理解,所描绘的显示设备104和1300是出于示例的目的描述的,并由此不旨在是限制性的。进一步理解,显示设备可包括除所示出的那些之外的额外的和/或替代的传感器、相机、话筒、输入设备、输出设备等等,而不会背离本安排的范围。另外,显示设备及其各种传感器和子组件的物理配置可以采取各种不同的形式,而不会背离本安排的范围。
图15-19示出可被用作HMD设备的组件的增强现实显示系统1500的说明性替换实现。在该示例中,系统1500使用透视密封面罩1502,该密封面罩1502被配置成保护透视显示子系统所利用的内部光学器件组装件。面罩1502通常与HMD设备的其他组件(未示出)对接,其他组件为诸如头部安装/维持系统和其他子系统(包括传感器、电源管理、控制器等),如结合图13和14说明性地描述的。包括卡扣、夹箍、螺钉和其他紧固件等的合适接口元件(未示出)也可被纳入在面罩1502中。
面罩分别包括透视前护罩1504和透视后护罩1506,透视前护罩1504和透视后护罩1506可使用透明材料来建模以促成到光学显示器和周围的现实世界环境的未经遮挡的视觉。可向前护罩和后护罩应用诸如染色、映射、抗反射、抗雾和其他涂覆之类的处理,并且还可利用各种色彩和饰面。前护罩和后护罩被固定到底座1605,如图16中的部分剖视图中所描绘的,其中护罩盖1610被示出为与面罩1502分解。
密封面罩1502可在HMD设备被佩戴并在操作中被使用时,以及在正常处理以用于清理等器件物理地保护敏感的内部组件,包括光学器件显示子部件1702(在图17中的分解视图中示出的)。面罩1502还可保护光学器件显示子部件1702远离各环境元件,并在HMD设备被掉落或撞击、被碰撞等情况下免遭损坏。光学器件显示子部件1702按使得各护罩在掉落或碰撞之际被偏转时不接触该子部件的方式被安装在封闭面罩内。
如图17和19所示,后护罩1506按人体工程学上正确的形式被配置成与用户的鼻子和鼻托1904(图19)对接,并且可包括其他舒适特征(例如,作为分立组件来建模和/或添加)。在一些情况下,封闭面罩1502还可将某一水平的光学屈光度曲率(即,眼睛处方)纳入成型的护罩中。
图20示意性地示出了在实现以上描述的配置、布置、方法和过程中的一者或多者时可使用的计算系统2000的非限制性实施例。HMD设备104可以是计算系统2000的一个非限制性示例。计算系统2000以简化形式示出。可理解,可以使用实际上任何计算机架构,而不偏离本布置的范围。在不同的实施例中,计算系统2000可以采取显示设备、可穿戴计算设备、大型计算机、服务器计算机、台式计算机、膝上型计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如智能电话)等等的形式。
计算系统2000包括逻辑子系统2002和存储子系统2004。计算系统2000可任选地包括显示子系统2006、输入子系统2008、通信子系统2010和/或在图20中未示出的其他组件。
逻辑子系统2002包括被配置成执行指令的一个或多个物理设备。例如,逻辑子系统2002可以被配置为执行作为一个或多个应用、服务、程序、例程、库、对象、组件、数据结构或其它逻辑构造的一部分的指令。可以实现这样的指令为执行任务、实现数据类型、变换一个或多个组件的状态或以其它方式达到所需的结果。
逻辑子系统2002可包括被配置成执行软件指令的一个或多个处理器。作为补充或替换,逻辑子系统2002可包括被配置成执行硬件或固件指令的一个或多个硬件或固件逻辑机器。逻辑子系统2002的处理器可以是单核或多核的,而其上执行的程序可以被配置为进行串行、并行或分布式处理。逻辑子系统2002可任选地包括分布在两个或更多设备之间的独立组件,这些独立组件可位于远程和/或被配置用于进行协调处理。逻辑子系统2002的各方面可由以云计算配置进行配置的可远程访问的联网计算设备来虚拟化和执行。
存储子系统2004包括一个或多个物理设备,该一个或多个物理设备被配置成保持逻辑子系统2002可执行来实现本文中所述的方法和过程的数据和/或指令。在实现此类方法和过程时,存储子系统2004的状态可以被变换(例如,以保持不同的数据)。
存储器子系统2004可包括可移动介质和/或内置设备。存储子系统2004可包括光学存储器设备(例如,CD(压缩盘)、DVD(数字多功能盘)、HD-DVD(高清DVD)、蓝光盘等)、半导体存储器设备(例如,RAM(随机存取存储器)、ROM(只读存储器)、EPROM(可擦除可编程ROM)、EEPROM(电可擦除ROM)等)和/或磁性存储设备(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM(磁致电阻RAM)等)等等。存储子系统2004可包括易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址、和/或内容可寻址设备。
可领会,存储子系统2004包括一个或多个物理设备,并排除传播信号自身。然而,在一些实现中,本文描述的指令的各方面可经由通信介质通过纯信号(例如,电磁信号、光学信号等)来传播,而不是被存储在存储设备上。此外,与本布置有关的数据和/或其他形式的信息可以通过纯信号来传播。
在一些实施例中,逻辑子系统2002和存储子系统2004的各方面可以被一起集成到一个或多个硬件-逻辑组件中,通过所述组件来执行在此所述的功能性。这样的硬件逻辑组件可包括:例如,现场可编程门阵列(FPGA)、程序和应用专用集成电路(PASIC/ASIC)、程序和应用专用标准产品(PSSP/ASSP)、片上系统(SOC)系统以及复杂可编程逻辑设备(CPLD)。
在被包括时,显示子系统2006可用于呈现由存储子系统2004保存的数据的视觉表示。此视觉表示可采用图形用户界面(GUI)的形式。由于目前描述的方法和过程改变了由存储子系统保持的数据,并由此变换了存储子系统的状态,因此同样可以转变显示子系统2006的状态以视觉地表示底层数据的改变。显示子系统2006可包括使用几乎任何类型的技术的一个或多个显示设备。在一些情况下,可将此类显示设备与逻辑子系统2002和/或存储子系统2004一起组合在共享封装中,或者在其他情况下,此类显示设备可以是外围触摸显示设备。
在包括输入子系统2008时,输入子系统2008可包括一个或多个用户输入设备(诸如键盘、鼠标、触摸屏或游戏控制器)或与其对接。在一些实施例中,输入子系统可包括所选择的自然用户输入(NUI)组件或与其对接。这样的组件可以是集成的或外围的,且输入动作的转导和/或处理可以在板上或板外被处理。示例性NUI组件可包括用于语言和/或语音识别的话筒;用于机器视觉和/或姿势识别的红外、色彩、立体显示和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速计和/或陀螺仪;以及用于评估脑部活动的电场感测组件。
在包括通信子系统2010时,通信子系统2010可以被配置成将计算系统2000与一个或多个其他计算设备通信耦合。通信子系统2010可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可被配置成用于经由无线电话网络或者有线或无线局域网或广域网来进行通信。在一些实施例中,通信子系统可允许计算系统2000使用诸如因特网这样的网络将消息发送至其他设备以及/或者从其他设备接收消息。
图21是可用来实现本发明的视口的诸如PC、客户端机器或服务器之类的说明性计算机系统2100的简化框图。计算机系统2100包括处理器2105、系统存储器2111以及将包括系统存储器2111的各种系统组件耦合至处理器2105的系统总线2114。系统总线2114可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、或局部总线。系统存储器2111包括只读存储器(ROM)2117和随机存取存储器(RAM)2121。基本输入/输出系统(BIOS)2125被存储在ROM 2117中,该基本输入/输出系统包含诸如在启动期间帮助在计算机系统2100内的元件之间传输信息的基本例程。计算机系统2100还可包括对内置硬盘(未示出)读写的硬盘驱动器2128、对可移动磁盘2133(例如,软盘)读写的磁盘驱动器1230、以及对诸如CD(压缩盘)、DVD(数字多功能盘)或其它光学介质等可移动光盘2143读写的光盘驱动器2138。硬盘驱动器2128、磁盘驱动器2130,以及光盘驱动器2138分别通过硬盘驱动器接口2146、磁盘驱动器接口2149,以及光盘驱动器接口2152连接到系统总线2114。驱动器及其相关联的计算机可读存储介质为计算机系统2100提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失性存储。虽然这个说明性的示例包括硬盘、可移动磁盘2133以及可移动光盘2143,但是其它类型的可存储可被诸如磁带盒、闪存卡、数字视频盘、数据磁带、随机存取存储器(“RAM”)、只读存储器(“ROM”)等访问的数据的计算机可读存储介质也可在本发明的视口的一些应用中使用。此外,如在此使用的,术语计算机可读介质包括媒体类型的一个或多个实例(例如,一个或多个磁盘、一个或多个CD等)。出于本说明书和权利要求书的目的,短语“计算机可读存储介质”及其变型不包括波、信号和/或其他瞬态和/或无形通信介质。
可以有若干个程序模块存储在硬盘、磁盘2133、光盘2143、ROM 2117,或RAM 2121上,包括操作系统2155、一个或多个应用程序2157、其他程序模块2160、以及程序数据2163。用户可通过诸如键盘2166和如鼠标等定点设备2168等的输入设备向计算机系统2100中输入命令和信息。其它输入设备(未显示)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、跟踪球、触摸垫、触摸屏、触敏设备、语音命令模块或设备、用户运动或用户姿势捕捉设备等。这些及其他输入设备常常通过耦合到系统总线2114的串行端口接口2171连接到处理器2105,但是,但也可以通过其他接口,如并行端口、游戏端口或通用串行总线(USB)端口、来进行连接。监视器2173或其他类型的显示设备也可以通过诸如视频适配器2175之类的接口,连接到系统总线2114。除监视器2173以外,个人计算机通常包括如扬声器和打印机等其它外围输出设备(未示出)。图21中显示的说明性示例还包括主机适配器2178、小型计算机系统接口(SCSI)总线2183以及连接到SCSI总线2183的外置存储设备2176。
计算机系统2100可使用到诸如远程计算机2188等一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机2188可以被选为另一台个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,并通常包括以上对计算机系统2100描述的许多或所有元件,虽然在图21中只示出单个代表性远程存储器/存储设备2190。图21中所描绘的逻辑连接包括局域网(LAN)2193和广域网(WAN)2195。此类联网环境通常被部署在例如办公室、企业范围的计算机网络、内联网和因特网中。
当在LAN联网环境中使用时,计算机系统2100通过网络接口或适配器2196连接到局域网2193。当在WAN联网环境中使用时,计算机系统2100通常包括宽带调制解调器2198、网络网关或用于通过诸如因特网等广域网2195建立通信的其它装置。或为内置或为外置的宽带调制解调器2198经由串行端口接口2171连接到系统总线2114。在联网环境中,与计算机系统2100有关的程序模块或其部分可被储存在远程存储器存储设备2190中。注意,图21中显示的网络连接是说明性的,并且取决于本发明视口的应用的具体要求,用于建立计算机之间的通信链路的其它手段可被使用。
本发明的三维混合现实视口的各种示例性实施例现在是出于说明的目的被呈现的,并不是作为所有实施例的穷尽性列表。一示例包括物理环境中的用户可操作的头戴式显示器(HMD)设备,包括:一个或多个处理器;传感器封装;显示器,所述显示器被配置成用于向用户呈现混合现实环境,用户对所呈现的混合现实环境的查看位置至少部分地取决于用户头部在物理环境中的姿态而可变;以及存储计算机可读指令的一个或多个存储器设备,所述计算机可读指令在被所述一个或多个处理器执行时执行一种方法,该方法包括以下步骤:在显示器上实现三维(3D)虚拟视口,支持到在远程计算平台上执行的3D建模应用的可扩展性,该应用支持3D模型,以及将3D模型作为全息图呈现在视口中。
在另一示例中,该HMD进一步包括网络接口,并且通过网络接口从远程计算平台接收可扩展性数据,该可扩展性数据描述3D模型和远程计算平台处的用户输入。在另一示例中,该HMD进一步包括响应于用户输入动态地更新视口中呈现的全息图。在另一个示例中,该HMD还包括:从传感器封装获得传感器数据,该传感器数据与邻接HMD设备的用户的物理环境相关联;使用该传感器数据来重构物理环境的几何形状,该物理环境包括位于其中的任何现实世界对象;以及使用经重构的几何形状来确定耦合到计算平台的监视器在物理环境内的位置。在另一示例中,该传感器数据包括深度数据,并且该传感器数据使用深度传感器来生成,并且表面重构技术被应用以重构物理环境几何形状。在另一个示例中,该HMD还包括:使用经重构的几何形状来追踪物理环境中的用户头部以确定查看位置,当用户输入导致鼠标光标移动离开监视器所支持的桌面时,在视口中呈现鼠标光标,以及当从查看位置投影的光线与视口相交时,消耗键盘输入。在另一示例中,该HMD进一步包括当所投影的光线指示鼠标光标已经转换到监视器所支持的桌面时,不继续在视口中呈现鼠标光标。在另一示例中,该HMD进一步包括向用户提供控制以控制视口特性,包括以下至少一者:视口在混合现实环境中的位置、视口大小、或视口形状。在另一示例中,该HMD进一步包括使得3D模型能够使用鼠标或键盘在桌面与视口之间转移。在另一示例中,该HMD进一步包括剪辑3D模型以将3D模型约束到视口的范围。
又一些示例包括一种由支持混合现实环境的头戴式显示器(HMD)设备执行的方法,混合现实环境包括虚拟对象和现实对象,该方法包括:在HMD设备的显示器上实现虚拟三维(3D)视口;通过网络连接从远程计算平台接收可扩展性数据,该可扩展性数据包括描述在计算平台上执行的应用所支持的3D模型的场景数据并且进一步包括描述对计算平台的用户输入的用户接口(UI)数据;以及使用接收到的可扩展性数据在视口中动态地呈现3D模型。
在另一示例中,该方法进一步包括基于UI数据中包括的鼠标消息在视口中呈现鼠标光标。在另一示例中,该方法进一步包括使用UI数据中包括的键盘消息来控制3D模型在视口中的呈现。在另一示例中,场景数据包括以下至少一者:3D模型数据、环境数据或相机参数。在另一示例中,该方法进一步包括利用传感器数据来确定HMD设备的用户的查看位置,并且当从查看位置投影的光线与监视器相交时将光标转换回到耦合至计算平台的监视器所支持的桌面。在另一示例中,该方法进一步包括使用表面重构数据流水线对HMD设备位于其中的物理环境进行建模并且至少部分地使用被建模的物理环境来确定查看位置或确定耦合至计算平台的监视器在物理环境中的位置,该表面重构数据流水线实现一种创建被集成的多个交叠表面的容积方法。
又一示例包括一种计算设备,包括:一个或多个处理器;到监视器的接口,所述监视器显示桌面;鼠标接口,用于连接到鼠标并且从鼠标接收指示鼠标移动以及来自计算设备的用户的对鼠标控制的输入的信号;键盘接口,用于连接到键盘并且从键盘接收指示来自用户的键盘输入的信号;网络接口,用于通过网络连接与远程头戴式显示器(HMD)设备通信;以及存储计算机可读指令的一个或多个存储器设备,所述计算机可读指令在被一个或多个处理器执行时实现一种三维(3D)建模应用和用户接口(UI)服务器,该三维(3D)建模应用和用户接口(UI)服务器被配置成用于:追踪描述鼠标移动和输入的鼠标消息,追踪描述键盘输入的键盘消息,当鼠标移动指示与鼠标相关联的光标正移动超过监视器边界时,取得对鼠标消息的控制并且阻止鼠标消息到在计算设备上操作的系统的传播,通过网络连接将鼠标消息发送到HMD设备,以及通过网络连接将键盘消息发送到HMD设备。
在另一示例中,该HMD设备被配置成用于:i)使用表面重构或者观察在监视器上显示的预定可追踪图像之一来标识监视器在物理环境中的位置,以及ii)在光学显示器上支持混合现实环境,该混合现实环境包括虚拟3D视口,来自3D建模应用的基于全息图的模型可以被呈现到虚拟3D视口中。在另一示例中,该计算设备进一步包括通过与在计算设备上执行的操作系统交互来追踪鼠标消息和键盘消息。在另一示例中,该计算设备进一步包括从HMD设备接收鼠标光标已经转换到桌面的消息,并且使用鼠标光标在视口中的最后报告位置来计算桌面上的初始光标位置。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。