CN114375464A - 使用边界体积表示对虚拟空间中的动态单元进行光线追踪 - Google Patents

使用边界体积表示对虚拟空间中的动态单元进行光线追踪 Download PDF

Info

Publication number
CN114375464A
CN114375464A CN202080060052.1A CN202080060052A CN114375464A CN 114375464 A CN114375464 A CN 114375464A CN 202080060052 A CN202080060052 A CN 202080060052A CN 114375464 A CN114375464 A CN 114375464A
Authority
CN
China
Prior art keywords
voxel
pixel
space
dimensional cell
virtual space
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
CN202080060052.1A
Other languages
English (en)
Inventor
J·S·皮特切特
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN114375464A publication Critical patent/CN114375464A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Abstract

本公开涉及用于在虚拟空间内高效地渲染可移动三维对象的系统、方法和计算机可读介质。例如,本文公开的系统可以标识三维单元的体素表示,该体素表示包括与来自该三维单元的骨骼结构的骨骼相关联的体素体积。本文描述的系统还可以维护体素索引,该体素索引包括映射到相应骨骼和体素体积的像素数据,以用于渲染像素空间的像素。本文描述的系统可以利用光线追踪基于来自体素索引的像素数据来渲染所标识的体素表示。与涉及变换三维网格模型的数千顶点的传统渲染方法相比,本文公开的系统可以显著降低处理资源的开销。

Description

使用边界体积表示对虚拟空间中的动态单元进行光线追踪
背景技术
近年来,已看见使用计算设备(例如,移动设备、个人计算机)来接收、存储、编辑、生成或以其他方式显示数字媒体急剧增加。例如,消费类电子设备使用各种渲染技术渲染包括高细节水平的高分辨率视频游戏内容现在很常见。此外,随着计算设备变得更复杂且显示能力也已有提高,在生成和显示各种类型的媒体内容时,更复杂的渲染技术和更详细的数字对象模型变得更常见。
许多传统的渲染系统尝试使用各种光线追踪技术来渲染数字媒体内容。实际上,光线追踪已经成为在三维计算机图形环境中渲染视觉图像的流行技术。然而,光线追踪和用于渲染三维对象的其他技术在计算上通常是不可及的(prohibitive)。例如,当三维对象在虚拟环境中移动时,计算设备通常缺乏在虚拟环境中渲染可移动对象的高质量显示的处理能力。
此外,即使计算设备具有使用光线追踪或其他渲染技术渲染图像或视频的能力,当虚拟环境包括大量三维对象和/或当三维对象在虚拟环境中移动时,在虚拟空间中渲染数字内容变得日益复杂且不可及。例如,在包含使用具有数百或数千个可变换三角形和顶点的三维网格模型来构建的任意数量的单元或角色的游戏环境中,传统处理器和/或图形处理单元(GPU)通常不能在以阈值质量水平和/或可接受的帧率来提供图像的同时,有效地处理三维单元的移动和变换。
在渲染其中包括三维单元的数字内容方面,存在这些和其他问题。
附图说明
图1解说了根据一个或多个实施例的包括三维单元渲染系统的示例环境。
图2解说了根据一个或多个实施例的用于预处理三维单元数据的示例工作流。
图3示出了根据一个或多个实施例的用于为三维单元生成多个体素表示和相关联体素索引的示例工作流。
图4示出了根据一个或多个实施例的用于对示例像素空间的诸像素进行光线追踪的三维单元渲染系统的示例实现。
图5示出了根据一个或多个实施例的用于对另一示例像素空间的诸像素进行光线追踪的三维单元渲染系统的示例实现。
图6示出了根据一个或多个实施例的用于在虚拟空间内渲染三维单元的示例动作序列。
图7示出了根据一个或多个实施例的用于在虚拟空间内渲染三维单元的另一示例动作序列。
图8解说了可被包括在计算机系统内的某些组件。
具体实施方式
本公开一般涉及用于为在虚拟空间内可移动的三维单元生成一个或多个边界体积表示(例如,体素表示、边界体积分层结构(BVH)表示)并从虚拟空间内的参考点(例如虚拟相机)的视角来渲染三维单元的显示的三维渲染系统(或简称“渲染系统”)。如下文将进一步详细讨论的,该渲染系统可以标识动态三维单元的边界体积表示,该三维单元包括与来自该三维单元的结构的诸节片(segment)相对应的边界体积(例如,体素体积)。该渲染系统还可以维护包括构成边界体积表示的各个体积的像素值的体积索引。此外,该渲染系统可以通过基于来自索引的像素值并从虚拟空间内的参考点的视角对像素空间的像素进行光线追踪来渲染三维对象的显示。
如下文将进一步详细讨论的,本公开包括提供益处和/或解决与在虚拟环境中渲染可移动三维单元相关联的问题的许多实际应用。例如,如上所述,该渲染系统可以标识三维单元的体素表示。该体素表示可以基于更详细的三维网格模型,该模型包括数百或数千多边形(例如三角形)面、边和顶点。此外,体素表示可以包括与进一步定义三维单元的结构的各个骨骼相对应的体素体积。
本文描述的一个或多个示例将结合构成三维单元的体素表示的体素表示和体素体积来具体讨论。然而,与体素表示和体素体积有关的特征和功能性可以类似地应用于其他类型的边界体积表示(例如,BVH表示)或对兼容的加速结构进行光线追踪。因此,虽然本文描述的一个或多个实施例是结合基于体素的结构来具体描述的,但其他类型的边界体积表示和/或对兼容的加速结构进行光线追踪可以结合本文描述和解说的示例来使用。
如下文将进一步详细讨论的,体素表示可以包括与定义三维单元的互连节片的诸节片相对应的多个体素体积。例如,在一个或多个实施例中,该渲染系统可以标识包含网格模型的每一顶点的体积(例如,矩形棱柱体),该网格模型受该单元的骨骼结构的对应骨骼的影响。具体而言,当骨骼的移动或骨骼相对于相邻骨骼的旋转造成网格模型的顶点和/或面发生变换时,该渲染系统可以生成包含网格模型的受影响顶点和边的体素体积。该渲染系统可为网格模型的每一骨骼生成体素体积,以生成包括三维单元的每一骨骼的体素体积的体素表示。
除了生成和/或标识三维单元的体素表示之外,该渲染系统可以附加地生成和/或维护体积索引(例如,体素索引),包括来自体素表示的对应体素体积的像素数据。例如,三维单元可以包括指示对应体素体积和/或对应骨骼的像素值的像素数据。另外,在体素体积包括共同构成该体素体积的体素块的情况下,体素索引可以包括对应体素块的像素值。实际上,在一个或多个实施例中,体素体积可包括包裹该体素体积的二维纹理,并且其包括覆盖相应体素体积的表面的体素块的像素值(例如,颜色值、亮度值)。如下文将进一步详细讨论的,当对接触相应体素体积或以其他方式受其影响的像素进行光线追踪时,可以使用体素索引。
在一个或多个实施例中,该渲染系统维护或生成三维单元的多个体素表示。具体而言,三维单元可以生成任意数量的体素表示,这些体素表示具有基于三维单元在虚拟空间中的位置而选择或标识的不同粒度(例如,不同的细节水平)。例如,在三维单元看起来远离参考点(光线追踪引擎从该参考点发射光线以渲染像素空间的像素)的情况下,该渲染系统可以利用与三维单元看起来更接近参考点时相比粒度更低的更小体素表示。在一个或多个实施例中,该渲染系统基于三维单元将在像素空间中占据的像素数目与像素空间的像素内将出现的体素块和/或体素体积的数目之间的比率,从多个体素表示中标识体素表示。
如下文将进一步详细讨论的,该渲染系统利用各种技术来基于体素表示和来自体素索引的相应像素值填充像素空间的像素。例如,如上所述,当被渲染在像素空间内时,该渲染系统可以基于三维单元的投影大小,从多个体素表示的集合中选择性地标识体素表示。作为另一示例,该渲染系统可以在确定要为像素空间的一个或多个像素写入的像素值时考虑来自不同三维单元(或来自同一单元)的交叠体素体积。作为另一示例,该渲染系统可以根据本文描述的一个或多个实施例来选择性地确定是基于与体素体积相关联的像素数据对像素进行光线追踪,还是另选地简单地基于三角形网格模型对三维单元的像素进行光线追踪或以其他方式进行渲染。
如上所述,本文描述的渲染系统的特征和功能性提供了一个或多个益处,并克服了与渲染包括虚拟空间中的三维单元的高质量图像相关联的问题。例如,作为基于传统多边形(例如,三角形)网格模型来渲染像素的替代方案,通过标识和利用体素表示来渲染像素,计算设备可以在提供图像显示时使用显著更少的处理资源。具体而言,在传统系统可能采用昂贵的过程来为每一图像帧中出现的每一三维单元变换网格模型的边和顶点的情况下,该渲染系统可以通过基于三维单元的相应骨骼的被追踪移动来处理体素体积的移动而消耗较少的处理资源。
该渲染系统还可通过取决于三维单元在像素空间内预期占据的像素的大小或数量来标识不同的体素表示,以进一步增强渲染图像时的处理效率。例如,在三维单元很小且仅占据几个像素的情况下,该渲染系统可以选择在粒度(例如,体素框的分辨率)上与三维单元在像素空间中将占据的像素数量相称的体素表示。以此方式,该渲染系统可以避免在视频的每一帧处处理网格模型的边和顶点的变换,其中渲染经变换的网格模型的显示将仅出现在像素空间的几个像素内。因此,在本文描述的一个或多个实施例中,该渲染系统可以消除专用于在图像帧中不会以任何清晰度出现的三维单元的细节的低效处理。
除了从多个潜在体素表示中选择性地标识体素表示之外,该渲染系统还可以选择性地确定是基于体素表示还是基于传统网格模型来渲染图像。例如,如下文将讨论的,在三维单元将出现在像素空间的很大一部分内的情况下,或者在三维单元处于距虚拟空间内的参考点的阈值距离内的情况下,该渲染系统可以基于网格模型而不是利用体素表示来渲染三维单元的显示。或者,在三维单元将出现在像素空间的一小部分内的情况下,或者在三维单元距虚拟空间内的参考点比阈值距离更远的情况下,根据本文描述的一个或多个实施例,该渲染系统可以改为利用体素表示和来自体素索引的相关联像素数据。以此方式,该渲染系统可以在渲染图像时提供灵活性,以确保在各种条件下显示高质量内容。
如在前面的讨论中所例示的,本公开利用各种术语来描述本文描述的系统的特征和优点。现在提供关于这些术语中的一些的含义的附加细节。如本文所使用的,“三维单元”可指可在虚拟空间内移动的任何动态对象的数字表示。三维单元可以对应于三维网格模型,该三维网格模型包括定义三维单元的结构的任意数量的顶点和边。在一个或多个实施例中,三维单元可以包括能够在虚拟空间内移动和绕彼此旋转的互连节片。例如,当三维单元指角色(例如,虚拟人)时,该角色可以包括与三维网格模型的节片或部分相关联的骨架骨骼。每一骨骼都可以独立移动,并且能够绕构成三维单元的一组分层骨骼中的相邻骨骼之间的连接来旋转。如将在下文讨论的,骨骼可与三维单元的相应节片相关联。
如本文所使用的,“虚拟空间”指三维单元能够在其中移动的虚拟环境。例如,虚拟空间可以指游戏环境,其中三维角色可以在游戏环境中从一个位置移动到另一位置。虚拟空间内的二维显示可被称为像素空间(例如,图像平面),其指示从参考点(例如,虚拟相机)的视角所看到的视野。例如,虚拟相机或光线追踪参考点可以生成像素空间,该像素空间包括示出从虚拟相机的视角看到的内容的像素阵列。这可以使用传统的光线追踪渲染技术来实现,其中通过追踪始自参考点的光路来填充像素空间的像素并模拟从虚拟空间内的参考点的视角来看将出现的图像来生成图像。
虚拟空间可以指各种虚拟环境。例如,在一个或多个实施例中,虚拟空间指三维空间的数字表示。这可包括通过图形用户界面、虚拟现实(VR)界面或提供计算机生成的数字内容的显示的其他界面来查看的数字空间。在一个或多个实施例中,虚拟空间指包括现实世界和数字元素的组合的增强现实(AR)空间。例如,虚拟空间可包括三维图像的组合,这些三维图像与从客户端设备(例如,移动设备、可穿戴设备)的视角来看的现实世界元素相关,或者能够与这些真实世界元素交互。虽然本文描述的一个或多个实施例包括因通过图形用户界面看到的数字空间而异的示例,但本文结合从参考点的视角来渲染或显示内容所描述的特征和功能性可以类似地指代任何类型的虚拟空间。
如本文所使用的,“体素表示”是指三维单元的数字模型,该数字模型包括与三维单元的各个节片(例如,骨骼)相关联的体积。例如,体素表示可以包括多个体素体积,这些体素体积包括包含三维单元的相应节片的矩形棱柱体或三维多边形。在一个或多个实施例中,体素体积是指矩形或其他多边形边界体积,其包含网格模型中受相应骨骼影响(例如,主要受其影响)的所选部分或节片的每一顶点。例如,在数字角色的手臂包括两块骨骼的情况下,角色的手臂可以由第一体素体积和第二体素体积来表示,第一体素体积包含受第一骨骼影响的手臂第一部分的顶点,第二体素体积包含受第二骨骼影响的手臂第二部分的顶点。在一个或多个实施例中,当三维单元处于基本姿势或默认位置(例如,t姿势或绑定姿势)时,体素体积不与其他体素体积交叠。或者,体素体积可以与其他体素体积重叠,其中生成体素表示涉及允许受两个或更多个骨骼影响的顶点被包含在两个不同体素体积内。
如下文将通过示例进一步详细讨论的,体素表示可以包括多个体素体积和相关联的体素块。如本文所使用的,体素块可指构成由相应体素体积定义的边界内的三维单元的结构的构建块。在一个或多个实施例中,体素块可指体素体积的表面周围的块网格,该网格定义了对应体素体积的表面的二维纹理映射。基于体素表示的预期大小,当被渲染在像素空间内时,体素块可以具有对应体素体积的粒度或细节水平。例如,当三维单元的显示在像素空间内占据小于阈值数量的像素时,所标识的第一体素表示可以包括具有与低粒度或细节水平相对应的少量体素块的体素体积。或者,在三维单元的显示在像素空间内占据超过阈值数量的像素的情况下,第二所标识的体素表示可以包括具有比来自第一体素表示的体素块更多的、与更高的细节水平粒度相对应的体素块的体素体积。
如上所述,虽然本文描述的一个或多个实施例具体涉及使用体素表示、体素体积、体素块和来自体素索引的对应像素值对像素进行光线追踪,但结合具体示例和实施例讨论的特征和功能性可以类似地应用于三维单元的其他类型的边界体积表示。例如,边界体积表示可以指BVH表示,包括绑定到动态三维结构的互连节片的相应节片的边界框和相关联构建块。因此,虽然根据体素体积和相应组件来描述了一个或多个实施例和所解说的示例,但其他类型的表示和相关联的构建块也可被用于实现与对像素进行高效光线追踪和渲染使用本文讨论的体素表示实现的三维单元的显示相关的一个或多个益处。
现在,将提供更多与用于在虚拟空间中渲染包括三维单元的数字内容的系统有关的附加细节。例如,图1解说了根据本文描述的一个或多个实施例的包括在其上实现的三维渲染系统104(或简称“渲染系统104”)的示例计算设备102。如图1所示,渲染系统104包括预处理系统106和运行时系统108。预处理系统106可以包括体素管理器110和索引管理器112。此外,运行时系统108可以包括单元更新管理器114、体素体积标识符116和光线追踪引擎118。如还示出的,计算设备102可以包括数据存储120,其上存储有单元数据122和索引数据124。
计算设备102可以指各种类型的计算设备。例如,计算设备102可以指移动设备,诸如移动电话、智能电话、个人数字助理(PDA)、平板、膝上型设备、或可穿戴计算设备(例如,头戴式耳机)。作为补充或替换,计算设备102可包括一个或多个非移动设备,诸如台式计算机、服务器设备或其他非便携式设备。在一个或多个实现中,计算设备102包括能够提供图形用户界面的显示的显示设备。作为补充或替换,计算设备102可以通信地(例如,有线或无线地)耦合到其上具有图形用户界面的显示设备以用于提供对数字内容(例如,游戏内容)的显示。在一个或多个实施例中,计算设备102是能够结合现实世界元素提供数字元素的显示的AR设备。计算设备102可以包括下面结合图8描述的附加特征和功能性。
图1示出了在单个计算设备102上实现渲染系统104和相关联组件的示例实施例。然而,将理解,渲染系统104和/或数据存储120可以在单个设备上或跨多个设备实现。例如,在一个或多个实施例中,渲染系统104包括跨客户端设备(例如,消费者电子设备)和一个或多个服务器设备的组合来实现的组件。例如,在一个或多个实施例中,预处理系统106可以实现在第一设备(例如,一个或多个服务器设备)上,而运行时系统108可以实现在第二设备(例如,客户端设备)上。此外,虽然数据存储120可以实现在与渲染系统104的一个或多个组件相同的设备或设备系统上,但数据存储120可以类似地实现在与渲染系统104不同的设备(例如,一个或多个服务器设备)上。
在一个或多个实施例中,渲染系统104的每一组件使用任何合适的通信技术彼此通信。另外,渲染系统104的组件可以与一个或多个其他设备通信。将认识到,虽然图1中所示的渲染系统104的组件在图1中被示为独立的,但是任何子组件可以被组合成更少组件,例如单个组件,或者被划分成更多组件,如可以用于特定实施例的组件。
渲染系统104的组件可以包括软件、硬件或这两者。例如,渲染系统104的组件可以包括存储在计算机可读存储介质上并且可以由一个或多个计算设备的处理器执行的一个或多个指令。当由一个或多个处理器执行时,渲染系统104的计算机可执行指令可使计算设备102执行本文所述的方法。或者,渲染系统104的组件可以包括硬件,诸如用于执行特定功能或功能组的专用处理设备。作为补充或替换,渲染系统104的组件可以包括计算机可执行指令和硬件的组合。
根据上面讨论的一个或多个示例,渲染系统104的各组件可以基于虚拟空间(例如,虚拟游戏环境)内的参考点的视角来协同提供显示。在一个或多个实施例中,渲染系统104执行一系列动作来作为预处理阶段的一部分。例如,作为安装应用或创建虚拟空间的框架的一部分,渲染系统104可以利用预处理系统106和相关联组件来执行预处理阶段的各动作,该预处理阶段涉及在发起应用的运行时之前创建虚拟环境并构建数据对象和相关联模型。
如图1所示,预处理系统106包括体素管理器110。体素管理器110可以结合能够在虚拟空间中移动的一个或多个三维单元的体素表示来执行一个或多个动作。例如,在一个或多个实施例中,体素管理器110生成三维单元的多个体素表示。具体而言,体素管理器110可为虚拟空间的显示中包括或可能包括的每一类型的三维单元生成一个或多个体素表示。例如,在游戏应用包括能够在虚拟环境中移动的各种三维角色的情况下,体素管理器110可为该各种三维角色中的每一者生成一个或多个体素表示。体素管理器110可以按各种方式生成体素表示。下面结合图2讨论与生成体素表示有关的附加细节。
体素管理器110还可以生成任意数量的体素表示。例如,体素管理器110可为具有不同骨骼结构和/或具有不同视觉特征的不同类型的单元生成一个或多个体素表示。此外,体素管理器110可为个体三维单元生成多个体素表示。具体而言,当体素表示被渲染在像素空间内时,体素管理器110可以基于体素表示的大小来生成具有不同粒度水平(例如,不同细节水平和/或体素块数量)的体素表示。下面结合图3讨论与生成多个体素表示有关的附加细节。
在一个或多个实施例中,体素管理器110还标识或维护用于标识体素表示的、用于在像素空间内渲染三维单元的显示的准则。例如,体素管理器110可以指示在选择性地标识要在对像素空间的像素进行光线追踪时使用的多个体素表示中的哪一者时使用的规则,诸如像素数目或距参考点的距离。作为另一个示例,体素管理器110可以指示与计算设备102在确定在渲染像素空间的像素时使用哪一体素表示的处理能力相关联的规则。体素管理器110还可以生成在确定是基于体素表示还是基于三维网格模型渲染像素时的规则。
如上所述,并且如图1中还示出的,预处理系统106包括索引管理器112。索引管理器112可生成和/或维护一个或多个体素表示的体素索引。如本文所使用的,体素索引可指任何数据结构(例如,表、数据库),其包括与相应体素表示相关联的像素数据。例如,体素索引可以包括体素表示的体素体积(和/或骨骼)与相关联像素值之间的映射信息。体素索引可包括像素数据,诸如颜色值、亮度值、不透明度值、反射数据、着色数据、或可被用于针对体素体积在像素空间内接触或以其他方式占据的任何像素来在像素空间内渲染像素的任何其他数据。在一个或多个实施例中,索引管理器112生成或以其他方式维护包括用于不同体素表示的不同像素数据的体素索引。下面结合图3讨论与生成相应体素表示的体素索引有关的进一步细节。
在一个或多个实施例中,在计算设备102上本地维护体素索引。例如,在一个或多个实施例中,索引管理器112生成并在计算设备102的数据存储120上存储体素索引。或者,在一个或多个实施例中,计算设备102从另一设备(例如,服务器设备)接收体素索引,并将体素索引存储在数据存储120上。在一个或多个实现中,索引管理器112可以远程访问存储或以其他方式维护在一个或多个附加设备上的体素索引。
如上所述,在一个或多个实现中,作为预处理阶段的一部分,执行与生成体素表示和相关联体素索引相关联的动作。在一个或多个实施例中,使用计算设备102的处理资源在本地执行这些动作。或者,在一个或多个实现中,服务器设备或设备系统(例如,云计算系统)可以执行一个或多个预处理功能,并向计算设备102提供体素数据和/或相关联的索引数据,以供在启动应用的运行时之际使用。
如图1中示出的,运行时系统108包括单元更新管理器114。在启动应用的运行时时,单元更新管理器114可以更新虚拟空间内的动画。例如,单元更新管理器114可以标识虚拟空间内每一三维单元的初始或当前位置。此外,单元更新管理器114可以标识在虚拟空间内参考点(例如,虚拟相机)的初始或当前位置。
单元更新管理器114还可以在应用的整个操作中执行与单元和参考点的移动和位置相关的附加处理。例如,单元更新管理器114可以持续更新虚拟空间内任意数量的三维单元的位置和取向数据。此外,单元更新管理器114可以持续更新位置、取向、视野或与虚拟空间内的参考点的位置和/或方向相关联的其他信息。
如还示出的,运行时系统108包括体素体积标识符116。在确定三维单元的初始或当前位置时,体素体积标识符116可被用于确定或标识与像素空间的像素相关的体素体积。在一个或多个实施例中,体素体积标识符116通过渲染与包括其中的体素表示的像素空间相对应的屏幕大小的缓冲区来标识每一像素的相关骨骼。更具体而言,体素体积标识符116可以渲染屏幕大小的缓冲区,该缓冲区包括在虚拟空间内当前位置和取向的参考点的视野内可见的任何体素体积。
体素体积标识符116还可标识相关骨骼(例如,来自从参考点可见的对应骨骼结构的骨骼子集)和像素空间的每一像素的对应体素体积。例如,鉴于屏幕大小的缓冲区,体素体积标识符116可以迭代像素空间的每一像素或像素子集,以标识一个或多个体素体积所影响(例如,触摸或交叠)的像素,并将对应的骨骼与受影响的像素相关联。例如,在一个或多个实现中,体素体积标识符116迭代像素空间的每一像素,并指示与接触像素空间的每一像素的任何体素体积相对应的相关骨骼和/或体素体积。下面将结合图4讨论与标识对应像素的相关骨骼有关的进一步细节。
如上所述,体素管理器110可为相应的三维单元生成任意数量的体素表示。在一个或多个实现中,体素体积标识符116可选择性地标识在渲染像素空间内的三维单元的显示时要使用体素表示中的哪一个。例如,体素体积标识符116可以基于体素表示在像素空间内占据的像素数量来选择体素表示。在一个或多个实现中,体素体积标识符116可以决定全部放弃使用体素表示,而改为在渲染显示时使用网格模型。
运行时系统108还可包括光线追踪引擎118。在标识像素空间的每一像素的相关骨骼时,体素体积标识符116可以向光线追踪引擎118提供相关信息和相关联的映射信息(例如,体素索引信息),以用于确定和渲染像素空间的像素的像素值。在一个或多个实现中,体素体积标识符116向采用各种常规光线追踪技术的光线追踪引擎118提供像素空间的所标识体素体积和相关联的像素数据。具体而言,光线追踪引擎118可以迭代像素空间的像素,以部分地基于每一像素的所标识骨骼和来自体素索引的相关联像素数据来确定像素值。
在一个或多个实施例中,光线追踪引擎118通过使光线通过像素空间的像素并仅考虑针对已被指示为相关(例如可见)的体素空间的命中,来更高效地对像素空间的像素进行光线追踪。此外,在一个或多个实施例中,光线追踪引擎118仅在没有检测到骨骼的相交或相关骨骼留待迭代的情况下,才迭代像素空间的像素。在一个或多个实施例中,光线追踪引擎118迭代通过像素空间的、体素体积所接触的每一像素,并基于来自体素索引的对应像素值来投射单个光线。
在一个或多个实施例中,光线追踪引擎118包括多个着色引擎的组合。例如,在一个或多个实施例中,光线追踪引擎118使用传统的GPU顶点变换方法来渲染体素空间内的参考点可见的任何体素体积。光线追踪引擎118随后可以使用着色器替换使用传统GPU顶点变换来渲染的值,该着色器基于来自相应体素索引的像素值通过可见体素体积来执行光线追踪,以在像素空间内产生三维单元的高质量显示。
如图1中还示出的,计算设备102包括包含单元数据122的数据存储120。单元数据122可以包括与能够在虚拟空间四处移动的三维单元相关联的任何信息。例如,单元数据122可以包括三维网格模型和相关联信息(例如,顶点、边和相关联变换数据)。单元数据122还可以包括包含体素表示和相关联数据的任何体素模型数据。
如还示出的,数据存储120可以包括索引数据124。索引数据124可以包括与相应的体素表示相关联的任何像素数据。例如,索引数据124可以包括每一体素表示的每一体素体积的像素数据。另外,索引数据124可以包括对应体素体积的每一体素块的像素数据。索引数据124可以包括像素值,诸如颜色值、亮度值、反射值、不透明度值,以及在渲染显示时可被用于填充像素空间的像素值的任何其他信息。
继续,图2提供了示例工作流200,其指示用于生成体素表示和维护相应体素索引的动作序列。例如,如图2所示,渲染系统104可以执行标识与三维单元相对应的网格模型的动作202。具体而言,渲染系统104可标识包括顶点和边的三维单元的网格模型,顶点和边表示可在虚拟空间(例如,虚拟游戏空间)四处移动的相应三维单元的结构。在本文描述的一个或多个实施例中,网格模型是指游戏应用中的数字角色的模型。然而,与可在任何虚拟环境中移动的其他类型的三维单元相关联的其他网格模型可以结合本文所述的渲染系统104的一个或多个实施例来使用。
在标识网格模型和/或三维单元时,渲染系统104可以执行标识三维单元的骨骼结构的动作204。如上所述,渲染系统104可以标识与三维单元的多个互连节片相对应的多个骨骼,这些节片至少部分地定义了三维单元如何在虚拟空间中移动。
在一个或多个实施例中,渲染系统104标识网格模型的受相应骨骼的移动影响或以其他方式绑定到相应骨骼的移动的每一顶点。在一个或多个实现中,当三维单元在虚拟空间中四处移动时,渲染系统104针对网格模型的每一顶点标识哪一骨骼与顶点的移动或变换最密切相关联。在一个或多个实施例中,每一顶点被确定为对应于单个骨骼。或者,渲染系统104可以确定一个或多个顶点对应于多个骨骼。
根据上面讨论的一个或多个实施例,渲染系统104还可以执行基于所标识的骨骼来生成三维单元的体素表示的动作206。具体而言,渲染系统104可以生成对应于相应骨骼的体素体积,包括包围网格模型的被确定为对应于相应骨骼的每一顶点的边界框(或其他多边形形状)。在一个或多个实施例中,渲染系统104为每一骨骼生成体素体积。此外,如上所述,并且将在图3中进一步详细地示出,渲染系统104可为对应的三维单元生成任意数量的体素表示。
在一个或多个实施例中,给定体素表示的体素体积不与体素表示中的其他体素体积交叠。例如,当三维单元处于默认姿势(例如t姿势)时,体素体积可能接触或平放在相邻体素体积上。在退出默认姿势时,一个或多个体素体积可能与其他体素体积交叠。在一个或多个实施例中,体素体积可以与相邻体素体积略微交叠,即使体素表示位于默认姿势中。
在标识体素体积时,渲染系统104可以另外执行标识每一体素体积的像素值的动作208。具体地,渲染系统104可以生成包括体素块的纹理,各体素块覆盖体素体积的表面并且包括各自的像素值。对于与对应三维模型相关联的每一体素表示,体素块的细节水平可不同。例如,在多个体素体积中具有最高细节水平(例如,最高粒度度量)的第一体积可比具有较低细节水平(例如,较低粒度度量)的一个或多个附加体积具有显著更多的体素块。
如图2中进一步所示,渲染系统104可以执行维护对应体素表示的体素索引的动作210。如上所述,体素索引可以包括体素表示的对应体素体积的像素数据。例如,体素索引可以包括每一体素体积的颜色值、亮度值和不透明度值。在一个或多个实现中,体素索引包括体素体积的每一体素块的对应像素数据。此外,如上所述,渲染系统104可为每一体素表示维护体素索引。或者,渲染系统104可为对应于相同三维单元的多个体素表示维护单个体素索引。
如上所述,渲染系统104可为相应的三维单元生成任意数量的体素表示。图3示出了包括多个大小不同且具有不同体素粒度水平的体素体积302a-n的示例实现。例如图3示出了具有相对于其他体素表示302b-n的高体素框粒度的第一体素表示302a。图3还示出了具有低于第一体素表示302a的粒度的对应体素框粒度的第二体素表示302b。此外,图3示出了包括相对于图3所示的其他体素表示(例如,体素表示302a-b)的低粒度的第n体素表示302n。如上所述,渲染系统104可以生成任意数量的体素表示,这些体素表示具有各种各样的体素框粒度。
作为示例而非限制,图3还示出了与用于体素表示302a-n的骨骼结构的对应骨骼相关联的示例体素体积304a-n。如图3所示,对应体素体积的纹理具有相对于彼此不同的粒度。在图3所示的示例中,体素体积304a-n各自示出了具有不同数量的体素框和不同细节水平的纹理。
在生成不同的体素表示302a-n时,渲染系统104可以按各种方式确定要包括在体素表示302a-n的后续版本中的细节水平。例如,在一个或多个实现中,首先生成最详细的体素表示。然后,可以基于第一体素表示以第一体素体积的一半大小来生成第二体素体积。具体而言,第二体素体积的宽度、高度和深度可以是第一体素体积的一半。为了实现这一点,渲染系统104可以从体素表示的第一版本到第二版本将八个体素块合并为单个块。这可包括添加像素值,并随后基于经组合的多个体素块来取平均。在一个或多个实施例中,渲染系统104以不同的比率(例如,不同于8:1的比率)来合并体素块。渲染系统104可以类似地以类似方式生成任意数量的体素表示的迭代,直到最终体素表示包括单个像素块(或其他最小数量的体素块)。
如上所述,并且如图3中还示出的,渲染系统104可以生成或以其他方式维护对应体素表示302a-n的体素索引306a-n。体素索引306a-n中的每一者可以包括构成体素表示的骨骼结构的骨骼的标识。每一骨骼标识符可映射到体素表示302a-n内的对应体素体积。例如,每一体素体积304a-n可对应于体素表示302a-n的第一骨骼。此外,体素索引306a-n可以包括对应于每一骨骼的像素数据(例如,颜色值、亮度值、不透明度值)。像素数据可以包括关于构成体素体积的像素的一般信息。作为补充或替换,像素数据可以包括关于对应体素体积内的每一体素块的信息。
图4示出了其中出现三维单元404的示例像素空间402。具体而言,像素空间402示出了在包括三维单元404的视图的虚拟空间内从参考点(例如,虚拟相机)的当前透视图(例如,二维视野图像)。如图4所示,像素空间402包括像素阵列,其可以具有任意数量的像素,这取决于显示设备的分辨率、应用的所标识分辨率和/或渲染像素空间402的显示的计算设备102的能力。如上所述,像素空间402可指经由图形用户界面的像素显示。在一个或多个实施例中,像素空间402指经由VR接口、AR接口或提供在显示设备上的其他显示器的像素显示。
根据本文描述的一个或多个实施例,渲染系统104可标识三维单元404的体素表示406,其包括与三维单元的骨骼结构(例如,三维单元的网格模型)相对应的任意数量的体素空间。如上所述,标识体素表示406可涉及基于三维单元相对于像素空间402的大小从多个体素表示中标识体素表示406。例如,渲染系统104可以基于体素空间和/或体素块与像素空间402内的像素数目的比率来标识体素表示406。例如,在体素表示的体素体积仅占据或接触单个像素(或其他阈值数量的像素)的情况下,渲染系统104可以标识具有低粒度的体素体积。或者,在其中体素体积在像素空间402内占据更多的像素的情况下,渲染系统104可以标识具有更高粒度的体素体积。
尽管上述一个或多个实施例涉及默认或t姿势中的体素表示,其中体素体积不一定交叠,但在一个或多个实现中,相同体素表示和/或来自不同体素表示的体素体积可能交叠。例如,在图4所示的示例中,体素表示包括对应于第一骨骼的第一体素体积410a,其与对应于第二骨骼的第二体素体积410b交叠。交叠部分408包括两个交叠的体素体积,它们在体素索引内可具有不同的关联像素值。虽然图4示出了相同体素表示的两个体素体积交叠的示例,但其他实现可涉及从对应于不同三维单元的不同体素表示来交叠的两个(或更多)体素体积。
图4还示出了表示像素空间402的一部分的像素空间部分402a,该像素空间部分402a包括在其中可见的三维单元404的较大部分。具体而言,像素空间部分402a包括对应于第一骨骼的第一体素体积410a和对应于第二骨骼的第二体素体积410b,以及示出体素体积410a-b在一个或多个共享像素上的交叠的交叠部分412。
如上所述,渲染系统104可以标识在参考点的视野内可见的骨骼集合。具体而言,渲染系统104可以标识从参考点发射的一条或多条线(例如,轨迹)将在像素空间402内接触的体素体积子集。在一个或多个实施例中,这是由计算着色器执行的,该着色器简单地标识多个骨骼中哪些骨骼(例如,来自单个单元或多个单元的骨骼子集)与光线追踪引擎118相关(例如,可见)。
还如上所述,渲染系统104可以指示哪些体素体积正在接触来自像素空间402的每一像素。当只有单个体素体积接触来自像素空间402的像素时,渲染系统104才可以简单地标记该像素或以其他方式将其与对应的骨骼编号相关联。然而,如图4的像素空间部分402a所示,在多个体素体积接触像素的情况下,渲染系统104可以将体素体积410a-b的每一骨骼与体素体积410a-b在其上交叠的像素相关联。因此,在图4所示的示例中,对应于交叠部分412的像素可以被标记或者以其他方式与第一和第二体素体积410a-b的骨骼相关联。
渲染系统104可以按各种方式来关联像素空间402的像素。例如,渲染系统104可以使用深度剥离或深度堆叠技术将骨骼与对应的像素相关联。在一个或多个实施例中,渲染系统104确定交叠部分的骨骼的深度次序。例如,如果第一体素体积410a比第二体素体积410b更接近虚拟空间内的参考点,则渲染系统104可以在将骨骼与对应像素进行关联时指示该深度次序。
在一个或多个实施例中,渲染系统104将骨骼与颜色通道内的对应像素相关联。例如,在像素包括四个通道(例如,CMYK通道、RGBA通道)的情况下,渲染系统104可以将多达四个交叠骨骼与对应像素相关联。在图4所示的示例中,第一通道(例如蓝色通道)可与第一体素体积410a的第一骨骼相关联,而第二通道(例如红色通道)可与第二体素体积410b的第二骨骼相关联。当只有两个体素体积与给定像素交叠时,第三和第四通道可保持空白。或者,在四个以上的骨骼与给定像素交叠的情况下,渲染系统104可以仅指示虚拟空间内最接近参考点的四个骨骼。
在一个或多个实施例中,渲染系统104基于光线追踪在从参考点发射光线时将接触的体素块的不透明度,来将骨骼分配给对应像素。例如,在最前体素体积具有0%不透明度的情况下,渲染系统104可以忽略最前体素体积后面的任何对象,因为光线追踪引擎118不会看到该体素体积后面的任何对象。或者,在一个或多个体素体积包括任意程度的不透明度的情况下,渲染系统104可以将每一相关骨骼与对应像素相关联(每一像素最多四个骨骼)。
在将像素与三维单元404的对应骨骼相关联之后,渲染系统104可以向光线追踪引擎118提供所标识的骨骼和/或体素空间。渲染系统104还可以向光线追踪引擎118提供一个或多个体素索引,包括骨骼和对应像素数据之间的映射,以用于输出像素空间的像素的像素值。在一个或多个实施例中,渲染系统104(例如,基于来自体素索引的对应像素值)为体素体积所接触的每一像素投射单个光线。此外,在多个体素体积接触对应像素的情况下,渲染系统104投射具有基于来自体素索引的像素值的组合的值的单个光线,该体素索引对应于针对对应像素已标识出的那些骨骼。
在一个或多个实施例中,渲染系统104基于传统GPU变换方法和深度剥离技术的组合来执行渲染的组合。例如,渲染系统104可以使用传统的GPU顶点变换方法并使用多遍(例如,对应于像素空间402内的多个可见骨骼)将每一体素体积渲染到像素空间402。在像素被多遍渲染的情况下,渲染系统104可以向像素写入骨骼标识符或像素值,因为在像素上可以看到多个交叠对象(例如,像素存在最多四个或多个颜色通道)。或者,渲染系统104可以执行更少的遍数以实现更高的性能,或者基于设备的处理限制。
将理解,随着三维单元404在虚拟空间四处移动和/或随着虚拟空间内参考点的视角而改变,渲染系统104可以再次重复本文描述的一个或多个过程。然而,由于体素表示406在虚拟空间中的移动不涉及顶点和边的变换(如网格模型的移动的情况),渲染系统104可以使用常规光线追踪技术快速标识像素值,而无需花费大量的处理资源来确定每一显示图像帧的网格模型的顶点的变换。此外,渲染系统104可以取决于像素空间402内三维单元404的大小,通过选择性地标识体素表示或在各体素表示之间切换,将图像质量的潜在退化控制到一定程度。
虽然本文描述的一个或多个实施例涉及从与对应三维单元相关联的多个体素表示中标识体素表示,但在一个或多个实施例中,渲染系统104可以在不同情况下在网格模型和体素表示之间进行选择。例如,图5示出了根据一个或多个实施例的具有用于显示像素空间的图形用户界面504的示例计算设备502。计算设备502可以是上面结合图1讨论的计算设备102的一个示例。尽管如此,尽管图5示出了经由典型计算设备502的图形用户界面504提供的显示器的示例,但类似的特征和功能可应用于经由VR接口、AR接口或其他类型的显示器提供的显示。
如图5所示,像素空间可以包括第一三维单元506(例如,三维单元506的一部分)和第二三维单元508。在该示例中,渲染系统104可以标识体素表示,并执行本文所述的用于为第二三维单元508渲染体素表示的显示的过程。当被渲染在像素空间内时,渲染系统104可以基于三维单元508的大小(例如,占用像素的数量)来标识或以其他方式确定第二三维单元508的体素表示。
结合第一三维单元506,渲染系统104可以改为确定标识第一三维单元506的体素表示可能导致像素化图像具有不令人满意的图像伪影数量。结果,渲染系统104可以放弃标识体素表示,而是标识用于构造体素表示的网格模型,并利用该网格模型来生成和渲染对应的图像。虽然基于网格模型渲染像素可能比使用体素表示在计算上更昂贵,但尽管如此,渲染系统104仍可以通过选择性地使用体素表示和来自相关联体素索引的信息来为一个或多个三维单元渲染像素,而不是针对出现在像素空间内的每一三维单元都使用网格模型,来限制处理成本。
根据一个或多个实施例,渲染系统104可以基于比较三维单元的大小(就像三维单元在像素空间中出现一样)来标识三维单元的适当模型。例如,在三维单元超过第一大小或像素阈值的情况下,渲染系统104可以确定需要利用三维单元的网格模型来实现令人满意的图像质量水平。此外,渲染系统104可以将像素空间内三维单元的预期大小与对应于体素表示的多个阈值范围进行比较,并选择性地标识与所标识的阈值范围相关联的体素表示,以用于渲染三维单元的像素。
现在转到图6-7,这些附图解说了示例流程图,包括在虚拟空间中对三维单元的像素进行光线追踪的一系列操作。虽然图6-7解说了根据一个或多个实施例的动作,但替换实施例可以省略、添加、重新排序和/或修改图6-7中所示的任何动作。此外,结合图6-7的个体动作或动作序列描述的一个或多个个体特征和功能性可以类似地应用于本文描述的其他实施例和示例。图6-7的动作可以作为方法的一部分来执行。替换地,非瞬态计算机可读介质可包括当由一个或多个处理器执行时使计算设备执行图6-7的动作的指令。在更进一步的实施例中,系统可以执行图6-7的动作。
图6示出了根据本文描述的一个或多个实施例的用于渲染三维图像的动作序列600。例如,动作序列600包括标识三维单元的体素表示的动作610,该体素表示包括与三维单元的各个节片相关联的体素体积。在一个或多个实施例中,动作610包括标识能在虚拟空间内移动的三维单元的体素表示,其中该体素表示包括与来自多个节片的相应节片相关联的多个体素体积,所述相应节片与所述三维单元的诸对应部分的移动相关联。
在一个或多个实施例中,标识体素表示包括从与三维单元相关联的多个体素表示中选择体素表示。在一个或多个实现中,动作序列600包括为三维单元维护多个体素索引,其中来自该多个体素索引的每一体素索引对应于来自多个体素表示的相关联体素表示。在一个或多个实施例中,多个体素体积包括多个体素块,其中该多个体素块的粒度基于当被渲染在所述像素空间内时所述体素表示的大小。
在一个或多个实施例中,多个体素体积中的每一体素体积包括绑定到相应节片的多个体素块。多个体素块可被配置成相对于虚拟空间内的对应节片的移动而在虚拟空间内移动。
动作序列600还包括维护包括用于体素体积的像素数据的体素索引的动作620。例如,动作620可包括维护三维单元的体素索引,其中该体素索引包括多个体素体积的、映射到来自多个节片的对应节片的像素数据。在一个或多个实施例中,体素索引包括跨多个体素体积的表面的每一体素块的像素数据,其中该像素数据包括多个体素体积的像素颜色数据、像素亮度数据、或定向不透明度数据中的一者或多者。在一个或多个实施例中,体素索引的像素数据包括对应于多个节片中的相应节片的不透明度值,其中对像素空间的像素进行光线追踪还基于来自对应于所标识的节片的集合的体素索引的不透明度值。
动作序列600还可以包括标识在像素空间内可见的节片的集合的动作630。例如,动作630可包括对于三维单元在虚拟空间内的当前位置,从多个节片中标识在像素空间内可见的节片的集合,其中像素空间表示从虚拟空间内的参考点来看的视野。
在一个或多个实施例中,标识节片的集合包括标识与接触像素空间内的像素的两个或更多个体素体积相关联的两个或更多个交叠节片。动作序列600还可以包括将两个或更多个交叠节片的第一节片的第一标识符分配给像素的第一颜色通道,并将两个或更多个交叠节片的第二节片的第二标识符分配给像素的第二颜色通道。
动作序列600还可以包括基于来自与所标识的节片的集合相对应的体素索引的像素数据集来对像素空间的像素进行光线追踪的动作640。例如,动作640可包括基于来自体素索引的、与虚拟空间内的参考点可见的所标识的节片的集合相对应的像素数据集对像素空间的像素进行光线追踪。在一个或多个实施例中,对像素进行光线追踪包括基于第一节片从体素索引标识第一一个或多个像素值,基于第二节片从体素索引标识第二一个或多个像素值,以及基于来自体素索引的第一一个或多个像素值和第二一个或多个像素值的组合来填充像素。
在一个或多个实施例中,在启动应用的运行时时,执行对在像素空间内可见的节片的集合的标识以及对像素空间的像素的光线追踪。此外,体素表示和体素索引可以在启动应用的运行时之前被存储在计算设备上。
在一个或多个实施例中,动作序列600包括检测虚拟空间内三维单元的经更新位置。动作序列600还可包括响应于检测到虚拟空间内三维单元的经更新位置:针对三维单元的经更新位置,从在像素空间内从虚拟空间内的参考点的视野可见的多个节片中标识经更新节片的集合,以及基于来自体素索引的对应于节片的经更新的集合的像素数据来对像素空间的像素进行光线追踪。检测三维单元的经更新位置可以基于三维单元在虚拟空间内的移动、在虚拟空间内参考点的移动、或围绕虚拟空间内的参考点的视野的旋转中的一者或多者。
动作序列600还可包括标识附加三维单元并以各种方式渲染该附加三维单元的显示。例如,动作序列600可包括确定像素空间内的附加三维单元的大小超过阈值大小。动作序列600还可包括基于确定附加三维单元的大小超过阈值大小,基于三维单元的多边形网格表示来填充像素空间的像素。
图7示出了根据本文描述的一个或多个实施例的用于渲染三维图像的动作序列700。例如,动作序列700包括标识三维单元的边界体积表示的动作710,该边界体积表示包括与三维单元的各个节片相关联的边界体积。在一个或多个实施例中,动作710包括标识能在虚拟空间内移动的三维单元的体素表示,其中该体素表示包括与来自多个节片的相应节片相关联的多个体素体积,所述相应节片与所述三维单元的诸对应部分的移动相关联。
动作序列700还可包括维护包括用于边界体积的像素数据的体素索引的动作720。例如,在一个或多个实施例中,动作720包括维护三维单元的体素索引,该体素索引包括多个体素体积且映射到来自多个节片的对应节片的像素数据。
动作序列700还可包括标识像素空间内可见的节片的集合的动作730,该节片的集合包括与第一边界体积相关联的第一节片,该第一节片与关联于第二边界体积的第二节片交叠。例如,动作730可包括对于三维单元在虚拟空间内的当前位置,从在代表从虚拟空间内的参考点来看的视野的像素空间内可见的多个节片中标识节片的集合,其中该节片的集合包括与第一体素体积相关联的第一节片,该第一节片与关联于第二体素体积的第二节片的至少一部分交叠。
在一个或多个实施例中,动作序列700包括标识像素空间的与第一体素体积和第二体素体积的交叠部分相对应的像素子集。对于该像素子集的每一像素,动作序列700可包括将第一节片的第一标识符分配给像素的第一颜色通道,以及将第二节片的第二标识符分配给像素的第二颜色通道。
动作序列700还可以包括基于来自体积索引的与所标识的节片的集合相对应的像素数据,并基于与第一边界体积和第二边界体积相关联的像素数据的组合,对像素空间的像素进行光线追踪的动作740。例如,动作740可包括基于来自体素索引的与所标识的节片的集合相对应的像素数据集,对像素空间的像素进行光线追踪,其中基于第一体素体积和第二体素体积的像素数据的组合,对第一节片和第二节片的交叠部分的像素空间部分的像素进行光线追踪。在一个或多个实施例中,对像素空间的像素进行光线追踪包括基于来自体素索引的针对第一标识符的第一一个或多个像素值和来自体素索引的针对第二标识符的第二一个或多个像素值的组合来投射像素的标识符子集的像素。
在一个或多个实施例中,动作序列700包括检测虚拟空间内三维单元的移动。动作序列700还可包括响应于确定虚拟空间内三维单元的经更新位置。响应于检测到虚拟空间内三维单元的经更新位置,动作序列700可包括针对虚拟空间内三维单元的经更新位置,从在像素空间内从虚拟空间内的参考点的视野可见的多个节片中标识节片的经更新的集合,以及基于来自体素索引的与节片的经更新的集合相对应的像素数据来对像素空间的像素进行光线追踪。
图8解说了可被包括在计算机系统800内的某些组件。一个或多个计算机系统800可被用于实现本文描述的各种设备、组件和系统。
计算机系统800包括处理器801。处理器801可以是通用单芯片或多芯片微处理器(例如,高级RISC(精简指令集计算机)机器(ARM))、专用微处理器(例如,数字信号处理器(DSP))、微控制器、可编程门阵列等。处理器801可被称为中央处理单元(CPU)。尽管在图8的计算机系统800中仅示出了单个处理器801,但是在替换配置中,处理器(例如,ARM和DSP)的组合可被使用。
计算机系统800还包括与处理器801电子通信的存储器803。存储器803可以是能够存储电子信息的任何电子组件。例如,存储器803可被具体化为随机存取存储器(RAM)、只读存储器(ROM)、磁盘存储介质、光存储介质、RAM中的闪存设备、包括在处理器中的板载存储器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)存储器、寄存器等,包括其组合。
指令805和数据807可被存储在存储器803中。指令805可由处理器801执行以实现本文公开的功能中的一些或全部。执行指令805可以涉及使用存储在存储器803中的数据807。本文描述的模块和组件的各种示例的任何一者都可部分地或全部地实现为存储在存储器803中并由处理器801执行的指令805。本文描述的数据的各种示例中的任何示例都可以在存储在存储器803中并在处理器801执行指令805期间使用的数据807中。
计算机系统800还可包括用于与其他电子设备通信的一个或多个通信接口809。通信接口809可以基于有线通信技术、无线通信技术或两者。通信接口809的一些示例包括通用串行总线(USB)、以太网适配器、根据电气和电子工程师协会(IEEE)802.11无线通信协议操作的无线适配器、
Figure GDA0003556616230000221
无线通信适配器和红外(IR)通信端口。
计算机系统800还可包括一个或多个输入设备811和一个或多个输出设备813。输入设备811的一些示例包括键盘、鼠标、话筒、遥控设备、按钮、操纵杆、轨迹球、触摸板和光笔。输出设备813的一些示例包括扬声器和打印机。通常包括在计算机系统800中的一种特定类型的输出设备是显示设备815。与本文公开的各实施例一起使用的显示设备815可利用任何合适的图像投影技术,诸如液晶显示器(LCD)、发光二极管(LED)、气体等离子体、电致发光等。还可以提供显示控制器817,用于将存储在存储器803中的数据807转换成显示设备815上显示的文本、图形和/或运动图像(视情况而定)。
计算机系统800的各种组件可由一个或多个总线耦合在一起,该总线可以包括电源总线、控制信号总线、状态信号总线、数据总线等。为了清楚起见,各种总线在图8中被例示为总线系统819。
除非特别描述为以特定方式实现,否则本文描述的技术可以以硬件、软件、固件或其任意组合来实现。被描述为模块、组件等的任何特征也可以在集成逻辑设备中一起实现,或者单独地实现为分立但可互操作的逻辑设备。如果以软件实现,则所述技术可至少部分地由包括指令的非瞬态处理器可读存储介质来实现,该指令在由至少一个处理器执行时执行本文描述的一种或多种方法。指令可以被组织为例程、程序、对象、组件、数据结构等,其可执行特定任务和/或实现特定数据类型,并且其可以在各种实施例中根据需要进行组合或分布。
本文描述的这些方法的步骤和/或动作可以彼此互换而不会背离权利要求的范围。换言之,除非所描述的方法的正确操作要求步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会背离权利要求的范围。
术语“确定”包括各种各样的动作,因此,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明、及类似动作。而且,“确定”可包括接收(例如接收信息)、访问(例如访问存储器中的数据)、及类似动作。同样,“确定”还可包括解析、选择、选取、建立、及类似动作。
术语“包括”、“包含”、以及“具有”旨在是包含性的,并表示除所列出的元素以外可以有附加的元素。附加地,将理解,对本公开的“一个实施例”或“一实施例”的引用不旨在被解释为排除也纳入所述特征的附加实施例的存在。例如,在兼容的情况下,关于本文的实施例描述的任何元素或特征可与本文描述的任何其他实施例的任何元素或特征相组合。
本公开可以以其他具体形式来体现,而不背离其精神或特性。所描述的实施例被认为是说明性的而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的改变应被权利要求书的范围所涵盖。

Claims (15)

1.一种方法,包括:
标识能在虚拟空间内移动的三维单元的体素表示,所述体素表示包括与来自多个分段的相应节片相关联的多个体素体积,所述相应节片与所述三维单元的诸对应部分的移动相关联;
维护所述三维单元的体素索引,所述体素索引包括所述多个体素体积且映射到来自所述多个节片的对应节片的像素数据;
对于所述三维单元在所述虚拟空间内的当前位置,从所述多个节片中标识在像素空间内可见的节片的集合,其中所述像素空间表示从所述虚拟空间内的参考点来看的视野;以及
基于来自所述体素索引的、与所述虚拟空间内的参考点可见的所标识的节片的集合相对应的像素数据集,对所述像素空间的像素进行光线追踪。
2.根据权利要求1所述的方法,其特征在于,标识所述体素表示包括从与所述三维单元相关联的多个体素表示中选择所述体素表示。
3.根据权利要求1所述的方法,其特征在于,所述多个体素体积包括多个体素块,其中所述多个体素块的粒度基于所述体素表示在被渲染在所述像素空间内时的大小。
4.根据权利要求1所述的方法,其特征在于,所述体素索引包括跨所述多个体素体积的表面的每一体素块的像素数据,所述像素数据包括所述多个体素体积的像素颜色数据、像素亮度数据、或定向不透明度数据中的一者或多者。
5.根据权利要求1所述的方法,其特征在于,所述多个体素体积中的每一体素体积包括被绑定到相应节片的多个体素块,并且其中所述多个体素块被配置成相对于所述虚拟空间内相应节片的移动来在所述虚拟空间中移动。
6.根据权利要求1所述的方法,其特征在于,标识所述节片的集合包括标识与两个或更多个体素体积相关联的两个或更多个交叠节片,所述两个或更多个体素体积接触所述像素空间内的一像素,所述方法还包括:
将所述两个或更多个交叠节片中的第一节片的第一标识符指派给所述像素的第一颜色通道;以及
将所述两个或更多个交叠节片中的第二节片的第二标识符指派给所述像素的第二颜色通道。
7.根据权利要求6所述的方法,其特征在于,对所述像素空间的像素进行光线追踪包括:
基于所述第一节片从所述体素索引中标识第一一个或多个像素值;
基于所述第二节片从所述体素索引中标识第二一个或多个像素值;以及
基于来自所述体素索引的所述第一一个或多个像素值和所述第二一个或多个像素值的组合来填充所述像素。
8.根据权利要求1所述的方法,其特征在于,还包括:
检测所述三维单元在所述虚拟空间内的经更新位置;以及
响应于检测到所述虚拟空间内所述三维单元的经更新位置:
对于所述三维单元的经更新位置,从所述虚拟空间内所述参考点的视野来看在所述像素空间内可见的多个节片中标识节片的经更新的集合;以及
基于来自与节片的经更新的集合相对应的体素索引的像素数据,对所述像素空间的像素进行光线追踪。
9.根据权利要求8所述的方法,其特征在于,检测所述三维单元的经更新位置是基于以下中的一者或多者:
所述三维单元在所述虚拟空间中的移动;
所述参考点在所述虚拟空间内的移动;或
在所述虚拟空间中围绕所述参考点的视野旋转。
10.根据权利要求1所述的方法,其特征在于,还包括:
标识附加三维单元;
确定所述像素空间内的所述附加三维单元的大小超过阈值大小;以及
基于确定所述附加三维单元的大小超过所述阈值大小,基于所述三维单元的多边形网格表示来填充所述像素空间的像素。
11.一种方法,包括:
标识能在虚拟空间内移动的三维单元的体素表示,所述体素表示包括与来自多个节片的相应节片相关联的多个体素体积,所述相应节片与所述三维单元的诸对应部分的移动相关联;
维护所述三维单元的体素索引,所述体素索引包括所述多个体素体积且映射到来自所述多个节片的对应节片的像素数据;
对于所述三维单元在所述虚拟空间内的当前位置,从在代表从所述虚拟空间内的参考点来看的视野的像素空间内可见的多个节片中标识节片的集合,其中所述节片的集合包括与第一体素体积相关联的第一节片,该第一节片与关联于第二体素体积的第二节片的至少一部分交叠;以及
基于来自所述体素索引的与所标识的节片的集合相对应的像素数据集,对所述像素空间的像素进行光线追踪,其中,对所述第一节片和所述第二节片的交叠部分的像素空间部分的像素进行光线追踪是基于所述第一体素体积和所述第二体素体积的像素数据的组合的。
12.根据权利要求11所述的方法,其特征在于,还包括:
标识所述像素空间的与所述第一体素体积和所述第二体素体积的交叠部分相对应的像素的子集;以及
对于所述像素的子集的每一像素:
将所述第一节片的第一标识符指派给所述像素的第一颜色通道;
将所述第二节片的第二标识符指派给所述像素的第二颜色通道。
13.根据权利要求12所述的方法,其特征在于,对所述像素空间的像素进行光线追踪包括基于来自所述体素索引的所述第一标识符的第一一个或多个像素值和来自所述体素索引的所述第二标识符的第二一个或多个像素值的组合,来投射像素的标识符子集的像素。
14.一种系统,包括:
一个或多个处理器;
与所述一个或多个处理器电子通信的存储器;以及
存储在所述存储器中的指令,所述指令能由所述一个或多个处理器执行以:
标识能在虚拟空间内移动的三维单元的边界体积表示,所述边界体积表示包括与来自多个节片的相应节片相关联的多个边界体积,所述相应节片与所述三维单元的诸对应部分的移动相关联;
维护所述三维单元的体积索引,所述体积索引包括所述多个边界体积且映射到来自所述多个节片的对应节片的像素数据;
对于所述三维单元在所述虚拟空间内的当前位置,从所述多个节片中标识在像素空间内可见的节片的集合,其中所述像素空间表示从所述虚拟空间内的参考点来看的视野;以及
基于来自所述体积索引的、与所述虚拟空间内的参考点可见的所标识的节片的集合相对应的像素数据集,对所述像素空间的像素进行光线追踪。
15.根据权利要求14所述的系统,其特征在于,还包括当由至少一个处理器执行时使计算设备执行以下操作的指令:为所述三维单元生成不同大小且具有不同细节水平的多个边界体积表示,其中标识所述边界体积表示包括基于当被渲染在所述像素空间内时所述边界体积表示的大小来从所述多个边界体积表示中选择所述边界体积表示。
CN202080060052.1A 2019-08-22 2020-06-16 使用边界体积表示对虚拟空间中的动态单元进行光线追踪 Pending CN114375464A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/548,700 2019-08-22
US16/548,700 US11120611B2 (en) 2019-08-22 2019-08-22 Using bounding volume representations for raytracing dynamic units within a virtual space
PCT/US2020/037830 WO2021034396A1 (en) 2019-08-22 2020-06-16 Using bounding volume representations for raytracing dynamic units within a virtual space

Publications (1)

Publication Number Publication Date
CN114375464A true CN114375464A (zh) 2022-04-19

Family

ID=71452776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080060052.1A Pending CN114375464A (zh) 2019-08-22 2020-06-16 使用边界体积表示对虚拟空间中的动态单元进行光线追踪

Country Status (4)

Country Link
US (1) US11120611B2 (zh)
EP (1) EP4018417A1 (zh)
CN (1) CN114375464A (zh)
WO (1) WO2021034396A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698562B1 (en) * 2019-04-30 2020-06-30 Daqri, Llc Systems and methods for providing a user interface for an environment that includes virtual objects
US20220343529A1 (en) * 2021-04-23 2022-10-27 Varjo Technologies Oy Image signal processing based on virtual superimposition
CN114119838B (zh) * 2022-01-24 2022-07-22 阿里巴巴(中国)有限公司 体素模型与图像生成方法、设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2141392T3 (es) 1994-10-26 2000-03-16 Boeing Co Metodo para controlar el nivel del detalle presentado en un visualizador de pantalla generado por ordenador de una estructura compleja.
US6219060B1 (en) * 1998-10-15 2001-04-17 General Electric Company Rendering of surfaces from volumetric data employing both dividing and stretching cubes
WO2002058008A1 (en) * 2001-01-22 2002-07-25 Kent Ridge Digital Labs Two and three dimensional skeletonization
US7126605B1 (en) 2001-07-03 2006-10-24 Munshi Aaftab A Method and apparatus for implementing level of detail with ray tracing
WO2009091571A1 (en) 2008-01-17 2009-07-23 Dassault Systemes Solidworks Corporation Reducing the size of a model using visibility factors
US8963918B2 (en) 2008-09-30 2015-02-24 Microsoft Corporation Ray tracing on graphics hardware using kd-trees
US8570322B2 (en) 2009-05-12 2013-10-29 Nvidia Corporation Method, system, and computer program product for efficient ray tracing of micropolygon geometry
KR101307341B1 (ko) * 2009-12-18 2013-09-11 한국전자통신연구원 동적 개체 모션 캡쳐 방법 및 그 장치
US9536338B2 (en) 2012-07-31 2017-01-03 Microsoft Technology Licensing, Llc Animating objects using the human body
FI128213B (en) * 2013-03-04 2019-12-31 Eigenor Oy Method and arrangement for producing a 3D image
WO2016110928A1 (en) * 2015-01-07 2016-07-14 Canon Kabushiki Kaisha Photoacoustic apparatus, image display method, and program
US10311629B2 (en) 2016-01-22 2019-06-04 Intel Corporation Level of detail selection during ray tracing
WO2018033508A1 (de) 2016-08-17 2018-02-22 Continental Reifen Deutschland Gmbh Schwefelvernetzbare kautschukmischung und fahrzeugreifen
US11367246B2 (en) * 2016-08-19 2022-06-21 Movidius Ltd. Operations using sparse volumetric data
US10932860B2 (en) * 2017-04-28 2021-03-02 The Brigham And Women's Hospital, Inc. Systems, methods, and media for presenting medical imaging data in an interactive virtual reality environment
CN109215106B (zh) 2018-08-30 2023-01-03 东北大学 一种基于动态场景的实时光线追踪加速结构的方法

Also Published As

Publication number Publication date
US20210056748A1 (en) 2021-02-25
US11120611B2 (en) 2021-09-14
EP4018417A1 (en) 2022-06-29
WO2021034396A1 (en) 2021-02-25

Similar Documents

Publication Publication Date Title
US20200372602A1 (en) Scheme for compressing vertex shader output parameters
US10733691B2 (en) Fragment shaders perform vertex shader computations
US20230053462A1 (en) Image rendering method and apparatus, device, medium, and computer program product
EP3180773B1 (en) Bandwidth reduction using texture lookup by adaptive shading
KR101145260B1 (ko) 3d 객체 모델에 텍스쳐를 매핑하는 방법 및 장치
EP2831848B1 (en) Method for estimating the opacity level in a scene and corresponding device
CN114375464A (zh) 使用边界体积表示对虚拟空间中的动态单元进行光线追踪
US9508191B2 (en) Optimal point density using camera proximity for point-based global illumination
US7843463B1 (en) System and method for bump mapping setup
US8294713B1 (en) Method and apparatus for illuminating objects in 3-D computer graphics
US9224233B2 (en) Blending 3D model textures by image projection
US10325403B2 (en) Image based rendering techniques for virtual reality
KR20170040698A (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
US10460500B1 (en) Glyph rendering in three-dimensional space
US9401044B1 (en) Method for conformal visualization
JP2017062789A (ja) グラフィックス処理装置、及びテクスチャリングのためのlodを決定する方法
JP5916764B2 (ja) 仮想環境における隠蔽の推定方法
RU2680355C1 (ru) Способ и система удаления невидимых поверхностей трёхмерной сцены
US10754498B2 (en) Hybrid image rendering system
KR101227155B1 (ko) 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법
US20230206567A1 (en) Geometry-aware augmented reality effects with real-time depth map
KR100848687B1 (ko) 3차원 그래픽 처리 장치 및 그것의 동작 방법
CN115035231A (zh) 阴影烘焙方法、装置、电子设备和存储介质
US20180005432A1 (en) Shading Using Multiple Texture Maps
JP7368950B2 (ja) 効率的な建物フットプリント特定のための方法及び装置

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