CN113168737A - 用于三维模型共享的方法和系统 - Google Patents

用于三维模型共享的方法和系统 Download PDF

Info

Publication number
CN113168737A
CN113168737A CN201980076776.2A CN201980076776A CN113168737A CN 113168737 A CN113168737 A CN 113168737A CN 201980076776 A CN201980076776 A CN 201980076776A CN 113168737 A CN113168737 A CN 113168737A
Authority
CN
China
Prior art keywords
components
virtual
user
computing system
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980076776.2A
Other languages
English (en)
Inventor
M·A·麦考尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Magic Leap Inc
Original Assignee
Magic Leap Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Magic Leap Inc filed Critical Magic Leap Inc
Publication of CN113168737A publication Critical patent/CN113168737A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • A63F13/26Output arrangements for video game devices having at least one additional display device, e.g. on the game controller or outside a game booth
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B27/0172Head mounted characterised by optical features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/0132Head-up displays characterised by optical features comprising binocular systems
    • G02B2027/0134Head-up displays characterised by optical features comprising binocular systems of stereoscopic type
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/014Head-up displays characterised by optical features comprising information/image processing systems
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B2027/0178Eyeglass type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/024Multi-user, collaborative environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2008Assembling, disassembling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Optics & Photonics (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本公开的示例描述了用于分解和共享3D模型的系统和方法。在示例方法中,经由可穿戴头部装置的显示器显示虚拟三维模型的第一版本。对主机装置进行关于与虚拟三维模型的第二版本相关联的数据的请求,其中虚拟三维模型的第二版本包括组成部分。确定虚拟三维模型的第一版本是否包括组成部分。根据确定虚拟三维模型的第一版本不包括组成部分,对主机装置进行关于与组成部分相关联的数据的请求。经由可穿戴头部装置的显示器显示虚拟三维模型的第二版本。根据确定虚拟三维模型的第一版本包括组成部分,不对主机装置进行关于与组成部分相关联的数据的请求。

Description

用于三维模型共享的方法和系统
相关申请的交叉引用
本申请要求于2018年9月24日提交的美国临时申请No.62/735,675的优先权益,其全部内容通过引用合并于此。
技术领域
本公开涉及在包括混合现实系统、成像系统和可视化系统的两个或多个计算系统之间共享三维模型。
背景技术
现代计算和显示技术已经促进了用于所谓的“虚拟现实”、“增强现实”和“混合现实”体验的系统的开发,其中以使得它们看起来是真实的或可以被感知为真实的方式将数字再现的图像呈现给用户。虚拟现实(VR)场景通常涉及对其他实际的真实视觉输入没有透明度的计算机生成的虚拟图像信息的呈现。增强现实(AR)场景通常涉及作为对用户周围现实世界可视化的增强的虚拟图像信息的呈现。混合现实(MR)是一种增强现实,其中物理对象和虚拟对象可以共存并实时交互。在此公开的系统和方法解决了与VR、AR和MR技术有关的各种挑战。
发明内容
本公开的示例描述了用于分解和共享3D模型的系统和方法。在示例方法中,经由可穿戴头部装置的显示器显示虚拟三维模型的第一版本。对主机装置进行关于与虚拟三维模型的第二版本相关联的数据的请求,其中虚拟三维模型的第二版本包括组成部分(constituent parts)。确定虚拟三维模型的第一版本是否包括组成部分。根据确定虚拟三维模型的第一版本不包括组成部分,对主机装置进行关于与组成部分相关联的数据的请求。经由可穿戴头部装置的显示器显示虚拟三维模型的第二版本。根据确定虚拟三维模型的第一版本包括组成部分,不对主机装置进行关于与组成部分相关联的数据的请求。
附图说明
本说明书中描述的主题的一种或多种实现方式的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,其他特征、方面和优点将变得显而易见。
图1描绘了具有某些虚拟真实对象以及人观看的某些物理对象的混合现实场景的图示。
图2示意性地示出可穿戴系统的示例。
图3示意性地示出可穿戴系统的示例组件。
图4示意性地示出用于将图像信息输出给用户的可穿戴装置的波导堆叠的示例。
图5是用于与虚拟用户界面进行交互的方法的示例的过程流程图。
图6A是可包括化身处理和渲染系统的可穿戴系统的另一个示例的框图。
图6B示出化身处理和渲染系统的示例组件。
图7是包括进入可穿戴系统的各种输入的可穿戴系统的示例的框图。
图8是关于所识别的对象渲染虚拟内容的方法的示例的过程流程图。
图9示意性地示出描绘彼此交互的多个可穿戴系统的整体系统视图。
图10示出使用本文描述的系统和方法来共享3D资产的示例过程。
图11示出使用本文描述的系统和方法来共享3D资产的示例3D模型共享系统配置。
图12示出使用本文描述的系统和方法的在服务器与客户端之间的示例3D模型共享过程。
图13示出用于使用本文描述的系统和方法来共享3D资产的示例3D模型共享系统配置。
图14示出使用本文描述的系统和方法来分解完整的(full)3D模型的示例过程。
图15示出使用本文描述的系统和方法的示例性的完整的3D模型。
图16示出使用本文描述的系统和方法的在3D模型共享应用中使用的用于存储3D模型的组成部分的示例的库的集合。
图17示出使用本文描述的系统和方法从完整的3D模型的组成部分重组该完整的3D模型的示例过程。
图18示出使用本文描述的系统和方法的示例性的完整的3D模型。
图19A-19C示出示例混合现实环境。
在所有附图中,附图标记可以被重复使用以指示参考元件之间的对应关系。提供附图是为了说明在此描述的示例实施例,而无意于限制本公开的范围。
具体实施方式
混合现实环境
像所有人一样,混合现实系统的用户存在于真实环境中—即,用户可感知的“真实世界”的三维部分以及其全部内容。例如,用户使用一个普通的人的感觉—视觉、听觉、触觉、味觉、嗅觉—来感知真实环境,并且通过在真实环境中移动自己的身体来与真实环境交互。真实环境中的位置可被描述为坐标空间中的坐标;例如,坐标可包括相对于海平面的纬度、经度和高度;距参考点的三个正交维度中的距离;或其他合适的值。同样地,向量可以描述具有在坐标空间中的方向和大小的量。
计算装置可以例如在与装置相关联的存储器中维持虚拟环境的表示。如本文所使用的,虚拟环境是三维空间的计算表示。虚拟环境可以包括任何对象、动作、信号、参数、坐标、矢量或与该空间相关联的其他特性的表示。在一些示例中,计算装置的电路(例如,处理器)可以维持和更新虚拟环境的状态;也就是,处理器可以在第一时间t0处基于与虚拟环境相关联的数据和/或由用户提供的输入来确定第二时间t1处的虚拟环境的状态。例如,如果虚拟环境中的对象在时间t0处位于第一坐标处,并且具有某些被编程的物理参数(例如,质量、摩擦系数);以及从用户接收到的输入指示应在方向向量上将力施加到对象;则处理器可应用运动学定律以使用基本力学来确定对象在时间t1处的位置。处理器可以使用关于虚拟环境已知的任何合适的信息和/或任何合适的输入(例如,真实世界参数),以确定在时间t1处的虚拟环境的状态。在维持和更新虚拟环境的状态时,处理器可以执行任何合适的软件,包括与虚拟环境中的虚拟对象的创建和删除有关的软件;用于定义在虚拟环境中虚拟对象或角色的行为的软件(例如,脚本);用于定义在虚拟环境中信号(例如,音频信号)的行为的软件;用于创建和更新与虚拟环境相关联的参数的软件;用于在虚拟环境中生成音频信号的软件;用于处理输入和输出的软件;用于实现网络操作的软件;用于应用资产数据(例如,随时间来移动虚拟对象的动画数据)的软件;或许多其他可能性。
输出装置(诸如显示器或扬声器)可以向用户呈现虚拟环境的任何或所有方面。例如,虚拟环境可以包括能够被呈现给用户的虚拟对象(其可以包括无生命对象的表示;人;动物;灯等)。处理器可以确定虚拟环境的视图(例如,对应于具有原点坐标、视图轴和平截头锥体(frustum)的“相机”);并且将与该视图对应的虚拟环境的可视场景渲染到显示器。任何合适的渲染技术可用于此目的。在一些示例中,可视场景可以仅包括虚拟环境中的一些虚拟对象,并且排除某些其他虚拟对象。类似地,虚拟环境可以包括能够作为一个或多个音频信号被呈现给用户的音频方面。例如,虚拟环境中的虚拟对象可以生成源自对象的位置坐标的声音(例如,虚拟角色可以说话或引起声音效果);或者虚拟环境可以与音乐提示或环境声音相关联,该音乐提示或环境声音可以与或可以不与特定位置相关联。处理器可以确定对应于“收听者”坐标的音频信号—例如,对应于虚拟环境中的声音的合成的音频信号,并且该音频信号被混合和处理以模拟收听者在收听者坐标处将听到的音频信号—并且经由一个或多个扬声器向用户呈现该音频信号。
因为虚拟环境仅作为计算结构而存在,所以用户不能使用一个人的普通感觉来直接感知虚拟环境。替代地,用户可以仅间接地感知虚拟环境,如例如通过显示器、扬声器、触觉输出装置等呈现给用户的那样。类似地,用户不能直接触摸、操纵或以其他方式与虚拟环境交互;但是可以经由输入装置或传感器向处理器提供输入数据,该处理器可以使用该装置或传感器数据来更新虚拟环境。例如,相机传感器可以提供光学数据,该光学数据指示了用户正在尝试在虚拟环境中移动对象,并且处理器可以使用该数据以使对象在虚拟环境中相应地响应。
混合现实系统可以呈现给用户,例如使用透射显示器和/或一个或多个扬声器(其可以例如被并入到可穿戴头部装置中)、组合真实环境和虚拟环境的方面的混合现实(“MR”)环境。在一些实施例中,一个或多个扬声器可以在头戴式可穿戴单元的外部。如本文所使用的,MR环境是真实环境和对应的虚拟环境的同时表示。在一些示例中,对应的真实和虚拟环境共享单个坐标空间;在一些示例中,真实坐标空间和一个或多个对应的虚拟坐标空间通过一个或多个变换矩阵(或其他合适的表示)而彼此相关。因此,在一些实施例中,单个坐标(在一些示例中,连同变换矩阵)可以定义真实环境中的第一位置以及虚拟环境中的第二对应位置;反之亦然。
在MR环境中,虚拟对象(例如,在与MR环境相关联的虚拟环境中)可以对应于真实对象(例如,在与MR环境相关联的真实环境中)。例如,如果MR环境中的真实环境包括在位置坐标处的真实灯杆(真实对象),则MR环境中的虚拟环境可以包括在对应的位置坐标处的对应的虚拟灯杆(虚拟对象)。如本文所使用的,真实对象与其对应的虚拟对象组合在一起构成“混合现实对象”。虚拟对象不需要与对应的真实对象完美地匹配或对准。在一些示例中,虚拟对象可以是对应的真实对象的简化版本。例如,如果真实环境包括真实灯杆,则对应的虚拟对象可以包括具有大致与真实灯杆相同的高度和半径的圆柱(反映了灯柱的形状可以是大致圆柱形的)。以这种方式简化虚拟对象可以允许计算效率,并且可以简化要对此类的虚拟对象执行的计算。此外,在MR环境的一些示例中,不是真实环境中的所有真实对象都可以与对应的虚拟对象相关联。同样地,在MR环境的一些示例中,不是虚拟环境中的所有虚拟对象都可以与对应的真实对象相关联。也就是说,一些虚拟对象可以仅在MR环境的虚拟环境中,而没有任何真实世界对应物。在一些示例中,不是所有真实对象都可以与对应的真实对象相关联。
在一些示例中,虚拟对象可以具有与对应的真实对象的特征不同(有时,完全不同)的特性。例如,当MR环境中的真实环境可以包括绿色、两臂仙人掌—多刺的无生命对象—时,MR环境中的对应虚拟对象可以具有带有人类面部特征和粗暴的举止的绿色、两臂虚拟角色的特性。在该示例中,虚拟对象在某些特性(颜色、臂数)上类似于其对应的真实对象;但是在其他特性(面部特征、个性)上与真实对象不同。以此方式,虚拟对象具有以创意、抽象、夸大或想象方式来表示真实对象的潜力;或者赋予行为(例如,人类个性)以便以其他方式使真实对象无生命化。在一些示例中,虚拟对象可以是不具有真实世界对等物(例如,虚拟环境中的虚拟怪物,其可能处于与真实环境中的空的空间对应的位置处)的纯粹的想象创建。
与在模糊真实环境的同时向用户呈现虚拟环境的VR系统相比,呈现MR环境的混合现实系统提供了在呈现虚拟环境时真实环境保持可感知的优点。因此,混合现实系统的用户能够使用与真实环境相关联的视觉和音频提示来体验并与对应的虚拟环境交互。作为示例,虽然VR系统的用户可能努力感知或与虚拟环境中显示的虚拟对象交互—因为如上所述,用户不能直接地感知或与虚拟环境交互—但是MR系统的用户可以通过看、听和触摸他或她自己的真实环境中的对应真实对象来发现其凭直觉且自然地与虚拟对象交互。这种交互水平可以提高用户的沉浸、连接和与虚拟环境的参与的感觉。类似地,通过同时呈现真实环境和虚拟环境,混合现实系统可以减少与VR系统相关联的负面心理感受(例如,认知障碍)和负面身体感受(例如,运动病)。混合现实系统还为可增强或改变我们对真实世界的体验的应用提供许多可能性。
图19A示出其中用户1910使用混合现实系统1912的示例真实环境1900。混合现实系统1912可以包括显示器(例如,透射显示器)和一个或多个扬声器、以及一个或多个传感器(例如,相机),例如如下所述的。所示的真实环境1900包括矩形房间1904A,其中用户1910是站立的;以及真实对象1922A(灯)、1924A(桌子)、1926A(沙发)和1928A(绘画)。房间1904A还包括位置坐标1906,其可以被认为是真实环境1900的原点。如图19A所示,其原点在点1906(世界坐标)处的环境/世界坐标系1908(包括x轴1908X、y轴1908Y和z轴1908Z)可以定义用于真实环境1900的坐标空间。在一些实施例中,环境/世界坐标系1908的原点1906可对应于混合现实系统1912被通电的位置。在一些实施例中,可以在操作期间重置环境/世界坐标系1908的原点1906。在一些示例中,用户1910可以被认为是真实环境1900中的真实对象;类似地,用户1910的身体部分(例如,手、脚)可以被认为是真实环境1900中的真实对象。在一些示例中,其原点在点1915(例如,用户/收听者/头部坐标)处的用户/收听者/头部坐标系1914(包括x轴1914X、y轴1914Y和z轴1914Z)可以定义用于混合现实系统1912所处在其上的用户/收听者/头部的坐标空间。用户/收听者/头部坐标系1914的原点1915可以相对于混合现实系统1912的一个或多个组件来定义。例如,用户/收听者/头部坐标系1914的原点1915可以相对于混合现实系统1912的显示器来定义,诸如在混合现实系统1912的初始校准期间。矩阵(其可以包括平移矩阵和四元数矩阵或其他旋转矩阵))或其他合适的表示可以表征用户/收听者/头部坐标系1914空间与环境/世界坐标系1908空间之间的变换。在一些实施例中,左耳坐标1916和右耳坐标1917可以相对于用户/收听者/头部坐标系1914的原点1915来定义。矩阵(其可以包括平移矩阵和四元数矩阵或其他旋转矩阵)或其他合适的表示可以表征左耳坐标1916和右耳坐标1917与用户/收听者/头部坐标系1914空间之间的变换。用户/收听者/头部坐标系1914可以简化相对于用户头部或者相对于头戴式装置(例如,相对于环境/世界坐标系1908)的位置的表示。使用同时定位和映射(SLAM)、视觉里程计或其他技术,可以实时地确定和更新用户坐标系1914与环境坐标系1908之间的变换。
图19B示出与真实环境1900对应的示例虚拟环境1930。所示的虚拟环境1930包括与真实矩形房间1904A对应的虚拟矩形房间1904B;与真实对象1922A对应的虚拟对象1922B;与真实对象1924A对应的虚拟对象1924B;以及与真实对象1926A对应的虚拟对象1926B。与虚拟对象1922B、1924B、1926B相关联的元数据可以包括从对应的真实对象1922A、1924A、1926A导出的信息。虚拟环境1930另外包括虚拟怪物1932,其不对应于真实环境1900中的任何真实对象。真实环境1900中的真实对象1928A不对应于虚拟环境1930中的任何虚拟对象。其原点在点1934(持久坐标)处的持久(persistent)坐标系1933(包括x轴1933X、y轴1933Y和z轴1933Z)可以定义用于虚拟内容的坐标空间。持久坐标系1933的原点1934可以相对于一个或多个真实对象(诸如真实对象1926A)来定义。矩阵(其可以包括变换矩阵和四元数矩阵或其他旋转矩阵)或者其他合适的表示可以表征持久坐标系1933空间与环境/世界坐标系1908空间之间的变换。在一些实施例中,虚拟对象1922B、1924B、1926B和1932中的每一个可以具有它们自己的相对于持久坐标系1933的原点1934的持久坐标点。在一些实施例中,可以存在多个持久坐标系,并且虚拟对象1922B、1924B、1926B和1932中的每一个可以具有它们自己的相对于一个或多个持久坐标系的持久坐标点。
关于图19A和19B,环境/世界坐标系1908定义用于真实环境1900和虚拟环境1930两者的共享坐标空间。在所示的示例中,坐标空间具有在点1906处的原点。此外,坐标空间由相同的三个正交轴(1908X、1908Y、1902Z)定义。因此,可以相对于相同的坐标空间来描述真实环境1900中的第一位置和虚拟环境1930中的第二对应位置。这简化了在真实和虚拟环境中识别和显示对应的位置,因为可以使用相同的坐标来识别两个位置。然而,在一些示例中,对应的真实环境和虚拟环境不需要使用共享的坐标空间。例如,在一些示例(未示出)中,矩阵(其可包括变换矩阵和四元数矩阵或其他旋转矩阵)或者其他合适的表示可表征在真实环境坐标空间与虚拟环境坐标空间之间的变换。
图19C示出经由混合现实系统1912同时向用户1910呈现真实环境1900和虚拟环境1930的方面的示例MR环境1950。在所示的示例中,MR环境1950同时向用户1910呈现来自真实环境1900的真实对象1922A、1924A、1926A和1928A(例如,经由混合现实系统1912的显示器的透射部分)、以及来自虚拟环境1930的虚拟对象1922B、1924B、1926B和1932(例如,经由混合现实系统1912的显示器的激活(active)显示部分)。如上所述,原点1906充当与MR环境1950对应的坐标空间的原点,并且坐标系1908定义用于坐标空间的x轴、y轴和z轴。
在所示的示例中,混合现实对象包括在坐标空间1908中占据对应的位置的对应对的真实对象和虚拟对象(即,1922A/1922B、1924A/1924B、1926A/1926B)。在一些示例中,真实对象和虚拟对象两者可以同时对用户1910可见。这在例如虚拟对象呈现被设计成增强对应真实对象的视图的信息的实例中(诸如在其中虚拟对象呈现古代受损雕塑的缺失片段的博物馆应用中)可能是期望的。在一些示例中,可以显示虚拟对象(1922B、1924B、和/或1926B)(例如,经由使用像素化的遮挡快门的激活的像素化的遮挡),以便遮挡对应的真实对象(1922A、1924A和/或1926A)。这在例如其中虚拟对象充当对应的真实对象的视觉替换的实例中(诸如在其中无生命的真实对象变成“活着的”角色的交互式讲故事应用中)可能是期望的。
在一些示例中,真实对象(例如,1922A、1924A、1926A)可以与虚拟内容或辅助数据相关联,该虚拟内容或辅助数据可能不一定构成虚拟对象。虚拟内容或辅助数据可以促进对混合现实环境中的虚拟对象的处理或处置。例如,此类虚拟内容可以包括对应的真实对象的二维表示;与对应的真实对象相关联的定制资产类型;或者与对应的真实对象相关联的统计数据。该信息可以使能或促进涉及真实对象的计算,而不招致不必要的计算开销。
在一些示例中,以上描述的呈现还可以并入音频方面。例如,在MR环境1950中,虚拟怪物1932可以与一个或多个音频信号相关联,诸如在MR环境1950周围行走时生成的脚步声音效果。如下面进一步描述的,混合现实系统1912的处理器可以计算与MR环境1950中的所有这样的声音的混合和处理的合成相对应的音频信号,并且经由被包括在混合现实系统1912中的一个或多个扬声器和/或一个或多个外部扬声器向用户1910呈现音频信号。
混合现实对象共享
对象的3D数字模型可以作为虚拟对象被显示给AR/VR/MR(出于简化的目的,在下文中被称为MR)环境中的一个或多个真实的或数字的人。例如,汽车工程师可能希望在他们的每周团队会议中与同事共享新的汽车设计。传统上,可以通过提供设计的若干不同视图来实现设计共享,使得观看者能够想象3D对象。在这种情况下,汽车工程师可以打印出透视附图,以在会议期间分发给同事。这可以针对简单的设计而起作用,但是如果3D对象具有复杂的形状或设计,则观看者可能难以将3D对象拼凑在观看者的大脑中。替代地或附加地,共享3D设计或模型的传统方法可能涉及创建物理原型。在该示例中,汽车工程师将需要花费时间和金钱来创建物理原型。物理原型可以使得更容易理解设计者的意图,但是可能仅示出设计的基本版本(例如,观看者可能仅看到设计的外部,但是不能打开它来查看内部组件)。
所公开的系统和方法的实施例可以提供在计算系统之间的改进的3D模型共享。继续上面的示例,本发明可以使得汽车工程师能够创建汽车的新的数字3D模型,然后在会议期间快速且有效地与同事共享该模型。本发明还能够实现快速且容易的非计划共享。例如,汽车工程师的管理者可能希望共享管理者先前设计的3D设计,以便与汽车工程师合作。在一些实施例中,管理者能够访问旧的3D汽车设计并与会议上存在的每个人共享,而不需要人去下载设计或点击链接来访问。
通常,在游戏中,例如,在游戏应用中预先加载3D模型(可选地被称为3D资产或3D内容),使得当用户启动游戏时,用户将要观看到的所有3D资产已经在装置上。当需要更新时,应用将离线添加新内容。例如,游戏可以在游戏不运行时应用补丁,并且当应用下一次被打开时,新内容被安装并且准备好使用。借助两个或更多个计算系统的共享新的3D模型的该系统对于不频繁的、计划的更新是方便的,但是当新的3D模型被频繁地或意外地需要时是不实用的。
MR游戏或应用可以是协作的,其中多个人向共同目标贡献,诸如在学校中整个一组学生学习关于青蛙的解剖结构。如果教师试图解释概念并且学生不理解,则可能期望教师向学生显示青蛙的虚拟3D模型,使得他们可以看到教师正在描述什么。传统的系统将要求学生下载3D模型或退出并重新进入应用,使得教师可以将新的青蛙模型更新推送给学生。另外,这样的方法可能需要大量的磁盘存储,以便容纳所有的3D资产数据。可以期望在不使用磁盘空间的情况下访问3D模型的替代方法。
这些问题可以通过用于在服务器与一个或多个客户端之间的网络上流播(streaming)数据的方法和系统来解决。服务器可以访问一个或多个3D模型,并且可以具有被下载的并正在运行的3D模型共享服务器应用。3D模型共享应用可以将模型分成组成数据部分、压缩、打包该组成数据部分并将其发送到网络上的客户端。客户端可以在3D模型共享客户端应用运行时期间接收组成部分、重建3D模型并查看3D模型。在一些实施例中,运行时间可以是当游戏或应用循环正在操作时、当屏幕正在显示应用内容时、和/或当计算系统正在与应用的框架一起操作时。任何数量的客户端可以是网络的一部分。可以向客户端发送任何数量的3D模型。两个或更多个客户端可以是具有两个或更多个装置(例如,计算系统)的一个人、或者可以是每者都具有一个装置的两个或更多个人。
本申请的优点是在运行时间期间实现3D内容共享。
术语主机可以与服务器互换地使用。术语3D模型、3D资产、3D内容和3D模型可以互换地使用。
可穿戴系统的3D显示示例
可穿戴系统(在此也称为增强现实(AR)系统)可以被配置为向用户呈现2D或3D虚拟图像。图像可以是静止图像、视频的帧或视频的组合等。可穿戴系统的至少一部分可以在可穿戴装置上实现,该可穿戴装置可以针对用于交互单独或组合地呈现VR、AR或MR环境。可穿戴装置可以作为AR装置(ARD)被互换地使用。此外,出于本公开的目的,术语“AR”与术语“MR”可被互换地使用。
图1描绘了具有某些虚拟真实对象以及由人观看的某些物理对象的混合现实场景的图示。在图1中,描绘了MR场景100,其中MR技术的用户看到了真实世界的公园状设置110,其以人、树、背景中的建筑物以及混凝土平台120为特征。除了这些项目之外,MR技术的用户还可以感知到他“看到”了站在真实世界平台120上的机器人雕像130,以及似乎是大黄蜂的拟人化的飞行着的卡通般化身角色140,尽管这些元素在真实世界中不存在。
为了使3D显示器产生真实的深度感,且更具体地,产生表面深度的模拟感,可能希望显示器视野中的每个点都生成与其虚拟深度相对应的适应响应。如果对显示点的适应响应不符合该点的虚拟深度(如由会聚和立体视觉的双目深度提示确定),则人眼可能会遇到适应冲突,从而导致成像不稳定,有害的眼睛疲劳,头痛,以及在缺乏适应信息的情况下的几乎完全的表面深度缺失。
VR、AR和MR体验可以通过具有显示器的显示系统来提供,在该显示器中,与多个深度平面相对应的图像被提供给观看者。对于每个深度平面,图像可能不同(例如,提供场景或对象的稍微不同的呈现),并且可能由观看者的眼睛分别聚焦,从而基于使位于不同深度平面上的场景的不同图像特征聚焦所需的眼睛适应,或基于观察在不同深度平面上失焦的不同图像特征,为用户提供深度提示。如在此其他地方所讨论的,这种深度提示可以提供可靠的深度感知。
图2示出可被配置为提供AR/VR/MR场景的可穿戴系统200的示例。可穿戴系统200还可称为AR系统200。可穿戴系统200可以包括显示器220以及支持显示器220的功能的各种机械和电子模块和系统。显示器220可以耦合至框架230,该框架230可以由用户、佩戴者或观看者210佩戴。显示器220可以放置于用户210的眼睛前面。显示器220可以向用户呈现AR/VR/MR内容。显示器220可以包括戴在用户的头上的头戴式显示器(HMD)。
在一些实施例中,扬声器240可以被耦合至框架230并且邻近用户的耳道放置(在一些实施例中,未示出的另一个扬声器邻近用户的另一耳道放置以提供立体声/可塑的声音控制)。显示器220可包括用于检测来自环境的音频流并捕获环境声音的音频传感器(例如,麦克风)232。在一些实施例中,未示出的一个或多个其他音频传感器可以被放置以提供立体声接收。立体声接收可以用来确定声源的位置。可穿戴系统200可以对音频流执行声音或语音识别。
可穿戴系统200可以包括面向外成像系统464(图4中所示),该面向外成像系统464观察用户周围环境中的世界。可穿戴系统200还可以包括可以跟踪用户的眼睛运动的面向内成像系统462(图4中所示)。面向内成像系统可以跟踪一只眼睛的运动或两只眼睛的运动。面向内成像系统462可以附接至框架230,并且可以与处理模块260或270电通信,该处理模块260或270可以处理由面向内成像系统获取的图像信息以确定用户210的例如眼睛的瞳孔直径或取向的眼睛运动或眼睛姿势。面向内成像系统462可以包括一个或多个相机。例如,至少一个相机可以用于对每只眼睛成像。由相机获取的图像可用于分别确定每只眼睛的瞳孔大小或眼睛姿势,从而允许将图像信息呈现给每只眼睛以针对该只眼睛动态地调整。
作为示例,可穿戴系统200可使用面向外成像系统464或面向内成像系统462来获取用户的姿势的图像。图像可以是静止图像、视频的帧,或视频。
显示器220可以诸如通过有线引线或无线连接可操作地耦合250到本地数据处理模块260,该本地数据处理模块260可以以各种配置安装,诸如固定地附接至框架230,固定地附接至由用户佩戴的头盔或帽子,嵌入耳机中或以其他方式可移除地附接至用户210(例如,以背包式配置、皮带耦合式配置)。
本地处理和数据模块260可以包括硬件处理器以及数字存储器,诸如非易失性存储器(例如,闪存),二者都可以用于辅助数据的处理、缓存和存储。数据可以包括如下数据:a)从传感器(其可以例如可操作地耦合至框架230或以其他方式附接至用户210)捕获,诸如图像捕获装置(例如,面向内成像系统或面向外成像系统中的相机)、音频传感器(例如,麦克风)、惯性测量单元(IMU)、加速度计、罗盘、全球定位系统(GPS)单元、无线电装置或陀螺仪;或b)使用远程处理模块270或远程数据储存库280获取或处理,可能在这种处理或取得之后传递给显示器220。本地处理和数据模块260可以通过通信链路262或264(诸如经由有线或无线通信链路)可操作地耦合至远程处理模块270或远程数据储存库280,使得这些远程模块可以用作本地处理和数据模块260的资源。此外,远程处理模块280和远程数据储存库280可以可操作地彼此耦合。
在一些实施例中,远程处理模块270可以包括被配置为分析和处理数据或图像信息的一个或多个处理器。在一些实施例中,远程数据储存库280可以包括数字数据存储设施,其可以通过互联网或以“云”资源配置的其他联网配置来使用。在一些实施例中,所有数据可以被存储并且所有计算可以在本地处理和数据模块中执行,从而允许来自远程模块的完全自主的使用。
可穿戴系统的示例组件
图3示意性地示出可穿戴系统的示例组件。图3示出可穿戴系统200,其可包括显示器220和框架230。放大视图202示意性地示出可穿戴系统200的各个组件。在某些实现方式中,图3中所示的一个或多个组件可以是显示器220的一部分。单独或组合的各种组件可以收集与可穿戴系统200的用户或用户的环境相关联的各种数据(诸如例如,音频或视觉数据)。应当理解,取决于可穿戴系统所用于的应用,其他实施例可以具有更多或更少的组件。尽管如此,图3提供了可以通过可穿戴系统收集、分析和存储的数据的各种成分和类型中的一些的基本思想。
图3示出示例可穿戴系统200,该示例可穿戴系统200可以包括显示器220。显示器220可以包括可以安装到用户的头部或与框架230相对应的壳体或框架230上的显示透镜226。显示透镜226可以包括一个或多个透明镜或衍射光学元件,该透明镜或衍射光学元件由壳体230定位在用户的眼睛302、304的前面,并且可以被配置为将投射的光338引导至眼睛302、304中并有助于光束成形,同时也允许来自本地环境的至少一些光的透射。投射光束338的波前可以发散以与投射光的期望焦距一致。如图所示,两个广视场机器视觉相机316(也称为世界相机)可以被耦接到壳体230以对用户周围的环境成像。这些相机316可以是双重捕获可见光/不可见(例如,红外)光相机。相机316可以是图4中所示的面向外成像系统464的一部分。由世界相机316获取的图像可以由姿势处理器336处理。例如,姿势处理器336可以实现一个或多个对象识别器708(例如,图7所示)以识别用户或在该用户环境中另一人的姿势,或识别该用户环境中的物理对象。
继续参考图3,示出一对光投射器模块,其具有被配置为将光338引导至眼睛302、304中的显示光学器件和透镜。所描绘的视图还示出与红外光(诸如发光二极管“LED”)配对的两个微型红外相机324,其可以被配置为能够跟踪用户的眼睛302、304以支持渲染和用户输入。相机324可以是图4中所示的面向内成像系统462的一部分。可穿戴系统200可进一步具有传感器组件339,该传感器组件可包括X、Y和Z轴加速度计功能以及磁罗盘以及X、Y和Z轴陀螺仪功能,优选以相对较高的频率(诸如200Hz)提供数据。传感器组件339可以是参考图2A描述的IMU的一部分。所描绘的系统200还可以包括头部姿势处理器336,诸如ASIC(专用集成电路)、FPGA(现场可编程门数组)或ARM处理器(先进的精简指令集机器),该头部姿势处理器可被配置为根据从捕获装置316输出的宽视场图像信息来计算实时或接近实时的用户头部姿势。头部姿势处理器336可以是硬件处理器,并且可以实现为图2A中所示的本地处理和数据模块260的一部分。
可穿戴系统还可包括一个或多个深度传感器234。深度传感器234可被配置为测量环境中的对象到可穿戴装置之间的距离。深度传感器234可包括激光扫描仪(例如,激光雷达)、超声深度传感器或深度感测相机。在某些实现方式中,在相机316具有深度感测能力的情况下,相机316也可以被认为是深度传感器234。
还示出处理器332,其可以被配置为执行数字或模拟处理以从来自传感器组件339的陀螺仪、罗盘或加速度计数据中得出姿势。处理器332可以是图2中所示的本地处理和数据模块260的一部分。如图3中所示的可穿戴系统200还可包括诸如例如GPS 337(全球定位系统)的定位系统,以辅助姿势和定位分析。另外,GPS可以进一步提供关于用户环境的基于远程(例如,基于云)的信息。该信息可用于识别用户环境中的对象或信息。
可穿戴系统可以将由GPS 337获取的数据与可以提供有关用户环境的更多信息的远程计算系统(诸如例如,远程处理模块270、另一个用户的ARD等)相结合。作为一个示例,可穿戴系统可以基于GPS数据确定用户的位置并取得世界地图(例如,通过与远程处理模块270通信),该世界地图包括与用户的位置相关联的虚拟对象。作为另一个示例,可穿戴系统200可以使用世界相机316(其可以是图4中所示的面向外成像系统464的一部分)来监测环境。基于由世界相机316获取的图像,可穿戴系统200可以检测环境中的对象(例如,通过使用图7中所示的一个或多个对象识别器708)。可穿戴系统可以进一步使用由GPS 337获取的数据来解释特征。
可穿戴系统200还可以包括渲染引擎334,该渲染引擎334可以被配置为提供用户本地的渲染信息,以促进扫描仪的操作和成像到用户的眼睛中,以便用户观看世界。渲染引擎334可以由硬件处理器(诸如例如,中央处理单元或图形处理单元)实现。在一些实施例中,渲染引擎是本地处理和数据模块260的一部分。渲染引擎334可以通信地耦合(例如,经由有线或无线链路)到可穿戴系统200的其他组件。例如,渲染引擎334可以经由通信链路274耦接到眼睛相机324,并且经由通信链路272耦接到投射子系统318(其可以以类似于视网膜扫描显示器的方式经由扫描的激光装置将光投射到用户的眼睛302、304中)。渲染引擎334还可以分别经由链路276和294与其他处理单元(诸如例如传感器姿势处理器332和图像姿势处理器336)通信。
相机324(例如,微型红外相机)可用于跟踪眼睛姿势以支持渲染和用户输入。一些示例眼睛姿势可以包括用户正在看的地方或他或她正在聚焦的深度(这可以通过眼睛的聚散来估计)。GPS 337、陀螺仪、罗盘和加速度计339可用于提供粗略或快速的姿势估计。相机316中的一个或多个可以获取图像和姿势,该图像和姿势可以与来自关联的云计算资源的数据一起被用来映射本地环境并与其他人共享用户视图。
图3中描绘的示例组件仅用于说明目的。为了便于说明和描述,一起示出多个传感器和其他功能模块。一些实施例可以仅包括这些传感器或模块中的一个或子集。此外,这些组件的位置不限于图3中所示的位置。一些组件可以安装到其他组件或容纳在其他组件(诸如皮带安装组件、手持组件或头盔组件)内。作为一个示例,图像姿势处理器336、传感器姿势处理器332和渲染引擎334可以放置在腰带包中,并被配置为经由无线通信(诸如超宽带、Wi-Fi、蓝牙等)或经由有线通信与可穿戴系统的其他组件通信。所描绘的壳体230优选地是用户可头戴的和可穿戴的。然而,可穿戴系统200的一些组件可能会穿戴到用户身体的其他部分。例如,扬声器240可以被插入用户的耳朵中以向用户提供声音。
关于光338到用户的眼睛302、304中的投射,在一些实施例中,相机324可以被用来测量用户的眼睛的中心在几何上趋向的位置,该位置通常与眼睛的焦点位置或“焦点深度”重合。眼睛趋向的所有点的三维表面可以称为“两眼视界(horopter)”。焦距可以采取一定数量的深度,或者可以无限变化。从聚散距离投射的光似乎聚焦到主体眼睛302、304,而在聚散距离之前或之后的光则是模糊的。
人的视觉系统是复杂的,并且提供对深度的真实感是具有挑战性的。由于聚散和适应的组合,对象的观看者可以将对象感知为三维的。两只眼睛相对于彼此的聚散运动(例如,用于会聚眼睛的视线以固定在对象上的瞳孔朝向或远离彼此的转动运动)与眼睛晶状体的聚焦(或“适应”)密切相关。在正常情况下,改变眼睛晶状体的焦点或适应眼睛,以在被称为“适应-聚散反射”的关系下将焦点从一个对象改变为在另一距离处的另一对象来自动将聚散变化匹配到相同距离。同样,在正常情况下,聚散的变化将触发适应的匹配变化。在适应和聚散之间提供更好匹配的显示系统可以形成更逼真的和更舒适的三维图像模拟。
此外,人眼可以正确地分辨束直径小于约0.7毫米的空间相干光,而不管眼睛聚焦在哪里。因此,为了产生适当的焦深的错觉,可以用相机324跟踪眼睛的聚散,并且渲染引擎334和投射子系统318可用于渲染处于聚焦的聚散上或附近的所有对象,以及处于变化的分辨率程度(例如,使用有意创建的模糊)的所有其他对象。优选地,系统220以大约每秒60帧或更高的帧速率向用户渲染。如上所述,优选地,相机324可以用于眼睛跟踪,并且软件可以被配置为不仅拾取聚散几何形状而且拾取焦点位置提示以用作用户输入。优选地,此类显示系统配置有适合白天或晚上使用的亮度和对比度。
在一些实施例中,显示系统优选地对于视觉对象对准具有小于约20毫秒的延迟,小于约0.1度的角度对准和约1弧分的分辨率,不受理论的限制,据信这大约是人眼的极限。显示系统220可以与定位系统集成在一起,该定位系统可以涉及GPS元件、光学跟踪、罗盘、加速度计或其他数据源,以帮助位置和姿势确定;定位信息可用于促进用户观看相关世界时的准确渲染(例如,此类信息将有助于眼镜了解它们关于真实世界的位置)。
在一些实施例中,可穿戴系统200被配置为基于用户的眼睛的适应来显示一个或多个虚拟图像。在一些实施例中,不同于迫使用户聚焦在图像被投射的地方的现有3D显示方法,可穿戴系统可以被配置为自动改变所投射虚拟内容的焦点,以允许更舒适地观看被呈现给用户的一个或多个图像。例如,如果用户的眼睛具有1m的当前焦点,则图像可以被投射为与用户的焦点重合。如果用户将焦点移至3m,则图像可以被投射为与新焦点重合。因此,一些实施例的可穿戴系统200可以允许用户的眼睛以更自然的方式起作用而不是迫使用户达到预定的焦点。
这样的可穿戴系统200可以消除或减少通常关于虚拟现实装置观察到的眼睛疲劳、头痛和其他生理症状的发生。为了实现这一点,可穿戴系统200的各种实施例可以被配置为通过一个或多个可变聚焦元件(VFE)以变化的焦距投射虚拟图像。在一个或多个实施例中,可通过多平面聚焦系统来实现3D感知,该多平面聚焦系统在远离用户的固定焦平面处投射图像。其他实施例可以采用可变平面焦点,其中,焦平面可以在z方向前后移动,以与用户当前的焦点状态一致。
在多平面聚焦系统和可变平面聚焦系统二者中,可穿戴系统200可以采用眼睛跟踪来确定用户的眼睛的聚散,确定用户的当前焦点以及将虚拟图像投射在所确定的焦点处。在其他实施例中,可穿戴系统200可以包括光调制器,该光调制器通过光纤扫描仪或其他光发生源将可变焦点的光束以光栅图案可变地投射到整个视网膜上。因此,可穿戴系统200的显示器以变化的焦距投射图像的能力不仅减轻了用户观看3D对象的调焦,而且还可以用于补偿用户的眼部异常。在一些其他实施例中,空间光调制器可以通过各种光学组件将图像投射到用户。例如,如下文进一步所述,空间光调制器可将图像投射到一个或多个波导上,然后将图像传输给用户。
波导堆叠组件
图4示出用于向用户输出图像信息的波导堆叠的示例。可穿戴系统400可以包括波导的堆叠,或堆叠的波导组件480,其可以用于使用多个波导432b、434b、436b、438b、4400b向眼睛/大脑提供三维感知。在一些实施例中,可穿戴系统400可以对应于图2的可穿戴系统200,图4示意性地更详细地示出该可穿戴系统200的一些部分。例如,在一些实施例中,波导组件480可以被集成到图2的显示器220中。
继续参考图4,波导组件480还可在波导之间包括多个特征458、456、454、452。在一些实施例中,特征458、456、454、452可以是透镜。在其他实施例中,特征458、456、454、452可以不是透镜。而是,它们可以仅仅是间隔物(例如,覆盖层或用于形成气隙的结构)。
波导432b、434b、436b、438b、440b或多个透镜458、456、454、452可以被配置为以各种水平的波前曲率或光线发散将图像信息发送到眼睛。每个波导级可以与特定的深度平面相关联,并且可以被配置为输出与该深度平面相对应的图像信息。图像注入装置420、422、424、426、428可以被用来将图像信息注入波导440b、438b、436b、434b、432b,波导中的每个波导可以被配置为将入射光横跨每个相应的波导分布,用于朝向眼睛410输出。光可以离开图像注入装置420、422、424、426、428的输出表面,并且可以被注入到波导440b、438b、436b、434b、432b的对应输入边缘中。在一些实施例中,单个光束(例如,准直光束)可以被注入到每个波导中,以输出样本出射光瞳光束的整个场,该样本出射光瞳光束可以以对应于与特定波导相关联的深度平面的特定角度(和发散量)导向眼睛410。
在一些实施例中,图像注入装置420、422、424、426、428是分立的显示器,其各自产生图像信息以分别注入到对应的波导440b、438b、436b、434b、432b中。在一些其他实施例中,图像注入装置420、422、424、426、428可以是单个多路复用显示器的输出端,该显示器可以例如经由一个或多个光导管(诸如光缆)将图像信息传输到图像注入装置420、422、424、426、428中的每一个。
控制器460可以控制显示器和图像注入装置420、422、424、426、428的操作。控制器460可以包括调节定时和向波导440b、438b、436b、434b、432b提供图像信息的编程(例如,非暂态计算机可读介质中的指令)。在一些实施例中,控制器460可以是单个集成装置,或者是通过有线或无线通信信道连接的分布式系统。在一些实施例中,控制器460可以是处理模块260或270(在图2中示出)的一部分。
波导440b、438b、436b、434b、432b可以被配置为通过全内反射(TIR)在每个相应波导内传播光。波导440b、438b、436b、434b、432b可各自是平面的或具有另一种形状(例如,弯曲的),具有主要的顶部表面和底部表面以及在那些主要的顶部表面和底部表面之间延伸的边缘。在所示的配置中,波导440b、438b、436b、434b、432b可各自包括光学元件440a、438a、436a、434a、432a,其可以被配置为通过使在每个相应波导内传播的光衍射或者以其他方式重定向,从而从波导中耦出光。耦出的光可以在波导中传播的光撞击光重定向元件(诸如衍射光栅)的位置处由波导输出。光学元件(440a、438a、436a、434a、432a)可以例如是反射或衍射光学特征。尽管为了便于描述和清楚起见而示出设置在波导440b、438b、436b、434b、432b的底部主表面上,但是在一些实施例中,光学元件440a、438a、436a、434a、432a可以设置在顶部主表面或底部主表面,或者可以直接设置在波导440b、438b、436b、434b、432b的体积中。在一些实施例中,光学元件440a、438a、436a、434a、432a可以形成为材料层,该材料层附接至透明基板上以形成波导440b、438b、436b、434b、432b。在一些其他实施例中,波导440b、438b、436b、434b、432b可以是单片材料,并且光学元件440a、438a、436a、434a、432a可以形成在该片材料的表面上或内部中。
继续参考图4,如在此讨论的,在一些实施例中,每个波导440b、438b、436b、434b、432b可以被配置为输出光以形成与特定深度平面相对应的图像。例如,最靠近眼睛的波导432b可以被配置为将注入到这种波导432b中的准直光传输到眼睛410。准直光可以代表光学无限远焦平面。下一个波导向上434b可以被配置为在通过第一透镜452(例如,负透镜)的准直光到达眼睛410之前发出该准直光。第一透镜452可以被配置为产生轻微的凸波前曲率,使得眼睛/大脑将来自下一个波导向上434b的光解释为来自光学无限远朝内更加靠近眼睛410的第一焦平面。类似地,第三向上波导436b可以在到达眼睛410之前将其输出光通过第一透镜452和第二透镜454二者。第一透镜452和第二透镜454的组合光焦度可以配置为产生另一增量的波前曲率,使得眼睛/大脑将来自第三波导436b的光解释为来自第二焦平面,该第二焦平面比来自下一个波导向上434b的光从光学无限远朝内更加靠近人。
其他波导层(例如,波导438b、440b)和透镜(例如,透镜456、458)可以被类似地配置,堆叠中的最高波导440b通过其与眼睛之间的所有透镜发送其输出,以用于代表相对于人的最接近焦平面的聚合光焦度。为了在观看/解释来自堆叠波导组件480另一侧上的世界470的光时补偿透镜458、456、454、452的堆叠,可以在堆叠的顶部处设置补偿透镜层430,以补偿下面的透镜堆叠458、456、454、452的总焦度。此类配置可以提供与可用的波导/透镜对一样多的感知焦平面。波导的光提取光学元件和透镜的聚焦方面二者都可以是静态的(例如,不是动态的或电激励的)。在一些替代实施例中,其一者或二者可以动态使用电激活特征。
继续参考图4,光提取光学元件440a、438a、436a、434a、432a可被配置为既将光重定向到其相应的波导之外,又针对与波导相关联的特定深度平面以适当的发散或准直量输出该光。结果,具有不同相关联的深度平面的波导可以具有光提取光学元件的不同配置,该光提取光学元件取决于相关联的深度平面输出具有不同发散量的光。在一些实施例中,如在此所讨论的,光提取光学元件440a、438a、436a、434a、432a可以是体积或表面特征,该体积或表面特征可以被配置为以特定角度输出光。例如,光提取光学元件440a、438a、436a、434a、432a可以是体积全息图、表面全息图和/或衍射光栅。
在一些实施例中,光提取光学元件440a、438a、436a、434a、432a可以是形成衍射图案的衍射特征,或“衍射光学元件”(在此也称为“DOE”)。优选地,DOE具有相对较低的衍射效率,使得光束的光的仅一部分在DOE的每个相交处朝向眼睛410偏转离开,而其余的光经由全内反射继续移动通过波导。承载图像信息的光因此可被分成多个相关的出射束,该出射束在多个位置处离开波导,并且结果是针对在波导内到处弹跳的该特定的准直光束而朝向眼睛304的相当均匀的出射发射的图案。
在一些实施例中,一个或多个DOE可以在它们主动衍射的“开”状态与它们不明显衍射的“关”状态之间切换。例如,可切换的DOE可以包含聚合物分散液晶层,其中微滴可以在主体介质中包含衍射图案,并且微滴的折射率可以切换为与主体材料的折射率基本上匹配(在这种情况下,该图案不会明显衍射入射光),或者微滴可以切换到与主体介质的折射率不匹配的折射率(在这种情况下,该图案主动衍射入射光)。
在一些实施例中,可以基于观看者的眼睛的瞳孔大小或取向来动态地改变深度平面或景深的数量和分布。景深可能与观看者的瞳孔大小成反比。结果,随着观看者眼睛的瞳孔的大小减小,景深可以增加,使得因为该平面的位置超出了眼睛的焦点深度而无法辨别的一个平面可能会变得可辨别,并且随着瞳孔大小的减小和景深的相应增加而显得越来越集中。同样地,可以随着瞳孔大小的减小而减少用于向观看者呈现不同图像的间隔开的深度平面的数量。例如,观看者可能在不将眼睛的适应从一个深度平面调节到另一个深度平面的情况下无法在一个瞳孔大小下清楚地感知第一深度平面和第二深度平面二者的细节。然而,这两个深度平面可以同时在不改变适应的情况下以另一个瞳孔大小对用户充分聚焦。
在一些实施例中,显示系统可以基于对瞳孔大小或取向的确定,或者基于接收指示特定瞳孔大小或取向的电信号,来改变接收图像信息的波导的数量。例如,如果用户的眼睛无法区分与两个波导相关联的两个深度平面,则控制器460(其可以是本地处理和数据模块260的实施例)可以被配置或编程以停止向这些波导中的一个波导提供图像信息。有利地,这可以减少系统上的处理负担,从而增加系统的响应性。在波导的DOE可在开和关状态之间切换的实施例中,当波导确实接收到图像信息时,DOE可被切换到关状态。
在一些实施例中,可能希望使出射束满足直径小于观看者的眼睛直径的条件。然而,鉴于观看者瞳孔大小的可变性,满足该条件可能是一个挑战。在一些实施例中,通过响应于观看者的瞳孔大小的确定而改变出射束的大小,在宽范围的瞳孔大小上满足该条件。例如,随着瞳孔大小减小,出射束的大小也可以减小。在一些实施例中,可以使用可变孔径来改变出射束的大小。
可穿戴系统400可以包括对世界470的一部分进行成像的面向外成像系统464(例如,数码相机)。世界470的该部分可以被称为世界相机的视场(FOV),并且成像系统464有时被称为FOV相机。世界相机的FOV可以与观看者210的FOV相同或可以不相同,该观看者210的FOV涵盖观看者210在给定时间感知的世界470的一部分。例如,在一些情况下,世界相机的FOV可以大于可穿戴系统400的观看者210的观看者210。观看者可用于观看或成像的整个区域可以被称为关注场(FOR)。FOR可以包括围绕可穿戴系统400的立体角为4π的弧度,因为佩戴者可以移动他的身体、头部或眼睛以感知空间中的基本上任何方向。在其他上下文中,佩戴者的动作可能会更受限制,并且因此佩戴者的FOR可能会产生更小的立体角。从面向外成像系统464获得的图像可以用于跟踪用户做出的手势(例如,手或手指的手势),检测用户前面的世界470中的对象等。
可穿戴系统400可以包括音频传感器232,例如麦克风,以捕获环境声音。如上所述,在一些实施例中,可以放置一个或多个其他音频传感器以提供用于确定语音源的位置的立体声接收。作为另一示例,音频传感器232可以包括定向麦克风,该定向麦克风还可以提供关于音频源位于何处的这样的有用的定向信息。可穿戴系统400可以在定位语音源时使用来自面向外成像系统464和音频传感器230二者的信息,或者在特定时刻确定活动说话者等。例如,可穿戴系统400可以单独或者与说话者的反射图像(例如,如在镜子中看到)结合使用语音识别以确定说话者的身份。作为另一示例,可穿戴系统400可以基于从定向麦克风获取的声音来确定说话者在环境中的位置。可穿戴系统400可以采用语音识别算法来解析来自说话者位置的声音,以确定语音的内容,并使用语音识别技术来确定说话者的身份(例如,姓名或其他人口统计信息)。
可穿戴系统400还可以包括面向内成像系统466(例如,数码相机),其观察用户的运动,诸如眼睛运动和面部运动。面向内成像系统466可以用于捕获眼睛410的图像以确定眼睛304的瞳孔的大小和/或取向。面向内成像系统466可以用于获得图像以用于确定用户正在看的方向(例如,眼睛姿势)或用户的生物度量识别(例如,经由虹膜识别)。在一些实施例中,可以为每只眼睛使用至少一个相机,以独立地确定每只眼睛单独的瞳孔大小或眼睛姿势,从而允许向每只眼睛呈现图像信息以针对该只眼睛被动态地调整。在一些其他实施例中,仅单只眼睛410的瞳孔直径或取向可以被确定(例如,每双眼仅使用单个相机),并且可以假定对于用户的两只眼睛是相似的。可以分析由面向内成像系统466获得的图像以确定用户的眼睛姿势或心情,可穿戴系统400可以使用该眼睛姿势或心情来确定应该向用户呈现哪些音频或视觉内容。可穿戴系统400还可以使用诸如IMU、加速度计、陀螺仪等的传感器来确定头部姿势(例如,头部位置或头部取向)。
可穿戴系统400可以包括用户输入装置466,用户可以通过该用户输入装置466向控制器460输入命令以与可穿戴系统400交互。例如,用户输入装置466可以包括触控板、触摸屏、游戏杆、多自由度(DOF)控制器、电容感测装置、游戏控制器、键盘、鼠标、方向垫(D-pad)、棒、触觉装置、图腾(例如,充当虚拟用户输入装置)等。多DOF控制器可以以控制器的一些或所有可能的平移(例如,向左/向右、向前/向后或向上/向下)或旋转(例如,偏航、俯仰或滚动)来感测用户输入。支持平移运动的多DOF控制器可以称为3DOF,而支持平移和旋转的多自由度控制器可以称为6DOF。在一些情况下,用户可以使用手指(例如,拇指)在触敏输入装置上按下或滑动以向可穿戴系统400提供输入(例如,向由可穿戴系统400提供的用户界面提供用户输入)。用户输入装置466可以在可穿戴系统400的使用期间被用户的手握住。用户输入装置466可以与可穿戴系统400进行有线或无线通信。
可穿戴系统的其他组件
在许多实现方式中,除了上述可穿戴系统的组件之外或作为其替代,可穿戴系统可包括其他组件。可穿戴系统可以例如包括一个或多个触觉装置或组件。触觉装置或触觉组件可以可操作以向用户提供触感。例如,当触摸虚拟内容(例如,虚拟物体、虚拟工具、其他虚拟构造)时,触觉装置或组件可以提供压力或纹理的触感。触感可以复制虚拟对象所代表的物理对象的感觉,或者可以复制虚拟内容所代表的想象的对象或角色(例如,龙)的感觉。在一些实现方式中,触觉装置或组件可以由用户佩戴(例如,用户可佩戴的手套)。在一些实现方式中,触觉装置或组件可以由用户握持。
可穿戴系统可以例如包括可由用户操纵以允许输入可穿戴系统或与可穿戴系统交互的一个或多个物理对象。这些物理对象在此可以称为图腾。一些图腾可能采取无生命物体的形式,诸如例如一块金属或塑料、墙壁、桌子表面。在一些实现方式中,图腾实际上可能没有任何物理输入结构(例如,键、触发器、操纵杆、轨迹球、摇杆开关)。取而代之的是,图腾可以简单地提供物理表面,并且可穿戴系统可以渲染用户界面,以使用户看起来在图腾的一个或多个表面上。例如,可穿戴系统可以将计算机键盘和触控板的图像渲染为看起来驻留在图腾的一个或多个表面上。例如,可穿戴系统可以将虚拟计算机键盘和虚拟触控板渲染为出现在用作图腾的铝制矩形薄板的表面上。矩形板本身可以没有任何物理键、触控板或传感器。然而,可穿戴系统可以将用户采用矩形板操纵或交互或触摸检测为经由虚拟键盘或虚拟触控板进行的选择或输入。用户输入装置466(图4中所示)可以是图腾的实施例,其可以包括触控板、触摸板、触发器、操纵杆、跟踪球、摇杆或虚拟开关、鼠标、键盘、多自由度控制器或另一物理输入装置。用户可以单独或与姿势结合使用图腾与可穿戴系统或其他用户进行交互。
用户与可穿戴系统交互的示例过程
图5是用于与虚拟用户界面进行交互的方法500的示例的过程流程图。方法500可以由在此描述的可穿戴系统执行。方法500的实施例可以由可穿戴系统用来检测可穿戴系统的FOV中的人或文档。
在框510处,可穿戴系统可以识别特定的UI。UI的类型可以由用户预先确定。可穿戴系统可以识别特定的UI需要基于用户输入(例如,手势、视觉数据、音频数据、感觉数据、直接命令等)来填充。UI可以特定于安全场景,在该安全场景中,系统的佩戴者正在观察向佩戴者(例如,在旅行检查站)呈现文档的用户。在框520处,可穿戴系统可以生成用于虚拟UI的数据。例如,可以生成与UI的边界、总体结构、形状等相关联的数据。另外,可穿戴系统可以确定用户的物理位置的地图坐标,使得可穿戴系统可以显示与用户的物理位置有关的UI。例如,如果UI以身体为中心,则可穿戴系统可以确定用户的身体姿势、头部姿势或眼睛姿势的坐标,使得可以在用户周围显示环形UI,或者可以在墙上或在用户前面显示平面UI。在此所述的安全性上下文中,可以将UI显示为好像UI围绕正在向系统的佩戴者呈现文档的旅行者一样,使得佩戴者可以在观看旅行者和旅行者的文档时轻松观看UI。如果UI以手为中心,则可以确定用户的手的地图坐标。这些地图点可以通过FOV相机接收的数据、感官输入或任何其他类型的收集数据得出。
在框530处,可穿戴系统可以将数据从云发送到显示器,或者可以将数据从本地数据库发送到显示器组件。在框540处,基于所发送的数据向用户显示UI。例如,光场显示器可以将虚拟UI投射到用户的一只或两只眼睛中。一旦已经创建了虚拟UI,则在框550处,可穿戴系统可以简单地等待来自用户的命令以在虚拟UI上生成更多虚拟内容。例如,UI可以是围绕用户的身体或用户环境中的人(例如旅行者)的身体的以身体为中心的环。然后,可穿戴系统可以等待命令(手势、头部或眼睛的运动、语音命令、来自用户输入装置的输入等),并且如果识别出该命令(框560),则可以与该命令相关联的虚拟内容向用户显示(框570)。
混合现实中的化身渲染的示例
可穿戴系统可以采用各种映射相关技术,以便在渲染的光场中实现高景深。在映射出虚拟世界时,了解真实世界中的所有特征和点以相对于真实世界准确地描绘虚拟对象是有利的。为此,可以通过包含传达有关真实世界的各个点和特征的信息的新图片,将从可穿戴系统用户捕获的FOV图像添加到世界模型。例如,可穿戴系统可以收集一组地图点(例如2D点或3D点)并找到新的地图点以渲染世界模型的更准确版本。可以将第一用户的世界模型(例如,通过诸如云网络的网络)传输给第二用户,使得第二用户可以体验围绕第一用户的世界。
图6A是可穿戴系统的另一示例的框图,该可穿戴系统可包括混合现实环境中的化身处理和渲染系统690。可穿戴系统600可以是图2中所示的可穿戴系统200的一部分。在该示例中,可穿戴系统600可以包括地图620,该地图620可以包括地图数据库710(图7中所示)中的数据的至少一部分。该地图可以部分地驻留在可穿戴系统本地上,并且可以部分地驻留在可通过有线或无线网络访问的联网存储位置(例如,在云系统中)。姿势过程610可以在可穿戴计算架构(例如,处理模块260或控制器460)上执行,并利用来自地图620的数据来确定可穿戴计算硬件或用户的位置和取向。当用户正在体验系统并在世界范围内操作时,可以根据飞行中收集的数据计算姿势数据。数据可以包括图像、来自传感器的数据(诸如惯性测量单元,其通常包括加速度计和陀螺仪组件)以及与真实或虚拟环境中的对象有关的表面信息。
稀疏点表示可以是同时定位和映射(例如,SLAM或vSLAM,是指其中输入仅是图像/视觉的配置)过程的输出。该系统可以配置为不仅找出各个组件在世界中的位置,而且找出世界的构成。姿势可以是实现许多目标的构建块,包括填充地图和使用来自地图的数据。
在一个实施例中,稀疏点位置本身可能并不完全足够,并且可能需要进一步的信息来产生多焦点AR、VR或MR体验。通常指代深度图信息的密集表示可以被用来至少部分地填充该间隙。可以从称为“立体”640的过程中计算此类信息,其中,使用诸如三角测量或飞行时间感测的技术来确定深度信息。图像信息和活动图案(诸如使用活动投射器创建的红外图案)、从图像相机获取的图像或手部姿势/图腾650可用作立体处理640的输入。大量深度图信息可以被融合在一起,并且其中的一些可以采用表面表示来概括。例如,在数学上可定义的表面可能是其他处理装置(如游戏引擎)的有效(例如,相对于大的点云而言)且可理解的输入。因此,立体过程(例如,深度图)640的输出可以在融合过程630中被组合。姿势610也可以是该融合过程630的输入,并且融合630的输出变成填充地图过程620的输入。诸如在地形图绘制中,子表面可以彼此连接以形成较大的表面,并且该地图变成点和表面的大型混合体。
为了解决混合现实过程660中的各个方面,可以利用各种输入。例如,在图6A中所示的实施例中,可以输入游戏参数来确定系统的用户正在与各个位置处的一个或多个怪物、在各个位置处的墙壁或其他物体等玩怪物战斗游戏,怪物在各种条件下死亡或逃跑(诸如,如果用户射击了怪物)。世界地图可以包括关于对象的位置的信息或对象的语义信息(例如,诸如对象是平坦还是圆形,水平还是竖直,桌子还是灯等的分类),并且世界地图可以是对于混合现实的另一个有价值的输入。相对于世界的姿势也可以变成输入,并且可以在几乎所有交互系统中都扮演着关键角色。
来自用户的控制或输入可以是可穿戴系统600的另一输入。如在此所述,用户输入可包括视觉输入、手势、图腾、音频输入、感官输入等。为了四处移动或玩游戏,例如,用户可能需要指示可穿戴系统600有关他或她想做什么。除了在空间中移动自身外,还可以存在可以利用的各种形式的用户控件。在一个实施例中,图腾(例如用户输入装置)或诸如玩具枪的对象可以由用户握持并由系统跟踪。该系统优选地将被配置为了解用户正在握持该物品并了解用户正在与该物品进行什么类型的交互(例如,如果图腾或对象是枪,则系统可以被配置为了解位置和取向,以及用户是否点击了触发器或可能配备有传感器(诸如IMU)的其他感应按钮或元件,即使当这种活动不在任何相机的视野之内时,该传感器也可以辅助确定发生了什么)。
手势跟踪或识别也可以提供输入信息。可穿戴系统600可以被配置为跟踪和解释用于按钮按压、用于手势向左或向右、停止、抓握、握持等的手势。例如,在一种配置中,用户可能想要在非游戏环境中翻阅电子邮件或日历,或者与另一个人或玩家进行“拳头碰撞”。可穿戴系统600可以被配置为利用最小量的手势,该最小量的手势可以是动态的或可以不是动态的。例如,手势可以是简单的静态手势,如张开手表示停止,上竖大拇指表示可以,下竖大拇指表示不可以;或手向右或向左或向上/向下翻转以表示方向命令。
眼睛跟踪可以是另一种输入(例如,跟踪用户正在看向控制显示技术以在特定深度或范围进行渲染的位置)。在一个实施例中,可以使用三角测量确定眼睛的聚散,并且然后使用针对该特定人开发的聚散/适应模型来确定适应。眼睛跟踪可由眼睛相机执行,以确定眼睛注视(例如,一只眼睛或两只眼睛的方向或取向)。其他技术可以被用于眼睛跟踪,诸如例如,通过放置在眼睛附近的电极(例如,眼电位计)来测量电势。
语音跟踪可以是另一种输入并且可以单独使用或与其他输入(例如,图腾跟踪、眼睛跟踪、手势跟踪等)组合使用。语音跟踪可以包括单独或组合的语音识别、声音识别。系统600可以包括从环境接收音频流的音频传感器(例如,麦克风)。系统600可以结合声音识别技术来确定谁正在说话(例如,语音是来自ARD的佩戴者还是另一个人或语音(例如,语音是来自ARD佩戴者还是其他人还是语音(例如,环境中扬声器发送的录制语音))以及语音识别技术来确定在说什么。本地数据和处理模块260或远程处理模块270可以处理来自麦克风的音频数据(或诸如例如用户正在观看的视频流的另一个流中的音频数据),以通过应用各种语音识别算法,诸如例如隐马尔可夫模型、基于动态时间规整(DTW)的语音识别、神经网络、深度学习算法(诸如深度前馈和递归神经网络)、端到端自动语音识别、机器学习算法(参考图7进行描述),或使用声学建模或语言建模的其他算法等,来识别语音内容。
本地数据和处理模块260或远程处理模块270也可以应用语音识别算法,该算法可以识别说话者的身份,诸如说话者是可穿戴系统600的用户210还是用户正在交流的其他人。一些示例语音识别算法可以包括频率估计、隐马尔可夫模型、高斯混合模型、模式匹配算法、神经网络、矩阵表示、矢量量化、说话者二叉化、决策树和动态时间规整(DTW)技术。语音识别技术还可以包括反说话者技术,诸如同类群组模型和世界模型。频谱特征可用于表示说话者特征。本地数据和处理模块或远程数据处理模块270可以使用参考图7描述的各种机器学习算法来执行语音识别。
可穿戴系统的实现方式可以经由UI使用这些用户控件或输入。UI元素(例如,控件、弹出窗口、气泡、数据输入字段等)可以用于例如关闭信息(例如对象的图形或语义信息)的显示。
关于相机系统,图6A中所示的示例可穿戴系统600可以包括三对相机:布置在用户面部两侧的相对较宽的FOV或被动SLAM相机对;取向为用户前方的不同对的相机,其用于处理立体成像过程640并捕获在用户面部前方跟踪的手势和图腾/对象。FOV相机和用于立体过程640的相机对可以是面向外成像系统464(图4中所示)的一部分。可穿戴系统600可以包括朝向用户的眼睛取向的眼睛跟踪相机(其可以是图4中所示的面向内成像系统462的一部分),以便对眼睛矢量和其他信息进行三角测量。可穿戴系统600还可包括一个或多个纹理光投射器(诸如红外(IR)投射器)以将纹理注入场景。
可穿戴系统600可以包括化身处理和渲染系统690。化身处理和渲染系统690可以被配置为基于上下文信息生成、更新、动画化和渲染化身。化身处理和渲染系统690中的一些或全部可以单独地或组合地实现为本地处理和数据模块260或远程处理模块262、264的一部分。在各个实施例中,多个化身处理和渲染系统690(例如,如在不同的可穿戴装置上实现)可以用于渲染虚拟化身670。例如,第一用户的可穿戴装置可以用于确定第一用户的意图,而第二用户的可穿戴装置可以基于从第一用户的可穿戴装置接收的意图来确定化身的特征并渲染第一用户的化身。如将参考图9所描述的,第一用户的可穿戴装置和第二用户的可穿戴装置(或其他此类可穿戴装置)可以例如经由网络进行通信。
图6B示出示例化身处理和渲染系统690。示例化身处理和渲染系统690可以单独或组合地包括3D模型处理系统680、上下文信息分析系统688、化身自动缩放器692、意图映射系统694、解剖调整系统698、刺激响应系统696。系统690旨在示出用于化身处理和渲染的功能,而并非旨在进行限制。例如,在某些实现方式中,这些系统中的一个或多个系统可以是另一系统的一部分。例如,上下文信息分析系统688的部分单独地或组合地可以是化身自动缩放器692、意图映射系统694、刺激响应系统696或解剖调整系统698的一部分。
上下文信息分析系统688可以被配置为基于参考图2和图3描述的一个或多个装置传感器来确定环境和对象信息。例如,上下文信息分析系统688可以使用由用户或用户化身的观看者的面向外成像系统464获取的图像,分析环境和用户环境或渲染用户化身的环境的对象(包括物理或虚拟对象)。上下文信息分析系统688可以单独或者与从位置数据或世界地图(例如,地图620、710、910)获取的数据组合来分析此类图像,以确定环境中对象的位置和布局。上下文信息分析系统688通常还可以访问用户或人类的生物学特征,以现实地对虚拟化身670制作动画。例如,上下文信息分析系统688可以生成不适感曲线,该不适感曲线可以应用于化身,使得用户的化身身体的一部分(例如头部)可能关于用户的身体的其他部分没有处于不舒适(或不现实)的位置(例如,化身的头部未转动270度)。在某些实现方式中,一个或多个对象识别器708(图7中所示)可以被实现为上下文信息分析系统688的一部分。
化身自动缩放器692、意图映射系统694和刺激响应系统696以及解剖调整系统698可以被配置为基于上下文信息来确定化身的特征。化身的一些示例特征可以包括大小、外观、位置、取向、运动、姿势、表情等。化身自动缩放器692可以被配置为自动缩放化身,使得用户不必以不舒服的姿势看化身。例如,化身自动缩放器692可以增加或减小化身的大小以将化身放到用户的视线高度,使得用户不需要分别向下看化身或向上看化身。意图映射系统694可以确定用户交互的意图,并基于渲染化身所在的环境将意图映射到化身(而不是确切的用户交互)。例如,第一用户的意图可以是在远程呈现会话中与第二用户通信(例如,参见图9B)。通常,两个人在交流时会面对面。第一用户的可穿戴系统的意图映射系统694可以确定在远程呈现会话期间存在此类面对面的意图,并且可以使第一用户的可穿戴系统将第二用户的化身渲染为面对第一用户。如果第二用户要在物理上转身,而不是将第二用户的化身渲染到转身的位置(这将导致第二用户的化身的背面被渲染给第一用户),则第一用户的意图映射系统694可以继续将第二化身的面部渲染给第一用户,这是远程呈现会话的推断意图(例如,在该示例中的面对面意图)。
刺激响应系统696可以识别环境中的关注对象,并确定化身对关注对象的响应。例如,刺激响应系统696可以识别化身的环境中的声源,并自动转动化身以看着声源。刺激响应系统696还可以确定阈值终止条件。例如,刺激响应系统696可以在声源消失之后或者经过一段时间之后,使化身回到其原始姿势。
解剖调整系统698可以被配置为基于生物学特征来调整用户的姿势。例如,解剖调整系统698可以被配置为基于不舒适曲线来调整用户的头部与用户的躯干之间或用户的上半身与下半身之间的相对位置。
3D模型处理系统680可以被配置为对显示器220制作动画并使其渲染虚拟化身670。3D模型处理系统680可以包括虚拟角色处理系统682和移动处理系统684。虚拟角色处理系统682可以被配置为生成和更新用户的3D模型(用于创建虚拟化身并对其制作动画)。移动处理系统684可以被配置为对化身制作动画,诸如例如通过改变化身的姿势,通过在用户的环境中四处移动化身或对化身的面部表情制作动画等。如将在此进一步描述的,可以使用装配技术对虚拟化身制作动画。在一些实施例中,化身以两个部分表示:用于渲染虚拟化身的外部外观的表面表示(例如,可变形的网格)和用于对网格制作动画的互连关节(例如,核心骨架)的分层集合。在一些实现方式中,虚拟角色处理系统682可以被配置为编辑或生成表面表示,而移动处理系统684可以用于通过移动化身,使网格变形等来对化身制作动画。
映射用户环境的示例
图7是MR环境700的示例的框图。MR环境700可以被配置为从一个或多个用户可穿戴系统(例如,可穿戴系统200或显示系统220)或固定房间系统(例如,房间相机等)接收输入(例如,来自用户的可穿戴系统的视觉输入702,诸如室内相机的固定输入704,来自各种传感器的感官输入706,手势,图腾,眼睛跟踪,来自用户输入装置466的用户输入等)。可穿戴系统可以使用各种传感器(例如,加速度计、陀螺仪、温度传感器、运动传感器、深度传感器、GPS传感器、面向内成像系统、面向外成像系统等)来确定用户环境的位置和各种其他属性。该信息可以进一步补充有来自房间中固定相机的信息,该固定相机可以从不同的视角提供图像或各种提示。由相机(诸如房间相机和/或面向外成像系统的相机)获取的图像数据可以减少到一组映射点。
一个或多个对象识别器708可以爬行通过所接收的数据(例如,点的集合)并且识别或映射点、标签图像,借助于地图数据库710将语义信息附加到对象。地图数据库710可以包括随时间推移收集的各种点及其对应的对象。各种装置和地图数据库可以通过网络(例如,LAN、WAN等)彼此连接以访问云。
基于该信息和地图数据库中的点的集合,对象识别器708a至708n可以识别环境中的对象。例如,对象识别器可以识别面部、人物、窗户、墙壁、用户输入装置、电视、文档(例如,本安全示例中在此所述的旅行机票、驾照、护照)、用户环境中的其他对象等。一个或多个对象识别器可以专门用于具有某些特征的对象。例如,对象识别器708a可用于识别面部,而另一对象识别器可用于识别文档。
可以使用多种计算机视觉技术来执行对象识别。例如,可穿戴系统可以分析由面向外成像系统464(图4中所示)获取的图像以执行场景重构、事件检测、视频跟踪、对象识别(例如人或文档)、对象姿势估计、面部识别(例如,来自环境中的人或文档上的图像)、学习、索引、运动估计或图像分析(例如,在文档中识别标记,诸如照片、签名、标识信息、旅行信息等)等。可以使用一种或多种计算机视觉算法来执行这些任务。计算机视觉算法的非限制性示例包括:尺度不变特征变换(SIFT)、加速鲁棒特征(SURF)、定向FAST和旋转的BRIEF(ORB)、二进制鲁棒不变可扩展关键点(BRISK)、快速视网膜关键点(FREAK)、Viola-Jones算法、Eigenfaces方法、Lucas-Kanade算法、Horn-Schunk算法、均值漂移算法、视觉同时定位和映射(vSLAM)技术、顺序贝叶斯估计器(例如,卡尔曼过滤器、扩展卡尔曼过滤器等)、束调节、自适应阈值(和其他阈值技术)、迭代最近点(ICP)、半全局匹配(SGM)、半全局块匹配(SGBM)、特征点直方图、各种机器学习算法(诸如例如支持矢量机、k最近邻算法、朴素贝叶斯、神经网络(包括卷积或深度神经网络)或其他监督/无监督模型等)等。
对象识别可以另外地或可替代地通过各种机器学习算法来执行。训练后,机器学习算法可以由HMD存储。机器学习算法的一些示例可以包括有监督或无监督的机器学习算法,包括回归算法(诸如例如普通最小二乘回归)、基于实例的算法(诸如例如学习矢量量化)、决策树算法(诸如例如分类和回归树)、贝叶斯算法(诸如例如朴素贝叶斯)、聚类算法(诸如例如k均值聚类)、关联规则学习算法(诸如例如先验算法)、人工神经网络算法(诸如例如Perceptron)、深度学习算法(诸如例如Deep Boltzmann Machine或深度神经网络)、降维算法(诸如例如,主要成分分析)、整体算法(例如,Stacked Generalization)和/或其他机器学习算法。在一些实施例中,可以为各个数据集定制单独的模型。例如,可穿戴装置可以生成或存储基本模型。基本模型可以用作生成特定于数据类型(例如,远程呈现会话中的特定用户)、数据集(例如,用户在远程呈现会话中获得的一组附加图像的集合)、有条件的情况或其他变化的附加模型的起点。在一些实施例中,可穿戴HMD可以被配置为利用多种技术来生成用于分析聚合数据的模型。其他技术可以包括使用预定义的阈值或数据值。
基于该信息和地图数据库中的点的集合,对象识别器708a至708n可以识别对象并向对象补充语义信息以赋予对象生命。例如,如果对象识别器将一组点识别为门,则系统可以附加一些语义信息(例如,门具有铰链并且围绕铰链具有90度的运动)。如果对象识别器将一组点识别为镜子,则系统可以附加该镜子具有可以反射房间中对象图像的反射表面的语义信息。语义信息可以包括在此所述的对象的功能可见性。例如,语义信息可以包括对象的法线。系统可以分配矢量,其方向指示对象的法线。随着时间推移,地图数据库会随着系统(其可驻留在本地或可通过无线网络访问)从世界收集更多数据而增长。一旦对象被识别,信息就可以被传输到一个或多个可穿戴系统。例如,MR环境700可以包括关于在加利福尼亚州发生的场景的信息。环境700可被传输给纽约的一个或多个用户。基于从FOV相机和其他输入接收的数据,对象识别器和其他软件组件可以映射从各种图像收集的点,识别对象等,使得可以将场景准确地“传递”给第二用户,该第二用户可能在世界的不同部分。环境700也可以将拓扑图用于定位目的。
图8是关于所识别的对象渲染虚拟内容的方法800的示例的过程流程图。方法800描述了可以如何向可穿戴系统的用户呈现虚拟场景。用户可以在地理位置上远离场景。例如,用户可能在纽约,但可能想要观看当前在加利福尼亚州发生的场景,或者可能想与居住在加利福尼亚州的朋友一起散步。
在框810处,可穿戴系统可以从用户和其他用户接收关于用户的环境的输入。这可以通过各种输入装置以及地图数据库中已经拥有的知识来实现。在框810处,用户的FOV相机、传感器、GPS、眼睛跟踪等将信息传达到系统。在框820处,系统可以基于该信息来确定稀疏点。稀疏点可以用于确定姿势数据(例如,头部姿势、眼睛姿势、身体姿势或手势),该姿势数据可以用于显示和理解用户周围环境中的各种对象的取向和位置。在框830处,对象识别器708a-708n可爬行通过这些收集的点并使用地图数据库识别一个或多个对象。然后,在框840处,该信息可以被传达到用户的单独的可穿戴系统,并且在框850处,所需的虚拟场景可以因此被显示给用户。例如,所需的虚拟场景(例如,加利福尼亚州的用户)可以相对于纽约的用户的各种对象和其他周围环境以适当的取向、位置等显示。
多个可穿戴系统之间的示例通信
图9示意性地示出描绘彼此交互的多个用户装置的整体系统视图。计算环境900包括用户装置930a、930b、930c。用户装置930a、930b和930c可以通过网络990彼此通信。用户装置930a-930c可以各自包括网络接口,以经由网络990与远程计算系统920(也可以包括网络接口971)通信。网络990可以是LAN、WAN、对等网络、无线电、蓝牙或任何其他网络。计算环境900也可以包括一个或多个远程计算系统920。远程计算系统920可以包括集群的并且位于不同地理位置的服务器计算机系统。用户装置930a、930b和930c可以经由网络990与远程计算系统920通信。
远程计算系统920可以包括远程数据仓库980,该远程数据仓库980可以维持关于特定用户的物理和/或虚拟世界的信息。数据存储器980可以存储与用户、用户的环境(例如,用户环境的世界地图)或用户的化身的配置有关的信息。远程数据储存库可以是图2中所示的远程数据储存库280的实施例。远程计算系统920还可以包括远程处理模块970。远程处理模块970可以是图2中所示的远程处理模块270的实施例。远程处理模块970可以包括一个或多个处理器,该处理器可以与用户装置(930a、930b、930c)和远程数据仓库980通信。处理器可以处理从用户装置和其他来源获得的信息。在一些实现方式中,处理或存储的至少一部分可以由本地处理和数据模块260(如图2中所示)提供。远程计算系统920可以使给定用户能够与另一用户共享关于特定用户自己的物理和/或虚拟世界的信息。
用户装置可以是单独或组合的可穿戴装置(诸如HMD或ARD)、计算机、移动装置或任何其他装置。例如,用户装置930b和930c可以是可以被配置为呈现AR/VR/MR内容的图2中所示的可穿戴系统200(或图4中所示的可穿戴系统400)的实施例。
一个或多个用户装置可以与图4中所示的用户输入装置466一起使用。用户装置可以获得关于用户和用户的环境的信息(例如,使用图4中所示的面向外成像系统464)。用户装置和/或远程计算系统1220可以使用从用户装置获得的信息来构造、更新和构建图像、点和其他信息的集合。例如,用户装置可以处理获取的原始信息,并将处理的信息发送到远程计算系统1220以进行进一步处理。用户装置还可以将原始信息发送到远程计算系统1220以进行处理。用户装置可以从远程计算系统1220接收处理的信息,并在投射到用户之前提供最终处理。用户装置还可以处理获得的信息,并将处理的信息传递给其他用户装置。用户装置可以在处理获取的信息的同时与远程数据储存库1280通信。多个用户装置和/或多个服务器计算机系统可以参与所获取图像的构造和/或处理。
关于物理世界的信息可以随时间推移发展,并且可以基于由不同用户装置收集的信息。虚拟世界的模型也可随时间推移而发展,并基于不同用户的输入。此类信息和模型有时在此可以被称为世界地图或世界模型。如参考图6和图7所述,由用户装置获取的信息可以用于构造世界地图910。世界地图910可以包括图6A中描述的地图620的至少一部分。各种对象识别器(例如708a,708b,708c…708n)可用于识别对象和标记图像,以及将语义信息附加到对象。这些对象识别器也在图7中描述。
远程数据储存库980可以用于存储数据并且促进世界地图910的构造。用户装置可以不断更新关于用户环境的信息并接收关于世界地图910的信息。世界地图910可以由用户或其他人创建。如在此所讨论的,用户装置(例如930a、930b、930c)和远程计算系统920可以单独或组合地构造和/或更新世界地图910。例如,用户装置可以与远程处理模块970和远程数据仓库980通信。用户装置可以获取和/或处理关于用户和用户环境的信息。远程处理模块970可以与远程数据储存库980和用户装置(例如,930a、930b、930c)通信,以处理关于用户和用户的环境的信息。远程计算系统920可以修改由用户装置(例如,930a、930b、930c)获取的信息,诸如例如,选择性地裁剪用户的图像,修改用户的背景,将虚拟对象添加到用户的环境,采用辅助信息注释用户的语音等。远程计算系统920可以将处理的信息发送到相同和/或不同的用户装置。
3D模型共享的示例过程
图10示出使用本文描述的系统和方法来共享3D资产的示例过程1000。在步骤1001处,3D共享主机应用可以从主机系统访问3D模型文件。主机可以通过在主机系统上创建新的3D资产或者从外部系统获得3D资产来这样做。3D资产可以源自3D建模应用,诸如AutoCad或3D Studio Max,并且可以具有任何文件类型。主机可以利用资产导入插件(例如,ASSIMP)来实现图形格式交换。ASSIMP插件可以支持多达40个不同的文件格式,例如,.fbx格式的Filmbox(FBX)或.3ds格式的Autodesk Max3D建模(3DS)。在一些实施例中,可以写入定制程序以实现文件格式交换。可以使用任何其他合适的文件格式转换方法来实现在主机3D共享应用内使用的文件重新格式化。
在步骤1003处,3D共享主机应用可以将3D资产分解成组成部分。组成部分的示例可以是几何数据、材料数据、顶点表、一个或多个纹理、三角形索引或用于最终定义3D模型的完整表示的任何其他数据。
在步骤1005处,组成部分可以被发送到作为具有主机的网络的一部分的客户端。在一些实施例中,可以仅存在一个客户端。在一些实施例中,可以存在两个或更多个客户端。在优选实施例中,可以利用UDP协议来利用局域网。网络可以是LAN、WAN、对等网络、无线电、蓝牙、自组(ad hoc)或任何其他网络。在一些实施例中,网络可以是如上所述的网络990。主机可以是远程计算系统,其可以包括被聚集(cluster)并且位于不同地理位置处的服务器计算机系统,如以上在920的上下文中所描述的。客户端可以是如上所述的用户装置930a、930b和/或930c。在一些实施例中,可以存在一个主机。在一些实施例中,可以存在两个或更多个主机。在一些实施例中,连接到网络的每个装置可以是主机和客户端两者,从而实现共享和接收来自网络上的其他装置的3D资产。
在步骤1007处,客户端可以接收组成部分。
在步骤1009处,客户端可以根据从主机接收的组成部分来重组3D资产。在一些实施例中,3D资产可以被存储在客户端装置的存储器中。在一些实施例中,可以保存3D资产以供装置稍后使用。
在步骤1011处,客户端可以显示重组的3D资产。在一些实施例中,客户端可以不显示重组的3D资产、或者可以在稍后的时间例如在用户请求时显示资产。在一些实施例中,客户端可以显示重组的3D资产,但是用户可能不能够看到重组的3D资产,因为它在用户的FOV之外。
示例3D模型共享系统配置
图11示出用于使用本文描述的系统和方法来共享3D资产的示例3D模型共享系统配置1100。图11描绘了系统配置1100,其包括一个客户端(其可以被称为“远程”)系统1116和一个服务器(其可以被称为“主机”)系统1118。客户端系统和主机系统不需要是物理上分开的系统;例如,在一些实施例中,客户端和服务器可以存在于同一物理装置上(例如,作为由同一计算机系统的一个或多个处理器同时执行的客户端和服务器线程)。在实践中,3D共享系统1100通常可以要求能够充当分解的3D资产的源的至少一个主机系统1118。主机系统1118可以具有对3D共享应用内可用的3D模型的类型和数量的权威控制。3D共享系统1100可以具有通过通信网络1114被可操作地连接到主机系统1118的任何数量(例如,零个、一个、十个等)的客户端系统1116的。通信网络1114可以是例如利用用户数据报协议(UDP)的LAN。主机系统1118可包括被可操作地耦接到至少一个显示器并且能够从其他计算系统接收通信的一个或多个处理器。在一些实施例中,主机系统1118可以是附接到具有网络接口的计算机监视器的PC台式计算机。在一些实施例中,主机系统1118可以是如上所述的系统200、930a、930b或930c。用户装置200、930a、930b和930c可以通过通信网络1114与彼此和其他计算系统通信。用户装置930a-930c可以各自包括经由网络1114与远程计算系统(诸如920(其还可以包括网络接口971))通信的网络接口。客户端系统1116可以包括被可操作地耦接到至少一个显示器并且能够从其他计算系统接收通信的一个或多个处理器。在一些实施例中,客户端系统1116可以是附接到具有网络接口的计算机监视器的PC台式计算机。在一些实施例中,客户端系统1118可以是如上所述的系统200、930a、930b或930c。用户装置200、930a、930b和930c可以通过通信网络1114与彼此和其他计算系统通信。用户装置930a-930c可以各自包括经由网络1114与远程计算系统(诸如920(其还可以包括网络接口971))通信的网络接口。
主机系统1118可以具有安装的3D共享主机应用。3D共享主机应用可以包括三个主要模块:资产模块1108、分解模块1110和传输模块1112。资产模块1108可以包括一个或多个完整的3D模型。分解模块1110可以用于将完整的3D模型分成组成部分,可选地压缩组成部分,并且将组成部分放置到被准备发送到不同系统的一个或多个数组中。数组可以被存储在可以包含一个或多个分解的3D模型的一个或多个库中。传输模块1112可以用于将来自分解模块1110的组成部分分成可转移的数据片段,并且可以管理传输协议和过程。传输模块1112可以将可转移的数据片段发送到被连接在通信网络1114上的其他系统。
客户端或远程系统1116可以具有安装的3D共享客户端应用。3D共享客户端应用可以包括三个主要模块:传输模块1106、重组模块1104、资产模块1102。传输模块1106可用于接收一个或多个分解的3D模型,并且可以管理客户端系统1116的传输和联网过程。传输模块1106可以通过消息传递协议与3D模型共享主机应用通信。这些协议可以是定制构建的协议、或者可以利用通常使用的协议。重组模块1104可用于将来自网络上的其他系统的接收到的分解的3D模型重新组装。资产模块1102可以包括一个或多个完整的3D模型。
用于3D模型共享的示例过程
图12示出使用本文描述的系统和方法的在服务器与客户端之间的示例3D模型共享过程1200。当诸如服务器系统1118的服务器系统打开3D模型共享主机应用时,过程1200可以开始于步骤1202。
在步骤1204处,服务器可以将一个或多个完整的3D模型文件加载到3D模型共享主机应用中。例如,完整的3D模型文件可以起源于主机系统1118并源自被下载到主机系统1118上的不同的3D建模软件(例如AutoCad)。在一些实施例中,3D模型文件可以从外部源(诸如外部硬盘驱动、远程计算系统(例如,来自上面的图9的920))或从云存储导入。在一些实施例中,3D模型文件可以源自3D扫描仪或类似装置。可以使用ASSIMP或等效的插件来导入3D模型文件。插件可以将3D模型文件从一种格式转换为与3D模型共享主机应用兼容的不同文件格式。插件可仅由主机系统(例如,主机系统1118)利用,因为文件格式化可在分解过程期间在服务器处消失,如下文更详细描述的。
在步骤1206处,服务器系统可以将3D模型分解成其组成部分。分解3D模型可以包括识别3D模型内的组成部分。分解3D模型可以是非破坏性的,因为它不会导致对3D模型本身的改变(例如,3D模型中的信息丢失)、或者3D模型如何被渲染以用于观看的改变。分解3D模型可以包括将数据级改变应用于3D模型和/或其组成部分(例如,应用数据格式化改变、或压缩组成部分以促进共享)。分解过程可以发生在分解模块1110中,如上所述。组成部分可以是完整地定义3D模型所需的数据的子集。组成部分子集可以由包括3D模型的预先存在的数据束(诸如顶点表、几何数据、材料数据等)来定义。在一些实施例中,可以以其他方式(诸如通过3D模型共享应用编程器)来定义组成部分子集。
在步骤1214处,客户端系统可以打开3D模型共享客户端应用。这可以发起与联网协议、通信和发现相关的一系列步骤。
在步骤1216处,如果主机存在,则3D模型共享客户端应用程序可以经由网络而发现3D模型共享主机。网络可以是LAN(例如,UDP)。在一些实施例中,本地网络是私有的。在一些实施例中,不使用云服务。
在步骤1208处,服务器可以从客户端接收连接请求,并且服务器可以接受连接请求。
在步骤1210处,服务器可以将客户端信息请求发送回客户端。客户端信息请求可以包含3D模型共享主机应用的库中的一切的列表。客户端信息请求可替代地被称为资产清单或内容表。
在步骤1218处,当与3D模型共享服务器应用库相比较时,客户端可以用数据应答(reply back)服务器,该数据指明了哪些项目从3D模型共享客户端应用库中缺失。
在步骤1212处,服务器可以通过向客户端发送从3D模型共享客户端应用中缺失的项目来进行响应。在一些实施例中,客户端可能最近打开了3D模型共享应用,并且因此可以以其库中的零项开始。在这种情况下,主机可以将其整个库发送到客户端。在一些实施例中,库可以被放置在存储器中,并且因此可以在3D模型共享应用关闭时被擦除。在一些实施例中,库可以被保存到盘,诸如客户端系统硬盘驱动,因此可以在以后的日期访问3D模型。在一些实施例中,被发送到客户端的3D模型数据是没有文件格式的数据结构。在该步骤结束时,3D模型共享主机库可以与3D模型共享客户端库相匹配。换句话说,主机系统和客户端系统现在可以包含用于相同组的3D模型的相同组成部分。
在一些实施例中,当与被存储在服务器中的项目相比较时,客户端可以更新过时的项目。例如,客户端信息请求可以包括与资产清单中的各个资产相关联的版本号。服务器的资产清单中的一个或多个资产可以对应于客户端存储的资产。客户端可以识别被存储在客户端资产库中的项目,该项目具有比服务器的资产清单中的对应项目低的版本号。客户端可以向服务器发送数据,识别需要更新的项目,并且服务器可以通过向客户端发送对应的更新的项目来进行响应。
在步骤1220处,客户端可以根据从服务器发送的新项目来重组一个或多个3D模型。在一些实施例中,客户端现在可以具有与服务器相同的完整的3D模型。
在步骤1222处,客户端系统的用户现在可以查看由主机系统共享的3D模型。
示例3D模型共享系统配置
图13示出用于使用本文描述的系统和方法来共享3D资产的示例3D模型共享系统配置1300。
3D模型共享系统配置1300可以包括由通信链路1302(诸如网络)可操作地耦合的主机系统1306和客户端系统1304。客户端系统1304可以具有打开并运行的3D模型共享客户端应用,并因此在运行环境中操作。主机系统1306可以具有打开并运行的3D模型共享主机应用,并因此在运行环境中操作。尽管图13描绘了一个服务器系统和一个主机系统,但这并不意味着限制范围,并且这是为了便于说明而做的。在实践中,3D模型共享系统配置1300可仅具有一个主机系统1306、多于一个主机系统1306、一个客户端系统1304、多于一个客户端系统1304、和/或一个或多个用作主机(例如,经由通信1302将3D模型数据发送到其他系统)和客户端(例如,经由通信1302从其他系统接收3D模型数据)两者的系统。此外,在一些实施例中,单个系统可以包括主机系统和客户端系统两者。在一些实施例中,主机系统1306可以是主机系统1118。在一些实施例中,客户端系统1304可以是客户端系统1116。主机系统1306可以包括被可操作地耦接到至少一个显示器的一个或多个处理器,例如附接到计算机监视器的PC台式计算机。在一些实施例中,主机系统1306可以是如上所述的系统200、930a、930b或930c。客户端系统1304可包括被可操作地耦接到至少一个显示器的一个或多个处理器,例如附接到计算机监视器的PC台式计算机。在一些实施例中,客户端系统1304可以是如上所述的系统200、930a、930b或930c。
主机系统1306可以包括服务器模块1316。服务器模块1316可以管理特定于服务器的功能和过程,诸如传输和联网协议。服务器模块1316可以接收并处理连接请求,如过程1200中的步骤1208、1210和/或1212。在一些实施例中,服务器模块1316可以包括传输模块1112。
主机系统1306可包括主机加载模块1320。加载模块可包含使3D模型共享主机应用能够将3D资产导入或加载到3D模型共享主机应用中或者导入或加载到主机系统1306上的功能和过程。加载模块1320可包括ASSIMP插件。在一些实施例中,过程1200中的步骤1204可在加载模块1320内发生。在一些实施例中,过程1000中的步骤1001可在加载模块1320内发生。在一些实施例中,资产模块1108可包括加载模块1320。
主机系统1306可以包括主机库管理器模块1318。库管理器模块1318可以包含并管理与已经被加载到3D资产共享主机应用中的3D资产对应的数据和过程。库管理器模块1318可以包含并管理与3D资产共享主机应用的库对应的数据和过程。这可以包括分解过程、维持内容的库表等。在一些实施例中,过程1200中的步骤1206可以在库管理器模块1318中发生。在一些实施例中,过程1000中的步骤1003可以在库管理器模块1318中发生。在一些实施例中,库管理器模块1318可以包括来自系统1100的分解模块1110。
主机系统1306可以包括主机世界模块1322。主机世界模块1322可以管理全部3D资产、3D虚拟世界、真实世界的网格化等以及这些之间的集成。在一些实施例中,主机世界模块1322可以被认为是场景图、或者场景图的功能等同物。在一些实施例中,世界可以从来自世界库(即,完整地重组的3D模型)的项目而得到并且从它们中创建世界对象。在一些实施例中,3D虚拟世界中的一切都可以被表示为世界对象。世界对象可以是世界“类”中的一部分。在一些实施例中,通过过程1200中的步骤1222或通过过程1000中的步骤1011(即,在3D模型已被共享并且在客户端处被本地地重组之后),主机世界模块1322包含与客户端世界模块1312相同的数据。来自主机世界模块1322的输出可以馈送到渲染器路径模块1324中。
主机系统1306可以包括主机渲染器路径模块1324。渲染器路径模块1324可以接受来自主机世界模块1322的输入数据,将其放置通过主机系统1306渲染器管线(pipeline),并且可以在主机系统1306的显示器上显示一个或多个3D模型。
客户端系统1304可以包括客户端模块1308。客户端模块1304可以管理特定于作为客户端的功能和过程,诸如传输和联网和/或服务器/客户端协议。客户端模块1308可以管理服务器发现过程和其他连接协议。在一些实施例中,这可以包括过程1200中的步骤1216和/或1218。在一些实施例中,客户端模块1308可以包括传输模块1106。
客户端系统1304可以包括客户端库管理器模块1310。库管理器模块1310可以包含并管理与已经从3D资产共享主机应用接收到的3D资产组成部分对应的数据和过程。库管理器模块1310可以包含并管理与3D资产共享客户端应用的库对应的数据和过程。这可以包括重组过程。在一些实施例中,过程1200中的步骤1220可以在库管理器模块1310中发生。在一些实施例中,库管理器模块1310可以包括来自系统1100的重组模块1104。在一些实施例中,通过过程1200中的步骤1222或通过过程1000中的步骤1011(即,在3D模型已被共享并在客户端处被本地地重组之后),客户端库包含与主机库相同的数据。
客户端系统1304可以包括客户端世界模块1312。客户端世界模块1312可以管理被完整地重组的3D资产、3D虚拟世界、真实世界的网格化等以及这些之间的集成。在一些实施例中,客户端世界模块1312可以被认为是场景图、或者场景图的功能等同物。在一些实施例中,世界从来自世界库(即,完整地重组的3D模型)的项目而得到并且从它们中创建世界对象。在一些实施例中,3D虚拟世界中的一切都被表示为世界对象。世界对象可以是世界“类”中的一部分。在一些实施例中,通过过程1200中的步骤1222或过程1000中的步骤1011(即,在3D模型已被共享并且在客户端处被本地地重组之后),客户端世界模块1312可包含与主机世界模块1322相同的数据。来自客户端世界模块1312的输出可以馈送到渲染器路径模块1314中。
客户端系统1304可以包括客户端渲染器路径模块1312。渲染器路径模块1314可以接受来自客户端世界模块1312的输入数据、将其放置通过客户端系统1304渲染器管线、并且可以在客户端系统1304的显示器上显示一个或多个虚拟3D模型。
示例3D模型共享系统配置1300可以使得两个或更多个装置能够在运行时间期间共享完整的3D模型。这可以具有比传统系统更快地将新资产添加到计算系统上的应用的优点,其中更新可能需要等待直到应用关闭。
用于分解3D模型的示例过程
图14示出使用本文描述的系统和方法来分解完整的3D模型的示例过程1400。在一些实施例中,分解过程1400可以在主机库管理器模块1318中发生。在一些实施例中,分解过程1400可以在分解模块1110中发生。在一些实施例中,分解过程1400可以是过程1000中的步骤1003。在一些实施例中,分解过程1400可以是过程1200中的步骤1206。
过程1400可以以能够在3D模型共享主机应用内加载的完整的3D模型开始。在步骤1402处,3D模型共享主机应用可以复制3D模型的一个组成部分,并且将表示组成部分的数据放置到数组中。一些示例组成部分可以是一个或多个顶点位置、顶点表、几何数据、材料数据、纹理、三角形索引表等。组成部分可以是表示完整的3D模型所需的数据的一部分。
在步骤1404处,可以可选地压缩组成部分。可以使用标准压缩技术。
在步骤1406处,可以打包(packaged)组成部分。
在步骤1408处,可将包(package)存储在3D模型共享主机应用的库中的一者中。3D模型共享主机应用可以具有用于存储和组织包的一个或多个库。在一些实施例中,库可以包括三个库—网格库、材料库和纹理库,如图16中所示。可以使用备选的库配置。包可以被存储在对应库中(例如,纹理可以被存储在纹理库中)。
在步骤1410处,该过程可以检查3D模型以查看是否存在需要被添加到库的附加组成部分。如果存在未被添加到库的更多组成部分,则该过程可以在步骤1402再次开始,直到所有组成部分都被添加到库。当已添加所有组成部分时,库可包含完整的3D模型的完整记录,如在步骤1412中。
在一些实施例中,可以将3D模型分解成由3D模型应用预先定义的组成部分。例如,3D模型应用(例如,计算机辅助设计程序)可以根据不同的数据元素(例如,网格和网格渲染器)来定义3D模型,每个数据元素可以包括一个或多个定义的组成部分(例如,三角形数组或纹理)。在该情况下分解3D模型可以构成对每个组成部分应用操作(例如,数据格式化)并将其存储在存储器中。在一些实施例中,本文描述的方法和系统可以用于将3D模型分解成由用户定义的一个或多个子组。例如,对于汽车的3D模型,用户可以指定作为“引擎”的顶点/部分/结构的集合、作为“底盘”的顶点/部分/结构的集合、作为“驱动系统(drivetrain)”的顶点/部分/结构的集合、以及作为“车轮”的顶点/部分/结构的集合。然后可以可选地压缩每个子组并将其单独地发送到装置。在一些实施例中,可以将3D模型分解成被算法上定义的子组。例如,算法可以被开发(例如,通过机器学习手动、半自动和/或自动地)以识别作为“引擎”的顶点/部分/结构的集合。在尝试基于初始识别来对来自有限池的顶点/部分/结构的集合进行分类之前,算法可以首先识别整个3D模型(例如,首先将模型识别为汽车)。算法还可以直接尝试对顶点/部分/结构的集合进行分类。
完整的3D模型的示例
图15示出使用本文描述的系统和方法的示例的完整的3D模型1500。在一些实施例中,完整的3D模型可以是描述3D可渲染数字对象的完整数据组。在一些实施例中,完整的3D模型可以是表示当被添加到兼容的渲染器管线时能够显示的数字或虚拟对象的一组数据。
在3D模型组件1502处,3D模型可以被分配名称。名称可以由用户、导入过程分配和/或可以是在3D模型创建软件中使用的原始文件名称,诸如在AutoCad中给定到3D模型的文件名称。3D模型可具有两种主要类型的数据:网格数据1504和网格渲染器数据1506。网格数据可进一步被分成数据的子集、或组成部分,诸如组成部分A 1508、组成部分B 1510、组成部分1512和组成部分1514。材料数据1516可以进一步被分成数据的子集、或者组成部分,诸如材料属性1522、纹理1 1518和纹理2 1522。3D模型数据的准确布局、分类和子分组可以与图15中所示的不同。在一些实施例中,可以存在在网格1504下的任何数量的组成部分,诸如两个、三个或十个组成部分。在一些实施例中,可以存在在材料数据1516下的属性1522的多个子集,而不是仅一个。在一些实施例中,可以存在比图15中所示的更多或更少的纹理组成部分1518、1520。可以使用任何合适的数量和分类来将完整的3D模型分成组成部分。
在一些实施例中,可以使用示例性分解过程1400来分解示例性完整的3D模型1500。完整的3D模型1500可以包括一个或多个组成部分(例如,组成部分A 1508、组成部分B1510、组成部分C 1512、组成部分D1514、纹理1 1518、纹理2 1520和/或材料属性1522)。完整的3D模型1500的一个组成部分(例如,纹理1)可在分解过程1400的步骤1402处被复制。组成部分可以可选地在分解过程1400的步骤1404处被压缩。组成部分可在分解过程1400的步骤1406处被打包。组成部分可在分解过程1400的步骤1408处被存储(例如,存储在示例的库组1600中)。可以针对完整的3D模型1500中的每个组成部分重复步骤1402、1404、1406和1408,直到已经存储了完整的3D模型1500的所有组成部分(例如,存储在库组1600中)。
3D模型共享应用中的库的示例
图16示出使用本文描述的系统和方法的在3D模型共享应用中使用的用于存储3D模型的组成部分示例的库组1600。库组1600可以包括一个或多个库,以便存储和组织3D模型组成部分。在一些实施例中,可以存在三个库:网格库1602、材料库1604和纹理库1602。网格库1602可以包含描述3D模型网格的以数组的形式的一组组成部分。可以被存储在网格库中的示例数组是顶点缓冲器数组1608、普通缓冲器数组1610、UV缓冲器数组1612、和/或三角形数组1614。网格库还可以可选地包含一个或多个字符串值,诸如材料“名称”1616、位图纹理1“名称”1618、以及位图纹理2“名称”1620。这些字符串值1616、1618、1620可以引用其他库,诸如材料库1604和纹理库1604。在一些实施例中,当从网格库1602拉出或引用所有数据时,可以表示完整的3D模型。在一些实施例中,可以在从与记录、或者单个3D模型、“名称”对应的所有库1602、1604、1606中拉出或引用所有数据时表示关于“名称”的完整的3D模型。
材料库1604可以包含表示用于3D模型的材料的属性和属性相关联的值的数据。在一些实施例中,纹理库1606可以包含一个或多个纹理1622、1624。在一些实施例中,纹理库1606可以包含一个或多个位图。在一些实施例中,纹理库1606可以包含一个或多个UV地图、UV坐标或其他UV空间数据。
被包含在3D共享应用的库1600中的所有数据可被组合以表示完整的可渲染的3D模型。
用于重组3D模型的示例过程
图17示出用于使用本文描述的系统和方法从完整的3D模型的组成部分重组完整的3D模型的示例过程1700。在一些实施例中,过程可以是过程1200中的步骤1220。在一些实施例中,过程1700可以是过程1000中的步骤1009。在一些实施例中,过程1700可以在重组模块1104中发生。在一些实施例中,过程1700可以在库管理器模块1310中发生。
过程1700可以在步骤1702处通过创建空对象(有时被称为空游戏对象)开始。在一些实施例中,空游戏对象可以包括在具有参考坐标系的空间中的空体积。在一些实施例中,空对象本质上是存在于空间中的变换—位置和取向。在一些实施例中,空对象是空棱镜。在一些实施例中,空对象可以对应于图15中的1502。
在1702创建空对象之后,可以将新网格1704和新网格渲染器1708添加到空游戏对象。在一些实施例中,添加新网格1704可以对应于图15中的网格1504,以及添加新网格渲染器1708可以对应于图15中的网格渲染器1506。
过程1700可以进行到步骤1706和1710,其中空网格缓冲器可以填充有与网格数据对应的3D模型组成部分,并且空网格渲染器缓冲器可以填充有与网格渲染器数据对应的3D模型组成部分。在一些实施例中,步骤1706和/或1710可以对压缩数据进行解压缩。在一些实施例中,网格数据可以对应于来自图15的组成部分1508、1510、1512、1514。在一些实施例中,网格渲染器数据可以对应于组成部分1518、1520、1522。缓冲器可以被来自3D模型应用的库中的与单个3D模型对应的数据填充。在一些实施例中,空网格缓冲器可以被来自网格库1602的数据填充1706。在一些实施例中,空网格渲染缓冲器可以被来自材料库1604和纹理库1602的数据填充1710。当与单个3D模型对应的所有数据(即,3D模型共享应用的库内的单个记录)已经被添加到空对象时,过程1700可以完成。
图18示出使用本文描述的系统和方法的示例的完整的3D模型1800。在一些实施例中,完整的3D模型1800可以是过程1700的输出。在一些实施例中,完整的3D模型1800可以是示例的完整的3D模型1500的更详细的版本,其中通用组成分量A可以是顶点缓冲器1808,通用组成分量B可以是普通缓冲器1810,通用组成分量C可以是UV缓冲器1812,以及通用组成分量D可以是三角形索引1814。在一些实施例中,可能需要最后填充三角形索引1814。
在一些实施例中,完整的3D模型1800可以是处理1400的输入,其中从其复制组成部分。在一些实施例中,完整的3D模型1800可作为世界对象被存储在世界模块1322和/或1312中。在一些实施例中,完整的3D模型1800可以是在过程1200中的步骤1204和/或过程1000中的步骤1001处被加载到3D模型共享服务器应用中的3D模型。在一些实施例中,完整的3D模型1800可以是来自过程1200中的步骤1220和/或过程1000中的步骤1009的输出。在一些实施例中,完整的3D模型1800可以是被存储在资产模块1102和/或1108中的资产。对象“名称”1802可以与被加载到3D模型共享应用中的原始文件名称匹配,例如,汽车.fbx,即使3D模型不再处于FBX文件格式。
3D模型共享的其他示例
在一些实施例中,3D模型可以源自MR装置(例如,可穿戴系统200)。MR装置可以捕获关于物理对象的信息、生成物理对象的3D模型、将3D模型分解为组成部分、将组成部分发送到客户端装置,以及客户端装置可以基于组成部分来生成3D模型。例如,对象识别器708可以从面向外的成像系统464、雷达传感器、深度传感器、RGB相机、红外相机、飞行时间相机和/或MR装置上的其他传感器接收输入。该输入可以用在计算机视觉算法和/或机器学习训练的算法中以基于物理对象生成3D模型。算法可以通过首先识别物理对象并且然后基于与物理对象相关联的3D模型的库生成3D模型,来生成3D模型。在一些实施例中,可以通过基于3D模型的库中的预定义子组来组装子组,来从物理对象生成3D模型。在一些实施例中,可以将3D模型分解成由用户定义的子组。在一些实施例中,可以将3D模型分解成被算法上定义的子组。例如,算法可以已被开发(例如,通过机器学习手动、半自动和/或自动地)以识别作为子组的顶点/部分/结构的集合。
在一些实施例中,算法还可以直接从物理对象生成3D模型。例如,算法可以识别物理对象的表面和顶点并且基于观察到的物理对象的特性来生成整个物理对象的3D模型。在一些实施例中,算法可以识别物理对象的局部表面和顶点并且基于子组的库来生成局部部分的3D模型和/或定义物理对象的子组。算法可以存储关于子组的关联的数据以基于组成部分形成完整的3D模型。
本公开中描述的3D模型共享系统和方法可以提供特定的解决方案,以解决如何在运行时间期间将可渲染的3D模型从一个计算系统移动到不同计算系统的技术问题。这可以呈现优于现有技术的改进,现有技术仅离线地将新的可渲染3D模型添加到应用上。
虽然在此讨论了3D模型,但是还可以设想,本申请中描述的系统和方法可以应用于除3D模型之外的其他数字资产。例如,可以使用本文描述的系统和方法(例如,到轮廓和纹理)来分解、传递和重构2D模型。在一些实施例中,可以使用本文描述的系统和方法(例如,到一系列网格,其可以每一者被进一步分解,如本文所述)来分解、传递和重构动画。在一些实施例中,3D模型可以被平坦化成2D模型(例如,以在2D屏幕上显示或者创建2D地图)。
其他注意事项
在此描述和/或附图中描绘的过程、方法和算法中的每一个可以在由一个或多个物理计算系统、硬件计算机处理器、专用电路和/或配置为执行专用和特定计算机指令的电子硬件执行的代码模块中体现,并且完全或部分地由代码模块自动执行。例如,计算系统可以包括采用特定计算机指令或专用计算机、专用电路等编程的通用计算机(例如服务器)。代码模块可以被编译并链接到可执行程序中,安装在动态链接库中,或者可以用解释的编程语言编写。在一些实现方式中,特定操作和方法可以由特定于给定功能的电路执行。
此外,本公开的功能的某些实现方式在数学上、计算上或技术上足够复杂,以使得专用硬件或一个或多个物理计算装置(利用适当的专用可执行指令)可能有必要例如由于所涉及的计算的量或复杂性而执行功能或者基本上实时地提供结果。例如,动画或视频可以包括许多帧,每个帧具有数百万个像素,并且需要专门编程的计算机硬件来处理视频数据,以在商业上合理的时间量内提供期望的图像处理任务或应用。作为另一个示例,通过解决针对这些参数的约束优化问题来计算蒙皮系统的权重图、旋转和平移参数是高度计算密集的(例如,参见参考图14描述的示例过程1400)。
代码模块或任何类型的数据可以被存储在任何类型的非暂态计算机可读介质上,诸如包括硬盘驱动器、固态存储器、随机存取存储器(RAM)、只读存储器(ROM)、光盘、易失性或非易失性存储装置,与它们相同或类似物的组合等的物理计算机存储装置。方法和模块(或数据)还可以作为所生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在各种计算机可读传输介质(包括基于无线的和有线的/基于电缆的介质)上发送,并且可以采用多种形式(例如,作为单个或多路复用模拟信号的一部分,或者作为多个离散数字分组或帧)。所公开的过程或过程步骤的结果可以持久地或以其他方式存储在任何类型的非暂态有形计算机存储装置中,或者可以经由计算机可读传输介质传输。
在此描述和/或附图中描绘的流程图中的任何过程、框、状态、步骤或功能应当理解为可能表示代码模块、代码段或代码部分,其包括用于实施特定功能(例如,逻辑或算术)或过程中的步骤的一个或多个可执行指令。各种过程、块、状态、步骤或功能可以与在此提供的说明性示例组合、重新排列、添加、删除、修改或以其他方式改变。在一些实施例中,附加或不同的计算系统或代码模块可以执行在此描述的一些或全部功能。在此描述的方法和过程也不限于任何特定序列,并且与其相关的块、步骤或状态可以以适当的其他顺序执行,例如,以串行、并行或以一些其他方式。可以向所公开的示例实施例添加任务或事件或从中移除任务或事件。此外,在此描述的实现方式中的各种系统组件的分离是出于说明性目的,并且不应被理解为在所有实现方式中都需要这种分离。应当理解,所描述的程序部件、方法和系统通常可以一起集成在单个计算机产品中或打包成多个计算机产品。许多实现方式变化都是可能的。
过程、方法和系统可以在网络(或分布式)计算环境中实现。网络环境包括企业范围的计算机网络、内联网、局域网(LAN)、广域网(WAN)、个人局域网(PAN)、云计算网络、众包计算网络、互联网和万维网。网络可以是有线或无线网络或任何其他类型的通信网络。
本公开的系统和方法各自具有若干创新方面,其中没有一个单独地对在此公开的期望属性负责或要求。以上所述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都旨在落入本公开的范围内。对本领域技术人员来说,对本公开中描述的实现方式的各种修改是显而易见的,并且在不脱离本公开的精神或范围的情况下,在此定义的一般原理可以应用于其他实现方式。因此,权利要求不旨在限于在此所示的实现方式,而是与符合在此公开的本公开、原理和新颖特征的最宽范围相一致。
在单独实现方式的上下文中在本说明书中描述的某些特征也可以在单个实现方式中组合实施。相反,在单个实现方式的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实现方式中实现。此外,尽管特征可以在上面被描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合中排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以用于子组合或子组合的变体。对于每个和所有实施例,没有单个特征或特征组是必需或必不可少的。
除非另有说明,或者在所使用的上下文中以其他方式理解,否则在此使用的条件语言,诸如“能够”、“可以”、“可能”、“可”、“例如”等通常旨在传达某些实施例包括某些特征、元件和/或步骤,而其他实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示对于一个或多个实施例以任何方式需要特征、元素和/或步骤,或者一个或多个实施例必须包括用于决定是否在任何特定实施例中包括或将要执行这些特征、元件和/或步骤(无论是否有作者输入或提示)的逻辑。术语“包含”、“包括”、“具有”等是同义的并且以开放式方式包含使用,并且不排除附加元件、特征、动作、操作等。此外,术语“或”在其包含意义上(而不是在其独有意义上)使用,因此当使用时,例如,为了连接元素列表,术语“或”表示列表中的一个、一些或全部元素。另外,除非另有说明,否则本申请和所附权利要求中使用的冠词“一”、“一个”和“该”应理解为表示“一个或多个”或“至少一个”。
如在此所使用的,指代项目列表中的“至少一个”的短语是指那些项目的任何组合,包括单个成员。例如,“A、B或C中的至少一个”旨在涵盖:A、B、C、A和B、A和C、B和C,以及A、B和C。除非另外特别说明,否则诸如短语“X、Y和Z中的至少一个”的联合语言以其他方式通过上下文理解为通常用于传达项目、术语等可以是X、Y或Z中的至少一个。因此,这种联合语言通常不旨在暗示某些实施例需要X中的至少一个、Y中的至少一个和Z中的至少一个各自存在。
类似地,虽然可以以特定顺序在附图中描绘操作,但应认识到,不需要以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。此外,附图可以以流程图的形式示意性地描绘一个或多个示例过程。然而,未示出的其他操作可以包含在示意性示出的示例方法和过程中。例如,可以在任何所示操作之前、之后、同时或之间执行一个或多个附加操作。另外,可以在其他实现方式中重新排列或重新排序操作。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实现方式中的各种系统组件的分离不应被理解为在所有实现方式中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以在单个软件产品中集成在一起或者被打包到多种软件产品。另外,其他实现方式在以下权利要求的范围内。在一些情况下,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。
示例实施例
1.一种方法,包括:
经由头戴式装置的显示器显示虚拟三维模型的第一版本,其中,所述虚拟三维模型的所述第一版本包括组成部分的第一版本;
从主机装置请求与所述虚拟三维模型的第二版本相关联的数据,其中,所述虚拟三维模型的所述第二版本包括所述组成部分的第二版本;
确定所述组成部分的所述第一版本是否需要基于所述组成部分的所述第二版本的更新;
根据确定所述组成部分的所述第一版本需要基于所述组成部分的所述第二版本的更新:
从所述主机装置请求与所述组成部分的所述第二版本相关联的数据;
经由所述头戴式装置的所述显示器显示所述虚拟三维模型的所述第二版本;以及
根据确定所述组成部分的所述第一版本不需要基于所述组成部分的所述第二版本的更新:
放弃从所述主机装置请求与所述组成部分的所述第二版本相关联的数据。
2.根据实施例1所述的方法,其中,所述组成部分包括网格数据。
3.根据实施例1所述的方法,其中,所述组成部分包括纹理数据。
4.根据实施例1所述的方法,其中,所述主机装置是服务器。
5.根据实施例1所述的方法,其中,所述头戴式装置是第一头戴式装置,以及其中,所述主机装置是第二头戴式装置。
6.根据实施例1所述的方法,所述方法还包括将与所述组成部分的所述第二版本相关联的所述数据存储在存储器中。
7.根据实施例1所述的方法,所述方法还包括解压缩与所述组成部分的所述第二版本相关联的所述数据。
8.一种系统,包括:
包括显示器的头戴式装置;
一个或多个处理器,其被配置为执行方法,该方法包括:
经由所述显示器显示虚拟三维模型的第一版本,其中,所述虚拟三维模型的所述第一版本包括组成部分的第一版本;
从主机装置请求与所述虚拟三维模型的第二版本相关联的数据,其中,所述虚拟三维模型的所述第二版本包括所述组成部分的第二版本;
确定所述组成部分的所述第一版本是否需要基于所述组成部分的所述第二版本的更新;
根据确定所述组成部分的所述第一版本需要基于所述组成部分的所述第二版本的更新:
从所述主机装置请求与所述组成部分的所述第二版本相关联的数据;
经由所述显示器显示所述虚拟三维模型的所述第二版本;以及
根据确定所述组成部分的所述第一版本不需要基于所述组成部分的所述第二版本的更新:
放弃从所述主机装置请求与所述组成部分的所述第二版本相关联的数据。
9.根据实施例8所述的系统,其中,所述组成部分包括网格数据。
10.根据实施例8所述的系统,其中,所述组成部分包括纹理数据。
11.根据实施例8所述的系统,其中,所述主机装置是服务器。
12.根据实施例8所述的系统,其中,所述头戴式装置是第一头戴式装置,以及其中,所述主机装置是第二头戴式装置。
13.根据实施例8所述的系统,所述方法还包括将与所述组成部分的所述第二版本相关联的所述数据存储在存储器中。
14.根据实施例8所述的系统,所述方法还包括解压缩与所述组成部分的所述第二版本相关联的所述数据。
15.一种存储指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器执行方法,该方法包括:
经由头戴式装置的显示器显示虚拟三维模型的第一版本,其中,所述虚拟三维模型的所述第一版本包括组成部分的第一版本;
从主机装置请求与所述虚拟三维模型的第二版本相关联的数据,其中,所述虚拟三维模型的所述第二版本包括所述组成部分的第二版本;
确定所述组成部分的所述第一版本是否需要基于所述组成部分的所述第二版本的更新;
根据确定所述组成部分的所述第一版本需要基于所述组成部分的所述第二版本的更新:
从所述主机装置请求与所述组成部分的所述第二版本相关联的数据;
经由所述头戴式装置的所述显示器显示所述虚拟三维模型的所述第二版本;以及
根据确定所述组成部分的所述第一版本不需要基于所述组成部分的所述第二版本的更新:
放弃从所述主机装置请求与所述组成部分的所述第二版本相关联的数据。
16.根据实施例15所述的非暂时性计算机可读介质,其中,所述组成部分包括网格数据。
17.根据实施例15所述的非暂时性计算机可读介质,其中,所述组成部分包括纹理数据。
18.根据实施例15所述的非暂时性计算机可读介质,其中,所述主机装置是服务器。
19.根据实施例15所述的非暂时性计算机可读介质,其中,所述头戴式装置是第一头戴式装置,以及其中,所述主机装置是第二头戴式装置。
20.根据实施例15所述的非暂时性计算机可读介质,所述方法还包括将与所述组成部分的所述第二版本相关联的所述数据存储在存储器中。
21.根据实施例15所述的非暂时性计算机可读介质,所述方法还包括解压缩与所述组成部分的所述第二版本相关联的所述数据。
22.一种方法,所述方法包括:
访问被存储在存储器中的虚拟三维模型;
确定所述虚拟三维模型的一个或多个组成部分;
将所述一个或多个组成部分存储在一个或多个数组中,其中,所述一个或多个组成部分与所述虚拟三维模型分开存储;
从头戴式装置接收连接请求;
将可用组成部分的列表发送到所述头戴式装置;
从所述头戴式装置接收组成部分请求;以及
基于所述组成部分请求向所述头戴式装置发送所请求的组成部分。
23.根据实施例22所述的方法,其中,所述组成部分包括网格数据。
24.根据实施例22所述的方法,其中,所述组成部分包括纹理数据。
25.根据实施例22所述的方法,所述方法还包括压缩所述一个或多个组成部分。
26.根据实施例22所述的方法,其中,所述虚拟三维模型是第一虚拟三维模型,以及其中,所述方法还包括基于所请求的组成部分来生成所述虚拟三维模型的副本。
27.根据实施例22所述的方法,所述方法还包括经由所述头戴式装置的显示器显示所请求的组成部分。
28.根据实施例22所述的方法,所述方法还包括:
创建用于新虚拟三维模型的占位符;以及
基于所请求的组成部分更新用于所述新虚拟三维模型的所述占位符。
29.一种系统,所述系统包括:
头戴式装置;
一个或多个处理器,其被配置为执行方法,该方法包括:
访问被存储在存储器中的虚拟三维模型;
确定所述虚拟三维模型的一个或多个组成部分;
将所述一个或多个组成部分存储在一个或多个数组中,其中,所述一个或多个组成部分与所述虚拟三维模型分开存储;
从头戴式装置接收连接请求;
将可用组成部分的列表发送到所述头戴式装置;
从所述头戴式装置接收组成部分请求;以及
基于所述组成部分请求向所述头戴式装置发送所请求的组成部分。
30.根据实施例29所述的系统,其中,所述组成部分包括网格数据。
31.根据实施例29所述的系统,其中,所述组成部分包括纹理数据。
32.根据实施例29所述的系统,所述方法还包括压缩所述一个或多个组成部分。
33.根据实施例29所述的系统,其中,所述虚拟三维模型是第一虚拟三维模型,以及其中,所述方法还包括基于所请求的组成部分来生成所述虚拟三维模型的副本。
34.根据实施例29所述的系统,所述方法还包括经由所述头戴式装置的显示器显示所请求的组成部分。
35.根据实施例29所述的系统,所述方法还包括:
创建用于新虚拟三维模型的占位符;以及
基于所请求的组成部分更新用于所述新虚拟三维模型的所述占位符。
36.一种存储指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器执行方法,该方法包括:
访问被存储在存储器中的虚拟三维模型;
确定所述虚拟三维模型的一个或多个组成部分;
将所述一个或多个组成部分存储在一个或多个数组中,其中,所述一个或多个组成部分与所述虚拟三维模型分开存储;
从头戴式装置接收连接请求;
将可用组成部分的列表发送到所述头戴式装置;
从所述头戴式装置接收组成部分请求;以及
基于所述组成部分请求向所述头戴式装置发送所请求的组成部分。
37.根据实施例36所述的非暂时性计算机可读介质,其中,所述组成部分包括网格数据。
38.根据实施例36所述的非暂时性计算机可读介质,其中,所述组成部分包括纹理数据。
39.根据实施例36所述的非暂时性计算机可读介质,所述方法还包括压缩所述一个或多个组成部分。
40.根据实施例36所述的非暂时性计算机可读介质,其中,所述虚拟三维模型是第一虚拟三维模型,以及其中,所述方法还包括基于所请求的组成部分来生成所述虚拟三维模型的副本。
41.根据实施例36所述的非暂时性计算机可读介质,所述方法还包括经由所述头戴式装置的显示器显示所请求的组成部分。
42.根据实施例36所述的非暂时性计算机可读介质,所述方法还包括:
创建用于新虚拟三维模型的占位符;以及
基于所请求的组成部分更新用于所述新虚拟三维模型的所述占位符。
43.一种系统,包括:
主机计算系统;
包括头戴式显示系统的客户端计算系统;
其中,所述主机计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
访问被存储在存储器中的虚拟三维模型;
将所述三维模型分解成一个或多个组成部分;
将所述一个或多个组成部分的列表发送到所述客户端计算系统;
从所述客户端计算系统接收组成部分请求;
将与所述组成部分请求对应的所述一个或多个组成部分发送到所述客户端计算系统;以及
其中,所述客户端计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
从所述主机计算系统接收所述一个或多个组成部分的所述列表;
向所述主机计算系统发送所述组成部分请求;
从所述主机计算系统接收与所述组成部分请求对应的一个或多个组成部分;
通过与所述组成部分请求对应的一个或多个组成部分组成(compose)所述虚拟三维模型的副本。
44.根据实施例43所述的系统,其中,所述组成部分包括网格数据。
45.根据实施例43所述的系统,其中,所述组成部分包括纹理数据。
46.根据实施例43所述的系统,其中,所述主机计算系统是服务器。
47.根据实施例43所述的系统,其中,所述主机计算系统包括头戴式显示系统。
48.根据实施例43所述的系统,所述方法还包括将所述一个或多个组成部分存储在存储器中。
49.根据实施例43所述的系统,所述方法还包括解压缩所述一个或多个组成部分。
50.一种方法,包括:
访问被存储在存储器中的虚拟三维模型;
将所述三维模型分解成一个或多个组成部分;
将所述一个或多个组成部分的列表发送到包括头戴式显示器的客户端计算系统;
从所述客户端计算系统接收组成部分请求;
将与所述组成部分请求对应的所述一个或多个组成部分发送到所述客户端计算系统;
从主机计算系统接收所述一个或多个组成部分的所述列表;
向所述主机计算系统发送所述组成部分请求;
从所述主机计算系统接收与所述组成部分请求对应的一个或多个组成部分;以及
通过与所述组成部分请求对应的一个或多个组成部分组成所述虚拟三维模型的副本。
51.根据实施例50所述的方法,其中,所述组成部分包括网格数据。
52.根据实施例50所述的方法,其中,所述组成部分包括纹理数据。
53.根据实施例50所述的方法,其中,所述主机计算系统是服务器。
54.根据实施例50所述的方法,其中,所述主机计算系统包括头戴式显示系统。
55.根据实施例50所述的方法,所述方法还包括将所述一个或多个组成部分存储在存储器中。
56.根据实施例50所述的方法,所述方法还包括解压缩所述一个或多个组成部分。
57.一种存储一个或多个指令的非暂时性计算机可读介质,所述一个或多个指令在由一个或多个处理器执行时使所述一个或多个处理器执行方法,该方法包括:
访问被存储在存储器中的虚拟三维模型;
将所述三维模型分解成一个或多个组成部分;
将所述一个或多个组成部分的列表发送到包括头戴式显示器的客户端计算系统;
从所述客户端计算系统接收组成部分请求;
将与所述组成部分请求对应的所述一个或多个组成部分发送到所述客户端计算系统;
从主机计算系统接收所述一个或多个组成部分的所述列表;
向所述主机计算系统发送所述组成部分请求;
从所述主机计算系统接收与所述组成部分请求对应的一个或多个组成部分;以及
通过与所述组成部分请求对应的一个或多个组成部分组成所述虚拟三维模型的副本。
58.根据实施例57所述的非暂时性计算机可读介质,其中,所述组成部分包括网格数据。
59.根据实施例57所述的非暂时性计算机可读介质,其中,所述组成部分包括纹理数据。
60.根据实施例57所述的非暂时性计算机可读介质,其中,所述主机计算系统是服务器。
61.根据实施例57所述的非暂时性计算机可读介质,其中,所述主机计算系统包括头戴式显示系统。
62.根据实施例57所述的非暂时性计算机可读介质,所述方法还包括将所述一个或多个组成部分存储在存储器中。
63.根据实施例57所述的非暂时性计算机可读介质,所述方法还包括解压缩所述一个或多个组成部分。
64.一种系统,包括:
主机计算系统,其中,所述主机计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
经由主机资产模块访问第一虚拟三维模型;
经由分解模块识别一个或多个组成部分;
经由所述分解模块将所述一个或多个组成部分复制到库;
经由主机传输模块访问所述一个或多个组成部分;
经由所述主机传输模块将所述一个或多个组成部分发送到客户端计算系统;以及
所述客户端计算系统,其中,所述客户端计算系统包括头戴式显示系统,以及其中,所述客户端计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
经由客户端传输模块从所述主机计算系统接收所述一个或多个组成部分;
经由组成模块创建空对象;
经由所述组成模块将一个或多个数据类型添加到所述空对象;
经由所述组成模块将一个或多个组成部分添加到所述空对象;
经由客户端资产模块存储所述虚拟三维模型的副本;以及
其中,所述主机计算系统和所述客户端计算系统经由通信链路而可通信地连接。
65.根据实施例64所述的系统,其中,所述组成部分包括网格数据。
66.根据实施例64所述的系统,其中,所述组成部分包括纹理数据。
67.根据实施例64所述的系统,其中,所述主机计算系统是服务器。
68.根据实施例64所述的系统,其中,所述主机计算系统包括头戴式显示系统。
69.根据实施例64所述的系统,所述方法还包括将所述一个或多个组成部分存储在存储器中。
70.根据实施例64所述的系统,所述方法还包括解压缩所述一个或多个组成部分。
71.一种方法,包括:
在主机计算系统处,其中,所述主机计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
经由主机资产模块访问第一虚拟三维模型;
经由分解模块识别一个或多个组成部分;
经由所述分解模块将所述一个或多个组成部分复制到库;
经由主机传输模块访问所述一个或多个组成部分;
经由所述主机传输模块将所述一个或多个组成部分发送到客户端计算系统;以及
在所述客户端计算系统处,其中,所述客户端计算系统包括头戴式显示系统,以及其中,所述客户端计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
经由客户端传输模块从所述主机计算系统接收所述一个或多个组成部分;
经由组成模块创建空对象;
经由所述组成模块将一个或多个数据类型添加到所述空对象;
经由所述组成模块将一个或多个组成部分添加到所述空对象;
经由客户端资产模块存储所述虚拟三维模型的副本;以及
其中,所述主机计算系统和所述客户端计算系统经由通信链路而可通信地连接。
72.根据实施例71所述的方法,其中,所述组成部分包括网格数据。
73.根据实施例71所述的方法,其中,所述组成部分包括纹理数据。
74.根据实施例71所述的方法,其中,所述主机计算系统是服务器。
75.根据实施例71所述的方法,其中,所述主机计算系统包括头戴式显示系统。
76.根据实施例71所述的方法,所述方法还包括将所述一个或多个组成部分存储在存储器中。
77.根据实施例71所述的方法,所述方法还包括解压缩所述一个或多个组成部分。
78.一种存储一个或多个指令的非暂时性计算机可读介质,所述一个或多个指令在由一个或多个处理器执行时使所述处理器执行方法,该方法包括:
在主机计算系统处:
经由主机资产模块访问第一虚拟三维模型;
经由分解模块识别一个或多个组成部分;
经由所述分解模块将所述一个或多个组成部分复制到库;
经由主机传输模块访问所述一个或多个组成部分;
经由所述主机传输模块将所述一个或多个组成部分发送到客户端计算系统;以及
在所述客户端计算系统处,其中,所述客户端计算系统包括头戴式显示系统:
经由客户端传输模块从所述主机计算系统接收所述一个或多个组成部分;
经由组成模块创建空对象;
经由所述组成模块将一个或多个数据类型添加到所述空对象;
经由所述组成模块将一个或多个组成部分添加到所述空对象;
经由客户端资产模块存储所述虚拟三维模型的副本;以及
其中,所述主机计算系统和所述客户端计算系统经由通信链路被可通信地连接。
79.根据实施例78所述的非暂时性计算机可读介质,其中,所述组成部分包括网格数据。
80.根据实施例78所述的非暂时性计算机可读介质,其中,所述组成部分包括纹理数据。
81.根据实施例78所述的非暂时性计算机可读介质,其中,所述主机计算系统是服务器。
82.根据实施例78所述的非暂时性计算机可读介质,其中,所述主机计算系统包括头戴式显示系统。
83.根据实施例78所述的非暂时性计算机可读介质,所述方法还包括将所述一个或多个组成部分存储在存储器中。
84.根据实施例78所述的非暂时性计算机可读介质,所述方法还包括解压缩所述一个或多个组成部分。
85.一种系统,包括:
主机计算系统,其中,所述主机计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
经由加载模块访问第一虚拟三维模型;
经由主机库管理器模块识别一个或多个组成部分;
经由所述主机库管理器模块将所述一个或多个组成部分复制到库;
经由主机世界模块存储所述第一虚拟三维模型;
经由主机渲染器路径模块渲染所述第一虚拟三维模型;
经由服务器模块访问所述一个或多个组成部分;
经由所述服务器模块将所述一个或多个组成部分发送到客户端计算系统;以及
所述客户端计算系统,其中,所述客户端计算系统包括头戴式显示系统,以及其中,所述客户端计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
经由客户端模块从所述主机计算系统接收所述一个或多个组成部分;
生成所述虚拟三维模型的副本,其中,生成所述虚拟三维模型的所述副本包括:
经由客户端库管理器模块创建空对象;以及
经由所述客户端库管理器模块将一个或多个组成部分添加到所述空对象;
经由客户端世界模块存储所述虚拟三维模型的所述副本;
经由客户端渲染器路径模块渲染所述虚拟三维模型的所述副本;
其中,所述主机计算系统和所述客户端计算系统经由通信链路被可通信地连接。
86.根据实施例85所述的系统,其中,所述组成部分包括网格数据。
87.根据实施例85所述的系统,其中,所述组成部分包括纹理数据。
88.根据实施例85所述的系统,其中,所述主机计算系统是服务器。
89.根据实施例85所述的系统,其中,所述主机计算系统包括头戴式显示系统。
90.根据实施例85所述的系统,所述方法还包括将所述一个或多个组成部分存储在存储器中。
91.根据实施例85所述的系统,所述方法还包括解压缩所述一个或多个组成部分。
92.一种方法,包括:
在主机计算系统处:
经由加载模块访问第一虚拟三维模型;
经由主机库管理器模块识别一个或多个组成部分;
经由所述主机库管理器模块将所述一个或多个组成部分复制到库;
经由主机世界模块存储所述第一虚拟三维模型;
经由主机渲染器路径模块渲染所述第一虚拟三维模型;
经由服务器模块访问所述一个或多个组成部分;
经由所述服务器模块将所述一个或多个组成部分发送到客户端计算系统;以及
在所述客户端计算系统处,其中,所述客户端计算系统包括头戴式显示系统:
经由客户端模块从所述主机计算系统接收所述一个或多个组成部分;
生成所述虚拟三维模型的副本,其中,生成所述虚拟三维模型的所述副本包括:
经由客户端库管理器模块创建空对象;以及
经由所述客户端库管理器模块将一个或多个组成部分添加到所述空对象;
经由客户端世界模块存储所述虚拟三维模型的所述副本;
经由客户端渲染器路径模块渲染所述虚拟三维模型的所述副本;
其中,所述主机计算系统和所述客户端计算系统经由通信链路被可通信地连接。
93.根据实施例92所述的方法,其中,所述组成部分包括网格数据。
94.根据实施例92所述的方法,其中,所述组成部分包括纹理数据。
95.根据实施例92所述的方法,其中,所述主机计算系统是服务器。
96.根据实施例92所述的方法,其中,所述主机计算系统包括头戴式显示系统。
97.根据实施例92所述的方法,所述方法还包括将所述一个或多个组成部分存储在存储器中。
98.根据实施例92所述的方法,所述方法还包括解压缩所述一个或多个组成部分。
99.一种存储一个或多个指令的非暂时性计算机可读介质,所述一个或多个指令在由一个或多个处理器执行时使所述一个或多个处理器执行方法,该方法包括:
主机计算系统,其中,所述主机计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
经由加载模块访问第一虚拟三维模型;
经由主机库管理器模块识别一个或多个组成部分;
经由所述主机库管理器模块将所述一个或多个组成部分复制到库;
经由主机世界模块存储所述第一虚拟三维模型;
经由主机渲染器路径模块渲染所述第一虚拟三维模型;
经由服务器模块访问所述一个或多个组成部分;
经由所述服务器模块将所述一个或多个组成部分发送到客户端计算系统;以及
所述客户端计算系统,其中,所述客户端计算系统包括头戴式显示系统,以及其中,所述客户端计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
经由客户端模块从所述主机计算系统接收所述一个或多个组成部分;
生成所述虚拟三维模型的副本,其中,生成所述虚拟三维模型的所述副本包括:
经由客户端库管理器模块创建空对象;以及
经由所述客户端库管理器模块将一个或多个组成部分添加到所述空对象;
经由客户端世界模块存储所述虚拟三维模型的所述副本;
经由客户端渲染器路径模块渲染所述虚拟三维模型的所述副本;
其中,所述主机计算系统和所述客户端计算系统经由通信链路被可通信地连接。
100.根据实施例99所述的非暂时性计算机可读介质,其中,所述组成部分包括网格数据。
101.根据实施例99所述的非暂时性计算机可读介质,其中,所述组成部分包括纹理数据。
103.根据实施例99所述的非暂时性计算机可读介质,其中,所述主机计算系统是服务器。
104.根据实施例99所述的非暂时性计算机可读介质,其中,所述主机计算系统包括头戴式显示系统。
105.根据实施例99所述的非暂时性计算机可读介质,所述方法还包括将所述一个或多个组成部分存储在存储器中。
106.根据实施例99所述的非暂时性计算机可读介质,所述方法还包括解压缩所述一个或多个组成部分。
107.一种系统,包括:
非暂时性计算机可读存储器,其存储包括一个或多个组成部分的三维模型,以及
主机计算系统,其包括一个或多个处理器,所述一个或多个处理器被配置为从所述非暂时性计算机可读存储器访问所述三维模型,并且还被配置为执行方法,所述方法包括:
将所述三维模型的所述一个或多个组成部分中的一个存储到数组中,所述数组被存储在所述非暂时性计算机可读存储器中,
将所述数组打包到所述主机计算系统的库中的包中。
108.根据实施例107所述的系统,其中,所述组成部分包括网格数据。
109.根据实施例107所述的系统,其中,所述组成部分包括纹理数据。
110.根据实施例107所述的系统,其中,所述主机计算系统是服务器。
111.根据实施例107所述的系统,其中,所述主机计算系统包括头戴式显示系统。
112.根据实施例107所述的系统,所述方法还包括将所述一个或多个组成部分存储在存储器中。
113.根据实施例107所述的系统,所述方法还包括解压缩所述一个或多个组成部分。
114.一种方法,包括:
经由非暂时性计算机可读存储器存储包括一个或多个组成部分的三维模型;
从所述非暂时性计算机可读存储器访问所述三维模型;
将所述三维模型的所述一个或多个组成部分中的一个存储到数组中,所述数组被存储在所述非暂时性计算机可读存储器中,
将所述数组打包到所述主机计算系统的库中的包中。
115.根据实施例114所述的方法,其中,所述组成部分包括网格数据。
116.根据实施例114所述的方法,其中,所述组成部分包括纹理数据。
117.根据实施例114所述的方法,其中,所述非暂时性计算机可读存储器是服务器的部分。
118.根据实施例114所述的方法,其中,所述非暂时性计算机可读存储器是头戴式显示系统的部分。
119.根据实施例114所述的方法,所述方法还包括将所述一个或多个组成部分存储在存储器中。
120.根据实施例114所述的方法,所述方法还包括解压缩所述一个或多个组成部分。
121.一种存储一个或多个指令的非暂时性计算机可读介质,所述一个或多个指令在由一个或多个处理器执行时使所述一个或多个处理器执行方法,该方法包括:
经由非暂时性计算机可读存储器存储包括一个或多个组成部分的三维模型;
从所述非暂时性计算机可读存储器访问所述三维模型;
将所述三维模型的所述一个或多个组成部分中的一个存储到数组中,所述数组被存储在所述非暂时性计算机可读存储器中,
将所述数组打包到所述主机计算系统的库中的包中。
122.根据实施例121所述的非暂时性计算机可读介质,其中,所述组成部分包括网格数据。
123.根据实施例121所述的非暂时性计算机可读介质,其中,所述组成部分包括纹理数据。
124.根据实施例121所述的非暂时性计算机可读介质,其中,所述非暂时性计算机可读存储器是服务器的部分。
125.根据实施例121所述的非暂时性计算机可读介质,其中,所述非暂时性计算机可读存储器是头戴式显示系统的部分。
126.根据实施例121所述的非暂时性计算机可读介质,所述方法还包括将所述一个或多个组成部分存储在存储器中。
127.根据实施例121所述的非暂时性计算机可读介质,所述方法还包括解压缩所述一个或多个组成部分。
组成部分的示例可以是几何数据、材料数据、顶点表、一个或多个纹理、三角形索引或用于最终定义3D模型的完整表示的任何其他数据。

Claims (23)

1.一种系统,包括:
主机计算系统;以及
包括头戴式显示系统的客户端计算系统,
其中,所述主机计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
访问被存储在存储器中的虚拟三维模型;
将所述三维模型分解成一个或多个组成部分;
将所述一个或多个组成部分的列表发送到所述客户端计算系统;
从所述客户端计算系统接收组成部分请求;
向所述客户端计算系统发送与所述组成部分请求对应的一个或多个组成部分;以及
其中,所述客户端计算系统包括被配置为执行方法的一个或多个处理器,该方法包括:
从所述主机计算系统接收所述一个或多个组成部分的所述列表;
向所述主机计算系统发送所述组成部分请求;
从所述主机计算系统接收与所述组成部分请求对应的一个或多个组成部分;
通过与所述组成部分请求对应的一个或多个组成部分组成所述虚拟三维模型的副本。
2.根据权利要求1所述的系统,其中,所述组成部分包括网格数据。
3.根据权利要求1所述的系统,其中,所述组成部分包括纹理数据。
4.根据权利要求1所述的系统,其中,所述主机计算系统包括服务器。
5.根据权利要求1所述的系统,其中,所述主机计算系统包括头戴式显示系统。
6.根据权利要求1所述的系统,所述方法还包括:将所述一个或多个组成部分存储在存储器中。
7.根据权利要求1所述的系统,所述方法还包括:解压缩所述一个或多个组成部分。
8.一种方法,包括:
访问被存储在存储器中的虚拟三维模型;
将所述三维模型分解成一个或多个组成部分;
将所述一个或多个组成部分的列表发送到包括头戴式显示器的客户端计算系统;
从所述客户端计算系统接收组成部分请求;
将与所述组成部分请求对应的一个或多个组成部分发送到所述客户端计算系统;
从主机计算系统接收所述一个或多个组成部分的所述列表;
将所述组成部分请求发送到所述主机计算系统;
从所述主机计算系统接收与所述组成部分请求对应的一个或多个组成部分;以及
通过与所述组成部分请求对应的一个或多个组成部分组成所述虚拟三维模型的副本。
9.根据权利要求8所述的方法,其中,所述组成部分包括网格数据。
10.根据权利要求8所述的方法,其中,所述组成部分包括纹理数据。
11.根据权利要求8所述的方法,其中,所述主机计算系统包括服务器。
12.根据权利要求8所述的方法,其中,所述主机计算系统包括头戴式显示系统。
13.根据权利要求8所述的方法,所述方法还包括:将所述一个或多个组成部分存储在存储器中。
14.根据权利要求8所述的方法,所述方法还包括:解压缩所述一个或多个组成部分。
15.一种存储一个或多个指令的非暂时性计算机可读介质,所述一个或多个指令在由一个或多个处理器执行时使所述一个或多个处理器执行方法,该方法:
访问被存储在存储器中的虚拟三维模型;
将所述三维模型分解成一个或多个组成部分;
将所述一个或多个组成部分的列表发送到包括头戴式显示器的客户端计算系统;
从所述客户端计算系统接收组成部分请求;
将与所述组成部分请求对应的一个或多个组成部分发送到所述客户端计算系统;
从主机计算系统接收所述一个或多个组成部分的所述列表;
向所述主机计算系统发送所述组成部分请求;
从所述主机计算系统接收与所述组成部分请求对应的一个或多个组成部分;以及
通过与所述组成部分请求对应的一个或多个组成部分组成所述虚拟三维模型的副本。
16.根据权利要求15所述的非暂时性计算机可读介质,其中,所述组成部分包括网格数据。
17.根据权利要求15所述的非暂时性计算机可读介质,其中,所述组成部分包括纹理数据。
18.根据权利要求15所述的非暂时性计算机可读介质,其中,所述主机计算系统包括服务器。
19.根据权利要求15所述的非暂时性计算机可读介质,其中,所述主机计算系统包括头戴式显示系统。
20.根据权利要求15所述的非暂时性计算机可读介质,所述方法还包括:将所述一个或多个组成部分存储在存储器中。
21.根据权利要求15所述的非暂时性计算机可读介质,所述方法还包括:解压缩所述一个或多个组成部分。
22.一种方法,包括:
访问被存储在存储器中的虚拟三维模型;
将所述虚拟三维模型分解成一个或多个组成部分;
将所述一个或多个组成部分存储在一个或多个数组中,其中,所述一个或多个组成部分与所述虚拟三维模型分开存储;
从可穿戴头部装置接收连接请求;
将可用组成部分的列表发送到所述可穿戴头部装置;
从所述可穿戴头部装置接收组成部分请求;以及
基于所述组成部分请求向所述可穿戴头部装置发送所请求的组成部分。
23.一种方法,包括:
经由可穿戴头部装置向主机装置发生连接请求;
从所述主机装置接收可用组成部分的列表;
将组成部分请求发送到所述主机装置;
从所述主机装置接收基于所述组成部分请求的所请求的组成部分;以及
基于所请求的组成部分来重组虚拟三维模型的副本。
CN201980076776.2A 2018-09-24 2019-09-24 用于三维模型共享的方法和系统 Pending CN113168737A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862735675P 2018-09-24 2018-09-24
US62/735,675 2018-09-24
PCT/US2019/052798 WO2020068878A1 (en) 2018-09-24 2019-09-24 Methods and systems for three-dimensional model sharing

Publications (1)

Publication Number Publication Date
CN113168737A true CN113168737A (zh) 2021-07-23

Family

ID=69884543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980076776.2A Pending CN113168737A (zh) 2018-09-24 2019-09-24 用于三维模型共享的方法和系统

Country Status (5)

Country Link
US (2) US11450065B2 (zh)
EP (1) EP3857520A4 (zh)
JP (3) JP7331088B2 (zh)
CN (1) CN113168737A (zh)
WO (1) WO2020068878A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114546210A (zh) * 2022-01-28 2022-05-27 联想(北京)有限公司 一种映射方法以及增强现实设备

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10357718B2 (en) 2017-02-28 2019-07-23 Electronic Arts Inc. Realtime dynamic modification and optimization of gameplay parameters within a video game application
US10545456B2 (en) * 2017-04-17 2020-01-28 8i Limited Hologram location
US10713543B1 (en) 2018-06-13 2020-07-14 Electronic Arts Inc. Enhanced training of machine learning systems based on automatically generated realistic gameplay information
US11450065B2 (en) 2018-09-24 2022-09-20 Magic Leap, Inc. Methods and systems for three-dimensional model sharing
US11159768B1 (en) 2019-01-03 2021-10-26 Facebook Technologies, Llc User groups based on artificial reality
US10953334B2 (en) 2019-03-27 2021-03-23 Electronic Arts Inc. Virtual character generation from image or video data
US11347371B2 (en) * 2019-11-25 2022-05-31 Unity Technologies ApS Automatic translation of user interface elements from wireframe tools to production augmented reality framework
US11215817B1 (en) * 2020-12-03 2022-01-04 Facebook Technologies, Llc. Systems and methods for generating spectator images of an artificial reality environment
US11995230B2 (en) 2021-02-11 2024-05-28 Apple Inc. Methods for presenting and sharing content in an environment
IT202100003686A1 (it) * 2021-02-17 2022-08-17 H Farm Education S R L Apparecchiatura di realtà virtuale condivisa e relativo metodo
US11893675B1 (en) 2021-02-18 2024-02-06 Splunk Inc. Processing updated sensor data for remote collaboration
US11915377B1 (en) 2021-02-18 2024-02-27 Splunk Inc. Collaboration spaces in networked remote collaboration sessions
US11681539B2 (en) * 2021-05-28 2023-06-20 International Business Machines Corporation Transforming asset operation video to augmented reality guidance model
KR102565481B1 (ko) * 2021-06-23 2023-08-09 (주) 올림플래닛 웹 기반 가상 공간 3d 컨텐츠 패키징 및 스트리밍 서비스 제공 방법, 이를 위한 장치 및 시스템
JP7461654B2 (ja) 2021-06-28 2024-04-04 グリー株式会社 情報処理システム、情報処理方法、情報処理プログラム
US20230274504A1 (en) * 2022-02-28 2023-08-31 Apple Inc. System and method of three-dimensional immersive applications in multi-user communication sessions
KR20230171663A (ko) * 2022-06-14 2023-12-21 이루고월드 주식회사 다중 장비를 통한 3d 가상세계 접속 장치 및 그 방법
CN116643648B (zh) * 2023-04-13 2023-12-19 中国兵器装备集团自动化研究所有限公司 一种三维场景匹配交互方法、装置、设备及存储介质
CN117557740B (zh) * 2024-01-10 2024-04-09 四川见山科技有限责任公司 三维模型分割层级切换方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328951A (ja) * 2001-04-27 2002-11-15 Komatsu Ltd 3次元モデルのデータ配信装置及びデータ配信システム
JP2003178332A (ja) * 2001-12-10 2003-06-27 Komatsu Ltd 分解組立のシミュレーション方法
WO2014110502A1 (en) * 2013-01-11 2014-07-17 The Regents Of The University Of Michigan Monitoring proximity of objects at construction jobsites via three-dimensional virtuality in real-time
WO2018021068A1 (ja) * 2016-07-29 2018-02-01 ソニー株式会社 画像処理装置および画像処理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3059138B2 (ja) 1998-07-27 2000-07-04 ミツビシ・エレクトリック・インフォメイション・テクノロジー・センター・アメリカ・インコーポレイテッド 3次元仮想現実環境作成、編集及び配布システム
US6295513B1 (en) * 1999-03-16 2001-09-25 Eagle Engineering Of America, Inc. Network-based system for the manufacture of parts with a virtual collaborative environment for design, developement, and fabricator selection
US7650260B1 (en) * 2001-09-17 2010-01-19 Impact Xoft Method and system for designing objects using functional object representation
JP2006195971A (ja) 2004-12-16 2006-07-27 Canon Inc 三次元cadシステム
JP4870474B2 (ja) 2006-05-24 2012-02-08 株式会社リコー パーツカタログ表示システムおよびその制御方法
US8910439B2 (en) * 2007-04-11 2014-12-16 M3house, LLC Wall panels for affordable, sustainable buildings
JP5403974B2 (ja) 2008-09-09 2014-01-29 キヤノン株式会社 三次元cadシステム
US9489762B2 (en) * 2010-06-30 2016-11-08 Primal Space Systems, Inc. Delivering and controlling streaming interactive media comprising rendered geometric, texture and lighting data
CN107103639B (zh) * 2010-06-30 2021-05-18 巴里·林恩·詹金斯 确定网格多边形或网格多边形的分段的集合的方法和系统
US8401687B2 (en) * 2010-11-24 2013-03-19 Sap Ag Visual assembly tool
US9471938B2 (en) * 2012-03-12 2016-10-18 Xerox Corporation Method for fulfillment of kit and apparatus associated therewith
US20140162781A1 (en) * 2012-12-06 2014-06-12 Sony Online Entrtainment Llc System and method for building in groups
JP5894115B2 (ja) 2013-05-20 2016-03-23 株式会社図研 設計支援システム、設計支援方法及びそのプログラム
KR102207026B1 (ko) 2013-08-22 2021-01-22 비스포크, 인코포레이티드 커스텀 제품을 생성하기 위한 방법 및 시스템
US10310266B2 (en) 2016-02-10 2019-06-04 Advanced Micro Devices, Inc. Method and system for streaming information in wireless virtual reality
US10575878B2 (en) 2016-07-21 2020-03-03 Warsaw Orthopedic, Inc. Spinal implant system and methods of use
US10379611B2 (en) 2016-09-16 2019-08-13 Intel Corporation Virtual reality/augmented reality apparatus and method
US10976982B2 (en) * 2018-02-02 2021-04-13 Samsung Electronics Co., Ltd. Guided view mode for virtual reality
US11450065B2 (en) 2018-09-24 2022-09-20 Magic Leap, Inc. Methods and systems for three-dimensional model sharing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328951A (ja) * 2001-04-27 2002-11-15 Komatsu Ltd 3次元モデルのデータ配信装置及びデータ配信システム
JP2003178332A (ja) * 2001-12-10 2003-06-27 Komatsu Ltd 分解組立のシミュレーション方法
WO2014110502A1 (en) * 2013-01-11 2014-07-17 The Regents Of The University Of Michigan Monitoring proximity of objects at construction jobsites via three-dimensional virtuality in real-time
WO2018021068A1 (ja) * 2016-07-29 2018-02-01 ソニー株式会社 画像処理装置および画像処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114546210A (zh) * 2022-01-28 2022-05-27 联想(北京)有限公司 一种映射方法以及增强现实设备
CN114546210B (zh) * 2022-01-28 2024-07-23 联想(北京)有限公司 一种映射方法以及增强现实设备

Also Published As

Publication number Publication date
US20200098173A1 (en) 2020-03-26
JP2022502749A (ja) 2022-01-11
JP2024054287A (ja) 2024-04-16
US20220383604A1 (en) 2022-12-01
JP2022172272A (ja) 2022-11-15
WO2020068878A1 (en) 2020-04-02
EP3857520A4 (en) 2021-12-01
US11450065B2 (en) 2022-09-20
EP3857520A1 (en) 2021-08-04
JP7331088B2 (ja) 2023-08-22

Similar Documents

Publication Publication Date Title
US11450065B2 (en) Methods and systems for three-dimensional model sharing
US11789524B2 (en) Rendering location specific virtual content in any location
US11348300B2 (en) Avatar customization for optimal gaze discrimination
KR102601622B1 (ko) 가상 아바타들의 콘텍스추얼 기반 렌더링
US11669726B2 (en) Methods and systems for interpolation of disparate inputs
US11868515B2 (en) Generating textured polygon strip hair from strand-based hair for a virtual character
JP7459050B2 (ja) 仮想キャラクタの姿勢空間変形のための姿勢空間次元低減
JP2022549853A (ja) 共有空間内の個々の視認
CN112437950A (zh) 用于对虚拟头像制作动画的骨架系统
WO2019226549A1 (en) Computer generated hair groom transfer tool
US11836840B2 (en) Systems and methods for cross-application authoring, transfer, and evaluation of rigging control systems for virtual characters
US20230260156A1 (en) Methods and systems for interpolation of disparate inputs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination