CN111051959B - 使用来自先前视角的渲染内容和非渲染内容生成新帧 - Google Patents
使用来自先前视角的渲染内容和非渲染内容生成新帧 Download PDFInfo
- Publication number
- CN111051959B CN111051959B CN201880055420.6A CN201880055420A CN111051959B CN 111051959 B CN111051959 B CN 111051959B CN 201880055420 A CN201880055420 A CN 201880055420A CN 111051959 B CN111051959 B CN 111051959B
- Authority
- CN
- China
- Prior art keywords
- perspective
- objects
- rendered content
- content
- rendered
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 61
- 238000009877 rendering Methods 0.000 claims abstract description 24
- 230000004886 head movement Effects 0.000 claims description 33
- 230000033001 locomotion Effects 0.000 claims description 17
- 235000019580 granularity Nutrition 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 210000003128 head Anatomy 0.000 description 18
- 238000012545 processing Methods 0.000 description 18
- 230000000717 retained effect Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000001172 regenerating effect Effects 0.000 description 10
- 238000013459 approach Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 9
- 238000010276 construction Methods 0.000 description 8
- 210000000887 face Anatomy 0.000 description 8
- 239000000872 buffer Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000008929 regeneration Effects 0.000 description 4
- 238000011069 regeneration method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000005855 radiation Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000005338 frosted glass Substances 0.000 description 1
- 238000007654 immersion Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B27/0172—Head mounted characterised by optical features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/012—Head tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0101—Head-up displays characterised by optical features
- G02B2027/014—Head-up displays characterised by optical features comprising information/image processing systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20212—Image combination
- G06T2207/20221—Image fusion; Image merging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/62—Semi-transparency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Optics & Photonics (AREA)
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
- Circuits Of Receivers In General (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
公开了一种用于使用来自先前视角的渲染内容和非渲染内容构造新帧的方法。渲染来自第一视角的第一组对象的可见表面的点。存储来自第一视角的渲染内容和非渲染内容二者。使用来自第一视角的渲染内容和非渲染内容生成来自第二视角的新帧。
Description
技术领域
本公开总体上涉及通过使用来自先前帧的非渲染内容的图像数据来构造图像的新视角,而不根据该新视角重新生成图像。
背景技术
现代计算和显示技术促进了用于所谓“虚拟现实”(VR)或“增强现实”(AR)体验的系统的发展,其中,数字再现的图像或其部分以它们似乎是真实的或可被感知为真实的方式呈现给用户。VR场景通常涉及数字或虚拟图像信息的呈现,而对其他实际现实世界视觉输入不透明,而AR场景通常涉及数字或虚拟图像信息的呈现,作为对用户周围现实世界的可视化的增强。
VR和AR系统通常采用可穿戴显示设备(例如,头戴式显示器、头盔安装式显示器、或智能眼镜),其至少松散地耦接到用户的头部并因此在用户的头部移动时而移动。如果显示系统检测到用户的头部移动,则可以更新正在显示的图像数据,以考虑头部姿势(即,用户头部的朝向(orientation)和/或位置)的变化。
作为示例,如果穿戴头戴式显示器的用户将三维(3D)对象的表示作为显示器上的图像来观看并在3D对象出现的区域周围行走,则可从每个附加视点重新生成该3D对象,使用户感觉到他们正在3D对象周围行走。如果头戴式显示器用于呈现包括虚拟空间(例如,丰富的虚拟世界)内的多个3D对象的场景,则可使用头部姿势的测量来重新生成场景以匹配用户的动态变化的头部位置和朝向并提供虚拟空间中增强的沉浸感。
通常,显示器对如何呈现颜色信息施加颜色数据保真度或分辨率。在分辨率内,每像素只能存在一个颜色值,无论从用户的视点或视角来看,有多少光子事件可与某个角度位置相对应。在不透明内容的情况下,仅保留最接近的光子事件(例如,与用户最接近的不透明对象)的结果,导致与被遮挡事件(例如,不透明对象和/或不透明对象后面的半透明对象)有关的数据全部丢失。在半透明内容的情况下,混合光子事件(例如,半透明对象和该半透明对象后面的不透明对象和/或半透明对象)的结果。在任一种情况下,如果每像素只能存在一个颜色值,则难以重构和分离原始光子事件数据(例如,半透明对象和/或不透明对象),这将导致难以正确扭曲这些事件的位置(如果在该扭曲期间应将每个事件移动到不同位置)。例如,如果已经混合光子事件e0和e1以生成像素p0,则在扭曲期间,解决方案可是将光子事件e0移动到像素p1,将光子事件e1移动到像素p2,但是由于扭曲的输入是合并结果(例如,像素p0),则合并的像素必须全部移动到像素p1或像素p2,并且不能拆分回到其原始光子事件e0和e1中以正确执行扭曲并且根据需要将光子事件e0移动到像素p1以及将光子事件e1移动到像素p2。
对于每一帧,仅与对象的可见表面的点相对应的图像数据被保留(即,渲染)并且被称为“渲染内容”,而与对象的不可见表面的点相对应的图像数据被丢弃(即,非渲染)并且被称为“非渲染内容”。然而,当用户将其头部移动到新视角时,用户可期望看到先前不可见的对象的表面的点。如下面进一步详细说明的,当用户移动到新视角时,任何非渲染内容都会丢失,因为应用仅保留了来自先前场景的渲染内容。这意味着,当VR和AR系统显示不同视角时,需要从每个新视角重新生成每个附加场景,对于对象的表面的点以正确的位置和朝向准确地描绘每个场景。
可应用“扭曲”来改变对象在新场景中呈现的方式。该方法采用对象,并改变呈现对象的表面的点的方式,以尝试从不同视角显示对象。但是,当某些对象至少部分覆盖其他对象时,发生去遮挡(disocclusion)问题。在一个示例中,从第一视角渲染包括图像数据的帧,其中渲染的帧包括来自第一视角的第一对象和第二对象的可显示信息,而不包括来自第二视角的第一对象和第二对象的可显示信息。捕获并存储与来自第一视角的第一对象和第二对象的可显示信息相对应的渲染内容。当从第一视角渲染帧时,不捕获或不存储与来自第二视角的第一对象和第二对象的可显示信息相对应的非渲染内容。当用户移动到新位置时,会有问题,因为从第二视角可看到第一对象和第二对象的不同部分,但是扭曲内容仅包括从第一视角可看到的第一和第二对象的部分。扭曲内容将是从第一视角不可见但现在从第二视角可见(无论应用了多少扭曲)的第一和第二对象的丢失内容。因此,该方法会产生大量的视频伪像,这些伪像会从不同视角影响图像的内容准确性。
因此,需要一种方法,该方法通过使用来自先前渲染的图像的非渲染内容的图像数据来显示图像的新视角,而无需从该新视角重新生成该图像。
发明内容
根据一些实施例,代替重新渲染对象以显示该对象的附加视角,来自附加视角的对象是根据来自先前帧的渲染内容和/或非渲染内容构造的。可通过各种方法选择和存储来自先前帧的内容。在一个实施例中,存储所有内容。在一个实施例中,存储与表面点相对应的内容。在另一个实施例中,存储与头部移动的实际范围相对应的内容。在另一个实施例中,存储与最接近的可见不透明点和最接近的可见不透明点前面的所有半透明点相对应的内容。在一些实施例中,内容被存储为链接列表、体素(voxel)、表面定义(例如,壳、曲线等)、N维数据结构或其图形表示等。
根据一些实施例,一种方法、系统或计算机可读介质包括以下元素的任意组合:使用来自先前视角的渲染内容和非渲染内容构造新帧;渲染来自第一视角的第一组对象的可见表面的点;存储来自第一视角的渲染内容和非渲染内容,渲染内容与来自第一视角的第一组对象的可见表面的点相对应,并且非渲染内容与来自第一视角的第一组对象的不可见部分相对应;接收显示来自第二视角的新帧的请求;使用来自第一视角的渲染内容和非渲染内容生成来自第二视角的新帧;显示来自第二视角的新帧;通过捕获用户的第一姿势来识别第一视角;其中,存储来自第一视角的渲染内容和非渲染内容包括在链接列表、阵列结构、真实体积表示、体素、表面定义、N维数据结构和N维图形表示中的至少一个中存储渲染内容和非渲染内容二者;确定用于来自第一视角的一个或多个对象的渲染内容和非渲染内容的不同粒度;渲染来自第二视角的第二组对象的可见表面的点;将所存储的渲染内容中的至少一些从第一视角扭曲到第二视角;其中,生成来自第二视角的第二包括将新的渲染内容和扭曲的渲染内容进行组合,该新的渲染内容与来自第二视角的第二组对象的可见表面的点相对应,并且该扭曲的渲染内容与从第一视角扭曲到第二视角的所存储的渲染内容相对应;渲染来自第二视角的第二组对象的可见表面的点;确定从第二视角可见的第三组对象;将来自第二视角的第三组对象与来自第一视角的所存储的渲染内容进行比较,以识别第二组对象,其中,第二组对象包括第三组对象中不在所存储的渲染内容中的对象;渲染第二组对象的可见表面的点;将所存储的内容中的至少一些从第一视角扭曲到第二视角;确定从第二视角可见的第三组对象;将来自第二视角的第三组对象与来自第一视角的所存储的渲染内容进行比较,以识别在第三组对象和所存储的渲染内容二者中的对象;扭曲在第三组对象和所存储的渲染内容中的对象;存储来自第一视角的渲染内容和非渲染内容;识别来自第一视角的渲染内容和非渲染内容;分析渲染内容和非渲染内容以确定内容是否与表面点和非表面点之一相对应;丢弃与非表面点相对应的内容;存储与表面点相对应的内容;存储来自第一视角的渲染内容和非渲染内容;预测用户的头部移动;至少部分地基于预测方向、用户的当前移动速度和用户的预测移动速度中的一个或多个,计算用户的预测头部移动的边界,该边界与第二视角的最大预测头部移动相对应;确定预测头部移动的所计算的范围内的内容;将该内容存储在所计算的范围内;存储来自第一视角的一个或多个对象的渲染内容和非渲染内容;确定一个或多个不透明对象的不透明点;存储与不透明点相对应的图像数据;确定一个或多个半透明对象的半透明点;存储半透明点的图像数据,其中,第一组对象包括一个或多个不透明对象和一个或多个半透明对象;一种用于使用来自先前视角的渲染内容和非渲染内容构造新帧的系统;一种存储可执行计算机指令的非暂时性计算机可读存储介质;一种体现在非暂时性计算机可读介质中的计算机程序产品,该计算机可读介质在其上存储有指令序列,该指令序列在由处理器执行时使处理器执行用于使用来自先前视角的渲染内容和非渲染内容构造新帧的方法;一种用于使用来自先前视角的渲染内容和非渲染内容构造新帧的方法;渲染来自第一视角的一个或多个对象;存储来自第一视角的一个或多个对象的渲染内容和非渲染内容,该非渲染内容与来自第一视角的对象的不可见部分相对应;接收显示来自第二视角的一个或多个对象的请求;扭曲一个或多个对象的渲染内容中的至少一些以创建来自第二视角的扭曲内容;渲染一个或多个对象的至少一些非渲染内容以创建来自第二视角的第二渲染内容;通过将来自第二视角的扭曲内容和第二渲染内容进行组合,构造来自第二视角的一个或多个对象;显示来自第二视角的一个或多个对象。
在具体实施方式、附图和权利要求中描述了本公开的附加和其他目的、特征和优点。
附图说明
附图示出了本公开的优选实施例的设计和实用性,其中相似的元件由共同的附图标记指代。为了更好地理解如何获得本公开的上述和其他优点和目的,将通过参考附图中示出的其特定实施例来对以上简要描述的本公开进行更具体的描述。理解这些附图仅描绘了本公开的典型实施例,因此不应被认为是对其范围的限制,本公开将通过使用附图以附加的特征和细节来描述和解释。
图1示出了根据一个实施例的图像生成系统的示例系统架构。
图2A-2F示出了根据一个实施例的使用来自第一视角的内容来显示图像的第二视角。
图3示出了根据一个实施例的用于使用来自第一视角的内容来显示图像的第二视角的方法的流程图。
图4A-4G示出了根据另一实施例的使用来自第一视角的内容来显示图像的第二视角。
图5示出了根据一个实施例的用于使用来自第二视角的新渲染内容和来自第一视角的内容来显示图像的第二视角的方法的流程图。
图6A-6G示出了根据一个实施例的使用来自第二视角的新渲染内容和来自第一视角的内容来显示图像的第二视角。
图7示出了根据一个实施例的用于选择和存储与表面点相对应的图像数据的方法的流程图。
图8示出了根据一个实施例的用于选择和存储与标定(nominal)运动范围相对应的图像数据的方法的流程图。
图9A-9F示出了根据一个实施例的使用与不透明和半透明对象相对应的图像数据来显示图像的第二视角。
图10示出了根据一个实施例的用于选择和存储与不透明对象和半透明对象相对应的图像数据的方法的流程图。
图11A-11G示出了根据另一实施例的使用与不透明和半透明点相对应的图像数据来显示图像的第二视角。
图12示出了可在其上实现本公开的实施例的计算机化系统。
具体实施方式
本公开针对一种通过使用来自先前帧的非渲染内容来构造图像的新视角的方法。代替从新视角重新生成图像,通过使用来自先前视角的非渲染内容创建新视角来从先前视角构造图像。
本公开提供了可用来实践本公开的一些实施例的说明性增强现实(AR)系统的描述,随后是使用来自第一视角的非渲染内容显示图像的第二视角的过程和机制的一个或多个实施例的描述。
说明性增强现实系统
以下描述涉及可用来实践本公开的说明性AR系统。然而,应当理解,本公开也适用于在其他类型的AR和虚拟现实(VR)系统中的应用,因此,本公开不仅限于本文公开的说明性系统。
参考图1,描述了根据本公开构造的AR系统100的一个实施例。AR系统100可结合AR子系统一起操作,从而在终端用户50(以下称为“用户50”)的视野中提供对象的图像。该方法采用一个或多个至少部分透明的表面,通过该表面可看到周围环境,并且AR系统100在其上产生对象的图像。
AR系统100包括用户50穿戴的框架结构102、由框架结构102携带的显示系统104,使得显示系统104位于用户50的眼睛的前方。
显示系统104被设计成向用户50的眼睛呈现基于照片的辐射图案(radiationpattern),基于照片的辐射图案可被舒适地感知为对具有二维和三维内容的物理现实的增强。显示系统104以高频率呈现一序列帧,从而提供对单个相干场景的感知。为此,显示系统104包括投影子系统110和投影子系统110在其上投影图像的部分透明的显示屏。显示屏位于用户50的视野中,在用户50的眼睛和周围环境之间。
在一些实施例中,投影子系统110采取基于扫描的投影设备的形式,并且显示屏采取基于波导的显示器的形式,其中来自投影子系统110的扫描光被注入该显示器中,以产生例如比无限远(例如,臂长)更近的单个光学观看距离处的图像、多个光学观看距离或焦平面处的图像、和/或堆叠在多个观看距离或焦平面处以表示体积3D对象的图像层。光场中的各层可足够紧密地堆叠在一起,以看起来对人类视觉子系统是连续的(例如,一层在相邻层的混淆锥(cone of confusion)内)。附加地或替代地,图片元素可在两层或更多层上混合以增加光场中各层之间的过渡的感知连续性,即使这些层更稀疏地堆叠(例如,一层在相邻层的混淆锥之外)。显示系统104可是单眼或双眼的。扫描组件包括产生光束(例如,以限定的图案发射不同颜色的光)的一个或多个光源。光源可采取多种形式中的任一种,例如,可操作以根据在像素信息或数据的各个帧中指定的定义的像素图案分别产生红色、绿色和蓝色相干准直光的一组RGB光源(例如,能够输出红色、绿色和蓝色光的激光二极管)。激光提供高的色彩饱和度,并且具有高的能量效率。光耦合子系统包括光波导输入装置,例如,一个或多个反射表面、衍射光栅、反射镜、二向色镜或棱镜,以将光光学耦合到显示屏的末端中。光耦合子系统还包括准直来自光纤的光的准直元件。可选地,光耦合子系统包括光调制装置,该光调制装置被配置为将来自准直元件的光会聚朝向光波导输入装置的中心处的焦点,从而使光波导输入装置的尺寸最小化。因此,显示系统104生成一序列像素信息的合成图像帧,其向用户呈现一个或多个虚拟对象的未失真图像。在2016年8月16日发布的题为“Display System and Method(显示系统和方法)”的美国专利9,417,452和2017年4月4日发布的题为“Planar Waveguide Apparatus with Diffraction Element(s)andSubsystem Employing Same(具有衍射元件的平面波导装置和使用平面波导装置的子系统)”的美国专利9,612,403中提供了描述显示子系统的更多细节。
AR系统100还包括一个或多个传感器,其安装到框架结构102,用于检测用户50的头部的位置和移动和/或用户50的眼睛位置和两眼间距离。这样的传感器可包括图像捕获设备、麦克风、惯性测量单元(IMU)、加速计、指南针、GPS单元、无线电设备和/或陀螺仪。例如,在一个实施例中,AR系统100包括头戴式换能器子系统,该头戴式换能器子系统包括一个或多个惯性换能器,以捕获指示用户50的头部的移动的惯性测量。这样的设备可用于感测、测量或收集关于用户50的头部移动的信息。例如,这些设备可用于检测用户50的头部的测量移动、速度、加速度和/或位置。
AR系统100可进一步包括用户朝向检测模块。用户朝向检测模块检测用户50的头部的瞬时位置,并且可基于从传感器接收的位置数据来预测用户50的头部的位置。用户朝向检测模块还跟踪用户50的眼睛,并且特别地,基于从传感器接收的跟踪数据,跟踪用户50被聚焦的方向和/或距离。
系统100还包括扭曲模块108。扭曲模块108选择与来自第一视角的对象的不可见表面的点相对应的图像数据,并将所选择的图像数据存储在3D数据库160中。与不可见表面相对应的图像数据被称为“非渲染内容”112。当使用存储的图像数据构造来自第二视角的图像时,扭曲模块108还从3D数据库160中检索图像数据。
AR系统100还包括可采用多种形式中的任何一种的控制子系统。控制子系统包括多个控制器,例如一个或多个微控制器、微处理器或中央处理单元(CPU)、数字信号处理器、图形处理单元(GPU)、其他集成电路控制器(例如专用集成电路(ASIC))、可编程门阵列(PGA)(例如现场PGA(FPGA))和/或可编程逻辑控制器(PLU)。控制子系统可包括数字信号处理器(DSP)、中央处理单元(CPU)、图形处理单元(GPU)152以及一个或多个帧缓冲器154。CPU控制系统的整体操作,而GPU 152渲染帧(即,将三维场景转换成二维图像)并将这些帧存储在帧缓冲器154中。虽然未示出,但是一个或多个附加集成电路可控制帧从帧缓冲器154中的读进和/或读出以及显示系统104的扫描设备的操作。帧缓冲器154的读进和/或读出可采用动态寻址,例如,在过度渲染帧的情况下。AR系统100还包括只读存储器(ROM)和随机存取存储器(RAM)。AR系统100还包括3D数据库160,GPU 152可从3D数据库160访问一个或多个场景的图像数据以渲染帧,以及与包含在3D场景内的虚拟声源相关联的合成声音数据。
AR系统100的各种处理部件可物理上包含在分布式子系统中。例如,AR系统100包括例如通过有线引线或无线连接可操作地耦接到显示系统104的一部分的本地处理和数据模块。本地处理和数据模块可以各种配置安装,例如固定地附接到框架结构102、固定地附接到头盔或帽子、嵌入耳机中、可移动地附接到用户50的躯干、或可移动地附接到用户50的臀部(以皮带耦接方式配置)。AR系统100还包括远程处理模块和远程数据存储库,这些远程处理模块和远程数据存储库例如通过有线引线或无线连接可操作地耦接到本地处理和数据模块,使得这些远程模块彼此可操作地耦接并且可用作本地处理和数据模块的资源。本地处理和数据模块可包括省电的处理器或控制器、以及数字存储器(例如,闪存),两者均可用于协助从传感器捕获的和/或使用远程处理模块和/或远程数据存储库获取和/或处理的数据的处理、缓存和存储,可能地在这样的处理或检索之后传递给显示系统104。远程处理模块可包括被配置为分析和处理数据和/或图像信息的一个或多个相对强大的处理器或控制器。远程数据存储库可包括相对大规模的数字数据存储设施,该设施可通过互联网或“云”资源配置中的其他联网配置可用。在一个实施例中,所有数据被存储并且所有计算在本地处理和数据模块中执行,从而允许来自任何远程模块的完全自主的使用。上述各种部件之间的耦接可包括用于提供有线或光通信的一个或多个有线接口或端口或者用于提供无线通信的例如经由射频(RF)、微波和红外(IR)的一个或多个无线接口或端口。在一些实现中,所有通信可是有线的,而在其他实现中,除了光纤之外,所有通信可是无线的。
用非渲染图像数据从不同视角构造第二图像
现在,本公开将讨论通过使用来自先前帧的非渲染内容来构造图像的新视角。可应用“扭曲”来改变从先前视角生成的先前帧中的对象呈现在从新视角生成的新帧中的方式,而无需从新视角重新生成对象。来自新视角的对象根据来自先前帧的内容被构造。
关于这一点,首先讨论用于扭曲图像的替代方法是有益的。在该替代方法中,对于每一帧,与对象的可见表面的点相对应的图像数据被保留(即,渲染)并且被称为“渲染内容”,而与对象的不可见表面的点相对应的图像数据被丢弃(即,非渲染)并且被称为“非渲染内容”。这样,由于对象是从用户的眼睛的先前视角渲染的事实,因此无法仅通过扭曲来自先前视角(例如,第一视角)的先前帧而无附加重新生成,就不能准确地显示来自新视角(例如,第二视角)的新帧,其中仅保留渲染内容-与来自先前视角的对象的可见表面的点相对应的图像数据。图2A-F提供了替代方法和由此产生的问题的图示。
图2A示出了用户(例如,用户50)和包括第一对象和第二对象的场景。用户位于第一位置。两个对象中的每一个都被塑造为规则的块/立方体,在第一对象的正面带有字母“X”,在第二对象的正面带有星形。
用户的眼睛可位于如图2B所示的位置和角度位置。用户的眼睛的特定位置和角度位置将被称为第一视角。在第一视角中,用户的眼睛从使得第一对象完全阻挡了第二对象的角度正注视着第一对象和第二对象。GPU(例如,GPU 152)渲染包括来自第一视角的场景的图像的帧。即使第二对象在场景中,场景的图像也将被渲染为仅示出第一对象的正面,而第一对象的任何其他面或第二对象的任何面不会被渲染,因为从第一视角看,用户只能看到第一对象的正面。
渲染包括来自第一视角的场景的图像的帧。该帧包括图像数据。如图2C所示,仅保留/存储与来自第一视角的第一和第二对象的可见表面(即,第一对象的正面)的点相对应的图像数据。与可见表面的点相对应的图像数据被称为“渲染内容”。丢弃与来自第一视角的第一和第二对象的不可见表面(例如,第一对象的除正面之外的所有面和第二立方体的所有面)的点相对应的图像数据。与第一对象和第二对象的不可见表面相对应的图像数据被称为“非渲染内容”。除了渲染内容之外,应用已经丢失了第一视角的其他内容(例如,非渲染内容)。在一些实施例中,可在深度测试期间丢弃非渲染内容。深度测试通过确保仅在包括场景的图像的帧中绘制第一对象和第二对象的可见表面的点,确保渲染内容看起来是正确的。对于任何给定的像素,深度测试仅保留第一对象和第二对象的可见表面的点,并丢弃第一对象和第二对象的不可见表面的点。这样,该应用通过丢弃非渲染内容而丢失了来自第一视角的上下文。因此,对于每个像素,保留什么和丢弃什么取决于视角。
如图2D所示,用户现在移动至直接在第一位置右侧的第二位置。此时,与第一位置相比,用户将从不同的位置观看第一和第二对象。
用户的眼睛可位于图2E所示的位置和角度位置。用户的眼睛的特定位置和角度位置将被称为第二视角。在第二视角中,用户的眼睛应该看到与来自第一视角的帧不同的帧。在第二视角中,用户的眼睛应看到第一对象的正面和右面以及第二对象的正面和右面二者。
如图2F所示,扭曲可用于改变来自第一视角的先前帧,,以便其在来自第二视角的新帧中示出。这种方法采用来自第一视角的先前帧的图像的渲染内容,并改变了呈现渲染内容的方式以尝试显示来自第二视角的渲染内容。来自先前帧的渲染内容包括与来自第一视角的第一对象和第二对象的可见表面的点相对应的图像数据。这种方法的一个问题是,来自先前帧的渲染内容不包括与从第二视角可见的第一对象和第二对象的表面的点相对应的图像数据。在此示例中,先前帧是根据第一视角生成的,这意味着渲染内容不包括与第一对象和第二对象的不可见表面的点相对应的图像数据。
因此,即使应用了扭曲,在扭曲的图像中也将仅看到第一对象(先前渲染的)的正面。第一对象的所有其他面(正面除外)和第二对象的所有面在扭曲图像中将不存在,因为它们先前未进行渲染。这样,扭曲的图像是应从第二视角可看到的缺失内容(例如,缺失内容包括第一对象的右面以及第二对象的正面和右面),因为第二位置的观看视角(即,第二视角)不同于第一位置的观看视角(例如,第一视角)。这会产生许多影响新帧的可用性和准确性的伪像。
该问题在图2F中示出,其中将扭曲应用于来自第一视角的来自先前帧的渲染内容,以构造来自第二视角的新帧而无需重新生成。从第二视角来看,这会导致显示不准确。特别地,由于来自第二视角的新帧缺失第一对象的右面和第二对象的整体,所以发生了去遮挡问题。这样,当用户从不同视角(即,第二视角)观看先前帧时,应用将来自先前帧的渲染内容映射到新位置。但是,由于已经丢弃了来自先前帧的非渲染内容,因此替代扭曲(例如,使用渲染内容和非渲染内容)或除了扭曲之外,没有任何“源数据”可用。这样,应用仅映射来自先前帧的渲染内容。通过仅使用来自第一视角的来自先前帧的渲染内容构造来自第二视角的新帧来应用构造,导致来自第二视角的描绘不准确,因为应用丢弃了来自第一视角的非渲染内容,这意味着该应用之前丢失了不可见表面的图像数据。将在图2F顶部生成的帧与应该从图2F底部的第二视角显示的帧进行比较。
现在,说明书将描述一种解决来自图2A-2F中描述的替代方法的有问题的结果的方法。
通过生成使用渲染内容和非渲染内容的图像数据来显示第二视角
图3示出了一种方法的流程图,该方法使用来自先前视角的先前帧的渲染内容和非渲染内容显示来自新视角的新帧而无需重新生成。图3中描述的方法解决了较早替代实施例中提出的去遮挡问题。
在302处,识别第一视角。在一些实施例中,该动作通过捕获包括从第一视角捕获的图像数据的帧来实现。在一些实施例中,姿势数据也被捕获。通过捕获来自第一视角的图像数据(即,用户(例如,用户50)的眼睛的特定位置和角度位置)的帧来记录帧。另外,确定用户的头部/眼睛的姿势数据。如果从其捕获帧的照相机被安装到框架结构(例如,框架结构102),则可基于来自头部姿势的已知偏移来推断摄像头姿势。如果摄像头位于环境/房间内的固定位置,则可根据房间/环境配置数据知道固定的摄像头位置和朝向。
在304处,渲染与来自第一视角的对象的可见表面的点相对应的图像数据。与可见表面的点相对应的图像数据被称为“渲染内容”。渲染内容可通过任何已知方法来渲染。在一些实施例中,CPU可控制系统(例如,AR系统100)的整体操作,而GPU(例如,GPU 152)可渲染帧(即,将三维场景转换成二维图像)并且可将帧存储在帧缓冲器(例如,帧缓冲器154)中。这些对象具有限定的形状和坐标位置,并且因此可由系统渲染为要在其逻辑位置和朝向向用户显示的内容。
在306,存储与来自第一视角的对象的可见表面的点相对应的图像数据和与对象的不可见表面的点相对应的图像数据。与可见表面的点相对应的图像数据被称为“渲染内容”,与不可见表面的点相对应的图像数据被称为“非渲染内容”。图5-7和9描述了选择和存储内容(渲染内容和/或非渲染内容)的不同方法。在一些实施例中,应用还可确定将要存储的内容的不同粒度。在一些实施例中,内容被存储在计算机可读介质中。内容可存储在任何类型的数据结构中。
在一个实施例中,内容被存储为链接列表。在这种方法中,内容通过链接列表进行映射,并且链接列表的不同元素与体积空间内的不同位置相关。每像素的链接列表可非常稀疏/紧凑,因为链接列表不保持或包括空单元(cell)。然而,链接列表的大小可是不可预测的,当需要一致的行为时,不希望如此。链接列表的分辨率关于深度是非线性的,因为像素可具有恒定的角度大小,并因此随着距离的增加而增加线性大小。
在另一个实施例中,内容存储在阵列结构、真实的体积表示等中。真实的体积表示可具有恒定的数据足迹,并且可构造为使得具有恒定的线性大小(这减少较大的视角变化带来的分辨率问题),但是总数据大小可以是很大,因为真实的体积表示的许多单元可以是空的。在一些实施例中,内容存储在体素、表面定义(例如,壳、曲线等)、N维数据结构或其图形表示等中。
在308,接收显示来自第二视角的帧的请求。在一些实施例中,这意味着用户已经从第一位置移动到第二位置。应用可使用头戴式耳机中的传感器和加速计来识别用户的第一和第二位置。在另一个实施例中,外部摄像头也可用于识别用户的第一和第二位置。
在310处,使用来自先前帧的包括渲染内容和非渲染内容的存储内容来生成来自第二视角的新帧。来自先前帧的渲染内容和非渲染内容在构造期间用作构造来自第二视角的新帧的源,而无需完全重新生成整个帧。通过保持来自先前帧的内容,应用可确定哪些内容从第二视角可见。一旦应用确定了哪些内容从第二视角可见,应用采用存储的内容并构造应从第二视角可见的内容。如上所述,当图像数据不再可用于(例如,被丢弃)以理解在第二视角中可见的内容时,存在去遮挡问题。在这种方法中,解决了去遮挡问题,因为除了渲染内容之外,应用还保存了非渲染内容,以供构造新帧使用。
在一个实施例中,可将扭曲应用于来自先前帧的渲染内容,并且使用来自先前帧的非渲染内容来“填充”扭曲的渲染内容的任何“孔”。应用将对其应用构造的内容的示例包括例如在先前帧中不可见的对象和/或在先前帧中不可见的可见对象的部分。在关于图4G的描述中描述了关于构造过程的附加细节。
在312处,然后根据自第二视角构造的帧在系统内实时地向用户显示。
图4A-4G示出了根据一些实施例的用于使用来自第一视角的渲染内容和非渲染内容的图像数据来显示帧的第二视角的方法的示例。图4A示出了用户(例如,用户50)和包括第一对象和第二对象的场景。用户位于第一位置。两个对象中的每一个都被塑造为规则的块/立方体,在第一对象的正面带有字母“X”,以及在第二对象的正面带有星形。
用户的眼睛可位于如图4B所示的位置和角度位置。用户的眼睛的特定位置和角度位置将被称为第一视角。在第一视角中,用户的眼睛从使得第一对象完全阻挡了第二对象的角度注视着第一对象和第二对象。GPU(例如,GPU 152)渲染来自第一视角的包括场景的图像的帧。在图4C中,GPU渲染来自第一视角的帧,仅显示带有字母“X”的第一对象的正面,而没有渲染第一对象的侧面的任何部分或第二对象的任何部分,因为从第一视角看,用户只能看到第一对象的正面。
渲染来自第一视角的包括场景的图像的帧。该帧包括图像数据。保留/存储与来自第一视角的第一和第二对象的可见表面的点相对应的图像数据。与可见表面的点相对应的图像数据被称为“渲染内容”。另外,也保留/存储与来自第一视角的第一和第二对象的不可见表面的点相对应的图像数据。与不可见表面的点相对应的图像数据被称为“非渲染内容”。在图4D中,应用选择并存储来自第一视角的渲染内容和非渲染内容。渲染内容的图像数据可包含与在原始渲染帧中显示的对象或其部分的体积数据相对应的信息,而非渲染内容的图像数据可包含与在原始渲染帧中未显示的对象或其部分的体积数据相对应的信息。
如图4E所示,用户现在移到直接在第一位置右边的第二位置。此时,与第一位置相比,用户将从不同的位置观看第一和第二对象。用户的眼睛可位于图4F所示的位置和角度位置。用户的眼睛的特定位置和角度位置将被称为第二视角。在第二视角中,用户的眼睛应该看到与来自第一视角的帧不同的帧。在第二视角中,用户的眼睛应看到第一对象的正面和右面以及第二对象的正面和右面。
如图4G所示,可使用来自第一视角的来自先前帧的渲染内容和非渲染内容来应用构造,以创建来自第二视角的新帧,而无需完全重新生成整个场景。应用将首先识别渲染内容(例如,第一对象的正面)和非渲染内容(例如,第一对象的右面和第二对象的正面和右面)中的哪个从第二视角可见。然后,应用采用与上面识别的现在可见内容相对应的存储的渲染内容和非渲染内容,并构造来自第二视角的应可见的内容。
在一个实施例中,将扭曲应用于来自先前帧的渲染内容,并且使用来自先前帧的非渲染内容来“填充”扭曲的渲染内容的任何“孔”,以构造在来自第二视角的新帧中应可见但不包括在来自先前帧的渲染内容中的第一和第二对象的部分。
图4A-4G示出了对图2A-2F中描述的替代实施例的改进,由于新方法通过存储来自第一视角的来自先前帧的非渲染内容作为用于构造来自第二视角的新帧的源,从而消除了去遮挡问题。这种新方法还可显著减少扭曲期间可出现的视频伪像量。
通过扭曲和生成,使用渲染内容和非渲染内容的图像数据显示第二视角
图5示出了一种方法的流程图,该方法使用来自先前视角的渲染内容和非渲染内容通过扭曲和生成来显示来自新视角的新帧。
图5的502至508与图3的302至308相同。在510,渲染现在从第二视角可见但之前从第一视角不可见且因此未渲染的对象。例如,应用可确定哪些对象从第二视角可见,将从第二视角可见的对象与来自第一视角的存储的内容(例如,渲染内容和非渲染内容)进行比较,以识别现在从第二视角可见但之前从第一视角不可见且因此未渲染的对象,然后渲染识别的对象以产生新渲染内容。
在512处,扭曲不需要渲染的来自第二视角的可见对象的渲染内容。例如,应用可确定哪些对象从第二视角可见,将从第二视角可见的对象与来自第一视角的存储的内容(例如,渲染内容和非渲染内容)进行比较,以识别现在从第二视角可见且之前从第一视角也可见并且因此被渲染的对象,以及扭曲识别的对象以产生扭曲的渲染内容。
在一些实施例中,应用可确定哪些对象从第二视角可见,将从第二视角可见的对象与来自第一视角的存储的内容(例如,渲染内容和非渲染内容)进行比较,以识别(1)现在从第二视角可见但之前从第一视角不可见的对象以及(2)现在从第二视角可见且之前从第一视角也可见的对象。在该实施例中,然后在510,应用渲染现在从第二视角可见但之前从第一视角不可见的识别的对象以产生新的渲染内容,并且在512,扭曲现在从第二视角可见且之前从第一视角也可见的对象以产生扭曲的渲染内容。
在514,通过将新的渲染内容和扭曲的渲染内容进行组合来生成来自第二视角的新帧。新的渲染内容和扭曲的渲染内容在构造期间用作用于构造来自第二视角的新帧的源,而不完全重新生成整个帧。此外,图5的516与图3的312相同。
图6A-G示出了根据一个实施例的用于使用来自第二视角的新渲染内容和来自第一视角的内容来显示帧的第二视角的方法的示例。图6A示出了用户(例如,用户50)和包括第一至第六对象的场景。用户位于第一位置。六个对象中的每一个都被塑造为规则的块/立方体,第一对象的正面带有字母“X”,第二对象的正面带有星形。
用户的眼睛可位于如图6B所示的位置和角度位置。用户的眼睛的特定位置和角度位置将被称为第一视角。在第一视角中,用户的眼睛从使得第一对象完全阻挡了第二对象以及第三至第六对象可见的角度注视着第一至第六对象。GPU(例如,GPU 152)渲染来自第一视角的包括场景的图像的帧。在图6C中,GPU渲染来自第一视角的帧,仅示出第一对象以及第三至第六对象的正面,而不渲染第一对象以及第三至第六对象的侧面的任何部分或第二对象的任何部分,因为从第一视角看,用户只能看到第一对象和第三至第六对象的正面。
渲染来自第一视角的包括场景的图像的帧。该帧包括图像数据。保留/存储与来自第一视角的第一至第六对象的可见表面的点相对应的图像数据。与可见表面的点相对应的图像数据被称为“渲染内容”。另外,也保留/存储与来自第一视角的第一至第六对象的不可见表面的点相对应的图像数据。与不可见表面的点相对应的图像数据被称为“非渲染内容”。在图6D中,应用选择并存储来自第一视角的渲染内容和非渲染内容。渲染内容的图像数据可包含与在原始渲染帧中显示的对象或其部分的体积数据相对应的信息,而非渲染内容的图像数据可包含与在原始渲染帧中未显示的对象或其部分的体积数据相对应的信息。
如图6E所示,用户现在移动到直接在第一位置的右边的第二位置。此时,与第一位置相比,用户将从不同的位置注视着第一至第六对象。用户的眼睛可位于图6F所示的位置和角度位置。用户的眼睛的特定位置和角度位置将被称为第二视角。在第二视角中,用户的眼睛应该看到与来自第一视角的帧不同的帧。在第二视角中,用户的眼睛应看到第一至第六对象中每个对象的正面和右面。
如图6G所示,可使用新渲染内容以及来自第一视角的来自先前帧的渲染内容和非渲染内容来应用构造,以创建来自第二视角的新帧,而无需完全重新生成整个场景。例如,应用将确定哪些对象从第二视角可见(例如,第一至第六对象),将从第二视角可见的对象与来自第一视角的存储的内容(例如,渲染内容和非渲染内容)进行比较,以识别(1)现在从第二视角可见但之前从第一视角不可见的对象(例如,第二对象和其他对象的右侧面)以及(2)现在从第二视角可见且之前从第一视角也可见的对象(例如,第一对象和第三至第六对象的正面)。然后,应用渲染现在从第二视角可见但之前从第一视角不可见的识别的对象(例如,第二对象和其他对象的右侧面),以产生新的渲染内容,并扭曲现在从第二视角可见且之前从第一视角也可见的对象(例如,第一对象和第三至第六对象的正面),以产生扭曲的渲染内容。
执行图像构造以构造来自第二视角的新帧。图像构造包括将新的渲染内容和扭曲的渲染内容进行组合。新的渲染内容和扭曲的渲染内容在图像构造期间用作用于构造来自第二视角的新帧的源,而无需完全重新生成整个帧。
选择用于存储的非渲染内容的各种实施例
存在人们可希望为非渲染内容存储的不同集合、数量、粒度、类型和/或特定图像元素。图7-8和10中的流程描述了用于选择要存储哪些可用非渲染内容的替代方法的细节。在特定情况下使用每种方法可更有利。重申一下,与来自第一视角的对象的不可见表面的点相对应的图像数据被称为“非渲染内容”。
图7示出了根据一个实施例的用于通过仅存储内容的表面点来存储内容的方法的流程图。这种方法基于对象的内部点不可见的想法来操作。因此,为了降低存储成本,保留/存储与对象的表面点相对应的内容的图像数据,并且丢弃与对象的非表面点相对应的内容的图像数据。
在702处,识别与来自第一视角的对象的可见表面和不可见表面的点相对应的图像数据。与可见表面相对应的图像数据被称为“渲染内容”,以及与不可见表面相对应的图像数据被称为“非渲染内容”。
在704,分析来自第一视角的渲染内容和非渲染内容。在706,确定渲染内容和非渲染内容的特性,诸如来自第一视角的对象的点是表面点还是内部点、对象是半透明的还是不透明的等等。如果对象的点被识别为表面点,则存储710与该表面点相对应的内容(例如,渲染内容和/或非渲染内容)的图像数据,以用于构造来自不同视角的帧。如果没有将对象的点识别为表面点,则在708处丢弃与非表面点相对应的内容(例如,渲染内容和/或非渲染内容)的图像数据,因为该内容将不会用于构造来自不同视角的帧。在一些实施例中,如果对象的特性指示对象是半透明对象,则可存储半透明对象的一些或全部非表面点以用于构造来自不同视角的帧,而不是丢弃。例如,可存储混合模式以及半透明对象的一些或全部非表面点的颜色数据。
如上所述,内容可存储在任何合适的数据结构中,例如,链接列表、体素、表面定义(例如,壳、曲线等)、N维数据结构或其图形表示等。
图7中描绘的方法的优点在于该方法需要较少的存储资源,因为仅存储了与表面点相对应的内容。但是,此方法的缺点是,应用可需要更多的处理能力和时间来确定对象的内容是否为表面点。
图8示出了根据一个实施例的仅用于存储与预测的头部移动相对应的内容的方法的流程图。该方法基于以下想法操作:应用可不需要存储所有内容,但是应用可在预测的头部移动的计算边界内选择和存储内容。如果内容位于预测的头部移动的计算边界之外,则该内容可被丢弃,因为用户不太可能在该位置。
在802,应用预测用户的头部移动。该应用可通过使用安装到框架结构(例如,框架结构102)用于检测用户的头部的位置和移动和/或用户的眼睛位置和眼间距离的一个或多个传感器来预测用户的头部移动。例如,如果用户当前正朝着相同的方向移动,或者在过去的某个时间段内已经以特定的速度移动过,则应用可预测用户将在不久的将来朝着相同的方向移动。
在一些实施例中,这些传感器可包括图像捕获设备(诸如摄像头)、麦克风、惯性测量单元(IMU)、加速度计、指南针、GPS单元、无线电设备和/或陀螺仪。这些设备可用于感测、测量或收集有关用户的头部移动的信息。例如,这些设备可用于检测和/或测量用户的头部的移动、速度、加速度和/或位置。在一些实施例中,用户朝向检测模块检测用户的头部的瞬时位置,并且可通过从传感器接收的位置数据来预测用户的头部的位置。用户检测朝向模块还可基于从传感器接收的跟踪数据来跟踪用户的眼睛,以及跟踪用户聚焦的方向和/或距离。
在804处,计算预测的头部移动的边界。通过考虑用户的预测方向、当前速度和/或移动的预测速度来计算边界。根据这些值,可计算边界。在一个实施例中,预测头部移动的所计算的边界表示所预测的头部移动的误差。
在一个实施例中,预测头部移动的所计算的边界与用户将针对第二位置移动的最大预测移动相对应。应用存储不在预测的运动范围内的内容(例如,渲染内容和/或非渲染内容)可能不是有效的,因为该内容很可能不会被使用。在806,应用确定在预测头部移动的所计算的边界内的内容。
在808处,存储预测头部移动的所计算的边界内的内容。如上所述,内容可存储在任何合适的数据结构中,例如,链接列表、体素、表面定义(例如,壳、曲线等)、N维数据结构或其图形表示等等)。
该方法的缺点是应用可能需要更多的处理能力来计算预测头部移动的边界并确定内容是否在预测头部移动的所计算的边界内。
构造包含半透明对象的场景
如前所述,可将扭曲应用于来自先前帧的渲染内容,并且可使用来自先前帧的渲染内容和/或非渲染内容来“填充”扭曲的渲染内容的任何“孔”。图9A-9F描述了来自先前帧的渲染内容并使其扭曲并且使用其中先前帧包括半透明对象的非渲染内容填充孔的问题。半透明对象为所描述的前述实施例增加了额外一层复杂度,因为用户可“看透”半透明对象以观看半透明对象后面的不透明对象。此外,当通过来自第一视角的半透明对象观看不透明对象时,半透明对象后面的不透明对象可显得失真或模糊。如果以模糊或混合方式渲染半透明对象后面的不透明对象,则从第二视角看,很难应用经典的扭曲来在扭曲的帧中获得不透明对象的真实视图。
图9A-9F示出了由扭曲半透明和不透明对象导致的问题。图9A示出了用户(例如,用户50)和包括第一对象和第二对象的场景。用户位于第一位置。第一对象是薄立方体,该薄立方体由半透明材料制成使得该薄立方体被“看透”,但将使半透明材料后面的任何对象看起来都失真或模糊。第二对象是正面带有星形的不透明对象。
用户的眼睛可位于如图9B所示的位置和角度位置。用户的眼睛的特定位置和角度位置将被称为第一视角。在第一视角中,用户的眼睛正从使得第二对象直接位于第一对象后面的角度直接注视着第一对象和第二对象。从第一视角看,可通过第一对象看到第二对象的正面,但是由于位于第二对象的前面的第一对象的半透明材料,,第二对象的正面上的星形显得模糊或失真。
如图9C所示,可通过第一对象看到第二对象上标有星形的表面的点。保留/存储与来自第一视角的第一和第二对象(例如,第一对象的正面和第二对象的正面的模糊或失真版本)的可见表面(例如,清晰可见和不清晰可见(例如,模糊或失真))的点相对应的图像数据。与可见表面的点相对应的图像数据被称为“渲染内容”。丢弃与来自第一视角的第一和第二对象的不可见表面(例如,第一对象的除了正面以外的所有面和第二对象的所有不模糊面)的点相对应的图像数据。与第一对象和第二对象的不可见表面相对应的图像数据被称为“非渲染内容”。除了渲染内容之外,应用还丢失了来自第一视角的其他内容(例如,非渲染内容)。在深度测试期间,丢弃非渲染内容,因为该应用仅保留渲染内容。如果用户尝试观看来自另一角度或视角的帧,则非渲染内容将无用,因为应用已将其丢弃。
如图9C所示,GPU(例如,GPU 152)渲染来自第一视角的包括场景的图像的帧。渲染可包括混合第一对象和第二对象。来自第一视角的帧示出了通过第一对象的正面观看时第二对象的正面,使得第二对象的正面显得模糊或失真。
如图9D所示,用户现在移动到直接在第一位置的右边的第二位置。此时,与第一位置相比,用户将从不同的位置注视着第一和第二对象。
用户的眼睛可位于图9E所示的位置和角度位置。用户的眼睛的特定位置和角度位置将被称为第二视角。在第二视角中,用户的眼睛应该看到(1)没有第一对象后面的第二对象的失真版本的第一对象(例如,先前帧中示出的图像)以及(2)没有任何模糊或失真的第二对象。具体地,用户应该看到第一对象的正面和右面以及第二对象的正面和右面,其中第二对象的正面被没有模糊或失真地看到。
如图9F所示,可使用扭曲改变来自第一视角的先前帧,以便从第二视角显示它。这种方法采用来自第一视角的先前帧的图像的渲染内容,并改变呈现渲染内容的方式,以试图显示来自第二的渲染内容。在此示例中,先前帧是根据第一视角生成,这意味着渲染内容包括与第一和第二对象的可见表面相对应的图像数据(例如,第一对象的前(front)表面包含第二对象的正面的模糊或失真版本),不包括与第一和第二对象的不可见表面相对应的图像数据(例如,第一对象的除了正面以外的所有面和以不模糊或不失真方式的第二对象的所有面)。因此,即使应用了扭曲,第一对象的除正面以外的所有面(包括第二对象的正面的模糊或失真版本)以及以不模糊或不失真方式的第二对象的所有面都将不存在于扭曲图像中。这会产生许多影响新帧的可用性和准确性的伪像。
在图9F中示出了该问题,其中将扭曲应用于来自第一视角的来自先前帧以构造来自第二视角的新帧而无需重新生成。从第二视角来看,这会导致显示不准确。使用此方法可能导致两个问题。首先,第一对象不应包括第二对象的正面的模糊或失真版本。其次,第二对象(即,第二对象的不模糊或不失真版本)从扭曲图像中完全缺失了。将在图9F顶部生成的帧与应该从图9F底部的第二视角示出的帧进行比较。图9F的底部示出了第一对象和第二对象的无遮挡图,其中第一对象没有透明性并且第二对象没有模糊或失真被应用。
图9F的中间示出了对图9F顶部所示问题的可能解决方案。在一些实施例中,保留/存储来自先前帧的渲染内容和非渲染内容。将扭曲应用于渲染内容,并且可使用渲染内容和/或非渲染内容“填充”扭曲的渲染内容的任何“孔”。但是,这有一些缺点。扭曲渲染内容并且然后使用渲染内容和/或非渲染内容填充孔可导致意外的伪像。例如,因为渲染内容包括第二对象的正面的模糊或失真版本,所以扭曲的渲染内容也包括第二对象的正面的模糊或失真版本,并且使用渲染内容和/或非渲染内容填充扭曲渲染内容的孔只添加第二对象(第二对象的正面和右面二者)的非模糊或非失真版本,但是,它不移除扭曲的渲染内容中第二对象的正面的模糊或失真版本。因此,扭曲来自先前帧的渲染内容并使用来自先前帧的渲染内容和/或非渲染内容填充扭曲内容的孔可能不是令人期望的。
现在,本公开内容将描述解决来自图9A-9F中描述的替代方法的有问题的结果的方法。图10和11A-11G描述了通过分别保留/存储半透明对象和不透明对象的数据来解决图9A-9F中提出的扭曲问题的解决方案。分别保留/存储数据还有助于确定哪些对象应该和不应该受半透明对象的影响。
图10示出了根据一个实施例的用于存储与半透明对象和不透明对象相对应的内容的方法的流程图。在这种方法中,应用将存储与半透明对象相对应的半透明点和与不透明对象相对应的不透明点。
在1002,应用确定来自第一视角的不透明对象的不透明点。与不透明点相对应的图像数据描述了不应用模糊或失真的不透明点。当用户移动到不同位置时(例如,可在不通过半透明对象的半透明表面观看不透明点的情况下观看不透明对象的不透明点的位置),应用将具有足够的关于不透明对象的信息和细节,以构造来自不同视角的不透明对象。
在1004,存储与不透明点相对应的图像数据。与不透明点相对应的图像数据可存储在任何类型的数据结构中。如上所述,图像数据可被存储为链接列表、体素、表面定义(例如,壳、曲线等)、N维数据结构或其图形表示等。在一些实施例中,应用还可确定将被存储的图像数据的粒度。
在1006,应用确定半透明对象的半透明点。半透明对象可例如是雾、烟或“毛玻璃”。如果半透明对象在不透明对象的前面,则这使得不透明对象可通过半透明对象看到。当通过半透明对象观看不透明对象时,由于不透明对象的视图受到半透明对象的影响(例如,受半透明对象的半透明材料的影响),该不透明对象将看起来模糊或失真。与半透明点相对应的图像数据描述没有应用模糊或失真的半透明点。当用户移动到不同位置(例如,可在不通过半透明对象的半透明表面观看不透明对象的不透明点的情况下观看半透明对象的半透明点的位置)时,应用将具有关于半透明对象的足够信息和细节,以便构造来自不同视角的半透明对象。
在1008,存储与半透明点相对应的图像数据。存储与半透明点相对应的图像数据,以在生成与第一视角不同的视角(例如,第二视角)时正确地处理透明性。如上所述,图像数据可被存储为链接列表、体素、表面定义(例如,壳、曲线等)、N维数据结构或其图形表示等。在一些实施例中,应用还可确定将被存储的图像数据的粒度。
图11A-11G示出了根据一个实施例的用于使用与来自第一视角的不透明点和半透明点相对应的图像数据来显示帧的第二视角的示例性方法。图像数据包括渲染内容和非渲染内容。
图11A-11C示出了与图9A-9C中相同的图像设置,其中用户位于第一位置,并且用户的眼睛的特定位置和角度位置被称为第一视角。用户、第一对象(半透明对象)和第二对象(不透明对象)处于相同的初始位置。在图11C中,GPU(例如,GPU 152)渲染来自与图9C相同的第一视角的包括场景的图像的帧。来自第一视角的帧示出了通过第一对象的正面观看时第二对象的正面,使得第二对象的正面看起来模糊或失真。图11E-11F示出了与图9D-9E相同的图像设置,其中用户位于第二位置,并且在第二位置的用户的眼睛的特定位置和角度位置被称为第二视角。
在图11D中,应用选择并存储与(1)第二对象的不透明点和(2)第一对象的半透明点相对应的非渲染内容。应用存储第二对象的不透明点以及它们各自的深度信息,以及第一对象的半透明点以及它们各自的深度信息。在一些实施例中,可存在要存储的半透明点和/或不透明点的数量的上界,以减轻对存储存储器的关注。非渲染内容将被用于处理任何附加视角中的透明性。在一些实施例中,除了来自第一视角的帧之外,还使用非渲染内容。现在,当用户移动到不同视角时(例如,从第一视角到第二视角),应用可使用非渲染内容以构造来自新视角的新帧。
在一些实施例中,图像数据(用于渲染内容和/或非渲染内容)包括体积和深度信息。此外,图像数据可包括参考数据,该参考数据包含要确定不透明对象是否受到半透明对象影响以及反之亦然的信息。该应用包含要确定受半透明对象影响的任何不透明对象以及反之亦然的逻辑,因为已分别保持不透明和透明对象的图像数据。
如图11E所示,用户移动到直接在第一位置的右边的第二位置。此时,与第一位置相比,用户将从不同的位置注视着第一和第二对象。用户的眼睛可位于图11F所示的第二视角处。在第二视角中,用户的眼睛应该看到与来自第一视角的帧不同的帧。在第二视角中,用户的眼睛应看到第一对象的正面和右面以及第二对象的正面和右面。具体地,用户现在将看到第二对象正面上的星形,而不会与第一对象产生任何模糊或失真。
如图11G所示,可对来自先前帧的包括来自第一视角的渲染帧的内容和来自第一视角的非渲染内容应用构造以创建来自第二视角的新帧,而无需完全重新生成整个场景。应用将首先识别哪些非渲染内容(例如,第一对象的右面和第二对象的正面和右面)从第二视角可见。然后,应用将构造应用于存储的(1)不透明点和(2)半透明点的图像数据,以生成来自第二视角的帧,而无需完全重新生成第二视角。如上所述,去遮挡问题不再存在,因为该应用已保持了在构造期间使用的非渲染内容的图像数据。
系统架构概述
图12是适合于实现本公开的一个或多个实施例的说明性计算系统1400的框图。计算系统1400包括用于传达信息的总线1406或其他通信机制,其互连子系统和设备,诸如处理器1407、主存储器1408(例如,RAM)、静态存储设备1409(例如,ROM)、磁盘驱动器1410(例如,磁性或光学)、通信接口1414(例如,调制解调器或以太网卡)、显示器1411(例如,CRT或LCD)、输入设备1412(例如,键盘)和光标控制。
根据一个实施例,计算系统1400通过处理器1407执行包含在主存储器1408中的一个或多个指令的一个或多个序列来执行特定操作。这样的指令可从另一计算机可读/可用介质(诸如静态存储设备1409或磁盘驱动器1410)读入主存储器1408中。在替代实施例中,可使用硬连线电路代替软件指令或与软件指令组合来实现本公开。因此,实施例不限于硬件电路和/或软件的任何特定组合。在一个实施例中,术语“逻辑”应表示用于实现本公开的全部或部分的软件或硬件的任何组合。
如本文所使用的,术语“计算机可读介质”或“计算机可用介质”是指参与向处理器1407提供指令以供执行的任何介质。这样的介质可采取许多形式,包括但不限于非易失性介质和易失性介质。非易失性介质包括例如光盘或磁盘,例如磁盘驱动器1410。易失性介质包括动态存储器,诸如主存储器1408。
计算机可读介质的常见形式包括例如软盘、柔性盘、硬盘、磁带、任何其他磁性介质、CD-ROM、任何其他光学介质、打孔卡、纸带、任何其他带孔物理介质、RAM、PROM、EPROM、FLASH-EPROM、任何其他存储器芯片或盒式磁带或计算机可从中读取的任何其他介质。
在一个实施例中,由单个计算系统1400执行用于实践本公开的指令序列的执行。根据其他实施例,由通信链路1415(例如,LAN、PTSN、或无线网络)耦接的两个或多个计算系统1400可相互协调地执行实践本公开所需的指令序列。
计算系统1400可经由通信接口1414通过通信链路1415来发送和接收消息、数据和包括程序(例如,应用代码)的指令。所接收的程序代码可按其接收由处理器1407执行,和/或存储在磁盘驱动器1410或其他非易失性存储设备中以供以后执行。计算系统1400可通过数据接口1433与外部存储设备1431上的数据库1432通信。
在前述说明书中,已经参考本公开的特定实施例描述了本公开。然而,将显而易见的是,在不脱离本公开的更广泛的精神和范围的情况下,可对其进行各种修改和改变。例如,参考过程动作的特定顺序来描述上述过程流程。然而,在不影响本公开的范围或操作的情况下,可改变许多所描述的过程动作的顺序。因此,说明书和附图应被认为是说明性而非限制性的。
Claims (21)
1.一种用于使用来自先前视角的渲染内容和非渲染内容构造新帧的方法,所述方法包括:
渲染从第一视角可见的第一组对象的可见表面的点;
存储来自所述第一视角的渲染内容和非渲染内容二者,所述渲染内容与来自所述第一视角的所述第一组对象的所述可见表面的所述点相对应,并且所述非渲染内容与来自所述第一视角的所述第一组对象的不可见部分相对应;
接收显示来自第二视角的新帧的请求;
渲染从所述第二视角可见且从所述第一视角不可见的第二组对象的可见表面的点,包括:
确定从所述第二视角可见的第三组对象;
将来自所述第二视角的所述第三组对象与来自所述第一视角的所存储的渲染内容进行比较,以识别所述第二组对象,其中,所述第二组对象包括来自所述第三组对象中不在所存储的渲染内容中的对象;以及
渲染所述第二组对象的所述可见表面的所述点;
将所存储的渲染内容中的至少一些从所述第一视角扭曲到所述第二视角;
使用来自所述第一视角的所述渲染内容和所述非渲染内容生成来自所述第二视角的所述新帧;以及
显示来自所述第二视角的所述新帧,
其中,生成来自所述第二视角的所述新帧包括组合来自所述第二视角的所述第二组对象的可见表面的点的渲染内容和从所述第一视角扭曲到所述第二视角的所存储的渲染内容。
2.根据权利要求1所述的方法,还包括:通过捕获用户的第一姿势来识别所述第一视角。
3.根据权利要求1所述的方法,其中,存储来自所述第一视角的所述渲染内容和所述非渲染内容二者包括:将所述渲染内容和所述非渲染内容两者存储在以下中的至少一个中:链接列表,阵列结构,真实的体积表示,体素,表面定义,N维数据结构,以及N维图形表示。
4.根据权利要求1所述的方法,还包括:确定来自所述第一视角的所述第一组对象的渲染内容和非渲染内容二者的不同粒度。
5.根据权利要求1所述的方法,其中,将所存储的内容中的至少一些从所述第一视角扭曲到所述第二视角包括:
将来自所述第二视角的所述第三组对象与来自所述第一视角的所存储的渲染内容进行比较,以识别在所述第三组对象和所存储的渲染内容两者中的对象;
扭曲在所述第三组对象和所存储的渲染内容两者中的所述对象。
6.根据权利要求1所述的方法,其中,存储来自所述第一视角的所述渲染内容和所述非渲染内容二者包括:
识别来自所述第一视角的所述渲染内容和所述非渲染内容;
分析所述渲染内容和所述非渲染内容以确定内容是否与表面点和非表面点之一相对应;
丢弃与非表面点相对应的所述内容;以及
存储与所述表面点相对应的所述内容。
7.根据权利要求1所述的方法,其中,存储来自所述第一视角的所述渲染内容和所述非渲染内容二者包括:
预测用户的头部移动;
至少部分地基于预测方向、所述用户的当前移动速度和所述用户的预测移动速度中的一个或多个,计算所预测的所述用户的头部移动的边界,所述边界与所述第二视角的最大预测头部移动相对应;
确定在所预测的头部移动的所计算的边界内的内容;以及
存储所述所计算的边界内的所述内容。
8.根据权利要求1所述的方法,其中,存储来自所述第一视角的所述第一组对象的渲染内容和非渲染内容二者还包括:
确定一个或多个不透明对象的不透明点;
存储与所述不透明点相对应的图像数据;
确定一个或多个半透明对象的半透明点;以及
存储所述半透明点的图像数据,其中,所述第一组对象包括所述一个或多个不透明对象和所述一个或多个半透明对象。
9.一种用于使用来自先前视角的渲染内容和非渲染内容构造新帧的系统,所述系统包括:
存储可执行计算机指令的非暂时性计算机可读存储介质,所述可执行计算机指令在被执行时执行以下步骤,包括:
渲染从第一视角可见的第一组对象的可见表面的点;
存储来自所述第一视角的渲染内容和非渲染内容二者,所述渲染内容与来自所述第一视角的所述第一组对象的所述可见表面的所述点相对应,并且所述非渲染内容与来自所述第一视角的所述第一组对象的不可见部分相对应;
接收显示来自第二视角的新帧的请求;
渲染从所述第二视角可见且从所述第一视角不可见的第二组对象的可见表面的点,包括:
确定从所述第二视角可见的第三组对象;
将来自所述第二视角的所述第三组对象与来自所述第一视角的所存储的渲染内容进行比较,以识别所述第二组对象,其中,所述第二组对象包括来自所述第三组对象中不在所存储的渲染内容中的对象;以及
渲染所述第二组对象的所述可见表面的所述点;
将所存储的渲染内容中的至少一些从所述第一视角扭曲到所述第二视角;
使用来自所述第一视角的所述渲染内容和所述非渲染内容生成来自所述第二视角的所述新帧;以及
显示来自所述第二视角的所述新帧;以及
被配置为执行所述计算机指令的处理器,
其中,生成来自所述第二视角的所述新帧包括组合来自所述第二视角的所述第二组对象的可见表面的点的渲染内容和从所述第一视角扭曲到所述第二视角的所存储的渲染内容。
10.根据权利要求9所述的系统,其中,所述指令在被执行时执行包括以下的进一步步骤:通过捕获用户的第一姿势来识别所述第一视角。
11.根据权利要求9所述的系统,其中,存储来自所述第一视角的所述渲染内容和所述非渲染内容二者包括:将所述渲染内容和所述非渲染内容两者存储在以下中的至少一个中:链接列表,阵列结构,真实的体积表示,体素,表面定义,N维数据结构,以及N维图形表示。
12.根据权利要求9所述的系统,其中,所述指令在被执行时执行包括以下的进一步步骤:确定来自所述第一视角的所述第一组对象的渲染内容和非渲染内容二者的不同粒度。
13.根据权利要求9所述的系统,其中,将所存储的内容中的至少一些从所述第一视角扭曲到所述第二视角包括:
将来自所述第二视角的所述第三组对象与来自所述第一视角的所存储的渲染内容进行比较,以识别在所述第三组对象和所存储的渲染内容二者中的对象;
扭曲在所述第三组对象和所存储的渲染内容二者中的所述对象。
14.根据权利要求9所述的系统,其中,存储来自所述第一视角的所述渲染内容和所述非渲染内容二者包括:
识别来自所述第一视角的所述渲染内容和所述非渲染内容;
分析所述渲染内容和所述非渲染内容以确定内容是否与表面点和非表面点之一相对应;
丢弃与非表面点相对应的所述内容;以及
存储与所述表面点相对应的所述内容。
15.根据权利要求9所述的系统,其中,存储来自所述第一视角的所述渲染内容和所述非渲染内容包括:
预测用户的头部移动;
至少部分地基于预测方向、所述用户的当前移动速度和所述用户的预测移动速度中的一个或多个,计算所预测的所述用户的头部移动的边界,所述边界与所述第二视角的最大预测头部移动相对应;
确定在所预测的头部移动的所计算的边界内的内容;以及
存储所述所计算的边界内的所述内容。
16.根据权利要求9所述的系统,其中,存储来自所述第一视角的所述第一组对象的渲染内容和非渲染内容二者还包括:
确定一个或多个不透明对象的不透明点;
存储与所述不透明点相对应的图像数据;
确定一个或多个半透明对象的半透明点;以及
存储所述半透明点的图像数据,其中,所述第一组对象包括所述一个或多个不透明对象和所述一个或多个半透明对象。
17.一种体现在非暂时性计算机可读介质中的计算机程序产品,所述计算机可读介质在其上存储了指令序列,所述指令序列当被处理器执行时使所述处理器执行用于使用来自先前视角的渲染内容和非渲染内容构造新帧的方法,所述方法包括:
渲染从第一视角可见的第一组对象的可见表面的点;
存储来自所述第一视角的渲染内容和非渲染内容二者,所述渲染内容与来自所述第一视角的所述第一组对象的所述可见表面的所述点相对应,并且所述非渲染内容与来自所述第一视角的所述第一组对象的不可见部分相对应;
接收显示来自第二视角的新帧的请求;
渲染从所述第二视角可见且从所述第一视角不可见的第二组对象的可见表面的点,包括:
确定从所述第二视角可见的第三组对象;
将来自所述第二视角的所述第三组对象与来自所述第一视角的所存储的渲染内容进行比较,以识别所述第二组对象,其中,所述第二组对象包括来自所述第三组对象中不在所存储的渲染内容中的对象;以及
渲染所述第二组对象的所述可见表面的所述点;
将所存储的渲染内容中的至少一些从所述第一视角扭曲到所述第二视角;
使用来自所述第一视角的所述渲染内容和所述非渲染内容生成来自所述第二视角的所述新帧;以及
显示来自所述第二视角的所述新帧,
其中,生成来自所述第二视角的所述新帧包括组合来自所述第二视角的所述第二组对象的可见表面的点的渲染内容和从所述第一视角扭曲到所述第二视角的所存储的渲染内容。
18.根据权利要求17所述的计算机程序产品,其中,存储来自所述第一视角的所述渲染内容和所述非渲染内容二者包括:
识别来自所述第一视角的所述渲染内容和所述非渲染内容;
分析所述渲染内容和所述非渲染内容以确定内容是否与表面点和非表面点之一相对应;
丢弃与非表面点相对应的所述内容;以及
存储与所述表面点相对应的所述内容。
19.根据权利要求17所述的计算机程序产品,其中,存储来自所述第一视角的所述渲染内容和所述非渲染内容二者包括:
预测用户的头部移动;
至少部分地基于预测方向、所述用户的当前移动速度和所述用户的预测移动速度中的一个或多个,计算所预测的所述用户的头部移动的边界,所述边界与所述第二视角的最大预测头部移动相对应;
确定在所预测的头部移动的所计算的边界内的内容;以及
存储所述所计算的边界内的所述内容。
20.根据权利要求17所述的计算机程序产品,其中,存储来自所述第一视角的所述第一组对象的渲染内容和非渲染内容二者还包括:
确定一个或多个不透明对象的不透明点;
存储与所述不透明点相对应的图像数据;
确定一个或多个半透明对象的半透明点;以及
存储所述半透明点的图像数据,其中,所述第一组对象包括所述一个或多个不透明对象和所述一个或多个半透明对象。
21.一种用于使用来自先前视角的渲染内容和非渲染内容构造新帧的方法,所述方法包括:
渲染来自第一视角的一个或多个对象;
存储来自所述第一视角的所述一个或多个对象的渲染内容和非渲染内容二者,所述非渲染内容与来自所述第一视角的所述对象的不可见部分相对应;
接收显示来自第二视角的所述一个或多个对象的请求;
扭曲所述一个或多个对象的所述渲染内容中的至少一些,以创建来自所述第二视角的扭曲内容;
渲染所述一个或多个对象的所述非渲染内容中的至少一些,以创建来自所述第二视角的第二渲染内容;以及
通过组合来自所述第二视角的所述扭曲内容和所述第二渲染内容,构造来自所述第二视角的所述一个或多个对象;以及
显示来自所述第二视角的所述一个或多个对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210546805.0A CN114897754B (zh) | 2017-09-01 | 2018-08-31 | 使用来自先前视角的渲染内容和非渲染内容生成新帧 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762553778P | 2017-09-01 | 2017-09-01 | |
US62/553,778 | 2017-09-01 | ||
PCT/US2018/049266 WO2019046821A1 (en) | 2017-09-01 | 2018-08-31 | GENERATING A NEW FRAME USING REBUILDED CONTENT AND UNRESTITUDED CONTENT FROM A PREVIOUS PERSPECTIVE |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210546805.0A Division CN114897754B (zh) | 2017-09-01 | 2018-08-31 | 使用来自先前视角的渲染内容和非渲染内容生成新帧 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111051959A CN111051959A (zh) | 2020-04-21 |
CN111051959B true CN111051959B (zh) | 2022-06-03 |
Family
ID=65518123
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210546805.0A Active CN114897754B (zh) | 2017-09-01 | 2018-08-31 | 使用来自先前视角的渲染内容和非渲染内容生成新帧 |
CN201880055420.6A Active CN111051959B (zh) | 2017-09-01 | 2018-08-31 | 使用来自先前视角的渲染内容和非渲染内容生成新帧 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210546805.0A Active CN114897754B (zh) | 2017-09-01 | 2018-08-31 | 使用来自先前视角的渲染内容和非渲染内容生成新帧 |
Country Status (9)
Country | Link |
---|---|
US (3) | US10489966B2 (zh) |
EP (2) | EP3676653B1 (zh) |
JP (3) | JP7123127B2 (zh) |
KR (2) | KR102680570B1 (zh) |
CN (2) | CN114897754B (zh) |
AU (1) | AU2018326807B2 (zh) |
CA (1) | CA3073618A1 (zh) |
IL (2) | IL294397B2 (zh) |
WO (1) | WO2019046821A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110266955B (zh) * | 2019-06-28 | 2021-01-26 | Oppo广东移动通信有限公司 | 图像处理方法、装置、电子设备以及存储介质 |
US11538199B2 (en) * | 2020-02-07 | 2022-12-27 | Lenovo (Singapore) Pte. Ltd. | Displaying a window in an augmented reality view |
KR102368953B1 (ko) * | 2020-02-18 | 2022-03-03 | 페디셈 주식회사 | 가상 현실 공간 제공 방법 및 시스템 |
CN111627116B (zh) * | 2020-05-29 | 2024-02-27 | 联想(北京)有限公司 | 图像渲染控制方法、装置及服务器 |
US11822713B2 (en) | 2021-06-11 | 2023-11-21 | Rockwell Collins, Inc. | Pose augmentation of head worn display video for latency reduction |
CN113721874A (zh) * | 2021-07-29 | 2021-11-30 | 阿里巴巴(中国)有限公司 | 虚拟现实画面显示方法及电子设备 |
CN113963103A (zh) * | 2021-10-26 | 2022-01-21 | 中国银行股份有限公司 | 一种三维模型的渲染方法和相关装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144240A (zh) * | 2017-06-19 | 2019-01-04 | Arm有限公司 | 图形处理系统 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085409B2 (en) * | 2000-10-18 | 2006-08-01 | Sarnoff Corporation | Method and apparatus for synthesizing new video and/or still imagery from a collection of real video and/or still imagery |
KR100446635B1 (ko) * | 2001-11-27 | 2004-09-04 | 삼성전자주식회사 | 깊이 이미지 기반 3차원 객체 표현 장치 및 방법 |
US7883415B2 (en) | 2003-09-15 | 2011-02-08 | Sony Computer Entertainment Inc. | Method and apparatus for adjusting a view of a scene being displayed according to tracked head motion |
JP5299173B2 (ja) * | 2009-08-26 | 2013-09-25 | ソニー株式会社 | 画像処理装置および画像処理方法、並びにプログラム |
US20110279446A1 (en) * | 2010-05-16 | 2011-11-17 | Nokia Corporation | Method and apparatus for rendering a perspective view of objects and content related thereto for location-based services on mobile device |
EP3543958B1 (en) * | 2010-09-13 | 2020-11-11 | Barry Lynn Jenkins | System and method of delivering and controlling streaming interactive media comprising predetermined packets of geometric, texture, lighting and other data which are rendered on a receiving device |
US9424767B2 (en) * | 2012-06-18 | 2016-08-23 | Microsoft Technology Licensing, Llc | Local rendering of text in image |
NZ735754A (en) * | 2013-03-15 | 2019-04-26 | Magic Leap Inc | Display system and method |
WO2015006784A2 (en) | 2013-07-12 | 2015-01-15 | Magic Leap, Inc. | Planar waveguide apparatus with diffraction element(s) and system employing same |
US9729317B2 (en) * | 2014-01-30 | 2017-08-08 | Mentor Graphics Corporation | Optical physical uncloneable function |
US10200627B2 (en) * | 2014-04-09 | 2019-02-05 | Imagination Technologies Limited | Virtual camera for 3-D modeling applications |
EP3192259A4 (en) * | 2014-09-09 | 2018-05-16 | Nokia Technologies Oy | Stereo image recording and playback |
US9240069B1 (en) * | 2015-06-30 | 2016-01-19 | Ariadne's Thread (Usa), Inc. | Low-latency virtual reality display system |
US10147211B2 (en) * | 2015-07-15 | 2018-12-04 | Fyusion, Inc. | Artificially rendering images using viewpoint interpolation and extrapolation |
US10419747B2 (en) * | 2015-12-22 | 2019-09-17 | Google Llc | System and methods for performing electronic display stabilization via retained lightfield rendering |
CN110431601A (zh) * | 2017-03-23 | 2019-11-08 | 索尼互动娱乐股份有限公司 | 信息处理装置 |
EP3419286A1 (en) * | 2017-06-23 | 2018-12-26 | Koninklijke Philips N.V. | Processing of 3d image information based on texture maps and meshes |
-
2018
- 2018-08-31 CN CN202210546805.0A patent/CN114897754B/zh active Active
- 2018-08-31 AU AU2018326807A patent/AU2018326807B2/en active Active
- 2018-08-31 WO PCT/US2018/049266 patent/WO2019046821A1/en unknown
- 2018-08-31 IL IL294397A patent/IL294397B2/en unknown
- 2018-08-31 KR KR1020227009732A patent/KR102680570B1/ko active IP Right Grant
- 2018-08-31 US US16/120,020 patent/US10489966B2/en active Active
- 2018-08-31 JP JP2020512591A patent/JP7123127B2/ja active Active
- 2018-08-31 EP EP18849933.9A patent/EP3676653B1/en active Active
- 2018-08-31 CA CA3073618A patent/CA3073618A1/en active Pending
- 2018-08-31 EP EP22215316.5A patent/EP4177667A1/en active Pending
- 2018-08-31 IL IL272651A patent/IL272651B/en unknown
- 2018-08-31 KR KR1020207007380A patent/KR102379670B1/ko active IP Right Grant
- 2018-08-31 CN CN201880055420.6A patent/CN111051959B/zh active Active
-
2019
- 2019-10-21 US US16/658,809 patent/US10846912B2/en active Active
-
2020
- 2020-10-19 US US17/074,428 patent/US11288858B2/en active Active
-
2022
- 2022-08-09 JP JP2022126805A patent/JP7166484B1/ja active Active
- 2022-10-25 JP JP2022170457A patent/JP7201869B1/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144240A (zh) * | 2017-06-19 | 2019-01-04 | Arm有限公司 | 图形处理系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20200046048A (ko) | 2020-05-06 |
CN111051959A (zh) | 2020-04-21 |
US20190073821A1 (en) | 2019-03-07 |
US10846912B2 (en) | 2020-11-24 |
KR20220041252A (ko) | 2022-03-31 |
US20210035353A1 (en) | 2021-02-04 |
JP2023015119A (ja) | 2023-01-31 |
JP7123127B2 (ja) | 2022-08-22 |
IL294397A (en) | 2022-08-01 |
EP3676653B1 (en) | 2023-02-15 |
US10489966B2 (en) | 2019-11-26 |
IL294397B2 (en) | 2024-02-01 |
JP7201869B1 (ja) | 2023-01-10 |
JP2020532797A (ja) | 2020-11-12 |
IL294397B1 (en) | 2023-10-01 |
AU2018326807A1 (en) | 2020-03-05 |
JP7166484B1 (ja) | 2022-11-07 |
US11288858B2 (en) | 2022-03-29 |
KR102680570B1 (ko) | 2024-07-01 |
EP3676653A4 (en) | 2020-10-07 |
IL272651B (en) | 2022-08-01 |
JP2022179473A (ja) | 2022-12-02 |
WO2019046821A1 (en) | 2019-03-07 |
EP3676653A1 (en) | 2020-07-08 |
AU2018326807B2 (en) | 2023-04-13 |
CN114897754B (zh) | 2024-04-09 |
KR102379670B1 (ko) | 2022-03-25 |
CN114897754A (zh) | 2022-08-12 |
US20200051322A1 (en) | 2020-02-13 |
EP4177667A1 (en) | 2023-05-10 |
IL272651A (en) | 2020-03-31 |
CA3073618A1 (en) | 2019-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111051959B (zh) | 使用来自先前视角的渲染内容和非渲染内容生成新帧 | |
JP7304934B2 (ja) | 仮想コンテンツワーピングを伴う複合現実システムおよびそれを使用して仮想コンテンツを生成する方法 | |
AU2022200841B2 (en) | Mixed reality system with multi-source virtual content compositing and method of generating virtual content using same | |
CN110402425B (zh) | 具有彩色虚拟内容扭曲的混合现实系统及使用该系统生成虚拟内容的方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |