CN118154747A - 集中式渲染 - Google Patents
集中式渲染 Download PDFInfo
- Publication number
- CN118154747A CN118154747A CN202410264968.9A CN202410264968A CN118154747A CN 118154747 A CN118154747 A CN 118154747A CN 202410264968 A CN202410264968 A CN 202410264968A CN 118154747 A CN118154747 A CN 118154747A
- Authority
- CN
- China
- Prior art keywords
- data
- nodes
- node
- scene graph
- client application
- 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
Links
- 238000009877 rendering Methods 0.000 title description 27
- 238000000034 method Methods 0.000 claims abstract description 70
- 238000004891 communication Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 5
- 230000001360 synchronised effect Effects 0.000 claims 2
- 238000012545 processing Methods 0.000 description 32
- 230000000007 visual effect Effects 0.000 description 21
- 238000003860 storage Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 13
- 230000000694 effects Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 238000005457 optimization Methods 0.000 description 10
- 230000000704 physical effect Effects 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000004424 eye movement Effects 0.000 description 4
- 208000006440 Open Bite Diseases 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005266 casting Methods 0.000 description 2
- 238000004883 computer application Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000000638 stimulation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- 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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/147—Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
-
- 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/21—Collision detection, intersection
-
- 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/61—Scene description
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/024—Multi-user, collaborative environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
- Eye Examination Apparatus (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Holo Graphy (AREA)
- Digital Computer Display Output (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
公开了一种方法,该方法包括以下步骤:从第一客户应用接收包括第一节点的第一图形数据;从独立于第一客户应用的第二客户应用接收包括第二节点的第二图形数据;以及生成场景图,其中,场景图描述了第一节点与第二节点之间的层次关系。
Description
本申请是申请号为201880023286.1的中国专利申请“集中式渲染”(申请日为2018年3月29日)的分案申请。
相关申请的交叉引用
此申请依据35U.S.C.§119(e)要求2017年3月30日提交的美国专利申请No.62/479,134的权益,出于全部目的通过引用将其全部内容合并于本文。
技术领域
本公开总体上涉及用于在显示器上可视地渲染图形数据的系统和方法,特别地,涉及用于在单个显示器上可视地渲染来自多个计算机应用的数据的系统和方法。
背景技术
存在用于将计算机应用的图形数据渲染到显示器的各种技术。期望这些技术逼真地(即,与观看者基于物理世界的期望一致地)且有效地渲染图形数据。还期望渲染技术适应具有各种拓扑的计算机系统,包括例如其中多个应用贡献了要在单个显示器上显示的图形数据的计算机系统。
传统系统通常无法在这种多应用系统中逼真地、有效地渲染内容。例如,在一些这样的系统中,将来自多个应用的图形数据渲染到单个显示器上会导致数据在显示器上被不正确地排序(sort),从而产生损害(compromise)显示器的真实性的意外视觉结果。此外,来自一个应用的图形数据可能无法与来自另一应用的图形数据逼真地交互(例如通过灯光和阴影投射(shadowcast)效果或通过着色器(shader))。另外,一些这样的系统在使用渲染优化(诸如剔除(cull)不可见表面)以提高计算效率方面的能力受到限制。
涉及增强现实(AR)或“混合现实”的系统尤其需要更好的解决方案,以解决将来自多个应用的图形数据渲染到单个显示器的问题。例如,AR系统具有用于多个用户在共享虚拟空间中交互的潜力,其中来自全部用户的虚拟内容都渲染到单个显示器。希望这种交互对用户来说是可信的和有意义的,这可能需要AR系统的图形化输出令人信服并与用户的视觉期望保持一致;足够灵活以适应不同类型和数量的用户、用户硬件和用户软件、以及用户希望与系统互动的不同方式;以及足够有效以维持高帧率下的持续操作并使移动设备的电池寿命最大化。此外,期望AR系统中与单个用户相关联的应用和应用数据保持独立于其他用户,以提供安全性(这可能会受到非信任用户之间的数据访问的损害)并保持可伸缩性,特别是随着系统用户数量的变大时。另外,这样的系统可以受益于使对用户和用户应用的技术约束最小化;例如,限制用户参与AR系统的硬件要求会鼓励更多用户参与。这可以通过限制单个用户或在用户硬件上运行的应用需要执行复杂渲染操作的程度来实现,例如通过将此类操作卸载到共享系统,例如在专用硬件上运行的服务器端主机应用。
发明内容
本公开的示例描述了其中多个应用贡献了要在单个显示器上显示的图形数据的计算机系统。可以使用本公开的示例来逼真地(即,与观看者基于物理世界的期望一致地)且有效地渲染图形数据。根据本公开的示例,可以从第一客户应用接收第一图形数据,以及可以从第二独立客户应用接收第二图形数据。可以将第一图形数据和第二图形数据组合成诸如场景图的“集中式(centralized)”数据结构,其可以用于描述由第一图形数据和第二图形数据表示的节点之间的关系。因此,集中式数据结构可用于以逼真且有效的方式将反映第一图形数据和第二图形数据的场景渲染到显示器。
附图说明
图1A-1E示出了根据本公开的示例的包括图形显示器的示例计算机系统。
图2A示出了根据本公开的示例的示例计算机系统中的示例数据流。
图2B示出了根据本公开的示例的与示例计算机系统对应的示例渲染器输出。
图2C示出了根据本公开的示例的包括多个独立应用的示例计算机系统中的示例数据流。
图2D示出了根据本公开的示例的与包括多个独立应用的示例计算机系统对应的示例渲染器输出。
图3A示出了根据本公开的示例的示例计算机系统的组件,该示例计算机系统可以使用集中式场景图将来自多个独立应用的3D数据渲染到显示器。
图3B示出了根据本公开的示例的相对于包括多个独立客户应用的示例计算机系统的示例客户应用的方面。
图3C示出了根据本公开的示例的相对于包括多个独立应用的示例计算机系统的示例客户-服务器接口的方面。
图3D示出了根据本公开的示例的相对于包括多个独立客户应用的示例计算机系统的示例主机应用340的方面。
图3E示出了根据本公开的示例的相对于包括多个独立应用的示例计算机系统的示例渲染器360的方面。
图4示出了根据本公开的示例的可以体现在任何便携式或非便携式设备内的系统架构的示例。
具体实施方式
在下面的示例描述中,参考了形成其一部分的附图,并且在附图中通过图示的方式示出了可以实践的具体示例。应当理解,在不脱离所公开示例的范围的情况下,可以使用其他示例并且可以进行结构改变。
图1A至1E示出了具有显示器的各种示例计算机系统。图1A示出了连接到外部监视器的示例台式计算机。图1B示出了包括显示器的示例笔记本电脑。图1C示出了包括集成显示器的示例移动设备。图1D示出了包括显示器的示例电视。图1E示出了包括头戴式显示器的示例计算机系统。本公开不限于任何特定类型的计算机系统、任何特定类型的显示器或将计算机系统连接至显示器的任何特定装置。本公开进一步不限于二维显示器;特别地,考虑三维显示器,例如立体显示器。
在一些示例计算机系统中,要以图形方式呈现在显示器上的数据包括表示三维空间中的对象(例如2D或3D几何图元(primitive),包括多边形)的数据(“3D数据”),以及在显示器上呈现3D数据包括呈现与三维空间中的对象对应的从沿视图轴定向的视图原点观看到的图像(“所渲染的场景”)。例如,在计算机系统上运行的软件应用(例如使用3D引擎的视频游戏)中,3D数据可以包括三维游戏世界中的对象的空间坐标、取向和/或视觉属性以及描述游戏世界中视图原点和视图轴的数据。3D数据还可以包括与要渲染的对象相关联的纹理有关的数据、与对象有关的着色器参数以及影响如何显示对象的其他信息。例如在“渲染”或“绘制”阶段期间,游戏可以指导软件和/或硬件“管道线(pipeline)”在显示器上呈现所渲染的场景。在这样的示例中,通常希望所得图像反映用户对视觉世界的期望。特别地,通常希望更接近视图原点的第一不透明对象遮挡位于第一对象后面的第二对象。未被正确遮挡的对象可能会使用户感到困惑,并且可能无法清楚地呈现对象在三维空间所处的位置。在一些示例计算机系统中,遮挡是通过排序来实现的,其中,在距视图原点较远的对象的顶部上对更接近视图原点的对象进行排序或绘制。
对用于在显示器上呈现的多个对象进行排序使得一个对象逼真地遮挡另一个对象,需要关于对象之间的关系的信息,例如三维空间中对象之间的空间关系。一些示例计算机系统利用场景图来表示一个或多个对象(诸如将被渲染为场景的对象)之间的关系(例如,层次(hierarchical)关系)。如本文所使用的,场景图是表示这种关系的任何数据结构。例如,在场景图中,可以将要渲染的对象表示为图形中的节点,其中,节点之间的关系表示对象之间的逻辑或空间关系。然后,渲染器可以根据本领域中已知的技术来遍历(traverse)场景图,以将要实现适当遮挡的方式显示对象。在一些示例中,场景图是位于包括3D数据的应用和用于将3D数据渲染到屏幕的渲染器之间的中间数据结构:在一些示例中,该应用将场景信息写入场景图,该场景图可以稍后由该渲染器用于渲染场景。
图2A示出了示例计算机系统200中的示例数据流。在系统200中,单个应用210可以将数据写入场景图240,渲染器250可以使用场景图240将对象220渲染到显示器290。例如,对象220可以包括多个对象(例如多边形),这些对象一起包括人的两只手(手232和手236)的3D表示;以及该应用可以例如在渲染或绘制阶段期间从沿着视图轴定向的视图原点的角度引导要在显示器上渲染的对象220。在该示例中,手232和手236在握手中互锁;由于手的相对定位,观看者希望相对于视图原点和视图轴,手232的一些部分遮挡手236的部分,而包括手236的一些多边形遮挡手232的部分。应用210可以将描述对象220之间的关系(例如包括对象220的多边形之间的空间关系)的信息写入场景图240,该信息可用于识别哪些多边形应遮挡其他多边形,即,哪些多边形应被排序为显示在其他多边形的顶部。例如,场景图240可以反映多边形234(其属于手232)位于视图原点与包括手236的多边形之间,并且因此应当遮挡手236中的那些多边形;以及多边形238(其属于手236)位于视图原点与包括手232的多边形之间,并且因此应当遮挡手232中的那些多边形。然后,渲染器250可以与所需遮挡一致地将对象220渲染到显示器290。
图2B示出了图2A所示的示例计算机系统200的渲染器250的示例输出。在以上关于图2A描述的示例中,基于对象220的相对位置,观看者期望包括手232的一些对象(例如多边形234)遮挡手236,并且期望包括手236的一些对象(例如多边形238)遮挡手232。图2B所示的示例输出与预期的遮挡一致。也就是,图2A中的对象220被正确显示以在显示器290上呈现与观看者的期望一致的握手。
在图2A和2B中所示的示例计算机系统200中,场景图240仅由单个应用(应用210)直接写入。渲染器250然后遍历场景图240以渲染手232和手236,其中具有适当的遮挡。当场景图(例如场景图240)从多个独立应用接收直接输入时,使用作为渲染过程的一部分的场景图的传统系统(例如示例计算机系统200)可能无法正确地遮挡对象。在这些情况下,与示例计算机系统200不同,没有单个应用可以向场景图提供对象关系数据的全部,该对象关系数据是在显示器上使对象正确地排序可能需要的。
图2C示出了使用两个独立应用的示例计算机系统201中的示例数据流,并且示出了上述的遮挡问题。与上述示例计算机系统200不同,示例计算机系统201包括两个独立的应用,即,应用212和应用214。在示例计算机系统201中,应用212和应用214都将数据写入场景图240,以将其各自的3D数据渲染到单个显示器上290。在图2C中,应用212尝试渲染对象222(其包括包含手232的对象);以及应用214尝试渲染对象224(其包括包含手236的对象)。在该示例中,如在图2A和2B中描述的示例中那样,如果在同一3D环境中同时显示手232和手236,则它们将在握手中互锁,以使观看者期望手232的部分遮挡手236,以及手236的部分遮挡手232。
图2C中所示的示例可能难以实现要渲染的对象的真实遮挡。在该示例中,应用212可以将与对象222(包括手232)对应的数据写入场景图240,以及应用214可以将与对象224(包括手236)对应的数据写入同一场景图240。然而,在示例计算机系统201中,如果应用212和应用214是独立的(“被沙箱化的(sandboxed)”)应用,则应用212无法访问与应用214的对象224(包括手236及其组成对象)有关的数据,同样,应用214无法访问与应用212的对象222(包括手232及其组成对象)有关的数据。也就是,在一些示例中,应用212和应用214都无法完全识别对象222与对象224之间的关系。因此,应用212和应用214都不能将识别哪些对象遮挡其他对象或对象应按什么顺序在显示屏上排序所需的信息写入场景图240。
图2D示出了图2C所示的示例计算机系统201的渲染器250的示例输出。在以上关于图2C描述的示例中,基于对象222和对象224的相对定位,观看者期望手232的一些部分遮挡手236,以及手236的一些部分遮挡手232。然而,与图2A和图2B不同的是,图C的场景图240无法正确地对对象222和224进行排序以产生如上所述的希望的遮挡。相反,在所示示例中,全部对象222被排序在全部对象224的顶部。因此图2D所示的示例输出与预期的遮挡不一致。因此,所得的握手图像无法准确反映应用212和应用214中的对象;此外,该图像看起来可能不自然并且可能使观看者感到困惑。
当与诸如示例计算机系统201中的多个独立应用一起使用时,传统场景图(例如图2A至2D中的场景图240)的其他缺点是显而易见的。例如,可以使用与要例如在图2A中的应用210中渲染的整个场景对应的数据来实现渲染效率。通过知道哪些表面将被遮挡,例如图2A中的示例计算机系统200可以指示系统200剔除那些表面,从而避免计算资源的不必要消耗。在多应用系统(例如图2C中的示例计算机系统201)中,这种剔除可能是不可能的,因为每个应用可能不具备确定应当剔除哪些表面的场景知识。此外,在仅涉及单个应用(例如示例计算机系统200)的一些示例中,可以基于场景中其他对象的存在将有益效果应用于对象。例如,对对象应用逼真的灯光和阴影(shadow)效果可能需要与附近对象对应的数据。此外,一些着色器效果会从此类数据中受益。类似地,由粒子(particle)系统或碰撞(collision)检测系统生成的效果可能会从此类数据中受益。在其中多个独立应用提供3D数据的系统中,这样的效果可能是有限的或不可能的,因为没有单个应用可能能够提供应用这种效果所需的全部节点关系信息。
本公开提出了使用集中式场景图来解决渲染来自多个独立应用的3D数据的系统的上述缺点的系统和方法。在其中多个独立应用提供要渲染的3D数据的系统(例如图2C中的示例计算机系统201)中,可以使用集中式场景图代替传统场景图,例如图2C中的场景图240。如本文所述,在一些示例中,集中式场景图可以包括一种系统,该系统从多个单独的输入源接收3D数据;将与该3D数据对应的信息写入中心位置;以及维持该信息以供基于3D数据渲染图像的渲染器访问。该图形输出可以反映在不利用集中式场景图的系统中将很难或无法实现的逼真的对象遮挡;计算效率、视觉效果(例如灯光和阴影投射);或物理效果(例如碰撞检测)。
在一些示例中,示例计算机系统包括多个应用,每个应用包括表示公共3D环境中的一个或多个对象的3D数据。多个应用中的每一个都可以存在于“被沙箱化的”环境中,使得它与其他应用无关(agnostic):例如,每个相应应用的数据可以独立于每个其他应用的数据;每个应用可能无法访问每个其他应用的数据;以及尽管每个应用的3D数据可能对应于相同的3D环境,但是每个应用都维持自己的3D环境实例。例如,每个应用可以代表在线多玩家视频游戏中的玩家,其中,每个玩家都存在于相同游戏世界或3D环境的实例中,但是无法直接访问其他玩家的数据。在这样的示例中,可能希望在游戏世界的单个实例中同时渲染全部玩家,但是对于每个玩家,可能不希望(或在计算上禁止)维持渲染每个其他客户参与者的3D数据所需的信息。此外,出于安全目的,可能希望限制对于其他玩家可用的玩家的信息。
在一些示例中,多个被沙箱化的应用中的每一个可以独立地将与其3D数据对应的信息写入本地场景图,该信息随后被写入公共集中式场景图。然后,可以由渲染器遍历集中式场景图,以将基于由每个应用提供的集合(collective)3D数据的图像渲染到显示器。通过将来自多个被沙箱化的应用中的每一个的应用的3D数据通信给单个集中式场景图,渲染器可以应用需要或同时受益于全部应用的3D数据的知识的有益技术,例如遮挡、灯光效果和渲染优化(例如表面剔除)。这些益处是在限制每个被沙箱化的应用所需的计算开销的同时实现的:从单个应用的角度来看,全部应用需要做的就是更新单个场景图以反映其3D数据,其中由系统的另一个组件执行其他操作。此外,可以通过维持被沙箱化的应用之间的间隔来获得安全性益处。
图3A示出了示例计算机系统300的组件,该示例计算机系统300可以使用集中式场景图将来自多个独立应用的3D数据渲染到显示器。示出的示例利用客户-服务器拓扑;然而,本公开不限于客户-服务器示例。在示例计算机系统300中,第一客户应用310和第二客户应用320各自将3D数据(在一些示例中,通过网络)通信给客户-服务器接口330。在一些示例中,客户应用310和320是彼此独立操作并独立地将其3D数据通信给客户-服务器接口330的“被沙箱化的”应用。客户-服务器接口330可以从客户应用310和320接收更新的3D数据,并将该3D数据(在一些示例中,通过网络)通信给服务器端主机应用340。在一些示例中,客户-服务器接口330使用多线程技术来使用多个处理器线程接收3D数据、处理3D数据和/或将3D数据通信给主机应用340。在一些示例中,客户-服务器接口包括逻辑,以控制(例如通过节流)将3D数据通信给主机应用340的速率。主机应用340可以使用从客户-服务器接口接收的3D数据来更新集中式场景图350,使得集中式场景图350反映从客户应用310和320接收的3D数据。在一些示例中,集中式场景图350包括场景图的多个版本,并且已知的版本化(versioning)技术用于允许对集中式场景图350的更新并行发生。然后,渲染器360可以遍历集中式场景图350、适当地应用优化和效果以及生成要在诸如计算机监视器的显示器370上显示的图形输出。
图3B示出了相对于图3A所示的示例计算机系统300的示例客户应用310的方面。在所示的示例中,3D数据312表示要在显示器370上绘制的在3D环境中的图形对象(例如几何图元,例如多边形)。3D数据312可以由客户应用310更新(314)。例如,如果客户应用310是具有每秒迭代六十次的渲染循环的应用,则客户应用310可以每秒六十次更新3D数据312以反映应该在渲染输出中反映的在应用的操作过程期间对该数据的改变。在一些示例中,3D数据312被表示为对于每个客户应用310可以是本地的本地场景图316。在一些示例中,本地场景图316可以包括与集中式场景图350中的数据对应的数据(例如节点)。因为3D数据312被更新(314),客户应用310可以更新本地场景图316以反映3D数据312的最新版本。因为本地场景图316被更新,客户应用310可以使用它来生成(317)客户数据318。在一些示例中,客户数据318可以完整地表示本地场景图316。在一些示例中,客户数据318可以表示由于先前的客户数据318被发送到客户-服务器接口330而对本地场景图316进行的改变。例如,客户数据318可以包括:添加到本地场景图316或从本地场景图316删除的节点;对本地场景图316中节点之间的关系的改变;或对本地场景图316中节点的属性的改变。在一些示例中,客户数据318可以使用识别器(例如与场景图节点对应的识别号)来识别来自本地场景图316的数据与集中式场景图350上的对应数据之间的关系。客户数据318然后可以被通信给客户-服务器接口330,用于最终通信给主机应用340。在一些示例中,客户数据318到客户-服务器接口330的通信可以通过网络发生。在一些示例中,客户助手应用可以与客户应用310结合使用,以从本地场景图316或3D数据312生成客户数据318。
相对于客户应用310描述的方面可以类似地描述客户应用320或包括示例计算机系统300的其他客户应用(与客户应用310一起)。本领域技术人员将理解,本文所描述的系统和方法可以扩展为包括任何数量的客户应用和客户数据,并且本公开不限于任何这样的数量;此外,随着客户应用数量的增加,一些益处(例如计算效率的提高)可能变得更加明显。如上所述,客户应用310和320可以是不共享数据或功能的被沙箱化的应用。例如,在示例计算机系统300中,客户应用320可以具有自己的3D数据和本地场景图,独立于属于客户应用310的3D数据312和本地场景图316。然而,在包括示例计算机系统300的一些示例中,单个客户-服务器接口300由多个客户应用(例如客户应用310和320)共享。
图3C示出了相对于图3A和图3B所示的示例计算机系统300的示例客户-服务器接口330的方面。在该示例中,客户数据318和客户数据328是如上关于图3B所述被通信给相应的客户应用310和320或者由相应的客户应用310和320更新的客户数据。在一些示例中,可以在客户-服务器接口330上以不同的速率更新客户数据318和328。例如在以下情形中可能会发生这种情况:如果一个客户应用在与另一个客户应用相比的能力更弱的计算硬件上执行(导致该客户应用更不频繁地更新其客户数据);如果一个客户应用通过与另一个客户应用相比的更低带宽网络与客户-服务器接口330通信;或者与一个客户应用相关联的客户数据比与另一客户应用相关联的客户数据更复杂(并且需要更多处理时间来生成)。在客户-服务器接口330上更新客户数据的不同速率也可能是操作条件临时高峰(spike)的结果,例如如果网络故障导致客户应用暂时脱机。期望例如计算机系统300容忍更新客户数据的不同速率;例如,可能期望影响一个客户应用的网络故障不会对使用来自其他客户应用的客户数据来更新集中式场景图350的速率或渲染场景的速率产生负面影响。还可能期望在更新集中式场景图350时,确保来自一个客户应用的客户数据不会相对于来自其他客户应用的客户数据滞后太多或者领先太多,因为这可能导致集中式场景图或所渲染的显示相对于客户应用的不稳定或不同步。
在一些示例中,客户-服务器接口330的作用是处理更新客户数据的速率的差异或波动。参考图3C,示例客户-服务器接口330可以分别经由独立的处理线程332和334接收客户数据318和328并且可以包括线程管理器336以处理线程。利用多个线程来更新来自不同源(例如客户应用310和客户应用320)的客户数据可以防止一个源阻止或另外负面影响来自其他源的数据的问题。在所示的示例中,线程管理器336可以分别使用线程332和334输入来自客户应用310和320的客户数据318和328,并且输出主机数据319和329(分别对应于客户数据318和328、客户应用310和320以及线程332和334)到主机应用340。线程管理器336可以包括逻辑以处理线程332和334、以识别和解决吞吐量问题或与线程332和334有关的其他问题和/或以控制主机数据319和329的输出。例如,如果客户数据318和客户数据328(分别通过线程332和334)以大致相同的速率更新,则线程管理器336可以以大致相同的速率简单地更新主机数据319和329(分别对应于客户数据318和319)。然而,如果客户数据318以比客户数据328快得多的速率更新,则线程管理器336可以使客户数据318节流(例如通过不频繁地将其通信给主机应用340)以防止其远远超过客户数据328。线程管理器336还可以控制主机数据更新的总速率。例如,线程管理器336可以使更新主机数据319和/或329的速率节流,以防止该主机数据的更新速度快于主机应用340可以处理它的速度(这可能导致客户应用310和/或320、集中式场景图350和/或到显示器370的输出的不希望的不同步)。
图3D示出了相对于图3A-3C所示的示例计算机系统300的示例主机应用340的方面。本文描述的是在主机应用340内的线程341内执行的操作,其中,线程341可以与主机应用340内的附加线程同时执行。在一些示例中,主机应用340内的多线程处理可以具有允许多个客户应用或多组主机数据同时更新同一集中式场景图350(在一些示例中,通过更新集中式场景图的不同版本)的优点。这继而可以增加客户数据到所渲染的显示的总体吞吐量。在一些示例中,多线程可能需要将锁定(lock)放置在集中式场景图数据上,例如以防止线程无意地写入相同的数据。但是,在一些示例中,所描述的一个或多个操作可能不会在线程内执行。
在图3D所示的示例中,如以上关于图3C所述,更新(342)主机数据319(对应于客户应用310和客户数据318)。主机应用340然后可以识别主机数据319可以对集中式场景图350的先前版本进行的改变。例如,主机应用340可以识别出相对于集中式场景图350,主机数据319将添加节点、删除节点、改变两个节点之间的关系或改变节点的属性。(在一些示例(例如图3D中所示的示例)中,主机应用340可以使用主机数据处理程序(handler)344执行这些操作或其他操作。)主机应用340可以识别要根据主机数据319创建或更新的集中式场景图350的版本(352)。在一些示例中,在写入集中式场景图350的版本352之前,主机应用340可以锁定该版本以防止其他进程同时修改它。主机应用340可以对版本352进行改变以反映主机数据319(例如通过在版本352中添加或删除场景图节点以对应于主机数据319)。在一些示例中,主机应用340然后可以解锁版本352,并且更新对应于版本352的版本号的值(356)。主机应用340然后可以更新主机数据(342),并且重复图3D中所示的过程。因为集中式场景图350被更新以反映从各个客户应用导出的各个主机数据,集中式场景图350仍将反映来自多个客户应用的集合主机数据,即使各个客户应用可以是“被沙箱化的”并且彼此独立。
图3E示出了相对于图3A-3D所示的示例计算机系统300的示例渲染器360的方面。在一些示例中,渲染器360包括主机应用340的部分。在一些示例中,渲染器360可以是示例计算机系统300的另一组件的部分,或者可以是单独的组件或应用。在一些示例中,渲染器360可以在与示例计算机系统300的一个或多个组件不同的物理硬件中实现,并且可以通过网络与那些组件中的一个或多个通信。
在图3E所示的示例中,渲染器360在集中式场景图350的版本352上操作。在该示例中,渲染器的作用是基于集中式场景图350的版本352将图形输出渲染到显示器370。作为该过程的一部分,渲染器360可以使用已知的场景图遍历技术遍历(362)版本352。在遍历362期间或之后,渲染器360可以适当地更新(364)集中式场景图350以反映遍历的结果。例如,作为遍历362的部分,渲染器360可以识别应当从集中式场景图350删除的孤立节点。在遍历362和/或更新364之后,渲染器360可以将各种优化366应用于该场景。例如,渲染器360可以剔除被遮挡的或不可见的表面,以避免消耗不必要的计算资源。在遍历362和/或更新364之后,渲染器360可以将一种或多种视觉效果367应用于该场景。例如,在一些示例中,渲染器360可以应用灯光效果或阴影效果、应用一个或多个着色器、应用粒子效果和/或应用物理效果。最后,渲染器360可以将数据输出到图形输出管道线,其结果可以在显示器370上显示图形输出。
计算机系统的以上示例过程可以由任何适合的逻辑电路来提供。适合的逻辑电路可以包括一个或多个计算机处理器(例如CPU、GPU等),其中在执行软件程序中实现的指令时,该一个或多个计算机处理器执行该过程。另外,这样的过程也可以通过在硬件逻辑电路中实现的对应逻辑设计(例如可编程逻辑(例如PLD、FPGA等)或实现了提供所述过程的逻辑设计的定制逻辑(例如ASIC等))来提供这样的过程。此外,经由组合运行软件和硬件逻辑电路的一个或多个处理器的实现来提供这样的过程。
图4示出了可以用于实现以上示例中的任何一个或全部的示例系统400。以上示例(全部或部分)可以体现在任何便携式设备(包括可穿戴设备)或非便携式设备中,例如通信设备(例如移动电话、智能电话)、多媒体设备(例如MP3播放器、电视、收音机)、便携式或手持式计算机(例如平板电脑、上网本、笔记本电脑)、台式计算机、多合一台式机、外围设备、头戴式设备(其可以包括例如集成显示器)或适于包括示例系统架构400的任何其他系统或设备,包括这些类型的设备中的两种或更多种的组合。以上示例可以体现在两个或更多个物理上分离的设备中,例如经由无线网络通信的两个或更多个计算机。以上示例可以体现在两个或更多个物理上不同的设备中,例如将数据通信给头戴式显示器和/或从头戴式显示器通信数据的皮带包。图4是系统400的一个示例的框图,该系统400通常包括一个或多个计算机可读介质401、处理系统404、I/O子系统406、射频(RF)电路408、音频电路410和传感器电路411。这些组件可以通过一个或多个通信总线或信号线403耦接。
显而易见的是,图4中所示的架构仅是系统400的一个示例架构,并且该系统400可以具有比所示出的更多或更少的组件或者组件的不同配置。图4中所示的各种组件可以在包括一个或多个信号处理和/或专用集成电路的硬件、软件、固件或其任何组合中实现。
参考图4中的示例系统架构400,RF电路408可用于通过无线链路或网络向一个或多个其他设备发送和接收信息并且包括用于执行该功能的公知电路。RF电路408和音频电路410可以经由外围设备接口416耦接到处理系统404。接口416可以包括用于在外围设备与处理系统404之间建立和维持通信的各种已知组件。音频电路410可以耦接到音频扬声器450和麦克风452并且可以包括用于处理从接口416接收的语音信号以使用户能够与其他用户实时通信的已知电路。在一些示例中,音频电路410可以包括耳机插孔(未示出)。
传感器电路411可以耦接到各种传感器,包括但不限于可以感应剩余的电池寿命、功耗、处理器速度、CPU负载等的一个或多个发光二极管(LED)或其他光发射器、一个或多个光电二极管或其他光传感器、一个或多个光热传感器、磁力计、加速度计、陀螺仪、气压计、罗盘、接近传感器、相机、环境光传感器、温度计、GPS传感器、眼电图(EOG)传感器和各种系统传感器。在诸如涉及头戴式设备的示例中,可以结合与用户的眼睛有关的功能(诸如跟踪用户的眼睛运动或者基于他或她的眼睛的图像来识别用户)来采用一个或多个传感器。
外围设备接口416可以将系统的输入和输出外围设备耦接到处理器418和计算机可读介质401。一个或多个处理器418可以经由控制器44与一个或多个计算机可读介质401通信。计算机可读介质401可以是可以储存供一个或多个处理器418使用的代码和/或数据的任何设备或介质(不包括信号)。在一些示例中,介质401可以是非暂时性计算机可读存储介质。介质401可以包括存储器层次,包括但不限于高速缓存、主存储器和辅助(secondary)存储器。可以使用RAM(例如,SRAM、DRAM、DDRAM)、ROM、FLASH、磁和/或光储存设备(例如磁盘驱动器、磁带、CD(光盘)和DVD(数字视频光盘))的任何组合来实现该存储器层次。介质401还可以包括用于承载指示计算机指令或数据的信息承载(information-bearing)信号的传输介质(但不包括信号并且不包括根据其调制信号的载波)。例如,传输介质可以包括通信网络,包括但不限于因特网(也称为万维网)、内联网、局域网(LAN)、广域网(WLAN)、储存区域网络(SAN)、城域网(MAN)等。
一个或多个处理器418可以运行储存在介质401中的各种软件组件以执行用于系统400的各种功能。在一些示例中,软件组件可以包括操作系统422、通信模块(或指令集)424、I/O处理模块(或指令集)426、图形模块(或指令集)428和一个或多个应用(或指令集)430。这些模块和上述应用中的每一个都可以对应于用于执行上述一个或多个功能和本申请中描述的方法(例如本文描述的计算机实现的方法和其他信息处理方法)的指令集。这些模块(即,指令集)不需要被实现为单独的软件程序、过程或模块,并且因此在各种示例中,这些模块的各种子集可以被组合或以其他方式重新布置。在一些示例中,介质401可以储存上面识别的模块和数据结构的子集。此外,介质401可以储存上面未描述的附加模块和数据结构。
操作系统422可以包括用于控制和管理一般系统任务(例如,存储器管理、储存设备控制、电源管理等)的各种过程、指令集、软件组件和/或驱动器,并促进各种硬件和软件组件之间的通信。
通信模块424可以促进通过一个或多个外部端口436或经由RF电路408与其他设备的通信,并且通信模块424可以包括用于处理从RF电路408和/或外部端口436接收的数据的各种软件组件。
图形模块428可以包括用于在一个或多个显示表面上渲染、动画化和显示图形对象的各种已知软件组件。显示表面可以包括2D或3D显示器。显示表面可以直接或间接耦接到示例系统400的一个或多个组件。在涉及触摸感测显示器(例如触摸屏)的示例中,图形模块428可以包括用于在触摸感测显示器上渲染、显示和动画化对象的组件。在一些示例中,图形模块428可以包括用于渲染到远程显示器的组件。在一些示例(例如那些包含相机的示例)中,图形模块428可以包括用于创建和/或显示通过合成相机数据(例如从头戴式相机捕获的)或摄影数据(例如卫星捕获的图像)与所渲染的图形对象而形成的图像的组件。在一些示例中,图形模块可以包括用于将图像渲染到头戴式显示器的组件。在一些示例中,图像可以包括虚拟内容的元素的视图(例如三维虚拟环境中的对象)和/或物理世界的视图(例如指示用户的物理环境的相机输入)。在一些示例中,显示器可以呈现虚拟内容和物理世界的视图的合成。在一些示例中,物理世界的视图可以是所渲染的图像;在一些示例中,物理世界的视图可以是来自相机的图像。
一个或多个应用430可以包括安装在系统400上的任何应用,包括但不限于浏览器、地址簿、联系人列表、电子邮件、即时消息、文字处理、键盘仿真、控件、使能JAVA的应用、加密、数字权管理、语音识别、语音复制、位置确定功能(例如全球定位系统(GPS)提供的功能)、音乐播放器等。
I/O子系统406可以耦接到眼睛I/O设备412和用于控制或执行各种功能的一个或多个其他I/O设备414。例如,眼睛I/O设备412可以经由眼睛I/O设备控制器432与处理系统404通信,其可以包括用于处理眼睛输入(例如用于眼睛跟踪的传感器)或用户手势输入(例如光学传感器)的各种组件。一个或多个其他输入控制器434可以从其他I/O设备414接收电信号/向其他I/O设备414发送电信号。其他I/O设备414可以包括物理按钮、拨盘(dial)、滑块开关、操纵杆、键盘、触摸板、其他显示屏或其任何组合。
I/O处理模块426可以包括用于执行与眼睛I/O设备412和/或其他I/O设备414相关联的各种任务的各种软件组件,其中各种任务包括但不限于接收和处理经由眼睛I/O设备控制器432从眼睛I/O设备412接收或经由I/O控制器434从其他I/O设备414接收的输入。在一些示例中,I/O设备414和/或I/O处理模块426可以执行与可以通过触觉或非触觉方式提供的手势输入相关联的各种任务。在一些示例中,手势输入可以由用于检测例如用户的眼睛、手臂、手和/或手指的运动的相机或另一传感器提供。在一些示例中,I/O设备414和/或I/O处理模块426可以被配置为识别显示器的用户希望与之交互的对象,例如用户指向的GUI元素。在一些示例中,眼睛I/O设备412和/或I/O处理模块426可以被配置为(例如在光学或EOG传感器的辅助下)执行眼睛跟踪任务,例如识别用户正在看的位于显示器上的对象或区域。在一些示例中,设备(例如硬件“信标”)可以由用户穿戴或握持,以辅助触摸I/O设备412和/或I/O处理模块426完成与手势有关的任务,例如识别用户的手相对于2D或3D环境的位置。在一些示例中,眼睛I/O设备412和/或I/O处理模块426可以被配置为基于传感器输入(诸如来自相机传感器的与用户的眼睛有关的数据)来识别用户。
在一些示例中,图形模块428可以在GUI中向用户显示视觉输出。视觉输出可以包括文本、图形、视频及其任何组合。视觉输出中的一些或全部可以对应于用户接口对象。在一些示例中,I/O设备412和/或414和/或控制器432和/或434(以及介质401中的任何相关联模块和/或指令集)可以检测和跟踪手势和/或眼睛运动,并且可以将检测到的手势和/或眼睛运动转换为与图形对象(例如一个或多个用户接口对象)的交互。在眼睛I/O设备412和/或眼睛I/O设备控制器432被配置为跟踪用户的眼睛运动的示例中,用户可以通过查看它们而直接与图形对象交互。
可以例如由眼睛I/O设备412或另一个I/O设备414基于正在显示的内容和/或计算系统的一个或多个状态来提供反馈。可以光学地(例如光信号或显示的图像)、机械地(例如触觉反馈、触摸反馈、力反馈等)、电地(例如电刺激)、嗅觉地、听觉地(例如哔哔声等)等或其任意组合并且以可变或不变的方式发送反馈。
系统400还可以包括用于为各种硬件组件供电的电源系统444,并且可以包括电源管理系统、一个或多个电源、充电系统、电源故障检测电路、电源转换器或逆变器、电力状态指示器和通常与便携式设备中电力的产生、管理和分配相关联的任何其他组件。
在一些示例中,外围设备接口416、一个或多个处理器418和存储器控制器420可以在诸如处理系统404的单个芯片上实现。在一些其他示例中,它们可以在单独的芯片上实现。
在一些示例中,公开了一种方法。该方法可以包括:从计算机系统的第一客户应用接收包括第一节点的第一图形数据;以及从计算机系统的第二客户应用接收包括第二节点的第二图形数据;以及生成场景图,其中,场景图描述了第一节点与第二节点之间的关系,并且场景图被配置为当被计算机系统的处理器遍历时渲染输出。作为上述示例中的一个或多个的附加或替代,该方法还可以包括由计算机系统的处理器遍历场景图。作为上述示例中的一个或多个的附加或替代,计算机系统可以被配置为与显示器通信,并且该方法还可以包括在显示器上显示输出。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对输出应用优化。作为上述示例中的一个或多个的附加或替代,应用优化可以包括剔除表面。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对输出应用视觉效果。作为上述示例中的一个或多个的附加或替代,应用视觉效果可以包括计算光值。作为上述示例中的一个或多个的附加或替代,应用视觉效果可以包括执行着色器。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对输出应用物理效果。作为上述示例中的一个或多个的附加或替代,应用物理效果可以包括检测碰撞。作为上述示例中的一个或多个的附加或替代,第一客户应用可以是在计算机系统上执行的第一应用,第二客户应用可以是在计算机系统上执行的第二应用,以及第一客户应用可以相对于第二客户应用在计算机系统上被沙箱化。作为上述示例中的一个或多个的附加或替代,第一图形数据可以对应于与第一客户应用相关联的第一客户场景图,第二图形数据可以对应于与第二客户应用相关联的第二客户场景图,第一客户场景图可以相对于第二客户场景图在计算机系统上被沙箱化,第一客户场景图可以相对于场景图在计算机系统上被沙箱化,以及第二客户场景图可以相对于场景图在计算机系统上被沙箱化。作为上述示例中的一个或多个的附加或替代,场景图可以对应于版本化场景图的版本。作为上述示例中的一个或多个的附加或替代,可以使用计算机系统的第一处理线程将第一图形数据通信给场景图,以及可以使用计算机系统的独立于第一处理线程的第二处理线程将第二图形数据通信给场景图。
在一些示例中,公开了一种方法。该方法可以包括:遍历具有显示器的计算机系统的场景图,其中:场景图包括与第一应用相关联的第一3D数据,其中第一3D数据包括一个或多个节点,场景图包括与第二应用相关联的第二3D数据,其中第二3D数据包括一个或多个节点,第一应用相对于第二应用在计算机系统上被沙箱化,以及场景图包括第一3D数据的节点与第二3D数据的节点之间的关系;以及在显示器上显示与场景图对应的图像,其中:该图像对应于遍历场景图的输出,以及该图像反映该关系。作为上述示例中的一个或多个的附加或替代,该关系可以是空间关系。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对遍历场景图的输出应用优化。作为上述示例中的一个或多个的附加或替代,应用优化可以包括剔除表面。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对遍历场景图的输出应用视觉效果。作为上述示例中的一个或多个的附加或替代,应用视觉效果可以包括计算光值。作为上述示例中的一个或多个的附加或替代,应用视觉效果可以包括执行着色器。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对遍历场景图的输出应用物理效果。作为上述示例中的一个或多个的附加或替代,应用物理效果可以包括检测碰撞。作为上述示例中的一个或多个的附加或替代,场景图可以对应于版本化场景图的版本。作为上述示例中的一个或多个的附加或替代,可以通过在计算机系统上执行的主机应用将与第一3D数据对应的图形数据通信给场景图。作为上述示例中的一个或多个的附加或替代,可以通过主机应用的客户将与第一3D数据对应的图形数据通信给主机应用。作为上述示例中的一个或多个的附加或替代,可以使用第一处理线程通过主机应用将与第一3D数据对应的第一图形数据通信给场景图,以及可以使用独立于第一处理线程的第二处理线程通过主机应用将与第二3D数据对应的第二图形数据通信给场景图。
在一些示例中,公开了一种计算机系统。该系统可以包括一个或多个处理器、以及储存指令的存储器,该指令当由一个或多个处理器执行时使该一个或多个处理器执行上述一种或多种方法。
在一些示例中,公开了一种非暂时性计算机可读存储介质。非暂时性计算机可读存储介质可以储存指令,该指令在由一个或多个处理器执行时使一个或多个处理器执行一种方法,该方法包括:从计算机系统的第一客户应用接收包括第一节点的第一图形数据;从计算机系统的第二客户应用接收包括第二节点的第二图形数据;以及生成场景图,其中:场景图描述了第一节点与第二节点之间的关系,并且场景图被配置为当被计算机系统的处理器遍历时渲染输出。作为上述示例中的一个或多个的附加或替代,该方法还可以包括通过计算机系统的处理器遍历场景图。作为上述示例中的一个或多个的附加或替代,计算机系统可以被配置为与显示器通信,以及该方法还可以包括在显示器上显示输出。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对输出应用优化。作为上述示例中的一个或多个的附加或替代,应用优化可以包括剔除表面。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对输出应用视觉效果。作为上述示例中的一个或多个的附加或替代,应用视觉效果可以包括计算光值。作为上述示例中的一个或多个的附加或替代,应用视觉效果可以包括执行着色器。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对输出应用物理效果。作为上述示例中的一个或多个的附加或替代,应用物理效果可以包括检测碰撞。作为上述示例中的一个或多个的附加或替代,第一客户应用可以是在计算机系统上执行的第一应用,第二客户应用可以是在计算机系统上执行的第二应用,以及第一客户应用可以相对于第二客户应用在计算机系统上被沙箱化。作为上述示例中的一个或多个的附加或替代,第一图形数据可以对应于与第一客户应用相关联的第一客户场景图,第二图形数据可以对应于与第二客户应用相关联的第二客户场景图,第一客户场景图可以相对于第二客户场景图在计算机系统上被沙箱化,第一客户场景图可以相对于场景图在计算机系统上被沙箱化,以及第二客户场景图可以相对于场景图在计算机系统上被沙箱化。作为上述示例中的一个或多个的附加或替代,场景图可以对应于版本化场景图的版本。作为上述示例中的一个或多个的附加或替代,可以使用计算机系统的第一处理线程将第一图形数据通信给场景图,以及可以使用计算机系统的独立于第一处理线程的第二处理线程将第二图形数据通信给场景图。
在一些示例中,公开了一种非暂时性计算机可读存储介质。非暂时性计算机可读存储介质可以储存指令,该指令在由一个或多个处理器执行时使该一个或多个处理器执行一种方法,该方法包括:遍历具有显示器的计算机系统的场景图,其中:场景图包括与第一应用相关联的第一3D数据,其中第一3D数据包括一个或多个节点,场景图包括与第二应用相关联的第二3D数据,其中第二3D数据包括一个或多个节点,第一应用相对于第二应用在计算机系统上被沙箱化,以及场景图包括第一3D数据的节点与第二3D数据的节点之间的关系;以及在显示器上显示对应于场景图的图像,其中:图像对应于遍历场景图的输出,以及图像反映该关系。作为上述示例中的一个或多个的附加或替代,该关系可以是空间关系。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对遍历场景图的输出应用优化。作为上述示例中的一个或多个的附加或替代,应用优化可以包括剔除表面。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对遍历场景图的输出应用视觉效果。作为上述示例中的一个或多个的附加或替代,应用视觉效果可以包括计算光值。作为上述示例中的一个或多个的附加或替代,应用视觉效果可以包括执行着色器。作为上述示例中的一个或多个的附加或替代,该方法还可以包括在计算机系统处对遍历场景图的输出应用物理效果。作为上述示例中的一个或多个的附加或替代,应用物理效果可以包括检测碰撞。作为上述示例中的一个或多个的附加或替代,场景图可以对应于版本化场景图的版本。作为上述示例中的一个或多个的附加或替代,可以通过在计算机系统上执行的主机应用将与第一3D数据对应的图形数据通信给场景图。作为上述示例中的一个或多个的附加或替代,可以通过主机应用的客户将与第一3D数据对应的图形数据通信给主机应用。作为上述示例中的一个或多个的附加或替代,可以使用第一处理线程通过主机应用将与第一3D数据对应的第一图形数据通信给场景图,以及可以使用独立于第一处理线程的第二处理线程通过主机应用将与第二3D数据对应的第二图形数据通信给场景图。
在一些示例中,公开了一种计算机系统。该系统可以包括:一个或多个处理器;以及储存器,该储存器被配置为从第一客户应用在计算机系统处接收第一场景数据,以及从第二客户应用在计算机系统处接收第二场景数据;以及储存指令的存储器,该存储器当由一个或多个处理器执行时使该一个或多个处理器执行一种方法,该方法包括:基于第一场景数据和第二场景数据生成图形数据结构,该图形数据结构被配置为当被提供作为由一个或多个处理器执行的渲染操作的输入时,导致与显示器上的图像对应的输出。作为上述示例中的一个或多个的附加或替代,图形数据结构可以是显示列表和显示树中的至少一个。作为上述示例中的一个或多个的附加或替代,该方法还可以包括使用图形数据结构作为输入来执行渲染操作。作为上述示例中的一个或多个的附加或替代,该计算机系统还可以包括显示器,以及该方法还可以包括在显示器上显示图像。作为上述示例中的一个或多个的附加或替代,第一客户应用可以是由第一设备的一个或多个处理器执行的第一应用,以及第二客户应用可以是由第一设备的一个或多个处理器执行的第二应用。作为上述示例中的一个或多个的附加或替代,第一客户应用可以是由第一设备的一个或多个处理器执行的第一应用,以及第二客户应用可以是由第二设备的一个或多个处理器执行的第二应用。作为上述示例中的一个或多个的附加或替代,该储存器还可被配置为从第三客户应用接收第三场景数据。作为上述示例中的一个或多个的附加或替代,该方法还可以包括从储存器中删除第一场景数据。作为上述示例中的一个或多个的附加或替代,图形数据结构可以包括第一数据和第二数据,以及该方法还可以包括:确定第一数据是对应于遮挡视图还是非遮挡视图;响应于确定第一数据对应于非遮挡视图,基于第一数据渲染包括非遮挡视图的图像;以及响应于确定第一数据对应于遮挡视图,渲染不包括遮挡视图的图像。作为上述示例中的一个或多个的附加或替代,储存器还可以被配置为响应于接收到第一场景数据,将第一场景数据作为第一版本储存在版本控制系统中。作为上述示例中的一个或多个的附加或替代,储存器还可被配置为:从第一客户应用接收第三场景数据;以及将第三场景数据作为第二版本储存在版本控制系统中。作为上述示例中的一个或多个的附加或替代,该方法还可以包括响应于生成图形数据结构,从储存器中删除第一版本。作为上述示例中的一个或多个的附加或替代,可以与所述储存器接收第三场景数据并行地执行该方法。作为上述示例中的一个或多个的附加或替代,储存器可以被配置为与接收第二场景数据并行地接收第一场景数据。作为上述示例中的一个或多个的附加或替代,储存器可以被配置为以对应于第一数据速率的第一间隔接收第三场景数据,以及该方法还可以包括调整第一间隔的长度以与第二数据速率对应。作为上述示例中的一个或多个的附加或替代,第一场景数据可以包括新数据、删除的数据以及数据之间的关系的改变中的至少一个。
在一些示例中,公开了一种计算机系统。该计算机系统可以包括服务器、服务器数据、第一客户应用和第二客户应用,并且可以被配置为:在服务器处从第一客户应用接收第一未处理的场景数据;在服务器处从第二客户应用接收第二未处理的场景数据;在服务器处将来自第一客户应用的第一未处理的场景数据、来自第二客户应用的第二未处理的场景数据以及服务器数据合并为集中式场景数据结构;在服务器处执行集中式场景数据结构内包含的数据的至少一部分;以及基于在集中式场景数据结构内执行的数据创建图形数据结构。作为上述示例中的一个或多个的附加或替代,图形数据结构可以是显示列表或显示树。作为上述示例中的一个或多个的附加或替代,计算机系统还可以包括被配置为将图形数据结构渲染成处理的图像的渲染引擎。作为上述示例中的一个或多个的附加或替代,计算机系统还可以包括被配置为显示处理的图像的显示器。作为上述示例中的一个或多个的附加或替代,显示器可以能够显示虚拟内容,同时维持物理世界的至少部分视图。作为上述示例中的一个或多个的附加或替代,第一客户应用和第二客户应用可以是在单个物理设备上运行的两个不同的应用。作为上述示例中的一个或多个的附加或替代,第一客户应用和第二客户应用可以是两个不同的应用,每个应用在单独的物理设备上运行。作为上述示例中的一个或多个的附加或替代,服务器可以被配置为从第三客户应用接收第三未处理的场景数据。作为上述示例中的一个或多个的附加或替代,服务器可以被配置为在执行来自第一客户应用的未处理的场景数据之后,从第一客户应用删除未处理的场景数据。作为上述示例中的一个或多个的附加或替代,渲染引擎还可以包括遮挡模块,该遮挡模块被配置为将图形数据结构内的数据分离为第一遮挡类别和第二遮挡类别并显示第二遮挡类别。作为上述示例中的一个或多个的附加或替代,服务器可以被配置为将来自第一客户应用的第一未处理的场景数据储存为第一版本。作为上述示例中的一个或多个的附加或替代,服务器可以被配置为将来自第一客户应用的第三未处理的场景数据储存为第二版本。作为上述示例中的一个或多个的附加或替代,计算机系统可以被配置为从服务器接收来自第一客户应用的第一未处理的场景数据的第一版本的时间开始,储存来自第一客户应用的第一未处理的场景数据的第一版本,直到来自第一客户应用的第一未处理的场景数据被读取并被执行的时间。作为上述示例中的一个或多个的附加或替代,服务器可以被配置为在从第二客户接收第二未处理的场景数据的同时从第一客户接收第一未处理的场景数据。作为上述示例中的一个或多个的附加或替代,服务器可以被配置为减缓第一客户应用向服务器发送未处理的场景数据的速率。作为上述示例中的一个或多个的附加或替代,从第一客户应用和第二客户应用接收的数据可以是从以下各项组成的组中选择的至少一个:新数据、删除的数据、先前传输的数据之间的关系的改变以及修改的数据。
尽管已经参考附图充分描述了所公开的示例,但是应当注意,各种改变和修改对于本领域技术人员而言将变得显而易见。例如,一个或多个实现的元素可以被组合、删除、修改或补充以形成进一步的实现。这样的改变和修改应理解为包括在由所附权利要求限定的所公开示例的范围内。
Claims (10)
1.一种方法,包括:
从第一客户应用向计算机系统传送包括多个第一节点的第一图形数据,所述计算机系统与第二客户应用通信;
从所述计算机系统接收场景图,其中:
所述场景图描述所述多个第一节点中的至少一个第一节点与所述第二客户应用的第二图形数据的多个第二节点中的至少一个第二节点之间的第一遮挡关系,以及
所述场景图还描述所述多个第一节点中的至少一个第三节点与所述多个第二节点中的至少一个第四节点之间的第二遮挡关系;以及
基于所述第一遮挡关系并且还基于所述第二遮挡关系创建渲染场景,其中,至少一个第二节点遮挡至少一个第一节点,以使得所述第二图形数据的第一部分遮挡所述第一图形数据的第一部分,并且至少一个第三节点遮挡至少一个第四节点,以使得所述第一图形数据的第二部分遮挡所述第二图形数据的第二部分。
2.一种存储指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行包括以下操作的方法:
从第一客户应用向计算机系统传送包括多个第一节点的第一图形数据,所述计算机系统与第二客户应用通信;
从所述计算机系统接收场景图,其中:
所述场景图描述所述多个第一节点中的至少一个第一节点与所述第二客户应用的第二图形数据的多个第二节点中的至少一个第二节点之间的第一遮挡关系,以及
所述场景图还描述所述多个第一节点中的至少一个第三节点与所述多个第二节点中的至少一个第四节点之间的第二遮挡关系;以及
基于所述第一遮挡关系并且还基于所述第二遮挡关系创建渲染场景,其中,至少一个第二节点遮挡至少一个第一节点,以使得所述第二图形数据的第一部分遮挡所述第一图形数据的第一部分,并且至少一个第三节点遮挡至少一个第四节点,以使得所述第一图形数据的第二部分遮挡所述第二图形数据的第二部分。
3.一种系统,包括:
一个或多个处理器,其被配置为执行一种方法,所述方法包括:
从第一客户应用向计算机系统传送包括多个第一节点的第一图形数据,所述计算机系统与第二客户应用通信;
从所述计算机系统接收场景图,其中:
所述场景图描述所述多个第一节点中的至少一个第一节点与所述第二客户应用的第二图形数据的多个第二节点中的至少一个第二节点之间的第一遮挡关系,以及
所述场景图还描述所述多个第一节点中的至少一个第三节点与所述多个第二节点中的至少一个第四节点之间的第二遮挡关系;以及
基于所述第一遮挡关系并且还基于所述第二遮挡关系创建渲染场景,其中,至少一个第二节点遮挡至少一个第一节点,以使得所述第二图形数据的第一部分遮挡所述第一图形数据的第一部分,并且至少一个第三节点遮挡至少一个第四节点,以使得所述第一图形数据的第二部分遮挡所述第二图形数据的第二部分。
4.一种系统,包括:
一个或多个处理器,其被配置为执行一种方法,所述方法包括:
从计算机系统的第一客户应用接收包括多个第一节点的第一图形数据;
从所述计算机系统的第二客户应用接收包括多个第二节点的第二图形数据;
生成场景图,其中:
所述场景图描述所述多个第一节点中的至少一个第一节点与所述多个第二节点中的至少一个第二节点之间的第一遮挡关系,
所述场景图还描述所述多个第一节点中的至少一个第三节点与所述多个第二节点中的至少一个第四节点之间的第二遮挡关系;以及
所述场景图被配置为基于所述第一遮挡关系并且还基于所述第二遮挡关系创建渲染场景,其中,至少一个第二节点遮挡至少一个第一节点,以使得所述第二图形数据的第一部分遮挡所述第一图形数据的第一部分,并且至少一个第三节点遮挡至少一个第四节点,以使得所述第一图形数据的第二部分遮挡所述第二图形数据的第二部分。
5.一种包括指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行包括以下操作的方法:
从计算机系统的第一客户应用接收包括多个第一节点的第一图形数据;
从所述计算机系统的第二客户应用接收包括多个第二节点的第二图形数据;
生成场景图,其中:
所述场景图描述所述多个第一节点中的至少一个第一节点与所述多个第二节点中的至少一个第二节点之间的第一遮挡关系,
所述场景图还描述所述多个第一节点中的至少一个第三节点与所述多个第二节点中的至少一个第四节点之间的第二遮挡关系;以及
所述场景图被配置为基于所述第一遮挡关系并且还基于所述第二遮挡关系创建渲染场景,其中,至少一个第二节点遮挡至少一个第一节点,以使得所述第二图形数据的第一部分遮挡所述第一图形数据的第一部分,并且至少一个第三节点遮挡至少一个第四节点,以使得所述第一图形数据的第二部分遮挡所述第二图形数据的第二部分。
6.一种方法,包括:
从第一客户应用接收第一图形数据;
以第一数据速率从所述第一客户应用接收经更新的第一图形数据;
从第二客户应用接收第二图形数据;
以第二数据速率从所述第二客户应用接收经更新的第二图形数据,所述第二数据速率不同于所述第一数据速率;
响应于确定所述第二数据速率太高,以低于所述第二数据速率的第三数据速率更新所述第二图形数据;以及
基于所述经更新的第一图形数据并且还基于所述经更新的第二图形数据,生成场景图,其中:
所述场景图相对于所述第一客户应用和所述第二客户应用被同步,以及
生成所述场景图包括:
根据所述第三数据速率,基于所述经更新的第一图形数据来更新所述场景图的第一版本,以及
根据所述第三数据速率,基于所述经更新的第二图形数据,与所述第一版本同时地更新所述场景图的第二版本。
7.一种计算机系统,包括:
一个或多个处理器;以及
存储指令的存储器,所述指令在由所述一个或多个处理器执行时使得所述一个或多个处理器执行一种方法,所述方法包括:
从第一客户应用接收包括第一节点的第一图形数据;
以第一数据速率从所述第一客户应用接收经更新的第一图形数据;
从与所述第一客户应用不同的第二客户应用接收包括第二节点的第二图形数据;
以第二数据速率从所述第二客户应用接收经更新的第二图形数据,所述第二数据速率不同于所述第一数据速率;
响应于确定所述第二数据速率太高,以低于所述第二数据速率的第三数据速率更新所述第二图形数据;以及
生成场景图,其中:
所述场景图相对于所述第一客户应用和所述第二客户应用被同步,以及
生成所述场景图包括:
根据所述第三数据速率,基于所述经更新的第一图形数据来更新所述场景图的第一版本,以及
根据所述第三数据速率,基于所述经更新的第二图形数据,与所述第一版本同时地更新所述场景图的第二版本。
8.一种方法,包括:
从第一客户应用向计算机系统传送包括第一多个节点的第一图形数据,所述计算机系统与第二客户应用通信;
从所述计算机系统接收场景图,其中:
所述场景图描述所述第一多个节点中的至少一个节点与所述第二客户应用的第二图形数据的第二多个节点中的至少一个节点之间的第一遮挡关系,
所述场景图还描述所述第一多个节点中的至少一个节点与所述第二多个节点中的至少一个节点之间的第二遮挡关系,
所述第一遮挡关系被配置为使得所述第二多个节点中的至少第一节点遮挡所述第一多个节点中的至少第一节点,
所述第二遮挡关系被配置为使得所述第一多个节点中的至少第二节点遮挡所述第二多个节点中的至少第二节点;以及
基于所述第一遮挡关系创建渲染场景,其中,所述渲染场景包括所述第一多个节点的子集。
9.一种存储指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行包括以下操作的方法:
从第一客户应用向计算机系统传送包括第一多个节点的第一图形数据,所述计算机系统与第二客户应用通信;
从所述计算机系统接收场景图,其中:
所述场景图描述所述第一多个节点中的至少一个节点与所述第二客户应用的第二图形数据的第二多个节点中的至少一个节点之间的第一遮挡关系,
所述场景图还描述所述第一多个节点中的至少一个节点与所述第二多个节点中的至少一个节点之间的第二遮挡关系,
所述第一遮挡关系被配置为使得所述第二多个节点中的至少第一节点遮挡所述第一多个节点中的至少第一节点,
所述第二遮挡关系被配置为使得所述第一多个节点中的至少第二节点遮挡所述第二多个节点中的至少第二节点;以及
基于所述第一遮挡关系创建渲染场景,其中,所述渲染场景包括所述第一多个节点的子集。
10.一种系统,包括:
一个或多个处理器,其被配置为执行一种方法,所述方法包括:
从第一客户应用向计算机系统传送包括第一多个节点的第一图形数据,所述计算机系统与第二客户应用通信;
从所述计算机系统接收场景图,其中:
所述场景图描述所述第一多个节点中的至少一个节点与所述第二客户应用的第二图形数据的第二多个节点中的至少一个节点之间的第一遮挡关系,
所述场景图还描述所述第一多个节点中的至少一个节点与所述第二多个节点中的至少一个节点之间的第二遮挡关系,
所述第一遮挡关系被配置为使得所述第二多个节点中的至少第一节点遮挡所述第一多个节点中的至少第一节点,
所述第二遮挡关系被配置为使得所述第一多个节点中的至少第二节点遮挡所述第二多个节点中的至少第二节点;以及
基于所述第一遮挡关系创建渲染场景,其中,所述渲染场景包括所述第一多个节点的子集。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762479134P | 2017-03-30 | 2017-03-30 | |
US62/479,134 | 2017-03-30 | ||
PCT/US2018/025298 WO2018183778A1 (en) | 2017-03-30 | 2018-03-29 | Centralized rendering |
CN201880023286.1A CN110476188B (zh) | 2017-03-30 | 2018-03-29 | 集中式渲染 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880023286.1A Division CN110476188B (zh) | 2017-03-30 | 2018-03-29 | 集中式渲染 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118154747A true CN118154747A (zh) | 2024-06-07 |
Family
ID=63671060
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410264968.9A Pending CN118154747A (zh) | 2017-03-30 | 2018-03-29 | 集中式渲染 |
CN201880023286.1A Active CN110476188B (zh) | 2017-03-30 | 2018-03-29 | 集中式渲染 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880023286.1A Active CN110476188B (zh) | 2017-03-30 | 2018-03-29 | 集中式渲染 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11017592B2 (zh) |
EP (1) | EP3602495A4 (zh) |
JP (1) | JP7168578B2 (zh) |
KR (2) | KR102648256B1 (zh) |
CN (2) | CN118154747A (zh) |
AU (1) | AU2018243460B2 (zh) |
CA (1) | CA3058421A1 (zh) |
IL (3) | IL269545B2 (zh) |
WO (1) | WO2018183778A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10977858B2 (en) | 2017-03-30 | 2021-04-13 | Magic Leap, Inc. | Centralized rendering |
EP3602495A4 (en) | 2017-03-30 | 2020-12-16 | Magic Leap, Inc. | CENTRALIZED RENDERING |
JP7411585B2 (ja) * | 2018-06-18 | 2024-01-11 | マジック リープ, インコーポレイテッド | 一元化レンダリング |
US12100112B2 (en) | 2018-08-10 | 2024-09-24 | Nvidia Corporation | Cloud-centric platform for collaboration and connectivity on 3D virtual environments |
US11227435B2 (en) | 2018-08-13 | 2022-01-18 | Magic Leap, Inc. | Cross reality system |
US10957112B2 (en) | 2018-08-13 | 2021-03-23 | Magic Leap, Inc. | Cross reality system |
WO2020072985A1 (en) | 2018-10-05 | 2020-04-09 | Magic Leap, Inc. | Rendering location specific virtual content in any location |
WO2020190565A1 (en) * | 2019-03-19 | 2020-09-24 | Highwire Games Llc | Dynamic 3d environment generation |
US11132827B2 (en) | 2019-09-19 | 2021-09-28 | Facebook Technologies, Llc | Artificial reality system architecture for concurrent application execution and collaborative 3D scene rendering |
JP2022551735A (ja) | 2019-10-15 | 2022-12-13 | マジック リープ, インコーポレイテッド | 無線フィンガプリントを用いたクロスリアリティシステム |
US11568605B2 (en) | 2019-10-15 | 2023-01-31 | Magic Leap, Inc. | Cross reality system with localization service |
JP2023501952A (ja) | 2019-10-31 | 2023-01-20 | マジック リープ, インコーポレイテッド | 持続座標フレームについての品質情報を伴うクロスリアリティシステム |
JP7525603B2 (ja) | 2019-11-12 | 2024-07-30 | マジック リープ, インコーポレイテッド | 位置特定サービスおよび共有場所ベースのコンテンツを伴うクロスリアリティシステム |
EP4073763A4 (en) | 2019-12-09 | 2023-12-27 | Magic Leap, Inc. | CROSS-REALLY SYSTEM WITH SIMPLIFIED PROGRAMMING OF VIRTUAL CONTENT |
US11335070B2 (en) | 2020-02-10 | 2022-05-17 | Magic Leap, Inc. | Dynamic colocation of virtual content |
CN115398314A (zh) | 2020-02-13 | 2022-11-25 | 奇跃公司 | 使用多分辨率帧描述符进行地图处理的交叉现实系统 |
US11410395B2 (en) | 2020-02-13 | 2022-08-09 | Magic Leap, Inc. | Cross reality system with accurate shared maps |
WO2021163295A1 (en) | 2020-02-13 | 2021-08-19 | Magic Leap, Inc. | Cross reality system with prioritization of geolocation information for localization |
CN118276683A (zh) | 2020-02-14 | 2024-07-02 | 奇跃公司 | 工具桥 |
EP4104002A4 (en) | 2020-02-14 | 2023-08-09 | Magic Leap, Inc. | 3D OBJECT ANNOTATION |
US11551430B2 (en) | 2020-02-26 | 2023-01-10 | Magic Leap, Inc. | Cross reality system with fast localization |
JP2023524446A (ja) | 2020-04-29 | 2023-06-12 | マジック リープ, インコーポレイテッド | 大規模環境のためのクロスリアリティシステム |
US11568610B2 (en) * | 2020-05-12 | 2023-01-31 | Magic Leap, Inc. | Privacy preserving expression generation for augmented or virtual reality client applications |
US20220134222A1 (en) * | 2020-11-03 | 2022-05-05 | Nvidia Corporation | Delta propagation in cloud-centric platforms for collaboration and connectivity |
WO2022103225A1 (ko) * | 2020-11-13 | 2022-05-19 | 삼성전자 주식회사 | 전자 장치 및 전자 장치의 이미지 렌더링 방법 |
US11935149B2 (en) | 2020-11-13 | 2024-03-19 | Samsung Electronics Co., Ltd | Electronic device and image rendering method thereof for adjusting frame rate |
CN114283245B (zh) * | 2022-03-04 | 2022-06-14 | 中科计算技术创新研究院 | 基于三维模型层次化隐式场的渲染方法 |
CN117785343A (zh) * | 2022-09-22 | 2024-03-29 | 华为终端有限公司 | 界面生成方法及电子设备 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6130670A (en) | 1997-02-20 | 2000-10-10 | Netscape Communications Corporation | Method and apparatus for providing simple generalized conservative visibility |
US6456285B2 (en) | 1998-05-06 | 2002-09-24 | Microsoft Corporation | Occlusion culling for complex transparent scenes in computer generated graphics |
US6771264B1 (en) | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US7050955B1 (en) | 1999-10-01 | 2006-05-23 | Immersion Corporation | System, method and data structure for simulated interaction with graphical objects |
WO2002054351A2 (en) * | 2000-12-06 | 2002-07-11 | Sun Microsystems, Inc. | Using ancillary geometry for visibility determination |
US7064766B2 (en) * | 2001-10-18 | 2006-06-20 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
US7443401B2 (en) * | 2001-10-18 | 2008-10-28 | Microsoft Corporation | Multiple-level graphics processing with animation interval generation |
US7088374B2 (en) * | 2003-03-27 | 2006-08-08 | Microsoft Corporation | System and method for managing visual structure, timing, and animation in a graphics processing system |
US7290216B1 (en) * | 2004-01-22 | 2007-10-30 | Sun Microsystems, Inc. | Method and apparatus for implementing a scene-graph-aware user interface manager |
US7800614B2 (en) * | 2004-02-17 | 2010-09-21 | Oracle America, Inc. | Efficient communication in a client-server scene graph system |
US7450130B2 (en) * | 2005-09-14 | 2008-11-11 | Microsoft Corporation | Adaptive scheduling to maintain smooth frame rate |
US8275031B2 (en) * | 2005-12-15 | 2012-09-25 | Broadcom Corporation | System and method for analyzing multiple display data rates in a video system |
US8244051B2 (en) * | 2006-03-15 | 2012-08-14 | Microsoft Corporation | Efficient encoding of alternative graphic sets |
US7911950B2 (en) * | 2006-07-03 | 2011-03-22 | Cisco Technology, Inc. | Adapter and method to support long distances on existing fiber |
US20080122838A1 (en) | 2006-09-27 | 2008-05-29 | Russell Dean Hoover | Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index |
US20090278852A1 (en) * | 2008-05-09 | 2009-11-12 | Production Resource Group L.L.C | Control of 3D objects in a light displaying device |
US8368705B2 (en) | 2008-07-16 | 2013-02-05 | Google Inc. | Web-based graphics rendering system |
US8253730B1 (en) | 2008-08-29 | 2012-08-28 | Adobe Systems Incorporated | System and method for construction of data structures for ray tracing using bounding hierarchies |
US20110234587A1 (en) * | 2008-09-24 | 2011-09-29 | The Bakery | Method and system for rendering or interactive lighting of a complex three dimensional scene |
US9270783B2 (en) * | 2008-12-06 | 2016-02-23 | International Business Machines Corporation | System and method for photorealistic imaging workload distribution |
FR2974474B1 (fr) | 2011-04-19 | 2017-11-17 | Prologue | Procedes et appareils de production et de traitement de representations de scenes multimedias |
US20130127849A1 (en) | 2011-05-26 | 2013-05-23 | Sebastian Marketsmueller | Common Rendering Framework and Common Event Model for Video, 2D, and 3D Content |
US20150199788A1 (en) * | 2012-04-12 | 2015-07-16 | Google Inc. | Accelerating graphical rendering through legacy graphics compilation |
US9069554B2 (en) * | 2012-09-24 | 2015-06-30 | Qualcomm Innovation Center, Inc. | Systems and methods to coordinate resource usage in tightly sandboxed environments |
US9075618B2 (en) * | 2012-11-02 | 2015-07-07 | Microsoft Technology Licensing, Llc | Cross-platform data visualizations using common descriptions |
US9717982B2 (en) * | 2012-12-21 | 2017-08-01 | Microsoft Technology Licensing, Llc | Client rendering of latency sensitive game features |
US9230294B2 (en) | 2013-03-15 | 2016-01-05 | Dreamworks Animation Llc | Preserving and reusing intermediate data |
US9811936B2 (en) * | 2013-03-15 | 2017-11-07 | Dreamworks Animation L.L.C. | Level-based data sharing for digital content production |
EP3995952A1 (en) * | 2013-04-19 | 2022-05-11 | Huawei Technologies Co., Ltd. | Method for displaying a 3d scene graph on a screen |
US9430251B2 (en) * | 2013-09-30 | 2016-08-30 | Unity Technologies Finland Oy | Software development kit for capturing graphical image data |
US11570114B2 (en) * | 2014-03-04 | 2023-01-31 | Mobophiles, Inc. | System and method of adaptive rate control and traffic management |
EP3183653A4 (en) * | 2014-08-20 | 2018-07-04 | Landmark Graphics Corporation | Optimizing computer hardware resource utilization when processing variable precision data |
KR102244619B1 (ko) | 2014-09-30 | 2021-04-26 | 삼성전자 주식회사 | 가속 구조를 생성 및 탐색하는 방법 |
US10062354B2 (en) | 2014-10-10 | 2018-08-28 | DimensionalMechanics, Inc. | System and methods for creating virtual environments |
EP3104271A1 (en) * | 2015-06-08 | 2016-12-14 | Hans-Henry Sandbaek | Running remote java applications through a local, plugin-free web browser |
US10417803B2 (en) | 2016-06-17 | 2019-09-17 | The Boeing Company | Multiple-pass rendering of a digital three-dimensional model of a structure |
US20180114368A1 (en) * | 2016-10-25 | 2018-04-26 | Adobe Systems Incorporated | Three-dimensional model manipulation and rendering |
US10977858B2 (en) | 2017-03-30 | 2021-04-13 | Magic Leap, Inc. | Centralized rendering |
EP3602495A4 (en) | 2017-03-30 | 2020-12-16 | Magic Leap, Inc. | CENTRALIZED RENDERING |
-
2018
- 2018-03-29 EP EP18778218.0A patent/EP3602495A4/en active Pending
- 2018-03-29 IL IL269545A patent/IL269545B2/en unknown
- 2018-03-29 IL IL311547A patent/IL311547A/en unknown
- 2018-03-29 IL IL303169A patent/IL303169B2/en unknown
- 2018-03-29 KR KR1020197031887A patent/KR102648256B1/ko active IP Right Grant
- 2018-03-29 CA CA3058421A patent/CA3058421A1/en active Pending
- 2018-03-29 CN CN202410264968.9A patent/CN118154747A/zh active Pending
- 2018-03-29 KR KR1020247008075A patent/KR20240036150A/ko active Application Filing
- 2018-03-29 US US15/940,892 patent/US11017592B2/en active Active
- 2018-03-29 AU AU2018243460A patent/AU2018243460B2/en not_active Expired - Fee Related
- 2018-03-29 WO PCT/US2018/025298 patent/WO2018183778A1/en unknown
- 2018-03-29 CN CN201880023286.1A patent/CN110476188B/zh active Active
- 2018-03-29 JP JP2019553094A patent/JP7168578B2/ja active Active
-
2021
- 2021-04-21 US US17/236,971 patent/US11315316B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3602495A4 (en) | 2020-12-16 |
US20210312708A1 (en) | 2021-10-07 |
US20180286116A1 (en) | 2018-10-04 |
KR20190134694A (ko) | 2019-12-04 |
CN110476188B (zh) | 2024-03-22 |
IL311547A (en) | 2024-05-01 |
IL269545A (en) | 2019-11-28 |
WO2018183778A1 (en) | 2018-10-04 |
AU2018243460B2 (en) | 2023-01-05 |
JP7168578B2 (ja) | 2022-11-09 |
IL269545B1 (en) | 2023-06-01 |
JP2020515967A (ja) | 2020-05-28 |
KR20240036150A (ko) | 2024-03-19 |
IL269545B2 (en) | 2023-10-01 |
KR102648256B1 (ko) | 2024-03-14 |
IL303169B2 (en) | 2024-08-01 |
IL303169A (en) | 2023-07-01 |
EP3602495A1 (en) | 2020-02-05 |
IL303169B1 (en) | 2024-04-01 |
US11315316B2 (en) | 2022-04-26 |
US11017592B2 (en) | 2021-05-25 |
AU2018243460A1 (en) | 2019-10-17 |
CN110476188A (zh) | 2019-11-19 |
CA3058421A1 (en) | 2018-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110476188B (zh) | 集中式渲染 | |
US11699262B2 (en) | Centralized rendering | |
US11936733B2 (en) | Application sharing | |
CN112513969B (zh) | 集中式渲染 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |