专利名称:使用环境遮挡的真实感成像的系统和方法
技术领域:
本发明一般涉及计算机图形和真实感(photorealistic)图像生成的领域,并且 更具体地,涉及用于使用环境遮挡(ambient occlusion)的改善的真实感成像的系统和方 法。
背景技术:
现代计算机图形系统和方法包括设计为渲染在包括视频游戏、飞行和其他模拟、 运动画面和许多其他应用之类的多种应用中使用的高质量图像的各种技术。例如,对于动 画工作室,光线跟踪和全局照明技术现在在运动画面生产和特效中扮演不可或缺的角色。
—种常用方法是使用光线的分级组或"分组",可针对分级加速结构(HAS)对其进 行测试,以便根据例如当几何子集未到达观察点时的考虑,丢弃该子集。尽管传统方法理论 上是有效的,但投射周围环境遮挡光线常常给高速缓存和本地存储器带来巨大的压力,并 且需要非必要的工作量。 因而,需要针对与传统系统和方法有关的至少一些问题和缺点的用于实感成像的 系统和/或方法。
发明内容
提供以下概要以有助于理解所公开实施例特有的一些创新特征,但不意图作为完 整说明。通过作为整体考虑全部说明书、权利要求、附图和摘要,可以获得对实施例的各个 方面的完整理解。 在一个实施例中,接收场景模型数据,该场景模型数据包括描述在场景中排列的 物体的场景几何模型和多个像素数据。选择多个像素数据中的第一像素数据。基于第一像 素数据生成主像素颜色和主光线。如果主光线与场景中的物体相交,则确定交点P。基于相 交的物体和交点P,确定表面法矢量N。基于交点P确定主命中颜色。基于主命中颜色修改 主像素颜色。基于交点P和表面法矢量N,产生多个环境遮挡(AO)光线,每个A0光线具有 方向D。对于每个A0光线,反转A0光线方向D,并将A0光线起点0设置为场景外的点。使 每个AO光线从AO光线起点向着交点P行进到场景中。如果AO光线在到达点P之前与物 体相交,则从环境遮挡计算中排除该AO光线。如果AO光线在到达点P之前不与物体相交, 则在环境遮挡计算中包括该光线。基于所包括的A0光线,估计环境遮挡。基于环境遮挡和 主命中颜色,遮暗主像素颜色,并且基于像素数据的主像素颜色,生成图像。
在附图中,相似附图标记指代各个视图之中相同或功能类似的元素,附图被并入 在说明书中并形成说明书的一部分,进一步图示了实施例,并且与具体实施方式
一起用于 说明在此公开的实施例。
图1图示了示出根据优选实施例的计算机图形系统的框 图2图示了示出根据优选实施例在示例场景中的主光线投射的框图;
图3图示了示出根据优选实施例在示例场景中的环境遮挡光线的框图;
图4图示了示出根据优选实施例的对于环境遮挡的改进方法的例子的框图;
图5图示了描绘可根据优选实施例实现的改进的环境遮挡方法的逻辑操作步骤 的高级流程图; 图6图示了描绘可根据优选实施例实现的改进的环境遮挡方法的逻辑操作步骤 的高级流程图; 图7图示了描绘可根据优选实施例实现的改进的环境遮挡方法的逻辑操作步骤 的高级流程图;以及 图8图示了示出可被配置为合并一个或多个优选实施例的示例计算机系统的框 图。
具体实施例方式
这些非限制性示例中讨论的具体值和配置可以变化,并且引用其仅仅用于例示至 少一个实施例,而不是要限制本发明的范围。 在以下讨论中,描述一些具体细节以提供本发明的整体理解。本领域技术人员将 理解,可以无需这样的具体细节而实践本发明。在其他实例中,以示意或框图形式图示了公 知元件,以便不会在不必要的细节方面模糊本发明。此外,在最大程度上,省略了关于网络 通信、电磁信令技术、用户接口或输入/输出技术等的细节,因为不认为这样的细节是获得 本发明的完整理解所必需的,并认为其在相关领域技术普通人员的理解范围内。
如本领域技术人员将理解的,本发明可以实施为系统、方法或计算机程序产品。因 此,本发明可采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组 合了软件和硬件方面的实施例的形式,它们在此可统称为"电路"、"模块"或"系统"。另外, 本发明可以采取以表达的任何有形介质(在该介质上包含计算机可使用的程序代码)实现 的计算机程序产品的形式。 可以采用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计 算机可读介质可以是(例如但不限于)电子、磁、光、电磁、红外或半导体系统、装置、设备或 传播介质。计算机可读介质的更具体的例子(非穷尽列举)将包括以下具有一条或多条 线的电连接、便携式计算机盘碟、硬盘、随机存取存储器(RAM)、只读存储器(R0M)、可擦除 可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CDROM)、光存储器件、 诸如支持因特网或内部网之类的传输介质或磁存储器件。注意,计算机可用或计算机可读 介质甚至可以是上面打印了程序的纸张或其它合适的介质,因为该程序可经由例如对纸张 或其它介质的光学扫描被捕获,然后被编译、翻译,或者如果有必要以合适的方式处理,然 后被存储到计算机存储器中。在本文的上下文中,计算机可用和计算机可读介质可以是能 够包含、存储、通信、传播或传送由指令执行系统、装置或设备使用或与指令执行系统、装置 或设备使用结合使用的程序的任何介质。计算机可用介质可以包括基带中的或作为载波的 一部分的传播数据信号,其中计算机可用程序代码利用该传播数据信号来体现。可以使用 任何适当的介质(包括但不限于无线、有线、光纤线缆、RF等)传送计算机可用程序代码。
可以用一个或多个编程语言(包括诸如Java、 Smalltalk、 C++等的面向对象的编程语言以及诸如"C"编程语言或类似编程语言的传统程序性编程语言)的任意组合编写用 于执行本发明的操作的计算机程序代码。程序代码可以完全在用户计算机上执行、部分地 在用户计算机上执行、作为单机软件包执行、部分地在用户计算机并部分第在远程计算机 上执行、或完全在远程计算机或服务器上执行。在后一情况中,远程计算机可通过包括,包 括局域网(LAN)或广域网(WAN)在内的任何类型的网络连接到用户计算机,或可以进行与 外部计算机的连接(例如,使用因特网服务提供者通过因特网)。 下面参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图示 和/或框图,描述本发明。将理解,流程图示和/或框图的每个块以及流程图示和/或框图 中的块的组合可由计算机程序指令实现。可以将这些计算机程序指令提供给通用计算机、 专用计算机或其他可编程数据处理装置的处理器,以产生机构使得经由计算机或其他可编 程数据处理装置的处理器执行的指令建立用于实现流程图和/或框图块或多个块中指定 的功能/动作的部件。 这些计算机程序指令还可以被存储在计算机可读介质中,该计算机可读介质可以 引导计算机或其他可编程数据处理装置按特定方式运作,使得计算机可读介质中存储的指 令产生包括实现在流程图和/或框图块或多个块中指定的功能/动作的指令部件的一件产<formula>formula see original document page 6</formula> 计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以致使在 计算机或其他可编程装置上执行一系列操作步骤,以产生计算机实现的处理,使得在计算 机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图块或多个块中指定 的功能/动作的处理。 适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或间 接耦接到存储器元件的至少一个处理器。存储器元件可包括在程序代码的实际执行期间采 用的本地存储器、大容量存储器和提供至少一些程序代码的临时存储以便减少在执行期间 必须从大容量存储器取会代码的次数的高速缓冲存储器。 输入/输出或I/0设备(包括但不限于键盘、显示器、定点设备等)可直接或通过 居间1/0控制器耦接到系统。网络适配器也可耦接到系统,以使得数据处理系统能够通过 居间私有或公共网络耦接到其他数据处理系统或远处打印机或存储设备。调制解调器、电 缆调制解调器和以太网卡正是一些目前可获得的类型的网络适配器。 现在参照附图,图1是图示根据本发明优选实施例用于使用环境遮挡的改进的真 实感成像的系统100的某些组件的高级框图。通常,系统100使用环境遮挡进行真实感成 像,并包括图形引擎102。 例如,许多真实感成像技术关注于跟踪假想光线在从光源经过场景移动时行进的 路径。在"光线投射"中,对于场景中的每个像素,图形系统跟踪从场景中的所选观察点到所 选光源的假想光线,基于光线在其到光源的路上是否与场景中的物体相交,更新像素色彩、 遮暗(shading)和其他因素。以此方式,图形系统可以迅速确定观察点场景中的物体是否 对观察点可见(可视性),以及场景中的其他物体是否阻挡来自光源的光落到物体上(直接 阴影)。这样,图形系统可以将三维场景渲染为例如适合于计算机屏幕的二维图像。如这里 所使用的,"光线投射"意味着针对可视性跟踪光线和直接阴影计算。 在"光线跟踪"中,具体地在Whitted型光线跟踪中,当跟踪光线与场景中的物体相交时,图形系统生成三种附加类型的光线即"次级光线"中的一个或多个,该"次级光线" 的起源是跟踪光线和物体的交点,该三种附加类型的光线是反射光线、折射光线和阴影光 线。"反射"光线从相交点在原始光线的镜面反射路径的方向上行进。如果发射光线与另一
物体相交,则该反射物体通过在第一物体上显示出反射物体的镜像(mirror image)而影响 代表交点的像素。 如果原始跟踪光线与透明物体相交,则"折射"光线从交点在原始光线的折射路径 的方向上行进,并且可以穿过物体行进。如果折射光线与另一物体相交,则图形系统相应地 更新代表交点的像素。如果物体面对光源,则"阴影"光线跟踪从交点到光源的直线路径。 如果阴影光线与不透明物体相交,则不透明物体阻挡来自光源的光到达交点,并且图形系 统相应地更新代表交点的像素。 除了 Whitted型次级光线之外,典型的图形系统还可进行多个其他场景操纵,以 增强所描绘场景的实感度。例如,"全局照明"(用于将间接光照考虑因素添加到场景的技 术的一般术语)通过改进场景光照的真实感将附加真实感添加到场景。因为全局照明技术 常常是资源密集型的,因此一些典型的图形系统使用环境遮挡来模拟全局照明。通常,传统 的"环境遮挡"从主交点和次级交点投射多条光线,基于与其他物体和表面相交的样本光线 的数目计算覆盖率。 环境遮挡和光线跟踪的次级光线增加了在光线投射中不可获得的细节,这得到的 是更具真实感的图像。然而,附加的光线也需要附加的计算和存储资源。这样的附加计算 和存储需求已经常常使得交互的光线跟踪不实用或不可能。这里描述的新颖的实施例克服 了一些这样的限制。 如下面将更详细描述的,系统100可以被配置为使用光线的分级组或"分组",其 中可针对分级力口速结构(Hierarchical Acceleration Structure,HAS)对该光线的分级组 或"分组"进行测试,以便根据例如当几何子集未到达观察点时的考虑,丢弃该子集。通常, HAS是由按顺序排列的节点构成的数据结构,并用来保存关于场景几何形状的信息,该信息 可以用来评估特定光路是否与场景中的物体相交等等。示例HAS包括均匀网格、二叉树、KD 树、八叉树和包围空间层级(bounded-volume hierarchy,BVH)。使用光线的分级分组和通 过加速结构穿过(traverse)分组常常极大地降低了在维持可接受的准确度的同时所需的 操作数量。 实践中,存在多种在求解环境遮挡积分中有用的典型技术。最直接的前向方式之 一是其通过使用Monte Carlo或其他采样方法从交点P投射光线,然后对于与场景几何形 状中的其他物体的相交进行测试,来近似在交点P处的可视性函数。通过不相交的环境光 线的数目除以投射的光线总数,估计P处的环境暴露度。 HAS的典型有效的实现方式可以通过从前到后、从交点到场景边界或物体交点穿 过场景,将环境遮挡光线与三维场景相交,由此避免不必要地穿过受遮挡的加速结构的各 部分。例如,在一种方式中,层级中的每一级存储该级上子节点的最大分离(s印aration) 的尺度。在运行时,图形引擎将该最大分离度和光线方向结合,以便选择首先访问哪个子节 点。 尽管传统方法理论上是有效的,但是从交点P投射环境遮挡光线常常给高速缓存 和本地存储器带来巨大压力,并且需要不必要的工作量。具体地,因为点P位于场景内部,
7并且由于从前到后穿过的性质,可能并且很有可能的是,图形引擎将在环境遮挡光线可以开始与P前面的场景几何形状相交之前,检查HAS的遮挡部分。由此,如下面更详细描述的,系统100提供了降低对高速缓存和本地存储器的压力来穿过HAS的机制。
广泛地,如下面更详细描述的,尽管改进了图形引擎用来确定对于特定场景的实感环境遮挡级的处理,系统IOO提供了极大地改善真实感成像质量的图形系统。所公开的实施例主要改进了光线跟踪性能,特别改进了环境遮挡操纵。另外,即使在具有有限本地存储器的系统中,这里描述的新颖的图形引擎和实施例也可以提供改善的光线跟踪性能。因此,所公开的实施例可以改善高端系统的性能,并使实现操作中可接受的图形性能(否则其会超出图形硬件的能力)。 更具体地,图形引擎102接收和处理场景模型输入104,生成多个像素颜色数据和其他信息。图形引擎102将所生成的信息传递给显示子系统106,该显示子系统106使用所生成的信息在显示器108上显示图像。典型的场景模型输入104包括描述场景中物体的排列的多个像素数据和场景几何模型。典型的运动画面可以包括数千静止图像,每个静止图像是场景中物体的排列。 通常,多个"像素数据"将场景中的物体与诸如显示屏幕之类的参考帧(referenceframe)相关联,根据参考帧安排关于描述场景的像素的数量的有限上边界。在场景模型输入中使用的每个像素具有关联的像素数据。在一个实施例中,像素数据包括像素的坐标参考,其表示像素与其他像素的相对位置;以及初级像素颜色,图形引擎102在像素数据的处理过程中修改该初级像素颜色,如下所述。在替代实施例中,像素数据不包括初级颜色,并且图形引擎102基于下面详细描述的处理,向多个像素数据中的每一个添加像素颜色。
在图示实施例中,图形引擎102包括输入/输出(I/O)模块120。通常,1/0模块120在他方面是传统的1/0接口。操作中,1/0模块120接收场景模型输入104。 1/0模块120还耦接到显示子系统106。显示子系统106在其他方面是传统的显示子系统,并且被配置为从图形引擎102接收处理过的场景模型数据并基于处理过的场景模型数据在显示器108上显示图像。 在所图示的实施例中,图形引擎102包括协同处理单元(SPU) 130和存储器140。SPU 130在其他方面是传统的处理单元(PU),如以下所述修改的。在一个实施例中,SPU130是Cell 处理器。在替代实施例中,SPU 130是Broadband Engine 处理器。存储器140在其他方面是传统的存储器模块140,如以下所述修改的。通常,操作中,图形引擎102接收未处理的场景模型数据104,并将未处理的场景模型数据104存储在存储器140中。SPU130处理场景模型数据104,以生成适合于显示子系统106用来显示图像的处理过的场景模型数据。 更具体地,存储器140包括模型数据142。模型数据142是指在不同处理阶段中接收的场景模型数据。在一个实施例中,模型数据142被排列为HAS。在一个实施例中,模型数据142被排列为包围空间层次(BVH)。 SPU 130包括渲染模块132和本地存储器134。渲染模块132是被配置为处理场景模型数据的逻辑块(下面更详细描述)。本地存储器134在其他方面是传统的PU本地存储器,如以下描述采用的。通常,SPU 130从存储器140中检索模型数据142的多个部分,将检索的部分存储在本地存储器134中。在一个实施例中,检索的部分是多个像素数据中的每个单个像素数据。如下面更详细描述的,渲染模块132处理场景模型数据的检索的部分,添加像素颜色或修改已有像素颜色,并将修改的像素数据返回模型数据142。
更具体地,图形引擎102接收场景模型数据104,并执行在此所述的新颖的环境遮挡技术。图2图示了示例场景200中的主光线投射。场景200包括多个物体210和表面220。从观察点232投射的主光线230在交点240处与表面220相交。表面法矢量(normal) 250表示垂直于表面220(在点240)的矢量的方向。 图3图示了在具有观察点332的示例场景300中的环境遮挡光线投射。多个环境遮挡光线350从表面320的交点340离开。环境遮挡光线350中的一些将与物体310相交。
图4图示了在具有观察点432和场景边界402的场景400中根据优选实施例的改进的环境遮挡光线处理。多个环境遮挡(AO)光线450从起点向场景边界402外行进。通常,场景边界402代表对图形引擎已知的场景模型数据的限制。 每个AO光线450从其起点在朝向表面420的交点440的直线上向场景边界402外行进。在一些实施例中,图形引擎将AO光线450分为分组460。如所示,具有起点452a、452b和456的A0光线450在它们去向交点440的路上不与场景中的物体相交。因此,这些光线被包括在后续环境遮挡计算中。 如所示,具有起点454a和454b的AO光线450在它们去向交点440的路上与物体410a相交。这样,表面420部分被物体410a遮挡,这些光线不被包括在后续环境遮挡计算中。 在一个实施例中,图形引擎在环境遮挡计算中考虑所有AO光线,将"被包括"的AO
光线的数目除以"被包括的"和"被排除的"AO光线两者的总数,以生成覆盖率。在替代实
施例中,图形引擎在环境遮挡和/或遮暗计算中仅仅考虑"被包括的"AO光线。 图5图示了使用环境遮挡的真实感成像的方法的一个实施例。具体地,图5图示
了描绘由例如可以根据优选实施例实现的图1的系统100执行的逻辑操作步骤的高级流程
图500。通常,除非另外指明,否则诸如图1的图形引擎102之类的图形引擎执行该方法的步骤。 如块505所示,处理开始,其中图形引擎接收场景模型数据,该场景模型数据包括场景几何模型和多个像素数据。在一个实施例中,多个像素数据中的一个或多个包括初级像素颜色。接下来,如块510所示,图形引擎选择多个像素数据之一作为当前像素数据。
接下来,如块515所示,图形引擎基于当前像素数据生成主像素颜色。在一个实施例中,图形引擎基于初级像素颜色生成主像素颜色。接下来,如块520所示,图形引擎基于当前像素数据生成主光线。对了清楚说明,在所示实施例中,图形引擎每像素生成一个主光线。在替代实施例中,在对每个主光线的如下所述的一个或多个步骤之后,图形引擎对每像素生成多个主光线。 接下来,如判定块525所示,图形引擎基于场景几何模型确定主光线是否与场景中的物体相交。如果在块525处主光线与场景中的物体相交,则处理沿着"是"分支继续到块530。 接下来,如块530所示,图形引擎基于主光线和物体的相交,确定交点P。接下来,
如块535所示,图形引擎基于主光线和物体的相交,确定表面法矢量N。 接下来,如块540所示,图形引擎基于主光线和物体的相交,确定主命中颜色(hitcolor)。接下来,如块545所示,图形引擎基于主命中颜色,修改主像素颜色。处理继续到图6的标记"A"。 图6图示了使用环境遮挡的真实感成像的方法的一个实施例。具体地,图6图示了描绘由例如可以根据优选实施例实现的图1的系统100执行的逻辑操作步骤的高级流程图600。通常,除非另外指明,否则诸如图1的图形引擎102之类的图形引擎执行该方法的步骤。 处理从标记"A"继续到块605。如块605所示,图形引擎基于交点P和表面法矢量N,生成多个环境遮挡(A0)光线,每个AO光线具有光线方向。 接下来,如块610所示,图形引擎将A0光线分为分组。接下来,如判定块615所示,图形引擎确定是否存在要处理的任何AO光线/分组。在第一次运行时,将有至少一个A0光线要处理。如果在判定块615处存在要处理的A0光线/分组,则处理沿着"是"分支继续到块620。 接下来,如块620所示,图形引擎选择至少一个A0光线/分组之一作为当前AO光线/分组。接下来,如块625所示,图形引擎反转当前A0光线(或当前分组中的每个A0光线)的方向。接下来,如块630所示,图形引擎沿着当前A0光线的原始方向,改变源自交点P的AO光线,将起点0设为已知为场景边界外部的点。 接下来,如块635所示,图形引擎设置最大AO光线穿行。在一个实施例中,最大光线穿行代表起点0和交点P之间的场景内距离。在替代实施例中,最大光线穿行代表HAS中场景边界和交点P之间的节点数。 接下来,如块640所示,图形引擎沿着AO光线的方向使当前AO光线从其起点0向HAS的第一节点前进。接下来,如判定块645所示,图形引擎确定A0光线是否命中(hit)场景中的物体。如果在判定块645处图形引擎确定A0光线已经碰到场景中的物体,则处理沿着"是"分支继续到块650。如块650所示,图形引擎排除该AO光线,并且处理返回到标记"B",即判定块615,其中图形引擎确定是否存在任何另外的AO光线/分组要处理。
如果在判定块645处图形引擎确定A0光线没有碰到场景中的物体(在当前节点),则处理沿着"否"分支继续到判定块655。如判定块655所示,图形引擎确定AO光线是否已经到达交点P。如果在判定块655处,AO光线已经到达交点P,则处理沿着"是"分支继续到块660。 在一个实施例中,在判定块655处,图形引擎还确定A0光线是否行进了其最大穿行距离,并且如果是这样,则认为AO光线已经到达了交点P。如块660所示,图形引擎包括AO光线,并且处理返回到标记"B",即判定块615,其中图形引擎确定是否存在任何另外的AO光线/分组要处理。 如果在判定块655处,A0光线还未到达交点P,则处理沿着"否"分支继续到块665。如块665所示,图形引擎选择下一 HAS节点作为当前HAS节点,并且处理返回块640,其中图形引擎使AO光线向当前HAS节点前进。 因此,如块640至665所示,图形引擎使每个AO光线从其起点朝向交点P前进到场景中。如果AO光线在去向交点的路上碰到物体,则图形引擎排除该AO光线并选择下一AO光线进行处理。如果AO光线在去向交点的路上未碰到物体,则图形引擎包括该AO光线并选择下一 AO光线进行处理。
如果在块615处没有更多的AO光线/分组(对于当前主光线交点),则处理沿着"否"分支继续到图7的标记"C"。 图7图示了使用环境遮挡的真实感成像的方法的一个实施例。具体地,图7图示了描绘由例如可以根据优选实施例实现的图1的系统100执行的逻辑操作步骤的高级流程图700。通常,除非另外指明,否则诸如图1的图形引擎102之类的图形引擎执行该方法的步骤。 处理从标记"C"继续到块705。如块705所示,图形引擎基于所包括的AO光线计算对于当前像素的AO覆盖度。在替代实施例中,图形引擎基于所包括的和所排除的AO光线两者计算对于当前像素的AO覆盖度。 接下来,如块710所示,图形引擎基于所计算的AO覆盖度修改主像素颜色。接下来,如判定块715所示,图形引擎确定是否存在另外的像素和/或像素数据要处理。如果在判定块1430处存在另外的像素要处理,则处理沿着"是"分支继续到标记"D",返回图5的块510,其中图形引擎选择下一像素数据作为当前像素数据,并且处理如上所述继续。
如果在块525处主光线不与场景中的物体相交,则处理沿着"否"分支继续到标记"E",其中处理继续到如上所述的判定块715。接下来,如块720所示,图形引擎存储具有多个像素数据的场景模型数据。接下来,如块725所示,显示子系统基于多个像素数据生成用于显示的图像。 因此,与其他方法和系统相比,所公开的实施例提供了许多优点。例如,即使在具有有限本地存储器的系统中,在此描述的图形引擎也可以提供改进的光线跟踪性能。所公开的实施例还改进了可升级(scalable)以满足期望的真实感质量和用于实施图形引擎的具体系统的需求的环境遮挡性能。 如上所述,可以实践在此所述的一个或多个实施例,或者另外在计算机系统中实现。通常,如在此使用的术语"计算机"是指任何自动计算机器。因而,术语"计算机"不仅包括诸如膝上型计算机、个人计算机、小型机和大型机之类的通用计算机,还包括诸如个人数字助理(PDA)、网络使能的手持设备、因特网或网络使能的移动电话之类的设备和其他合适的设备。图8是提供图示了可用来实践在此所述的一个或多个实施例的示例计算机系统的细节的框图。 具体地,图8图示了计算机系统800。计算机系统800包括计算机802。计算机802在其他方面是传统的计算机,并包括至少一个处理器810。处理器810在其他方面是传统的计算机处理器,并且可以包括单核、双核中央处理单元(PU)、协同PU、附连PU或其他合适的处理器。 处理器810耦接到系统总线812。总线812在其他方面是传统的系统总线。如所示,计算机802的各种组件耦接到总线812。例如,计算机802还包括存储器820,其通过总线812耦接到处理器810。存储器820在其他方面是传统的计算机主存储器,并且可以包括例如随机存取存储器(RAM)。通常,存储器820存储应用822、操作系统824和存取功能826。 通常,应用822在其他方面是传统的软件程序应用,并且可以包括任意数量的典型程序,以及并入了本发明的一个或多个实施例的计算机程序。操作系统824在其他方面是传统的操作系统,并且可包括例如Unix、 AIX、 Li皿x、 Microsoft Windows 、 MacOS 和其他合适的操作系统。存取功能826在其他方面是传统的存取功能,包括网络连接功能,并且可被包括在操作系统824中。 计算机802还包括存储器830。通常,存储器830在其他方面是用于存储数据的传统设备和/或多个设备。如所示,存储器830可包括硬盘832、闪存或其他易失性存储器834和/或光学存储设备836。本领域技术人员将理解,还可以采用其他存储介质。
1/0接口 840也耦接到总线812。 I/O接口 840在其他方面传统的接口 。如所示,1/0接口 840耦接到计算机802外部的设备。具体地,1/0接口 840耦接到用户输入设备842和显示设备844。输入设备842在其他方面是传统的输入设备,并且可以包括例如鼠标、键盘、数字键区、触摸敏感屏幕、麦克风、网络摄像机和其他合适的输入设备。显示设备844在其他方面是传统的显示装置,并且可以包括例如监视器、LCD显示器、GUI屏幕、文本屏幕、触摸敏感屏幕、Braille显示器和其他合适的显示设备。 网络适配器850也耦接到总线812。网络适配器850在其他方面是传统的网络适配器,并且可包括例如无线、以太网、LAN、 WAN或其他合适的适配器。如所示,网络适配器850可以将计算机802耦接到其他计算机和设备852。其他计算机和设备852在其他方面是在联网环境中典型采用的传统计算机和设备。本领域技术人员将理解,存在适合于计算机802和计算机系统800的许多其他联网配置。 附图中的流程图和框示了根据本发明各种实施例的系统、方法和计算机程序产品的可能的实现方式的体系结构、功能性和操作。为此,流程图或框图中的每个块可以代表模块、片段或部分代码,其包括用于实现指定逻辑功能的一个或多个可执行指令。还应注意,在一些替换实现方式中,块中注明的功能可不按照图中注明的顺序进行。例如,取决于所涉及的功能性,连续示出的两个块实际上可以基本同时执行,或者有时可按相反顺序执行块。还将注意,可以通过执行指定功能或动作的专用的基于硬件的系统或专用硬件和计算机指令的组合来实现框图和/或流程图示中的每个块以及框图和/或流程图示中的块的组合。 将理解,可以按期望地将上面公开的以及其他特征和功能的变化或者其替代物组合为许多其他不同的系统或应用。此外,本领域技术人员可以继续在其中进行各种目前不能预见或不可预期的替代、修改、变化或改进,它们也应被所附权利要求所包括。
权利要求
一种方法,包括接收场景模型数据,所述场景模型数据包括描述在场景中排列的物体的场景几何模型和多个像素数据;选择所述多个像素数据中的第一像素数据;基于所述第一像素数据生成主像素颜色;基于所述第一像素数据生成主光线;确定所述主光线是否与所述场景中的物体相交;如果所述主光线与所述场景中的物体相交,则确定交点P;基于相交的物体和交点P,确定表面法矢量N;基于交点P确定主命中颜色;基于所述主命中颜色修改主像素颜色;基于交点P和表面法矢量N,确定多个环境遮挡AO光线,每个AO光线具有方向D;对于每个AO光线,反转AO光线方向D,并将AO光线起点O设置为场景外的点;使每个AO光线从AO光线起点向着交点P行进到场景中;如果AO光线在到达点P之前与物体相交,则从环境遮挡计算中排除该AO光线;如果AO光线在到达点P之前不与物体相交,则在环境遮挡计算中包括该AO光线;基于所包括的AO光线,估计环境遮挡;基于环境遮挡和主命中颜色,遮暗所述主像素颜色;以及基于像素数据的主像素颜色生成图像。
2. 如权利要求1所述的方法,还包括对于每个AO光线设置最大穿行距离。
3. 如权利要求2所述的方法,其中所述穿行距离是AO光线起点和点P之间的距离。
4. 如权利要求1所述的方法,还包括将所述场景几何模型组织为包括多个节点的分 级加速结构HAS。
5. 如权利要求4所述的方法,其中所述HAS是kd树。
6. 如权利要求4所述的方法,其中所述HAS是包围空间层级。
7. 如权利要求4所述的方法,其中使每个A0光线行进包括逐节点穿过HAS。
8 如权利要求1所述的方法,还包括将AO光线分为分组。
9 . 一种用于生成图像的计算机系统,包括用于实现权利要求1-8的任一方法的部件。
10. —种系统,包括 图像显示器,耦接到显示子系统; 处理器,耦接到所述显示子系统,并被配置为接收场景模型数据,所述场景模型数据包括描述在场景中排列的物体的场景几何模型 和多个像素数据;选择所述多个像素数据中的第一像素数据; 基于所述第一像素数据生成主像素颜色; 基于所述第一像素数据生成主光线; 确定所述主光线是否与所述场景中的物体相交; 如果所述主光线与所述场景中的物体相交,则确定交点P ; 基于相交的物体和交点P,确定表面法矢量N ;基于交点P确定主命中颜色; 基于所述主命中颜色修改主像素颜色;基于交点P和表面法矢量N,确定多个环境遮挡AO光线,每个AO光线具有方向D ; 对于每个AO光线,反转AO光线方向D,并将AO光线起点0设置为场景外的点; 使每个AO光线从AO光线起点向着交点P行进到场景中;如果AO光线在到达点P之前与物体相交,则从环境遮挡计算中排除该AO光线; 如果AO光线在到达点P之前不与物体相交,则在环境遮挡计算中包括该AO光线; 基于所包括的AO光线,估计环境遮挡; 基于环境遮挡和主命中颜色,遮暗所述主像素颜色;以及 基于像素数据的主像素颜色,生成图像。
11. 如权利要求IO所述的系统,其中所述处理器还被配置为对于每个AO光线设置最大 穿行距离。
12. 如权利要求IO所述的系统,其中所述处理器还被配置为将所述场景几何模型组织 为包括多个节点的分级加速结构HAS。
13. 如权利要求12所述的系统,其中使每个AO光线行进包括逐节点穿过HAS。
全文摘要
接收场景模型数据,该场景模型数据包括描述在场景中排列的物体的场景几何模型和多个像素数据。选择多个像素数据中的第一像素数据。基于第一像素数据生成主像素颜色和主光线。如果主光线与场景中的物体相交,则确定交点P。基于相交的物体和交点P,确定表面法矢量N。基于交点P确定主命中颜色。基于主命中颜色修改主像素颜色。基于交点P和表面法矢量N,产生多个环境遮挡(AO)光线,每个AO光线具有方向D。对于每个AO光线,反转AO光线方向D,并将AO光线起点O设置为场景外的点。使每个AO光线从AO光线起点向着交点P行进到场景中。如果AO光线在到达点P之前与物体相交,则从环境遮挡计算中排除该AO光线。如果AO光线在到达点P之前不与物体相交,则在环境遮挡计算中包括该光线。基于所包括的AO光线,估计环境遮挡。基于环境遮挡和主命中颜色,遮暗主像素颜色,并且基于像素数据的主像素颜色,生成图像。
文档编号G06T15/06GK101751690SQ20091022206
公开日2010年6月23日 申请日期2009年11月13日 优先权日2008年12月5日
发明者乔奎因·马德鲁加, 巴里·L·迈纳, 马克·R·纳特 申请人:国际商业机器公司