CN110728740B - 虚拟摄影测量 - Google Patents
虚拟摄影测量 Download PDFInfo
- Publication number
- CN110728740B CN110728740B CN201910634628.XA CN201910634628A CN110728740B CN 110728740 B CN110728740 B CN 110728740B CN 201910634628 A CN201910634628 A CN 201910634628A CN 110728740 B CN110728740 B CN 110728740B
- Authority
- CN
- China
- Prior art keywords
- snapshot
- scene
- edges
- grid structure
- triangles
- 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
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/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- 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
- G06T15/00—3D [Three Dimensional] image rendering
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
- A63F13/525—Changing parameters of virtual cameras
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/85—Providing additional services to players
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C11/00—Photogrammetry or videogrammetry, e.g. stereogrammetry; Photographic surveying
-
- 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
- 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
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/593—Depth or shape recovery from multiple images from stereo images
- G06T7/596—Depth or shape recovery from multiple images from stereo images from three or more stereo images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/24—Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
-
- 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/56—Particle system, point based geometry or rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种虚拟摄影测量。在执行的应用程序(例如,视频游戏)内捕获场景的多个快照。当捕获每个快照时,存储每个像素的相关颜色值和每个像素的距离或深度值z。访问来自快照的深度信息,并构建表示深度信息的点云。网格结构由点云构建。计算网格结构的一个或更多个表面上的一个或更多个光场。表面光场被表示为纹理。渲染器使用具有几何信息的表面光场来重现快照中捕获的场景。可以从不同的视角操纵和观看所重现的场景。
Description
相关美国申请
本申请要求2018年7月13日提交的、序列号为62/697,934、题为“虚拟摄影测量(Virtual Photogrammetry)”的美国临时申请的优先权,其全部内容通过引用并入本文。
背景技术
游戏内摄影是一种相对较新的艺术形式,例如,来自视频游戏的屏幕截图就像现实世界的摄影师一样摆姿势和构图。Nvidia Ansel是游戏内相机功能的一个例子,其可让用户在游戏中拍摄专业级的场景照片。
发明内容
在现实世界的摄影测量中,从不同角度拍摄物体的多张照片,并且这些照片可用于创建可从不同视角操纵和观察的物体的虚拟三维(3D)版本。在虚拟摄影测量中,用户控制虚拟相机(例如由Nvidia Ansel提供的) 而不是真实相机以拍摄屏幕截图,然后对这些屏幕截图进行操作。基本上,照片是在虚拟世界内部拍摄的,例如视频游戏。
公开了用于实现虚拟摄影测量的方法、系统和技术。
在根据本发明的实施例中,在执行的应用程序(例如,视频游戏) 内捕获场景的快照(屏幕截图)。在捕获快照时,可以暂停(就地冻结)虚拟世界,以便可以从不同的视角捕获快照。当捕获每个快照时,存储每个像素的相关颜色值(例如,红色、绿色和蓝色值)和每个像素的距离值z (从虚拟相机到像素的距离)。从快照可以构建表示深度信息的点云。然后可以从点云构建网格结构。然后可以计算网格结构的一个或更多个表面上的一个或更多个光场。在一个实施例中,使用球面调和(spherical harmonics) 作为压缩机制来计算光场。
在一个实施例中,表面光场可以表示为纹理。渲染器可以使用具有几何信息的表面光场来在虚拟3D中重现在快照中捕获的场景。可以从不同的视角操纵和观看重现的场景。实质上,虚拟3D快照是从多个快照产生的。
可以以不同方式有利地使用3D快照。用例包括但不限于:采用位置跟踪实现360度立体声;共享场景(例如,在社交网络应用中共享游戏的静态片段);将场景导入另一个应用程序;在另一个应用程序中使用场景作为源材料;创建可在不同应用程序中使用的虚拟物体的数据集(库);和3D 打印。
根据本发明的实施例中的虚拟摄影测量提供了一种平台,该平台使得经验较少的用户以及诸如视频游戏设计者之类的有经验的专业人员能够容易地创建和共享内容。
在阅读以下对各个附图中示出的实施例的详细描述之后,本领域普通技术人员将认识到根据本发明的各种实施例的这些和其他目的和优点。
附图说明
包含在本说明书中并形成本说明书的一部分的附图示出了本公开的实施例,并且与详细描述一起用于解释本公开的原理,其中相似标号表示相似元件。
图1是根据本发明的实施例中的虚拟摄影测量方法的示例的流程图。
图2是根据本发明的实施例中用于生成网格结构的方法的示例的流程图。
图3是根据本发明的实施例中用于实现孔填充物的方法的示例的流程图。
图4是根据本发明的实施例中使用球面调和的方法的示例的流程图。
图5是能够实现根据本发明的实施例的计算设备或计算机系统的示例的框图。
详细描述
现在将详细参考本公开的各种实施例,其示例在附图中示出。虽然结合这些实施例进行了描述,但是应该理解,它们并不旨在将本公开限制为这些实施例。相反,本公开旨在覆盖可包括在本公开的精神和范围内的替代、修改和等同物。此外,在本公开的以下详细描述中,阐述了许多具体细节以便提供对本公开的透彻理解。然而,应该理解,可以在没有这些具体细节的情况下实践本公开。在其他情况下,没有详细描述众所周知的方法、过程、组件和电路,以免不必要地模糊本公开的各方面。
以下详细描述的一些部分是根据对计算机存储器内的数据位的操作的过程、逻辑块、处理和其他符号表示来呈现的。这些描述和表示是数据处理领域的技术人员用来将他们工作的实质最有效地传达给本领域其他技术人员的手段。在本申请中,程序、逻辑块、过程等被认为是导致期望结果的自相一致的步骤或指令序列。这些步骤是利用物理量的物理操纵的步骤。通常,尽管不是必须的,但这些量采用能够在计算机系统中存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为事务、比特、值、元素、符号、字符、样本、像素等是方便的。
然而,应该记住,所有这些和类似术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非从以下讨论中明确指出,否则应当理解,在整个本公开中,利用诸如“计算”、“(子)划分”、“网格划分”、“(未)投影”、“切割”、“分成三角形(triangulating)”、“保存”、“存储”、“转换”、“渲染”、“采样”、“(重新)分成三角形”、“编码”、“确定”、“存储”、“乘以”、“除以”、“查询”、“表示”、“产生”、“测试”、“剪切”、“变换”、“贴图分级细化(mipmapping)”、“投射(casting)”、“构建”、“重现”、“捕获”、“暂停”、“计算”、“访问”、“计算”、“生成”、“复制”等术语的讨论,是指装置或计算机系统或类似电子计算设备或处理器的动作和过程。计算机系统或类似的电子计算设备操纵和变换在存储器、寄存器或其他此类信息存储、传输或显示设备内表示为物理(电子)量的数据。
这里描述的实施例可以在由一个或更多个计算机或其他设备执行的、驻留在某种形式的计算机可读存储介质上的计算机可执行指令(例如程序模块)的一般上下文中讨论。作为示例而非限制,计算机可读存储介质可包括非暂时性计算机存储介质和通信介质。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。在各种实施例中,可以根据需要组合或分发程序模块的功能。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除的介质。计算机存储介质包括但不限于:随机存取存储器(RAM),只读存储器(ROM),电可擦除可编程ROM(EEPROM),闪存(例如,固态驱动器)或其他存储器技术,光盘ROM(CD-ROM),数字通用盘(DVD)或其他光学存储器,磁带盒,磁带,磁盘存储器或其他磁存储设备,或可用于存储所需信息和可被访问以检索该信息的任何其他介质。
通信介质可以包含计算机可执行指令、数据结构和程序模块,并且包括任何信息传递介质。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(RF)、红外和其他无线介质的无线介质。任何上述的组合也可以包括在计算机可读介质的范围内。
图1是根据本发明的实施例中的虚拟摄影测量方法的示例的流程图 100。流程图100可以实现为驻留在某种形式的计算机可读存储介质上的计算机可执行指令(例如,在图5的计算机系统500的存储器中)。
在图1的框102中,在执行的应用程序(例如,视频游戏)内捕获场景的多个快照(屏幕截图;例如,深度和颜色图像捕获)。在捕获快照时,可以暂停(就地冻结)虚拟世界,以便可以从不同的视角捕获快照。
尽管从不同视角捕获快照以捕获场景,但是不需要从所有方向(角度)捕获场景。例如,如果意图仅从特定角度或一组角度观看或重建场景,则不必从所有方向捕获场景。因此,在一个实施例中,仅捕获预期视角处的快照和在预期视角附近/周围的选定角度的快照。
在一个实施例中,响应于用户输入捕获快照(换句话说,手动捕获快照)。在一个实施例中,自动捕获快照。手动和自动操作的组合可用于捕获快照。
在框104中,当捕获每个快照时,存储每个像素的相关颜色值(例如,红色、绿色、蓝色(RGB)值)和每个像素的距离或深度值z(从虚拟相机到像素的距离)。
在框106中,访问来自快照的深度信息,并且构建表示深度信息的点云。
在框108中,从点云构建网格结构。在实施例中,网格结构被简化,网格被参数化(例如,被UV映射),并且参数化的网格用于产生多样本图谱(atlas)(下面进一步讨论)。
在框110中,计算网格结构的一个或更多个表面上的一个或更多个光场。在一个实施例中,使用球面调和(SH)作为压缩机制来计算光场。
在另一实施例中,针对多个固定方向存储光特性。然后,当针对特定方向重现光/颜色时,可以通过内插存储的相邻(例如,最近)方向的值来重现它。
SH可以用于在某点处编码入射光。例如,该信息可用于基于材料参数和观看方向评估表面外观。在实施例中,不是存储入射光,而是存储从表面发射或反射的光。因此,SH用于存储表面的最终外观。然后当在屏幕上绘制表面时,可以直接使用SH对其颜色进行解码,而不必执行其他计算。
在框112中,在一个实施例中,将表面光场表示为纹理。
在框114中,在一个实施例中,渲染器使用具有几何信息的表面光场来在虚拟3D中重现在快照中捕获的场景。实质上,虚拟3D快照是从多个快照产生的。可以从不同的视角显示、操纵和观看重现的场景(例如,响应于用户输入)。
以下是对在刚刚描述的方法中执行的操作的更详细讨论。
在应用程序中拍摄快照
(图1中的框102和104)
3D重建过程使用多个视图捕获。每个捕获保持关于相机的信息(诸如位置、方向和/或投影),以及每个像素的深度和颜色(例如,RGB)信息。
捕获的质量是重建的质量的重要因素。例如,如果未捕获要重建和渲染的场景或物体的某些部分(“模型”),则它会产生空白区域;或者如果模型的某些部分是从大距离捕获的并因此以低频率采样,那么重建的质量可能会受到影响。
在一个实施例中,在捕获模式中,通过为用户提供看到投影到他们正在观看的场景上的每个像素的质量的能力来引导用户,如已经进行的捕获中所表示的。
例如,在捕获模式中,根据像素的质量,像素的颜色可以从其正常颜色改变为例如更红的颜色。因此,如果存在尚未被红化的投影的任何部分,则用户将知道尚未捕获那些部分。这可能是用户可接受的(例如,用户不想要场景的那部分),或者它可以用于向用户指示需要捕获该部分。
知道像素是捕获的一部分是有用的,并且显示像素捕获的质量也可能是有用的。在这种情况下,质量可以是以下情况:如果样本在相对于相机非常靠近边缘的梯度上,则样本的质量较低。也就是说,如果网格上像素位置的法线与观察方向足够垂直,那么该像素的质量可以被认为低于观察方向与法线共线或者更加共线时的像素质量。
另一种质量测量是采样的分辨率。如果进行对物体的单次捕获,则当移近物体时,质量将降低,因为现在将有更多关于物体的更小部分的信息。这意味着,在上面的示例中,随着到物体的距离的减小,红色会减少。这与从一定距离处捕获物体上的纹理,然后将捕获的纹理放置在物体的重建模型上并且从更近的距离观看纹理物体的情况相关。因此,由于欠采样,纹理质量会降低。另一方面,如果三角形上的高分辨率纹理的屏幕截图占据整个屏幕而不是像从一定距离处捕获的那么少的像素(例如,三个像素),那么将在更高的分辨率下捕获纹理并且当靠近物体移动时,质量的降低会更少。
考虑捕获汽车的示例。可以从汽车前部进行单次捕获,以便整个汽车都在视野中。那些像素将是较暗的红色,但是来自更倾斜角度的表面的像素(例如,汽车的引擎盖)将是较浅的红色,因为它们的质量将更低。随着角度的倾斜度增加,表面在屏幕上占据较少的空间,并且可能丢失更多信息(例如,分别来自深度和图像捕获的几何细节和纹理细节)。汽车侧面的所有像素都不会是红色的,因为没有捕获。如果捕获是从侧面而不是前面,则从前面观察时捕获将变红。例如,在车轮上不断靠近会使红色变浅(因为从那个视角看质量低于前面视角的质量)。如果从直接视角捕获车轮,则它将是深红色。
刚刚描述的方法的优点包括:用户控制所捕获模型的哪些部分;用户可以在捕获过程中看到模型的哪些部分未被覆盖;并且可以看到特定捕获的质量的指示。
使用快照数据生成点云
(图1的框106)
在实施例中,点集是抽象数据类型,其可以包括n维(例如,3D) 点。
在实施例中,表示是八叉树,其中叶子保持一个或更多个点,这些点必须全部在八叉树中位于其上方的轴对齐的边界框(Aabb)节点内部。指针可以用于表示对八叉树中的节点的引用,并且八叉树中的节点将保持它是什么类型的节点(例如,叶节点或内节点)。
在根据本发明的实施例中,不是使用指针,而是使用特殊编码,其允许选择用于存储这种表示的大小。对于通用表示,可以使用32位。这减少了64位系统中指针通常所需大小的一半。此外,这避免了每个节点存储它是什么类型的节点,这进一步减少了开销。此外,这避免了与通过动态分配存储叶和节点相关联的开销和低效率,其中空间被消耗用于分配器开销并且引用的位置不太理想。
因此,可以从节点移除节点类型的编码。引用而不是知道它指向的是什么。至少有三种引用类型:没有;叶节点;和内节点。
在一个实施例中,不是具有指针,而是在引用内将特定节点的索引与该类型一起编码。实际节点存储在可索引的一些其他表示中,例如数组。另一种方法是使用两个幂的固定大小的块,并与块内的索引分开地查找块。
表1中示出了用C++描述此方法的一种方式的示例。
表1
叶可以容纳许多点。如果叶已满,它可以分成“OctNode”,其下面有“LeafNodes”(表1)。
多个点可以保持相同的值,但不超过“NOT_USED”(表1)。当PointSet (表1)类被用作从点云快速查找数据的方式并且具有不同数据的某些点处于相同位置时,当存储具有该位置的额外数据时,这可能是有用的。
这些方法提供了许多优点:根据所使用的八叉树的要求,更多地控制引用的大小(它不必是指针大小的);节点中的节点类型不需要存储;允许在同一位置的多个点;以及节点类型存储在向量中,这可以更好地用于内存使用,减少碎片并提高速缓存一致性。
从点云构建网格
(图1中的框108)
基于较大数量(例如,数百个)屏幕截图的大场景的网格划分可能需要大量存储器。在一个实施例中,这通过将网格域细分为若干重叠块,然后并行地(例如,在不同硬件上)在块中执行网格划分来解决。
在一个实施例中,基于四叉树的解决方案用于从深度缓冲器取消投影多边形,以细分多边形(例如,四边形或三角形)。这种方法简单快捷。
在另一实施例中,使用基于泰森多边形法(Voronoi)的重建。从所有视图生成点云,然后连接相邻点以获得最终表面。为此,可以采用局部二维(2D)泰森多边形图。点云中的每个点包含法线,其可以从捕获信息计算。
图2是根据本发明的实施例中用于生成网格结构的方法的示例的流程图200。流程图200可以实现为驻留在某种形式的计算机可读存储介质上 (例如,在图5的计算机系统500的存储器中)的计算机可执行指令。
在图2的框202中,对于点云中的每个点,生成以该点为中心并且垂直于该点的法线的多边形。
在框204中,通过将切割平面放置在连接相应点和相邻点的区段的中间,来相对于相邻点切割多边形。
在框206中,将从框204的操作得到的每个多边形分成三角形以生成网格结构。三角形化(triangulation)或分成三角形(triangulating)是将多边形分解、转换或映射为一组三角形。在实施例中,每个多边形不是单独地被分成三角形的。如下所述,每个多边形包含关于其邻居的信息,因此整个结构的多边形可以被转换或映射为不同的表示,特别是由于泰森多边形图和德劳类(Delaunay)三角形化之间的直接关系而转换或映射为一组三角形。
更具体地,在一个实施例中,对于点云中的每个点,以这样的方式生成多边形(例如,基本四边形),该方式使得其以点为中心并垂直于点的法线。然后,通过将切割平面放置在连接基点和相邻点的区段的中间,来相对于相邻点切割该多边形。保存形成一些切口的点的ID(索引)。
在该实施例中,得到的每个多边形是泰森多边形单元,并且它包含形成它的所有点的索引。该单元的图可以转换为德劳类三角形化,因为泰森多边形图和德劳类三角形化之间存在关系。
为了提高质量,可以使用自适应点云生成。如果在某些邻居中没有点或者其概率取决于法线向量变化,则从输入点云中采样点。这改善了对边缘的采样。
基于泰森多边形的方法速度快,并且在点云中具有低曲率和低噪声量的表面上显示出良好的结果。
刚刚描述的基于泰森多边形的方法可以产生具有多个孔的表面。为了减少所得到的表面中的孔数,可以实现孔填充物,以找到包含比某个阈值更少的边缘的环,然后可以用于将这些环重新分成三角形(retriangulate)。
图3是根据本发明的实施例中用于实现孔填充物的方法的示例的流程图300。流程图300可以实现为驻留在某种形式的计算机可读存储介质上 (例如,在图5的计算机系统500的存储器中)的计算机可执行指令。
在图3的框302中,检查网格结构中的三角形的每个边缘以确定是否存在相邻三角形的相邻边缘。当不存在相邻边缘时,则将边缘识别为网格结构中的孔的边界上的边界边缘。
在框304中,被识别为边界边缘的边缘形成为环,其中每个环对应于网格结构中的相应孔。
在框306中,将每个环分成三角形。
更具体地,在一个实施例中,如下实现孔填充物。访问并评估所有网格三角形。检查三角形的每个边缘以确定另一个三角形中是否存在类似的边缘。如果没有另一个这样的边缘,则该边缘位于孔的边界上。然后从所有边界边缘构建图形。可以使用深度优先搜索找到环,它们是输入网格中的孔。然后将每个环分成三角形。在这样的一个实施例中,为了提高质量,仅将边缘数目小于预定义阈值的环分成三角形。
第三种方法基于从点云生成的带符号的距离函数(SDF),并使用诸如marchingcube(移动立方体),SurfaceNet(表面网络)或Dual Contouring (双等值线)之类的方法进行网格划分。为了加速处理,可以使用八叉树搜索结构。SurfaceNet显示出良好的质量并且需要较少的计算。
在SurfaceNet实施例中,生成每个顶点作为呈现SDF符号改变的体素(voxel)的中心。然后,为了提高质量,对这样的顶点应用附加处理。
对于表现出SDF符号变化的每个体素,Dual Contouring计算体素边缘与SDF零值表面的交点,并且还计算那些点处的法向量。然后将这些点用于计算最终表面点作为特殊函数的最小化器。
在根据本发明的实施例中,使用了比Dual Contouring更简单的方法。在那些实施例中,边缘与SDF零值表面相交的点如在Dual Contouring中那样计算。然后可以确定作为所计算的点的质心的最终点。可以通过连接在前一步骤中计算的体素的顶点来生成最终网格,所述体素共享表现出符号变化的公共边缘。使用八叉树可以改善所得到的网格的质量,以在需要时提供更高的体素分辨率。
SDF方法显示出良好的结果。通过多级SDF恢复可以实现额外的网格重建质量增益。
代替需要将环分类为外部环或孔的三角化器,可以使用分类器。分类器从边缘的多边形集合中找到环,然后通过区域和密闭度(containment) 来确定哪些是孔,哪些是外环。分类器还将孔与它们所属的外环相关联。它可以用作用基于三角形的方法进行三角形化之前的阶段。
视域体表示的布尔联合(Boolean union)
如上所述,捕获场景的多个视图,并且每个捕获保持关于相机的信息(诸如位置、方向、投影和深度信息)。在实施例中,使用多个捕获产生场景的3D重建。在实施例中,使用多个捕获产生可用于快速查询关于场景的信息的表示。在实施例中,产生来自空间中的一组点的一组视图和/或屏幕截图,并且可以针对正在观看场景的观看者重放该组视图/屏幕截图。在后面的实施例中,3D模型可以不包括在表示中;相反,选择图像(可能是在运行中)来表示来自用于查看捕获的场景的相机的视图。在实施例中, SDF用于表示整个场景,在这种情况下,3D模型可以不包括在表示中。
一种方法是将每个视图(相机和深度缓冲器的组合)视为定义一片空区域。通过将其投影到深度缓冲器的像素空间中并且相对于深度缓冲器/ 近剪切平面测试其深度,可以快速确定世界空间中的任何点是否在该视域体内。因此,该视图基本上描述了一个由“固体空间”雕刻而成的空体。
可以使用多个视图来描述已捕获的场景的3D近似。通过采用由所有视图描述的所有体的布尔联合,所创建的体将保持场景的3D表示。观看场景的不同部分的视图越多,雕刻出的表示就越多。真实场景中未捕获的区域可能看似已填满;也就是说,在一种方法中,将尚未被捕获的部分体保守地视为固体的。取决于使用,这可能是有利的。这将始终产生一个封闭的表面:因为每个视域体都是封闭的,因此也必须封闭联合。
为了确定世界空间点是否在由所有视图定义的空间内部或外部(由每个视图定义的体的布尔联合),针对每个视图测试该点。如果一个点在任何视图内,则它必定在联合内部;如果它在所有视图之外,则它在联合之外。
如果存在许多视图,则可以使用空间层次(例如,体的Aabb树)来快速确定点可能在哪些视图中。
该技术提供了许多优点。所得到的体始终是封闭的。针对内部/外部的测试快速、简单且定义明确。确定点是在视图内部还是外部是O(1):矩阵乘法、除法和样本。确定多个视图的布尔联合是O(n)(其中n是视图的数量),或者是具有层次边界的O(log2(n))。表示是紧凑的,并没有引入表示的近似。采样时可以直接使用地面实况(ground truth)数据。该表示与图形处理单元(GPU)非常兼容,并且几乎精确匹配硬件(投影和深度缓冲器样本/测试)。
视图空间体采样
以上对视域体表示的布尔联合的讨论描述了用于快速确定由相机 (位置,方向,投影)和深度缓冲器定义的视图集合的3D表示的机制。在该讨论中,表示是隐含的:它提供了一种机制,用于快速确定世界空间中的给定点是在体的联合的内部还是外部。这里介绍的是如何使用它来生成显式表示并以体方式查询它的讨论。
产生体表示的一种机制是marching cube算法。为了使用该算法,针对体测试Aabb是有用的。
对于dual contour marching cube算法(考虑角和边的marching cube 的版本),测量沿着基本轴到表面的距离并且确定该交点处的法线。
概念上,对于每个视图,锥体(frustum)和深度缓冲器定义体。组合的视锥体和深度缓冲器的这些体在本文中可称为“视域体”。视域体表示相当紧凑并且适于发射射线并确定交点处的法线。可以通过将深度值存储在mipmap中来加速光线投射,该mipmap保持像素的深度范围。然后通过计算出首先被光线击中的三角形的法线来确定法线(每个像素定义两个三角形)。通过获取所有这些视域体的联合,可以从多个捕获创建体。这将始终产生一个封闭的表面:因为每个视域体都是封闭的,因此也必须封闭联合。
可以针对视域体测试Aabb。这允许使用与先前描述的相同的逻辑来确定Aabb是在内部还是外部。即,如果它在任何视图的内部(或部分在内部),则结果是在内部/部分在内部。如果它在所有视图的外部,则结果是在外部。如果该点位于该体的平面内部并且也位于深度缓冲器内部,则该点位于该体内部。这可以通过将其变换到像素空间来针对世界空间中的点进行计算。如果像素空间点位于锥体之外(例如,被剪切),则它简单地位于外部。如果它小于或大于深度缓冲器中该像素位置处的值,则它位于深度缓冲器内部,具体取决于深度缓冲器的深度排序。对于内部的点,它必须位于视锥体和深度缓冲器内部。
为了进行测试,将Aabb近似投影到剪切空间中,进行裁剪,然后使用得到的纹理像素矩形来测试是否存在可能的交点。如果存在可能的交点,则可以针对底层深度缓冲器的任何合适的世界空间表示来测试世界空间 Aabb。例如,深度缓冲器中的每个像素可以表示为世界空间中的两个三角形。
这样做的有效方式是在世界空间中拍摄Aabb的角并将它们变换到相机空间,同时确定它们的相机空间Aabb。使用相机空间Aabb,可以将 Aabb的最小值和最大值变换到视图剪切空间。此体通常会大于原始Aabb,但它是保守的,因此它始终包含Aabb的世界空间体。剪切空间中的假想线可以从最小点延伸到最大点。将体在w(或z)方向进行剪切。如果将该线剪切到视域体之外,则锥体位于外部并且测试完成。然后,通过w(已知大于0.0f)划分Aabb并在2D归一化设备坐标(NDC)中剪切。
结果是完全在NDC内部的矩形。这定义了Aabb可以接触的像素(并且因为它是保守的确定,因此有些是它不能接触的)。
如果对Aabb进行变换和剪切,则可以获得更紧密的NDC/像素空间矩形,然后用于计算边界。然而,这需要更复杂且因此计算上昂贵的剪切,并且即使没有剪切和当所有点都在内部时也需要八次划分。上述更近似的技术仅需要两次划分。
可以针对每个点执行刚刚描述的过程,并且当投影到NDC/像素空间中和完全在内部或外部时,Aabb可以覆盖数百万个像素,因此可以通过减少测试的数量来缩短该过程。
在一个实施例中,为了减少测试的数量,使用在深度缓冲器上的 mipmapping的形式,其中每个mipmap的每个“像素”包含它们覆盖的深度缓冲器值的最小值和最大值。通过为所需的最详细的mipmap级别生成最小/最大值,然后通过获取下面四个像素的最小值/最大值来生成下一个最小级别,可以快速执行mipmap生成。这大大加快了性能,因为一旦将Aabb 投影到像素空间中,就会首先测试该尺寸的最接近的mipmap级别。如果 Aabb的深度范围与相关纹理像素的深度范围不相交,则可以容易地计算交点。
利用NDC/像素空间中的世界Aabb,可以找到最大长度的轴。该轴可用于选择最低细节的mipmap,其中单个样本包含整个像素空间矩形。然后可以在像素空间中针对mipmap深度范围测试Aabb的深度范围。如果没有重叠,则可以确定Aabb在体的内部还是外部。如果这不能确定Aabb是在体的内部还是外部,则该过程递归地迭代到下一个最详细的mipmap,丢弃像素。重复这一过程,直到可以明确地确定Aabb相对于体的位置(例如,在体的内部还是外部)。如果没有,那么可以使用更高级别的下一个最大的 mipmap重复测试,如果存在交点,则一直前进到深度缓冲器,并且仅直接测试深度范围值相交的深度缓冲器。如果达到最高细节级别(深度缓冲器),则针对Aabb测试实际三角形。
也可以使用更复杂的相交测试,其中mipmap中的每个深度范围定义世界空间中的八边凸状体。测试这些体的交点(使用分离轴测试(SAT), Xeno,Gilbert-Johnson-Keerthi(GJK)等)可以减少整体测试。
然而,采用GPU硬件能够很好地进行基本测试。可以使用Aabb在世界空间中针对深度缓冲器的遮挡查询来实现基本测试:如果所有像素都是潜在可绘制的,则它在体内部;如果没有像素被绘制,那么它就在体外部。“前”面和“后”面分别绘制。可选地,GPU将可能绘制的像素的数量通过在没有深度测试的情况下渲染来确定。剪切近剪切平面是特别处理的,因为它剪切近剪切平面时不会返回任何交点。
上述方法提供以下优点:内部或外部的快速拒绝测试;在存在可能的交点(由深度范围重叠确定)的情况下仅测试深度缓冲器;表示开销(通常为2*1/3*深度贴图大小)相对较低;它采用GPU能够很好工作;深度范围mipmap可以在GPU上生成;采样可以在GPU上完成;它提供了使用遮挡查询测试直接在GPU上进行全面测试的可能。
初始八叉树生成
如上所述,在实施例中,创建表示视域体的结构,而不是将所有视图组合成单个表示(诸如采用自适应带符号距离函数)。在代码库中,这是视域体类型。视域体最初由深度缓冲器和投影视图的相关矩阵组成,以映射到世界空间和像素空间或从其映射。
视域体通过联合组合。这可以通过对每个视域体进行采样并组合结果来完成。采样的方法是针对边界框(代码中的Aabb)测试视域体。测试结果可以相对简单:Aabb完全在视域体之外;Aabb完全位于视域体内部;或者Aabb以某种方式将边界与内部或外部相交(例如,它与锥体和/或深度缓冲器相交)。
这些测试可以与以下观察组合为联合:a)如果Aabb完全在任何视域体内部,则Aabb在联合内部;b)如果Aabb在所有视域体外部,则Aabb 在联合外部;c)如果这些都不属实,那么Aabb必须包含联合的边界。
这样,八叉树可以用于自适应地确定包含表面的Aabb。最初,使用足够大以包含所有视域体的Aabb。然后针对视域体测试该Aabb。
如果结果是上面的a)或b),则该过程停止。如果结果是c),则该过程向下递归八叉树的层级并重复,直到确定满足阈值的精度。
此方法可用于生成紧密遵循视域体的联合的Aabb中心的点云。
将Aabb投影到视域体的像素空间中可以产生非常大的区域。为了提高性能,可以采用上述的mipmapping方法。
生成表面
此方法可用于将表面转换为三角形网格。在一个实施例中,这是使用marchingcube算法的版本来完成的。
上述八叉树机制可以用作marching cube算法的基础。向下递归八叉树,直到达到所需的体素的大小。先前在此描述的机制或八叉树抽取 (decimation)基本上产生视域体的联合的体素的保守外壳。外壳包括定义所需的marching cube体素的体素。因此,没有必要执行与marching cube 实现相关联的其他评估,例如在表面内部取点并搜索其表面,然后在其上行走。
对于marching cube,对立方体的角进行采样一段距离。如果内部是负数而外部是正数,那么为了使Aabb成为表面的一部分,它必须至少有一个正角和一个负角。
视域体联合与表面没有距离。但是,可以确定点是在内部还是外部。该确定决定marching cube的哪个表面将用于体素。如果目标是使表面更接近联合的实际表面,则准确地确定沿着marching cube的边缘的交点。可以通过沿立方体边缘投射光线来确定该值。沿着边缘从外部向内部投射光线 (由角处的内部/外部确定来确定)。接收来自视域体子集的碰撞。为了产生联合,最深的交点就是那个表面上的交点。
这样,获得了用于marching cube的以下信息:角处的位置(内部或外部),以及沿着相交边缘的表面的交点。
对于性能和网格简单性,实现保持边缘交点的映射,因为每个边缘最多可共享四次。这也意味着顶点将在输出网格中正确共享。
自适应地生成表面
在一个实施例中,使用平坦度量来确定是否应该分割八叉树节点。更具体地,在一个实施例中,当确定是否细分节点时,查看所有样本,确定每个样本的法线(例如,通过主轴确定,平均背板三角形的法线等),以及测量法线方向上的点的范围以确定在体素内的表面“平坦”程度。如果识别该表面为非常平坦(例如,该范围小于定义的阈值),则所包含的表面可以用相对平坦的多边形近似。其他信息如下。
深度视域体是视域体的实现,其保持深度缓冲器的mipmap。在 mipmap中,每个像素保持深度范围,描述其上方更详细的mipmap的最小和最大深度值,依此类推。可以认为每个深度范围像素是非常小的锥体,其中视点是金字塔的顶点,以及视点和近和远深度范围描述近和远平面。因为它们与像素(mipmap或深度缓冲器中)有关,所以在这里将这些像素称为阻挠(frustal)。
为了表示平坦度的概念,引入了平板(slab)的概念(平板视域体(SlabViewVolume))。给定深度点的集合,平板是世界空间中的平面并且具有宽度。对于深度缓冲器中锥体的所有点都在由平面及其宽度定义的平板内。可以将宽度认为是平坦度的度量。在计算平面时,找到具有最小宽度的平面。如果宽度为零,则所有点都精确地在平面内。
阻挠板(frustal slab)可以直接从深度缓冲器计算,也可以从更高级别的详细mipmap(如果有的话)计算得出。下一级可以通过采用四个更详细的阻挠板并计算包含更详细板的所有角的新阻挠板来近似。这是近似值;或者,可以在深度缓冲值上计算平板。
因此,当进行八叉树深度遍历时,在每个八叉树单元处,如果它在视域体的联合的边界上,则可以确定其测量的平坦度。
尽管深度缓冲器在单个视域体上是连续的,但在视域体之间可能不是这样。它也仅针对深度缓冲器表面定义,而不是锥体的其余部分。因此,当在多个视域体上计算Aabb上的平坦度时,也可以考虑联合方面。联合可以是凹的和/或具有断开的部分。为了简化联合非不重要时的计算,可以在世界空间中的平板的近似值上计算平坦度。此外,平坦度值仅可用于Aabb 的至少一个视图全部位于锥体内部的情况下,以确保连续性。
确定在网格表面上的光照属性
(图1的框110)
采光(Delighting)
通过从原始捕获中移除阴影和定向光的其他视觉提示,采光将纹理转换为表示对象的形式,就像对象处于没有定向光的环境中一样。采光的过程可包括例如线性曝光校正,非线性曝光校正和晕影校正。非线性曝光校正可以像线性曝光校正,但具有立方拟合。
采光的方面和目标包括色度和亮度(例如,最大化色度和亮度),来自镜面重投影的光方向,镜面掩模生成和探针采光。
采光可用于从场景中移除所有照明,包括阴影。
或者,可以使用采光来仅从场景中去除环境光的颜色。例如,当从场景(例如,在视频游戏中)捕获对象时,人类视觉系统将推断对象相对于场景中的照明颜色的颜色。当从场景中提取对象作为3D模型时,对象对于观看者可能看起来很奇怪,就好像对象本身保持来自场景中的照明的颜色的属性一样。在一个实施例中,通过校正输入的捕获图像上的照明(例如,在处理管线的开始处)来克服这一点。在另一实施例中,当使用照明近似(例如,在管线的末端)时,通过校正输出漫反射和镜面纹理上的照明来克服这一点。后一实施例有利地是快速且可控的并且产生高质量的结果。
采光曝光补偿
如果渲染是色调映射的,这与传统(例如,胶片)相机上的曝光设置和胶片/传感器属性的组合相当-在不同的捕获之间,曝光可能会改变(因为,例如,在某些捕获中比在其他捕获中更多的图像非常明亮)。胶片属性通常不会在捕获之间发生变化,但如果这种变换没有反转,它将包含在最终的重建中。
因此,作为采光曝光补偿的一部分,尝试使图像上的像素颜色值更相等是有用的。对于某些情况,可以捕获曝光信息作为图像捕获的一部分。曝光信息也可以单独使用图像中的各种算法来近似。通过去除曝光效果,可以更准确地在不同场景中重新输出输出,从而通过不包括曝光或通过防止捕获中的不同曝光在混合在一起时引入不一致而产生更高质量的结果。材料/光线捕获
可以使用SH变换来代替采光以确定表面光场。对于任何给定点,关于光反射(反射率)从多个角度看起来像什么的信息可以与SH组合成近似反射率的函数(插值加上通过SH的压缩)。
SH可以用于捕获低频照明效果。SH充当低通滤波器。然后可以使用现有模型几何和环境贴图使用其他技术添加反射。频率表示也可用于采光。
在实施例中,当特定点从相应方向可见时,SH用于恢复用于编码关于这些点的颜色的信息的表面外观。对于SH,以一定方式捕获多个图像,使得可以在来自若干方向的若干图像中看到每个特定点。因此,用于每个点的恢复的SH的输入包括多个样本,每个样本包含关于从每个方向可见的点的颜色的信息。在一个实施例中,基于样本值与用SH评估的值之间的平方误差的最小化来重建SH系数。
在实施例中,使用半球形基础(半球谐波)或小波而不是球谐波来改善当前SH方法。
对于SH图谱中的每个方向,可以捕获快照,并且可以对颜色进行编码。SH图谱可用于生成漫反射/镜面纹理以及以不同方式捕获其他材料特征,例如:a)通过收集关于球面调和形状的统计数据来推断材料参数,例如偏离平均值或SH表面上的镜面高亮“灯泡”的宽度;以及b)通过神经网络推导材料参数,在球面调和数据集上训练,球面调和数据集包含在不同光照条件下从具有已知特性的不同材料捕获的球面调和。
例如,SH可用于存储关于点处的入射光的方向信息。该信息可用于评估表面外观以及其他数据,例如材料特性。
在实施例中,不是存储入射光,而是存储仅在点可见时从该点发射或反射的光。在实施例中,SH用于存储该点的最终外观。当随后重现捕获时,将从其观察每个可见点的方向是已知的或可以确定的。因此,在一个实施例中,仅使用已知方向从SH解码点的颜色。这种方法是有利的,因为可以重现依赖于视图的细节(例如,反射和高亮),而不必知道或确定诸如反射率的表面特性。
图4是在根据本发明的实施例中使用SH的方法的示例的流程图400。流程图400可以实现为驻留在某种形式的计算机可读存储介质上(例如,在图5的计算机系统500的存储器中)的计算机可执行指令。
在图4的框402中,访问多样本图谱(下面进一步讨论)作为输入。在一个实施例中,当多个点从不同方向可见时,多样本图谱包括网格表面上的这些点的多个颜色样本。
在框404中,对于每个点,针对每个颜色通道确定(例如,计算) 达到SH的指定阶数(order)的权重系数。较高阶数的SH增加了可捕获和存储的细节量。在一个实施例中,使用最大阶数为8,这提供了质量结果,同时节省了计算资源。
在框406中,将每个系数存储到2D浮点RGB纹理的适当通道。可以根据网格上相应点的UV坐标选择合适的纹理像素。可以通过增加所使用的纹理数量来增加系数的数量。在一个实施例中,系数存储在SH图谱中。
因为网格的部分布局在纹理贴图中,它们之间有一些间距,所以纹理的某些部分不与SH系数相关联。因此,当渲染模型时,那些空的空间可能会产生伪影,除非将它们解决掉。在框408中,在一个实施例中,执行后处理步骤以解决此问题。生成边界纹理像素的列表(具有数据的纹理像素,其具有没有数据的相邻纹理像素)。将每个边界纹理像素的数据复制到其空邻居,然后更新边界纹理像素的列表。重复该步骤直到填满所有纹理像素。
在框410中,对于要渲染的每个点,确定视图方向,从纹理贴图访问该方向的权重系数,并且该数据用于确定所渲染的点的最终颜色。
多样本图谱
场景的多个视图的每次捕获可以保持关于相机的信息(诸如位置,方向和投影),深度信息和颜色信息。
可以生成场景的参数化的3D模型。通过该参数化,可以渲染世界空间纹理图谱(在下面进一步描述)。然后可以生成从视图中采样的纹理贴图。
在实施例中,多样本图谱用作存储用于该采样的最小信息集的表示。对于图谱中的每个纹理像素,多样本图谱可以保持与该纹理像素相关联的样本。纹理像素可以具有零样本,或者多达每个纹理像素的视图数量的多个样本。这可以通过为每条扫描线存储每个纹理像素的多个样本,然后按顺序分别存储每个纹理像素的所有样本来相对简洁地表示。
在一个实施例中,如下确定将包括在多样本图谱中的样本。当采样视图时,世界空间位置将投影到视图的视图空间中。如果位置不在视图内部,则没有样本。然后,通过测试样本到深度缓冲器的距离,进行检查以确定样本是否在表面上。如果样本离表面太远(例如,如相对于所定义的阈值距离测量的),则可能不包括样本。其他过滤器可用于确定是否包括样本,例如比较样本的质量,或确定样本的法线与模型的法线的匹配程度。法线测试很有用,因为它减少了在薄表面的错误侧上包括样本的机会。
可以将表示序列化,然后可以将算法应用于其上以产生结果。因此,数据集仅保持感兴趣的样本,并且可能保持其他预先计算的数据,以便控制后续算法以用于产生结果。
存在用以存储样本数据的若干方式。如果是颜色采样,则表2的示例中示出了每个样本存储64位的灵活方式。
表2
通过保持三个质量度量和视图索引,例如,可以在没有深度缓冲器或者没有与视图相关联的其他数据的情况下计算视图方向。
因此提供了许多优点:加载多样本图谱比加载每个图像/深度贴图、投影、样本等更快;并且数据集较小,因为它仅包含视图中并且仅在图谱采样的分辨率下的样本。
表示表面光场
(图1的框112)
镜面拟合作为视图相关照明的近似
场景的多个视图的每个捕获可以保持关于相机的信息(例如位置、方向、投影)以及深度和颜色信息。例如,可以从捕获计算光源的近似位置/类型/颜色。
具有UV参数化和多样本图谱的模型可用于找到与纹理图谱的每个纹理像素的纹理像素的每个视图相关联的所有颜色像素。
可以渲染模型使得照明匹配原始捕获。一种方法是使用样本颜色。在此上下文中照明是重要的,其是任何依赖于视图的照明,例如镜面反射或环境映射类型效果。无论视图在重建模型中是什么,原始捕获的漫反射和阴影都是正确的。
显示该照明的方法是基于从纹理像素到观看者的视图方向改变颜色。在一般情况下,存在两个自由度,并且基于纹理像素周围的半球来查找颜色。
另一种方法基于观察,即大多数依赖于视图的照明可以近似为冯氏 (Phong)着色或任何类似的3D表面着色技术。这可能不是环境映射的情况,但实际上该技术将近似于镜面融化(blob)。通过假设照明是类似冯氏的,可以仅使用每个纹理像素的法线、漫反射颜色、镜面反射颜色和材料光泽来计算照明模型所需的数据。
可以通过评估每条光线和每个样本,并观察比漫反射颜色更亮的样本来计算材料的镜面反射颜色。如果剪切了颜色,则可以考虑这一点。如果某个通道的值接近1,则该通道可能已被剪切。为了确定颜色,确定颜色通道之间的比。如果其他未剪切的通道除以最大未剪切通道强度,则该比预计保持大致相同。确定所有未剪切的通道的比,并通过最大未剪切的通道的强度进行加权。结果是归一化的颜色,其通过类似通过基于视图位置和最大通道值执行镜面计算而确定的强度来进行缩放。
当观察方向在样本上变化时,可以通过评估强度的形状来计算镜面光泽度,并且拟合屈光力曲线以产生近似光泽度。
如果高频噪声产生不期望的伪像,则可以使用周围纹理像素值和平滑处理。
还可以使用具有预定和/或用户设置的镜面光泽度的上述类冯氏方法。
可以以不同方式计算法线,包括拟合到样本数据。这具有可能能够从原始模型的法线贴图中提取数据的优点。它也可以使用跨视图的加权平均值从深度缓冲器由捕获计算。
上述方法实现起来相对简单,需要较少的存储空间,并且通常产生合理的结果。其他优点包括:只需要三种纹理(漫反射、法向和镜面反射颜色/光泽)(如果镜面反射颜色是固定的或在模型中编码,则只需要两种);处理高频镜面反射效果;并且它可以在具有像素着色器的硬件上有效地运行(例如,在移动设备上)。
转换和渲染
(图1中的框114)
用世界空间图谱重采样模型属性
在某些情况下,模型是具有关联数据的非常高的多边形版本。要创建该模型的较低多边形版本,可以将关联数据作为纹理贴图应用于较低多边形模型。
如果可以通过世界空间位置从源数据集访问数据,则可以减少原始模型中的多边形的数量,而不考虑任何参数化。一旦生成了低多边形模型,就可以计算使用例如等时(isochart)纹理图谱的UV参数化。通过不必考虑除模型形状之外的任何其他参数,可以简化和改进诸如二次误差度量边缘去除的许多多边形减少技术的性能。
利用参数化的低多边形模型,可以从原始模型访问关联的参数(诸如颜色或法线等),或者仅仅与世界空间中的模型相关联的数据(例如,颜色的点云)。
为了实现这一点,渲染所需纹理图谱的大小的图像,并且在每个纹理像素处保持世界空间位置。UV值控制网格的三角形的顶点位置,并且通过每像素的重心坐标对世界空间位置进行插值或计算。在渲染完成时,世界空间纹理图谱保持该纹理像素在世界空间中的相关位置。
这样,通过获取世界空间纹理图谱的每组纹理像素并在原始数据集中查找关联数据来产生具有期望值的实际纹理贴图。
可以生成场景的参数化3D模型。通过该参数化,可以渲染世界空间纹理图谱。然后可以生成从视图中采样的纹理贴图。
刚刚描述的方法提供了许多优点:它将UV参数化与简化分开;通过不必考虑原始模型的UV映射,简化过程更不复杂、更快,并且简化的类型不受限制;没有必要参数化(UV-映射)非常高的多边形模型,这可能是耗时的;对于每个结果纹理像素,只需要执行一次查找;世界空间纹理图谱也可以记录其他信息,也可以用于其他计算。
改变UV参数化的质量测量
在实施例中,用于改变UV参数化的质量测量包括通过来自UV空间中的三角形的样本的标准偏差来控制UV映射。
纹理映射表面
利用UV映射,扫描线渲染器用于确定应当应用于纹理贴图的每个像素的颜色。对渲染器馈入三角形的UV空间中的坐标。在光栅化时,它会计算哪些像素与什么UV空间和哪个图元相关联。利用该信息,可以使用重心坐标来确定三角形图元的UV空间中的像素,然后该信息可以用于计算与世界空间中的UV相关联的点。利用世界空间中的点,可以确定相关联的颜色。
视域体中的每个点的世界空间位置和颜色可以存储在八叉树中。然后,当光栅化时,可以查询最近点的八叉树,并且可以使用其相关联的颜色。
为了从扫描线光栅化简化/解耦颜色查找部分,将扫描线光栅化器设置为光栅化XMVECTOR贴图(上面的表1),其中x,y,z值对应于世界空间位置,并且w包含与之关联的图元(例如,三角形索引)。利用该信息,可以确定来自世界空间位置和顶点的世界空间位置的重心坐标。这可用于内插法线顶点,计算UV或用于其他用途。
图谱中的像素的良好颜色是一组最接近的像素的颜色。要确定所有像素的合理值,可以使用用于确定最接近颜色的点集(PointSet)类。将光栅化的三角形的轮廓的边集的所有点都添加到八叉树结构中。然后,测试世界空间纹理图谱的每个像素以查看它是否已被光栅化。如果它已被光栅化,则点集类用于使用设置颜色查找最近的点,该设置颜色将复制到该像素。
使用世界空间中最接近的位置来选择纹理图谱颜色是快速而简单的。
当光栅化UV网格时,也可以计算世界空间法线。这可以与最近的一个或更多个点的法线进行比较。在一定范围内具有最相似法线的点将排除选择薄层状物的错误侧上的点。
对原始图像进行采样而不是仅基于距离而在八叉树中查找样本,这提供了诸如易于找到相邻像素和确定哪些像素具有更高或更低质量的优点。例如,相对于相机更“边缘上”的像素更可能包含更多过滤的像素颜色,因此包含更少的信息。例如,考虑使用高频纹理映射的球体渲染。在从球体的中心到其边缘的方向上,捕获中的像素样本将变成来自球体的纹理映射的越来越多的纹理像素的混合。此外,边缘上像素可能会影响抗锯齿,因为抗锯齿组合了球体上的样本和非球体上的样本。
由于过滤并且因为它们可能分离未连接的元素,接近轮廓边缘的像素可能不是高质量样本。为了解决这个问题,通过两个九抽头滤波器测量像素的边缘和平坦度。然后将该质量测量值存储为像素的阿尔法值。
对于世界空间纹理图谱图像的每个像素,存在x,y,z值和图元索引。预先计算每个图元的法线,以便快速轻松地查找。
在实施例中,使用每个像素的世界空间x,y,z值。可以测试每个视图以确定它在投影时是否在视锥体内部。如果它在内部,则可以测试其深度。可以对颜色缓冲器进行采样,并且可以使用法线与像素法线的点积作为质量的度量。
利用一组样本,以及质量测量(如像素质量,最接近一的法线的点积等),可以选择接受和拒绝的样本。样本也可以基于质量进行混合,更高质量的样本可以获得更高的权重。
示例计算机系统
图5是示出可以在其上实现根据本发明的实施例的示例计算系统 500的框图。计算系统500可以是但不限于计算机、视频游戏平台或控制台,无线通信设备(例如,智能手机)。通常,计算系统500是一种处理和/或显示图形数据的设备。
在图5的示例中,计算系统500包括用户界面504,中央处理单元 (CPU)506,存储器控制器508,存储器510,图形处理单元(GPU)512, GPU高速缓存514,显示接口516和显示器518,每个显示器可以使用总线 520与其他组件通信。可以实现根据本发明的实施例的计算系统,除了刚刚列出的那些之外还可以包括其他组件,或者它可以不包括所有列出的组件。
存储器510可由CPU 506和GPU 512访问。值得注意的是,即使 GPU 512处于无效状态,CPU 506也可访问存储器510。例如,当GPU崩溃、锁定、冻结或停止时,可能会导致无效状态。
在一个实施例中,GPU 512具有高度并行的结构。例如,GPU 512 可以包括配置成以并行方式操作的多个处理元件(例如,管线)。每个管线可包括不止一个处理单元或阶段。
CPU 506可以执行一个或更多个软件应用程序。在CPU 506上执行的软件应用程序包括但不限于操作系统和应用程序,诸如但不限于执行上述功能、方法和技术的一个或更多个应用程序。在CPU 506上执行的软件应用程序可以包括一个或更多个图形渲染指令,其指示GPU 512执行图形数据并向显示器518提供图形数据。在一些示例中,软件指令可以符合图形应用程序编程接口(API)。CPU 506向GPU 512发出包含一个或更多个图形渲染命令(例如但不限于绘制命令)的命令流,以使GPU执行图形数据的一些或全部渲染。CPU 506还可以向GPU 512发出其他类型的命令,例如但不限于计算命令(例如,通用计算命令,状态编程命令,存储器传输命令等)。在一个实施例中,GPU驱动程序经由API从软件应用程序接收指令,并控制GPU 512的操作以服务指令。
虽然前述公开内容使用特定框图,流程图和示例阐述了各种实施例,但是本文描述和/或示出的每个框图组件、流程图步骤、操作和/或组件可以单独地和/或共同地使用广泛的硬件、软件或固件(或其任何组合)配置。此外,其他组件中包含的组件的任何公开都应被视为示例,因为可以实现许多其他架构以实现相同的功能。
本文描述和/或说明的工艺参数和步骤顺序仅作为示例给出,并且可以根据需要改变。例如,虽然可以以特定顺序示出或讨论这里示出和/或描述的步骤,但是这些步骤不一定需要以所示或讨论的顺序执行。这里描述和/或示出的示例方法还可以省略这里描述或示出的一个或更多个步骤,或者除了所公开的那些步骤之外还包括附加步骤。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但应理解,本公开中定义的主题不必限于上述具体特征或动作。而是作为实现本公开的示例形式公开了上述具体特征和动作。
Claims (20)
1.一种虚拟摄影测量方法,包括:
访问存储在计算机系统的存储器中的信息,所述信息包括利用软件应用程序生成的场景中的一个或更多个对象的快照,其中所述快照是从相对于所述场景的不同视角捕获的;
基于所述快照生成点云;
基于所述点云生成网格结构;
确定所述网格结构的表面上的光场;以及
将所述网格结构和所述光场存储在计算机系统的存储器中。
2.如权利要求1所述的方法,其中所述信息还包括所述快照中的每个像素的颜色值和所述快照中的每个像素的深度值。
3.如权利要求1所述的方法,其中所述确定所述网格结构的表面上的光场包括使用球面调和变换。
4.如权利要求1所述的方法,还包括使用所述光场和所述网格结构在虚拟三维中重现所述场景。
5.如权利要求4所述的方法,还包括响应于用户输入从不同视角显示所述重现的场景。
6.如权利要求1所述的方法,其中所述应用程序包括视频游戏。
7.如权利要求1所述的方法,其中所述生成网格结构包括:
对于所述点云中的每个点,生成以相应点为中心并垂直于所述相应点的法线的多边形;
通过将切割平面放置在连接所述相应点和相邻点的区段的中间,对所述相邻点切割所述多边形;以及
将由所述切割产生的每个多边形分成三角形以生成所述网格结构。
8.如权利要求7所述的方法,还包括:
检查所述网格结构中的三角形的每个边缘,以确定相邻三角形是否存在相邻边缘,其中当不存在所述相邻边缘时,将所述边缘识别为所述网格结构中的孔的边界上的边界边缘;
基于所述检查形成包括被识别为边界边缘的边缘的环,其中每个所述环对应于所述网格结构中的相应孔;以及
将每个所述环分成三角形。
9.一种计算机系统,包括:
处理器;
耦合到所述处理器的显示器;和
耦合到所述处理器的存储器,所述存储器中存储有指令,其当由所述计算机系统执行时,使得所述计算机系统执行操作,所述操作包括:
访问存储在所述存储器中的信息,所述信息包括利用软件应用程序生成的场景中的一个或更多个对象的快照,其中所述快照是从相对于所述场景的不同视角捕获的;
基于所述快照生成点云;
基于所述点云生成网格结构;
确定所述网格结构的表面上的光场;以及
存储所述网格结构和所述光场。
10.如权利要求9所述的计算机系统,其中所述信息还包括所述快照中的每个像素的颜色值和所述快照中的每个像素的深度值。
11.如权利要求9所述的计算机系统,其中所述光场是使用球调和变换生成的。
12.如权利要求9所述的计算机系统,其中所述操作还包括使用所述光场和所述网格结构在虚拟三维中渲染和显示所述场景。
13.如权利要求9所述的计算机系统,其中所述操作还包括:
对于所述点云中的每个点,生成以相应点为中心并垂直于所述相应点的法线的多边形;
通过将切割平面放置在连接所述相应点和相邻点的区段的中间,对所述相邻点切割所述多边形;以及
将由所述切割产生的每个多边形分成三角形以生成所述网格结构。
14.如权利要求13所述的计算机系统,其中所述操作还包括:
检查所述网格结构中的三角形的每个边缘,以确定相邻三角形是否存在相邻边缘,其中当不存在所述相邻边缘时,将所述边缘识别为所述网格结构中的孔的边界上的边界边缘;
基于所述检查形成包括被识别为边界边缘的边缘的环,其中每个所述环对应于所述网格结构中的相应孔;以及
将每个所述环分成三角形。
15.一种非暂时性计算机可读存储介质,具有计算机可执行指令,其当被执行时,执行方法,所述方法包括:
访问存储在计算机系统的存储器中的信息,所述信息包括利用软件应用程序生成的场景中的一个或更多个对象的快照,其中所述快照是从相对于所述场景的不同视角捕获的;
基于所述快照生成点云;
基于所述点云生成网格结构;
确定所述网格结构的表面上的光场;以及
将所述网格结构和所述光场存储在计算机系统的存储器中。
16.如权利要求15所述的非暂时性计算机可读存储介质,其中所述信息还包括所述快照中的每个像素的颜色值和所述快照中的每个像素的深度值。
17.如权利要求15所述的非暂时性计算机可读存储介质,其中所述确定所述网格结构的表面上的光场包括使用球面调和变换。
18.如权利要求15所述的非暂时性计算机可读存储介质,其中所述方法还包括使用所述光场和所述网格结构在虚拟三维中渲染和显示所述场景。
19.如权利要求15所述的非暂时性计算机可读存储介质,其中所述方法还包括:
对于所述点云中的每个点,生成以相应点为中心并垂直于所述相应点的法线的多边形;
通过将切割平面放置在连接所述相应点和相邻点的区段的中间,对所述相邻点切割所述多边形;以及
将由所述切割产生的每个多边形分成三角形以生成所述网格结构。
20.如权利要求19所述的非暂时性计算机可读存储介质,其中所述方法还包括:
检查所述网格结构中的三角形的每个边缘,以确定相邻三角形是否存在相邻边缘,其中当不存在所述相邻边缘时,将所述边缘识别为所述网格结构中的孔的边界上的边界边缘;
基于所述检查形成包括被识别为边界边缘的边缘的环,其中每个所述环对应于所述网格结构中的相应孔;以及
将每个所述环分成三角形。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862697934P | 2018-07-13 | 2018-07-13 | |
US62/697,934 | 2018-07-13 | ||
US16/434,972 US10984587B2 (en) | 2018-07-13 | 2019-06-07 | Virtual photogrammetry |
US16/434,972 | 2019-06-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110728740A CN110728740A (zh) | 2020-01-24 |
CN110728740B true CN110728740B (zh) | 2023-09-05 |
Family
ID=69138852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910634628.XA Active CN110728740B (zh) | 2018-07-13 | 2019-07-15 | 虚拟摄影测量 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10984587B2 (zh) |
CN (1) | CN110728740B (zh) |
DE (1) | DE102019118838A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10803561B2 (en) * | 2017-06-02 | 2020-10-13 | Wisconsin Alumni Research Foundation | Systems, methods, and media for hierarchical progressive point cloud rendering |
CN108211354A (zh) * | 2017-12-29 | 2018-06-29 | 网易(杭州)网络有限公司 | 3d游戏场景中虚拟资源的生成方法及装置 |
US10924721B2 (en) * | 2018-12-20 | 2021-02-16 | Intel Corporation | Volumetric video color assignment |
CN112184901B (zh) * | 2020-09-08 | 2024-04-19 | 北京三快在线科技有限公司 | 一种深度图确定方法及装置 |
US20220165029A1 (en) * | 2020-11-25 | 2022-05-26 | Insurance Services Office, Inc. | Computer Vision Systems and Methods for High-Fidelity Representation of Complex 3D Surfaces Using Deep Unsigned Distance Embeddings |
WO2022133569A1 (en) * | 2020-12-22 | 2022-06-30 | Prevu3D Inc. | Methods and system for reconstructing textured meshes from point cloud data |
US11682136B2 (en) | 2021-01-07 | 2023-06-20 | Htc Corporation | Display method, display system and non-transitory computer readable storage medium |
CN112733852B (zh) * | 2021-01-20 | 2024-04-26 | 闻泰通讯股份有限公司 | 区域确定方法、装置、计算机设备和可读存储介质 |
EP4040397A1 (en) * | 2021-02-08 | 2022-08-10 | Reactive Reality AG | Method and computer program product for producing a 3d representation of an object |
EP4360055A2 (en) * | 2021-06-25 | 2024-05-01 | Signify Holding B.V. | Rendering a visual representation of a luminaire by re-using light values |
US20230030247A1 (en) * | 2021-07-29 | 2023-02-02 | Alt Llc | Method of asynchronous reprojection of an image of a 3d scene |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6208347B1 (en) * | 1997-06-23 | 2001-03-27 | Real-Time Geometry Corporation | System and method for computer modeling of 3D objects and 2D images by mesh constructions that incorporate non-spatial data such as color or texture |
GB0704319D0 (en) * | 2007-03-06 | 2007-04-11 | Areograph Ltd | Image capture and playback |
CN101208723A (zh) * | 2005-02-23 | 2008-06-25 | 克雷格·萨默斯 | 用于3维照相机和3维视频的自动场景建模 |
CN103578132A (zh) * | 2012-07-19 | 2014-02-12 | 辉达公司 | 图形显示系统内的光传输一致的场景简化 |
CN105074615A (zh) * | 2013-01-08 | 2015-11-18 | 阿约特莱股份公司 | 虚拟传感器系统和方法 |
CN105791881A (zh) * | 2016-03-15 | 2016-07-20 | 深圳市望尘科技有限公司 | 一种基于光场摄像机的三维场景录播的实现方法 |
CN105825544A (zh) * | 2015-11-25 | 2016-08-03 | 维沃移动通信有限公司 | 一种图像处理方法及移动终端 |
WO2017027638A1 (en) * | 2015-08-10 | 2017-02-16 | The Board Of Trustees Of The Leland Stanford Junior University | 3d reconstruction and registration of endoscopic data |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009188A (en) * | 1996-02-16 | 1999-12-28 | Microsoft Corporation | Method and system for digital plenoptic imaging |
US6975329B2 (en) * | 2002-12-09 | 2005-12-13 | Nvidia Corporation | Depth-of-field effects using texture lookup |
US7542034B2 (en) * | 2004-09-23 | 2009-06-02 | Conversion Works, Inc. | System and method for processing video images |
US20080246836A1 (en) * | 2004-09-23 | 2008-10-09 | Conversion Works, Inc. | System and method for processing video images for camera recreation |
US20080259073A1 (en) * | 2004-09-23 | 2008-10-23 | Conversion Works, Inc. | System and method for processing video images |
US9123159B2 (en) * | 2007-11-30 | 2015-09-01 | Microsoft Technology Licensing, Llc | Interactive geo-positioning of imagery |
IL190111A0 (en) * | 2008-03-11 | 2008-12-29 | Oren Cohen | Method and system for representing game data in a generic form |
US8319825B1 (en) * | 2008-06-16 | 2012-11-27 | Julian Urbach | Re-utilization of render assets for video compression |
US8810590B2 (en) * | 2008-07-11 | 2014-08-19 | Advanced Micro Devices, Inc. | Method and apparatus for spatial binning on a GPU and global path planning to avoid spatially binned objects |
US8542231B2 (en) * | 2009-06-29 | 2013-09-24 | Crytek Gmbh | Method, computer graphics image rendering system and computer-readable data storage medium for computing of indirect illumination in a computer graphics image of a scene |
US20120021828A1 (en) * | 2010-02-24 | 2012-01-26 | Valve Corporation | Graphical user interface for modification of animation data using preset animation samples |
US9381429B2 (en) * | 2010-02-24 | 2016-07-05 | Valve Corporation | Compositing multiple scene shots into a video game clip |
US20120028707A1 (en) * | 2010-02-24 | 2012-02-02 | Valve Corporation | Game animations with multi-dimensional video game data |
US20120021827A1 (en) * | 2010-02-25 | 2012-01-26 | Valve Corporation | Multi-dimensional video game world data recorder |
US20110222757A1 (en) * | 2010-03-10 | 2011-09-15 | Gbo 3D Technology Pte. Ltd. | Systems and methods for 2D image and spatial data capture for 3D stereo imaging |
US9466143B1 (en) * | 2013-05-03 | 2016-10-11 | Exelis, Inc. | Geoaccurate three-dimensional reconstruction via image-based geometry |
US9786062B2 (en) * | 2013-05-06 | 2017-10-10 | Disney Enterprises, Inc. | Scene reconstruction from high spatio-angular resolution light fields |
EP3032495B1 (en) * | 2014-12-10 | 2019-11-13 | Dassault Systèmes | Texturing a 3d modeled object |
GB2536061B (en) * | 2015-03-06 | 2017-10-25 | Sony Interactive Entertainment Inc | System, device and method of 3D printing |
US10306156B2 (en) * | 2015-11-30 | 2019-05-28 | Photopotech LLC | Image-capture device |
US10114467B2 (en) * | 2015-11-30 | 2018-10-30 | Photopotech LLC | Systems and methods for processing image information |
US10706621B2 (en) * | 2015-11-30 | 2020-07-07 | Photopotech LLC | Systems and methods for processing image information |
EP3188033B1 (en) * | 2015-12-31 | 2024-02-14 | Dassault Systèmes | Reconstructing a 3d modeled object |
GB2552935B (en) * | 2016-08-04 | 2020-01-01 | Sony Interactive Entertainment Inc | Device and method of analysing an object for 3D printing |
US11043026B1 (en) * | 2017-01-28 | 2021-06-22 | Pointivo, Inc. | Systems and methods for processing 2D/3D data for structures of interest in a scene and wireframes generated therefrom |
CN108876926B (zh) * | 2017-05-11 | 2021-08-10 | 京东方科技集团股份有限公司 | 一种全景场景中的导航方法及系统、ar/vr客户端设备 |
GB2564155B (en) * | 2017-07-06 | 2020-10-14 | Sony Interactive Entertainment Inc | System and method of 3D print modelling |
GB2564401B (en) * | 2017-07-06 | 2020-10-07 | Sony Interactive Entertainment Inc | System and method of enhancing a 3D printed model |
EP3818530A4 (en) * | 2018-07-02 | 2022-03-30 | Magic Leap, Inc. | METHODS AND SYSTEMS FOR INTERPOLATION OF VARIOUS INPUTS |
-
2019
- 2019-06-07 US US16/434,972 patent/US10984587B2/en active Active
- 2019-07-11 DE DE102019118838.5A patent/DE102019118838A1/de active Pending
- 2019-07-15 CN CN201910634628.XA patent/CN110728740B/zh active Active
-
2021
- 2021-03-17 US US17/204,169 patent/US11625894B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6208347B1 (en) * | 1997-06-23 | 2001-03-27 | Real-Time Geometry Corporation | System and method for computer modeling of 3D objects and 2D images by mesh constructions that incorporate non-spatial data such as color or texture |
CN101208723A (zh) * | 2005-02-23 | 2008-06-25 | 克雷格·萨默斯 | 用于3维照相机和3维视频的自动场景建模 |
GB0704319D0 (en) * | 2007-03-06 | 2007-04-11 | Areograph Ltd | Image capture and playback |
CN103578132A (zh) * | 2012-07-19 | 2014-02-12 | 辉达公司 | 图形显示系统内的光传输一致的场景简化 |
CN105074615A (zh) * | 2013-01-08 | 2015-11-18 | 阿约特莱股份公司 | 虚拟传感器系统和方法 |
WO2017027638A1 (en) * | 2015-08-10 | 2017-02-16 | The Board Of Trustees Of The Leland Stanford Junior University | 3d reconstruction and registration of endoscopic data |
CN105825544A (zh) * | 2015-11-25 | 2016-08-03 | 维沃移动通信有限公司 | 一种图像处理方法及移动终端 |
CN105791881A (zh) * | 2016-03-15 | 2016-07-20 | 深圳市望尘科技有限公司 | 一种基于光场摄像机的三维场景录播的实现方法 |
Non-Patent Citations (1)
Title |
---|
基于图像的点云建模及其真实感绘制;安维华等;《计算机工程与应用》;第46卷(第20期);第4-8页 * |
Also Published As
Publication number | Publication date |
---|---|
DE102019118838A1 (de) | 2020-01-16 |
US10984587B2 (en) | 2021-04-20 |
CN110728740A (zh) | 2020-01-24 |
US11625894B2 (en) | 2023-04-11 |
US20210201576A1 (en) | 2021-07-01 |
US20200020155A1 (en) | 2020-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110728740B (zh) | 虚拟摄影测量 | |
US7940279B2 (en) | System and method for rendering of texel imagery | |
US8659593B2 (en) | Image processing apparatus, method and program | |
Hadwiger et al. | Advanced illumination techniques for GPU volume raycasting | |
US8896602B2 (en) | Apparatus and method for finding visible points in a point cloud | |
EP1128330B1 (en) | Visibility splatting and image reconstruction for surface elements | |
JP4391775B2 (ja) | グラフィクスオブジェクトの、複数のポイントを含む3dモデルをレンダリングする方法及び装置 | |
US20170323471A1 (en) | 3D rendering method and 3D graphics processing device | |
EP2831848B1 (en) | Method for estimating the opacity level in a scene and corresponding device | |
US20070018988A1 (en) | Method and applications for rasterization of non-simple polygons and curved boundary representations | |
US9508191B2 (en) | Optimal point density using camera proximity for point-based global illumination | |
EP1128331B1 (en) | Hierarchical data structures for surface elements | |
US20130027417A1 (en) | Alternate Scene Representations for Optimizing Rendering of Computer Graphics | |
Schneider et al. | Real-time rendering of complex vector data on 3d terrain models | |
US7158133B2 (en) | System and method for shadow rendering | |
Reinbothe et al. | Hybrid Ambient Occlusion. | |
US20070216680A1 (en) | Surface Detail Rendering Using Leap Textures | |
US20140267357A1 (en) | Adaptive importance sampling for point-based global illumination | |
Mavridis et al. | Global Illumination using Imperfect Volumes. | |
Farias | Point cloud rendering using jump flooding | |
Korndörfer et al. | Enhanced sphere tracing | |
Vyatkin et al. | Function-based gpu architecture | |
Timonen | Scalable algorithms for height field illumination | |
Ivanov et al. | Representation of real-life 3d models by spatial patches | |
Sukys | Light probe cloud generation for games |
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 |