能量传播模化装置的制作方法

文档序号:6419266阅读:111来源:国知局
专利名称:能量传播模化装置的制作方法
技术领域
本发明涉及用于模化能量传播的装置。特别地,本发明涉及可以用光线路径表示的传播的模化,以及能量沿光线路径通过、同时与模化场景中的物体交互的方式。本发明例如应用在场景中光的模化中,以提供用于产生球面显示场景的近照相现实图象的功能或提供在场景内的光或其他能量分布的测量。
在许多计算机游戏中,动态成象是实际重要的,因此动态图象的实时产生有损于照相现实。另一方面,许多应用、例如建筑设计不需要对图象进行实质的实时动态改变,而照相现实则是实际重要的。
然而,即使在照相现实模型中,用户也最好可以以有限的重新计算来改变计算机模化场景的视点。已知的一种用于在没有显著的重新计算的情况下实现这一点的理想技术是“视图无关”技术。在这种情况下的视图无关的意思是,与场景有关的数据不需要在场景的视点变化时进行新的光计算。
为了以照相现实方式来模化一个场景,必须对入射在场景中的物体上的光的真实反射和传输特性进行近似。特别地,光的反射和传输必须被模化,以便近似在实际生活中光的行为。这样,模化场景的观察器将得到关于场景中物体的性质和外观的正确的结论。
在过去已经用几种技术对场景中的光进行了模化,大多数技术可以被分为“光线跟踪”技术或“辐射通量密度”技术。
在1980年6月出版的COMM.AMC 23(6),343-349的T.Whitted的"阴影显示的改进照明模型"中详细描述了光线跟踪。光线跟踪假设观察器正在查看一个通过针孔照相机放映到一个图象平面上的图象。图象是由点光源照亮的场景。为了容易计算,将发射光所通过的介质通常假设为是不参与的,但光衰减作用可以如同Foley,van Dam,Feiner,Hughes在“计算机图形、原理和实践”第2版第727和728页中所述的那样来模化。
光线从针孔或投影中心(COP)通过图象平面并进入场景来跟踪,利用镜面反射原理(反射角等于入射角,入射线和反射线在同一平面)从物体到物体反弹,直到光线退出场景或确定进一步的反射对要在计算机屏幕上显示的图象将几乎没有贡献,因为进一步的反射线的强度是可忽略的。实际上,当考虑一个包括透明或半透明物体的场景时,利用公知的物理原理将光的传输认为是与反射的方式相同。
光线跟踪是完全依赖于视图的。这意味着,如果选择不同的视点,则从场景向视点的光传输必须完全重新计算。此外,它不适合于对漫反射进行模化,在漫反射中,一特定入射线将产生多个反射线方向,并且一特定反射线可以是多个入射线的结果。因此,不可能采用光线跟踪来实际表示漫反射。
辐射通量密度技术在C M Goral等的在ComputerGraphics(SIGGRAPH 84)出版的第213-222页的论文“对散射表面之间的光的相互作用进行模化”中进行了讨论。然而,辐射通量密度不适合于考虑镜面反射。辐射通量密度被定义为光能量离开一个表面的速率。
几乎所有的辐射通量密度方法依赖于以多边形描述的要被模化的场景。每个多边形可以进一步再划分成小片。小片随后可以再划分成表面元素。随后考虑每个小片(或者可能是表面元素),并考虑小片的相对位置和角度方向,从所讨论的将光发送到该小片的多个小片的辐射通量密度来计算在该小片的辐射通量密度。应该理解的是,辐射通量密度技术不能用于点光源,因为光源必须能够用限定光源的几何形状的多边形来描述。
一旦已经计算出在每个小片的辐射通量密度,就可以采用Gouraud阴影法来产生一个光滑的图象。Gouraud阴影法在Foley第736和737页中进行了描述。由于考虑的是有限面积的小片而非表面上的点,所以辐射通量密度不会产生对镜面反射的精确考虑。然而,缺少镜面反射作用意味着通过辐射通量密度技术考虑的模型的照明与模型的视点位置无关。也就是说,在视点位置改变的情况下不需要重新计算整个图象。
其结果是,辐射通量密度模型适合于从一个动态视点实时地观察。这被称作“实时预排”。这非常适合于CAD应用、例如建筑模型,但缺少镜面反射会导致缺乏照相现实。应该理解的是,由于需要确定可视表面和运用内插阴影法,所以在视图的每次改变时都需要相当多的重新计算。
最后,一方面由Levoy和Hanrahan在Computer Graphics(SIGGRAPH),Annual Conference Series(1996)第31-42页中出版的论文中提出的、另一方面由Gortler等在Computer Graphics(SIGGRAPH),Annual Conference Series(1996)第43-52页中提出的绘制技术未落入光纤跟踪或辐射通量密度方法的范围内。
在这两个公开文本中,描述了一种实现“光场”或“光图”的系统。光场被构造为在两个平行平面之间构造的有序的多个光线。其他光场可以用构造平面的不同排列来构造。光线排列在平面的离散点之间,可以用它们在其间延伸的两个平面上的点来进行描述。通过考虑在两个平面上的每个点的场景的视图,可以将一个包括一个或多个物体的场景绘制成光场。这些视图可以由上述识别出的一种技术或通过导入在数字照相机上产生的场景的真实视图来构造。沿每条光线从一个构成光场的特定点传播的辐射可以从来自由该系统构造或导入的点的视图来识别。
一旦已经识别出与来自每一点的光线相联系的辐射,就可以通过考虑通过该点附近的光线的辐射并从获得的辐射值内插出图象来构造来自光场内的一点的场景的视图。
可以将真实物体的真实图象绘制成光场,以便也可以看见来自由照相机获得图象的位置之外的位置的图象。这些真实图象可以通过数字照相机来产生,从关于要被绘制成光场的场景的多个不同位置来摄取数字照片。
然而,上述光场技术的一个显著缺陷在于,不能从光场中的每一位置来构造视图。如果一个场景包括多个物体或至少一个具有至少一个凹面的物体,则可以在一个界定关于不包括凹面的场景的最小体积的表面与限定场景物体的实际表面之间限定一个体积。在这个体积内的几个光线由场景中的物体表面在其两端限制。因此,沿这些光线的辐射不能从两个构造平面上的点的真实图象的考虑来确定。其结果是,存在着阻止从体积内的所有视点的子集来构造图象的不连续性。
本发明的一个目的是提供一种用于模化能量传播、例如光通过一个场景的传播的替换技术。
本发明提供定义在要模化能量传播的环境内的离散路径、并沿着那些以路径指示环境内的物体的相互作用的路径来定位点的模拟设备。
本发明的一个方面提供了一种允许真实地表示镜面反射和漫反射的技术。一个场景以及场景内的光传播可以由本发明来表示,使得来自一特定视点的场景的图象可以以大致恒定的时间产生。该恒定时间不依赖于要表示的场景的复杂性,并且,在提供足够的计算机能力的情况下,能够做得相当小,以便可以表示视点的实时变化。
从下面参考附图进行的对依据本发明的最佳和特定实施例的设备和方法的描述,本发明的进一步的特征和优点将变得显而易见,其中

图1是依据本发明的一个特定实施例的图象处理设备的示意图;图2A是由图1的图象处理设备模化的场景的透视图,包括在第一视点遇到的光线方向的图示;图2B是图2A中所示场景的透视图,包括在第二视点遇到的光线方向的图示;图3A是依据本发明的一个特定实施例的并行子场的透视图;图3B是依据本发明的一个特定实施例的又一个并行子场的透视图;图3C是依据本发明的一个特定实施例的又一个并行子场的透视图;图4是依据本发明的特定实施例的在图2A和2B中显示的场景的透视图,包括在要被模化的场景内的选定平面和在该平面内的一选定射线的图示;图5是依据本发明的特定实施例的在图4中显示的构造平面的在垂直于构造平面的方向上的正视图;图6是显示在图4中所示的物体与光线的贯穿其长度的相交的示意图;图7是显示光线长度在图4中所示场景的侧壁之间的提取的示意图;图8是显示依据本发明的特定实施例的间隔数据的结构的示意图;图9是图8中所示的间隔数据的数据结构的示意图;图10是与图5中所示的类似的正视图,包括用于查看场景的虚拟眼睛的表示;图11是显示图1中所示的图象处理设备的结构的示意图;图12是显示图11中所示的LF计算单元的结构的示意图;图13是显示图11中所示的取景器的内部结构的示意图;图14是显示由使用中的图象处理设备执行的过程的流程图;图15至20是显示由图14中所示过程调用的子过程的流程图;图21是显示在使用中操作取景器的过程的流程图;图22是显示对图象处理设备操作以便从一个场景中删除一个物体的过程的流程图;图23是显示对图象处理设备操作以便增加一个物体到一个场景的过程的流程图;图24是光场中的一个物体的示意图,表明了在考虑漫反射时潜在的计算复杂性;图25是显示在图24中所示物体的表面的一部分的示意图,表明一种减少计算复杂性的方法的收集步骤;图26是显示在图25中所示物体表面的一部分的示意图,表明所述减少计算复杂性的方法的“射击”步骤;图27是图24中所示物体的视图,表明另一个在考虑漫反射时减少计算复杂性的方法;图28是依据本发明的特定实施例的用于定义虚拟现实中的环境的图象处理设备的示意图;图29是在图28中所示设备中使用的头部安装显示器的侧视图;以及图30是图29中所示头部安装显示器的显示设备的视图。
图1是依据本发明的一个实施例的图象处理设备的整体结构的方框图。在该设备中,提供了一个计算机2,计算机2包括与存储器6相连的中央处理单元(CPU)4,存储器6可用于存储定义CPU4的操作序列的程序以及存储由CPU4在计算中使用的物体和图象数据。
输入设备8与CPU4的输入端口(未显示)相连。输入设备8例如可以包括键盘和/或位置感测输入设备、例如鼠标、跟踪球或数字化图形输入板和输入笔等等。
帧缓冲器10也与CPU4相连,帧缓冲器10包括一个存储器(未显示),用于例如通过为图象的每个象素提供一个(或几个)存储单元来存储与至少一个图象有关的图象数据。存储在帧缓冲器10中的用于每个象素的值定义了图象中该象素的颜色或亮度。
在本发明的这个实施例中,将图象表示为象素的一个二维阵列,该二维阵列可以用迪卡尔坐标来方便地描述。给定象素的位置可以由一对x,y坐标来描述。帧缓冲器10具有足够的存储容量来存储至少一个图象。如果图象的分辨率是1000*1000象素,则帧缓冲器10应该包括106个象素单元,每个单元可以用象素坐标x,y直接或间接寻址。
视频显示单元(VDU)12与帧缓冲器10相连。VDU12可用于以常规方式显示存储在帧缓冲器10中的图象。
例如,如果VDU12以光栅扫描方式显示图象,则象素的x坐标映射到沿扫描显示行的距离,象素的y坐标映射到行数。
还与帧缓冲器10相连的是用于接收录像磁带15的磁带录像机(VTR)14。也可以提供其它图象记录设备、例如打印机、35mm胶片记录器或可记录光盘作为补充或替换。
诸如硬盘驱动器的大型存储设备16与存储器6相连。大型存储设备16具有高的数据存储容量,适合于存储不需要立即访问的数据。此外,可用于接受可移动数据存储介质、例如软盘20的磁盘驱动器18与存储器6相连。磁盘驱动器18可用于将存储在软盘20上的数据传送到存储器6。
该设备可以通过在存储介质、例如软盘20上引入的程序指令来编程。或者,可以提供光盘阅读器来接收光盘、例如CD-ROM或DVD格式的光盘。此外,该设备可以包括调制解调器,以接收一个带有程序指令的信号。程序指令也可以通过在输入设备8上的键盘上打字来引入。
图2A显示了一个场景22,对于场景22,希望采用这里所述的本发明的实施例的设备来模化光传播。场景22包括一个由左、右侧壁24、26、后壁28和前壁30、地板32和天花板34围起来的房间。为了清晰起见,前壁30和天花板34在图2A中显示为透明的。墙壁、地板和天花板一起限定了一个房间,在这个实施例中,房间基本上是个立方体。
一个窗户36设置在左侧壁24上,一个长方形镜子38安装在后壁28上。一个落地式台灯40立在地板32上的由左侧壁24和后壁28限定的角落内。一个椅子42大致位于地板32的中间。椅子42在房间中的朝向使得其背部基本上与在房间的左后角和房间的右前角之间构造的线平行。
在图2A中,一只眼睛44位于场景22的前面的一个视点上。如同常规光学中所公知的,光进入眼睛44,并由眼睛44的各种元素所折射,以允许在视网膜上形成一个聚焦图象。
在场景22中,光线沿无数个方向传播。然而,只有那些进入眼睛44的瞳孔的光线才被观察者所感受到。例如,显示了一条从窗户36直接向眼睛44传播的光线46(理论上来自无限远的光源的发射光)。另一条光线48从灯40直接传播到眼睛44。
然而,相当大量的光将不会从光源直接到达眼睛44,而是会从场景22内的物体反射进来。例如,从灯40发出的光会射到左壁24、地板32和右壁26上,并向眼睛44反射。光线50a、50b、50c分别显示了这三种情况。应该理解,从灯发出的光也会从后壁28、前壁32和天花板34向眼睛反射,但为了清楚起见,从图2A中省略了对应于这些路径的光线。
此外,图2A中的光线52a、52b表示光从窗户36通过椅子42的背部的反射传播到眼睛44。光线54a、52b表示光从灯40通过椅子42的座位的反射传播到眼睛44。
墙壁、地板和天花板24-34和椅子42都具有漫反射表面。因此,入射在这些物体上的光线将以全向反射,与在入射点垂直的表面形成一个锐角。表示这些方向的单位向量定义了以入射点为中心、由在入射点与物体表面相切的平面限定的单位半径的半球体积。
其结果是,在一个带有漫反射表面的物体上反射的光的观察者将会看到所讨论的物体的表示。观察者将不会看到反射光的最终来源的清晰的反射图象。并且,在这些物体中的每一个上入射的一些光会因而被吸收。吸收率通常与频率有关,并且吸收与观察者对所讨论物体的颜色的解释相联系。
相反,图2A中所示的首先在椅子42的背部向镜子38漫反射的光线56则从镜子向眼睛44镜面反射。如同在上面的引言中所述的,镜面反射是根据理想反射定理作用的反射。通过观察其他同样从场景中的各个物体漫反射到镜子然后又传播到眼睛的光线,则在眼睛中形成场景的一个反射图象。
下面参考图2B,显示了同一场景22,而观察者的眼睛在一个新的位置。眼睛现在由标号44’来标示。上述场景22内的物体由于未改变,所以与前面具有相同的标号。然而,场景22现在是从一个不同的位置来观察的,因此不同的光线将进入眼睛44’。例如,光线58从窗户36直接传播至眼睛44’,光线60从灯40直接传播至眼睛44’。此外,光线62a、62b从灯40通过椅子42的漫反射传播进入眼睛44’。光线64从灯40通过后壁28的漫反射传播进入眼睛44’。来自灯40的光线66从镜子38镜面反射,进入眼睛44’。该光线66表示来自灯的从镜子38反射的光线,该光线将用于构造眼睛内灯的反射图象。
从上面对同一场景的两个视图的说明中,可以看出,为了从两个不同视图观察同一场景,一个人必须获得关于与两组不同光线相联系的光的辐射的信息。
在真实世界中,光的存在与观察者无关,光根据例如关于反射、折射和衍射的物理定理来运动。当在真实世界观察场景的一个视图时,这些进入观察者瞳孔的光线将被考虑,并聚焦以产生一个图象。本发明的最佳实施例的目的在于在不参考特定视点的情况下通过对一个场景内的光的完全模式进行模化来模拟这种情况。
这个目标在实际上是不能达到的,因为任何场景都包含无限多的潜在光传播方向。因此,这个实施例对包括有限多个光辐射的潜在载体的光场进行模化,在此后将该载体称为“光线”。
此后,通过考虑光场中光线与物体的交点,可以将物体绘制进光场。一旦已经将所有物体都绘制进光场,则光可以从指定为光发射者的物体沿光线传播,并且可以在光线与物体的交点计算其相互作用,例如反射、折射和衍射。
该实施例与Levoy和Hanrahan和Gortler等描述的技术显著不同,这些技术都针对的是从2D图象到场景的3D表示的构造。相反,这里所述的最佳实施例主要涉及光在光场中的行为,并仅仅在计算交点处的相互作用时才考虑被绘制进光场的物体的特性。
本发明中的2D图象序列不需要存储;在光场中的一特定视点的最终图象可以以简单的方式构造。
可以定义各种不同的光场,但一个最佳光场由多个平行的子场组成。每个平行子场包括一个长方体形状的光区域,在延伸出多个平行光线的两个相对边之间。这些平行光线以栅格排列,以允许对其进行直接引用。每个平行子场的中心被定义为其原点,并且将平行子场重叠,使其原点重合。平行子场彼此相关地面向不同的方向,以便构造一个包括通过一个区域并面向三维空间中的各个方向的光线分支的光场。
下面参考图3A,一个平行子场70包括一个由下式定义的x,y,z迪卡尔空间的立方体体积-1≤x≤1-1≤y≤1-1≤z≤1在x,y平面上加有一个长方形栅格,包括n个在x和y方向上都具有相同宽度的子分区。每个子分区在x和y方向上的宽度都是2/n。n的值通过参考在该设备中产生的可接受的最终图象的分辨率级以及设备、特别是其大型存储器16的数据存储量来定义。在这个实施例中,将n设置为200。
将离散坐标(i,j)指定给这些子分区的中心,在平行子场70内的x,y平面上加上一个离散坐标栅格。这个栅格由坐标(i,j)来指示。因此,对应于(i,j)的x,y平面上的真实坐标是(xi,yi)=(2i+1n-1,2j+1n-1);i=0,1,...n-1;j=0,1,...n-1]]>每个栅格索引具有与其相联系的与z轴平行并横跨立方体体积的光线72。因此,有nxn个用坐标(i,j)定义的光线,每个坐标的范围是从0到n-1。
这样,定义了一个在垂直方向包含多个光线72的平行子场70,该平行子场70可以用于对沿该组光线中的每条光线的任一方向传播的先进行模化。
参考图3B,显示了前述的立方体体积70关于y轴从垂直方向旋转角度φ。关于z轴未进行旋转。这样,nxn光线阵列72中的每个光线都与垂直成φ的角。并且,每个光线位于与x,z平面平行的平面内。
图3C显示了包含进一步关于z轴旋转了角度θ的光线阵列的立方体体积。这样,nxn阵列中的每个光线都与垂直成φ的角,当分解到x,y平面时,是相对于x轴的角度θ。
可以用下列范围来描述所有可能的方向φ=0;θ无关0<φ<π/2;0≤θ<2πφ=π/2;0≤θ<π应该注意的是,在φ=0,光线72的方向与θ的值无关,而在φ=π/2,θ只需要穿过一半的旋转来覆盖所有可能的方向。
为了在计算机上实现该结构,θ和φ必须被离散化。下面将说明将φ和θ离散化的两种替换方法。
在第一种方法中,R是2π的子分区的预定数目,表示该设备要采用的分辨率级。在这个实施例中,将R设置为使得不同方向的总数大约为6000。然后,定义对应于连续变量θ、φ的离散变量u,vθ=u2πR,u=0,1,...R-1]]>φ=v2πR,v=0,1,..R4]]>因此,通过将这些等式替换到φ和θ的范围定义中,并用u,v作为其主题,则u和v的值的范围可以表示如下v=0;u无关v=1,2...(R/4)-1;u=0,1…R-1v=R/4;u=0,1,…(R/2)-1由于上述公式用到了R/4,因为u和v是整数,所以R必须是4的整数倍。
然而,如果无论φ的值如何都采用相同的分辨率来划分θ的范围,则对于值接近0的φ,由上述方案产生的光线的距离非常近。相反,当φ接近π/2时,所产生的光线分得相对较开。能够在由变量φ
和θ
定义的半球内产生一组光线是非常有利的,其中光线的方向是均匀间隔的。
依据本发明的一个特定实施例,将θ和φ离散化的第二种方法产生了光线方向的改进间隔。在该第二种方法中,可以根据下式定义所假设的θ和φ的离散值φ=0,θ=无关以及φ=(π/2R)u;u=1,2,…,Rθ=(2π/3u)v;v=1,2,…,3u-1其中R=2m-1这个采样方案由参数m控制。φ和θ的分辨率随着m的值增大。φ在范围
上被均匀地离散。θ在范围
上被细分到一个程度,该程度是依赖于u的值的变量,因此也依赖于φ的值。如果φ较小,则θ的子分区的数目也较小。如果φ较大,则θ的子分区的数目也较大。
例如,如果m=5,则R=31。因此,在φ的范围内将有32个子分区。在φ范围的较低端,例如,如果u=2,则v在0和5之间变化。因此,将有6个θ的子分区。
因此,在u范围的较高端,例如,当u=30时,则v取范围0到89之间的值。因此,如果u=30,在θ的范围内将有90个子分区。
这个采用方案产生了提供到光线的均匀分布的近似的θ和φ的子分区。
通过在上述范围上定义光线,一个完全光场由坐标系统(i,j,u,v)表示。这可以作为4D阵列存储在计算机存储器6中,由坐标i,j,u和v索引。为了存储器的效率,这个4D阵列可以进一步以拉平形式表示为1D阵列,根据坐标i,j,u和v的范围来排列。
一个场景能够在由光线阵列构造的光场内定义。将场景例如限定到一个由下列范围定义的单位立方体空间将是非常方便的-0.5≤x≤0.5-0.5≤y≤0.5-0.5≤z≤0.5这确保平行子场70的立方体体积的任何方向都完全包围该场景。
这意味着,场景的每一部分都由任何特定方向中的光线所覆盖。事实上,由于子场70的立方体体积最小维数为2,即其边的维数,所以最长维数不大于2的任何场景都可以在立方体体积70内容纳。然而,在光场的最边缘,光线数目和光线方向相对于光场的中心区域的密度可能被限制,因此最好将场景尺寸限制为小于光场的理论最大尺寸。
假设图2A中的真实光线48与光场中的一条光线相匹配,将它用起始点(x1,y1,z1)和方向(dx,dy,dz)来表示。dx,dy,dz表示在光线方向上移动较小距离的一个点的坐标的较小变化。这表示光线的方向。
然后用三角法在方向(dx,dy,dz)上得到(θ,φ)或(u,v)。通过运用对应于识别出的θ和φ的值的旋转矩阵,对光线进行旋转,使它变成垂直的(与z轴平行)。然后,从这个变换的光线与x,y平面的交点以及前面规定的用x,y表示的i,j的定义来得到(i,j)坐标。
在真实光线48不与光场的光线72相匹配的情况下,需要找到在光场内与真实光线最近似的光线。应该理解,对于任何可接受的误差测量以及对于任何可接受的误差界限,可以选择离散变量m和n的值。
首先,一旦已经将真实光线方向变换成方向坐标(θ,φ)或(u,v),就将方向坐标“四舍五入”到最近的提供值。在(u,v)的情况下,这将是最接近的整数。其次,一旦旋转回垂直方向的真实光线与x,y平面的实际交点已经找到,则可以将交点的坐标“四舍五入”到(x,y)或(i,j)的最接近的提供值。在(i,j)的情况下,这将是最接近的整数。最好首先使方向适合,因为由方向近似所引入的误差对场景中的光的最后传播将产生更大的影响。
反过来,一给定坐标(i,j,u,v)定义了可以在场景内的光线72。u和v用来计算该光线72的(θ,φ)。因此,(xi,yj,-1)Ry(φ)Rz(θ)和(xj,yi,+1)Ry(φ)Rz(θ)给出了光线在实际坐标中的终点,其中Ry和Rz是分别绕y和z轴的标准三维旋转矩阵。这对于识别位于场景内的光线上的点的位置是有用的。
图4中又显示了图2A和2B的场景22。该场景内的特定平面74由虚线定义;平面74的位置由沿左侧壁24从墙顶大约1/3墙高度的水平线和沿右侧壁26大约在右侧壁26墙角的水平线定义。平面74与灯40和椅子42的背部相交。所选择平面74包含大量的光线,这依赖于对φ和θ进行离散的分辨率。然而,图5显示了在三个不同方向上对这些光线72的选择。为了清楚起见,省略了所有其他光线。显示了场景中与平面74相交的部分,并图示出窗户36、镜子38、灯40和椅子42的背部。
显示了一个特定光线86,光线86沿平面通过灯40和椅子42的背部。这在图6中进行了更详细的显示。光线在变换回垂直方向时,从z=-1延伸到z=+1,并与各个物体相交,即在适当的位置置于其上的左侧壁24、灯40、椅子42的背部和右侧壁26。可以通过参考z轴来为沿光线的所有点分配一个位置。
图7显示了光线86在侧壁24、26之间的分段,该分段由于是场景22的一部分,所以是光线的最感兴趣的一部分。
为了将场景中的物体绘制到光场中,首先必须计算通过一个物体的一条光线。然后,当计算出这样一条光线86时,必须由位置识别出该光线与物体的所有交点。位置被表示为下列参数等式中的值tp(t)=p+t(q-p),0≤t≤1其中,p和q对应于光线86与场景的界限、即侧壁24、26的交点。因此,在找到交点后,光线86具有一个相关的交点集
,其中,t1是对应于与物体的交点的位置的参数值。每个交点的真实坐标位置可以从p(ti)得到。
为了说明光线的交点,将交点以一个间隔序列排列。将整个光场的所有光线的间隔序列排列在由参数(i,j,u,v)索引的四维阵列中。在找到交点并在其中排列之外,每个间隔序列最初设置为空。一个初始间隔列表表示间隔
,即场景边界内的光线的全长。
间隔序列中的每一项不仅包括t值,还包括关于交点特性的数据。所有数据都以下面称为T-交点的结构来收集,T-交点结构具有用于t-值、自交点的潜在辐射的方向、辐射r以及未射中辐射u的字段。
未射中辐射是为物体存储在T-交点的、在处理光场中的光传播期间使用的数值。它表示已经由物体交点接收到的、并且要由进一步的处理步骤在适当时候处理、根据在该交点的适当物理行为传播的光的数量。在全部处理的光场中,等待观察的未射中辐射在所有交点为零。
辐射r和未射中辐射u一般是矢量,表示红、绿和蓝光(RGB)的能量级,从而可以表示有色光。这些矢量最初被设置为零矢量。应该理解,除RGB之外的其他表示有色光的方式也是可以的。
将方向设置为“右”或“左”。“右”方向对应于在将光线变换回垂直时沿光线从z<0到z>0的方向;“左”则处于相反方向。
如果将系统安排为考虑需要描述的在系统内的光的颜色、极化或其他特征,则辐射r和未射中辐射u是矢量。图8中显示了T-交点的结构。有利地,T-交点包括一个用于在与物体的交点的“法向矢量”的字段,但由于法向矢量总是可以参考交点和定义物体的数据来计算,所以这并不是必需的。
T-交点应该放在允许容易实现和相对恒定的查找时间的数据结构中。
在这个实施例中,采用一个标准递归二进制树,在下面将其称为间隔树。在图9中显示了对应于图7所示光线86的间隔树。
在一般情况下,间隔树的每个节点对应于一个T-交点,并进一步包括两个子节点,称为左树和右树。左树和右树也是间隔树。这个结构允许左树和右树具有子节点,依此类推。在将一个物体绘制到光场中、并用所考虑的光线找到第一交点时,将该交点装入该光线的以前为空的间隔树中。间隔树现在包括一个节点,两个子节点是空的。当第二个T-交点被装入间隔树时,将在该第二个T-交点中包含的t值与在第一个节点的T-交点中包含的t值进行比较。如果第二个T-交点的t值低于第一个T-交点的t值,则将第二个T-交点放在第一个节点的左树子节点中。否则,将第二个T-交点放在第一个节点的右树子节点中。这样,构造了一个根据t值进行分类的间隔树,可以容易地使用二进制树来以t值搜索T-交点。
可以以相同的方式添加第三个交点-如果子节点是满的,则与该子节点的内容的t值进行比较。过程向树的分支进行下去,直到找到一个在适当位置的空的子节点。
在图7所示的例子中,将光线86用参数表示,使得在左壁24时t=0,在右壁26时t=1。沿光线86的T-交点由下标识别,其中T1到T4表示与椅子42的交点,T5到T6表示与灯40的交点。T7和T8表示与侧壁24、26的交点。因此,T-交点具有如下属性T1=(0.50,42,左,0,0)T2=(0.52,42,右,0,0)
T3=(0.70,42,左,0,0)T4=(0.72,42,右,0,0)T5=(0.07,40,左,0,0)T6=(0.15,40,右,0,0)T7=(0.00,24,右,0,0)T8=(1.00,26,左,0,0)如果以该顺序找到这些T-交点,并载入一个二进制树,则该二进制树将采取图9中所示形式。
一旦将T-交点载入二进制树,则查找时间依赖于T-交点数目的对数。这是一种有利的排列,因为当装载到其上的交点数目增加时,间隔树中的查找时间不会显著增加。此外,如同从后面的描述中将变得显而易见的是,时常需要找到在一给定方向与一给定T-交点相邻的T-交点。采用二进制树以其常规方式来找到该T-交点是相对直接的。
一旦已经找到与物体相交的所有光线,并且所有交点都已经装载到相关二进制树上,则场景的光场的绘制被认为是完全的。
因此,必须通过考虑在光场内发射光的任何物体来将辐射添加到光场中。在本实施例中,窗户36和灯40被认为是发光体。
考虑灯40,计算与灯相交的所有那些光线。当计算光线86时,将光线上的一个T-交点T5识别为与灯40相交。将依据灯40的发光特性的辐射添加到数据结构中,并且将等于辐射的变化的未射中辐射也添加到其上。然后找到T-交点T6并以同样的方式处理,此后,以同样方式处理与标准灯40相交的所有光线。
此外,虽然在图5中未显示,但对于发射光经由的、或更准确地说是传送光所通过的与窗户36相交的光线以相同的方式进行处理。为了简明起见,考虑将窗户作为带有发光特性的物体比将太阳绘制进场景更为直接。然而,如果需要的话,发光物体可以放置在窗户的另一侧,以提高真实性。该实施例可以包含透明物体,例如窗户玻璃。
显然,如果希望表示在窗户的另一侧的又一些物体,那些物体同样必须绘制进光场。这可能需要对场景进行一些比例换算,以确保整个场景被包括在内。
一旦所有的光发射都被添加到光场中,就认为每个物体都确立了它是否与带有未射中辐射的光线相交。在图5和7所示的例子中,椅子42的背部沿线段(T6,T1)接收到未射中辐射。在该点,将未射中辐射认为是从椅子上的该点发射的光,并且它沿从光线86上的交点T1上或其附近发出的所有光线通过漫反射而发送。
如同真实光线不太可能与光场中的光线精确匹配的情况一样,不太可能在交点T1出现与其他光线的精确重合,因此需要近似。事实上,当识别一个用于进一步传播的方向时,检测最接近的光线,并将漫反射辐射和未射中辐射加到每个这样的光线。这些漫反射在图5中由箭头88、90、92、94来识别。此外,一些辐射会反射回朝向灯40的光线86上。尽管光线88、90不与所示的光线组重合,但还是显示出来;它们中的每一条都与另一条未显示的但在所示平面74中包含的光场中的光线组内的光线重合。其他漫反射光线也被平面74中未包含的其他方向被识别。
一旦以这种方式处理了入射在椅子42上的所有未射中辐射,就考虑下一个将要接收未射中辐射的物体。例如,作为沿光线92的来自椅子的反射光的结果,镜子38现在接收未射中辐射,然而在这种情况下镜子是一个镜面反射体,因此只有一个真实的反射光线存在。在图5中将这个真实反射光线显示为由标号96表示的虚线。在例示实施例中,光场中没有光线与真实光线96精确重合。因此,识别出在与真实光线96的方向最接近的方向上的平行子场70,并识别出与真实光线96最近的平行子场70中的光线98。然后,沿最佳适合反射光线98反射沿光线92的未射中辐射。因此,通过对所有接收到未射中辐射的物体进行循环,可以根据场景中光的分布添加在T-交点的辐射。事实上,按照由每个物体接收的未射中辐射量的降序,依次考虑被标记为接收到未射中辐射的物体。这样,对场景的照明具有最大作用的物体首先被处理。上述技术是在不考虑在该点的任何选定观察位置的情况下实现的。
上面已经相对于对光进行镜面反射或漫反射或其结合的实心物体描述了如图5到9所示的例子。然而,可以以相同的方式对待至少部分透明的物体。下面将就物体对入射到其上的光的作用来描述带有透射特性的物体。通过例如考虑物体的折射特性来识别光从物体的退出点及其真实方向,可以计算沿与一个物体的镜面透射表面相交的光线传送的辐射。然后可以找到与这个真实方向最接近的虚拟光场射线,然后可以沿这个最接近的光线传播。
可以以相同的方式计算光在一个漫透射物体上的入射,但要考虑到辐射需要沿多个光线传播的事实。
图10中显示了一只虚拟眼睛44。虚拟眼睛44包括一个瞳孔76、一个晶状体78、一个焦平面80、一个图象平面82和一个光轴84。为了从这一点观察该场景,将所有被识别出进入瞳孔76的光线认为是已经进入虚拟眼睛44。识别每个光线的方向及其相对于光轴84的位置,并将一个定义晶状体78的结构和位置的透镜方程式运用到其上。透镜方程式是一个从入射光线的给定轨迹识别折射光线的轨迹的矢量方程式。
此后,将在沿光线的该点与该光线相联系的辐射记录在一个与象素或子象素相联系的阵列中,以便建立一个图象。可以将平滑函数运用到图象上,以便可以填充其未根据进入瞳孔76的光线数完全构造的任何部分。应该理解的是,建立一个图象的步骤的实现与在其中绘制物体和发光体的光场特性的计算无关,因此光场的使用与视图完全无关。
下面将参考图11、12和13更详细地描述本发明的特定实施例的设备。
图11是显示图1中所示计算机2的操作模块的基本方框图。
用户接口100包括一个用于用户与该设备交互的装置。通过用户接口100,用户可以识别要放置在场景中的物体及其特征、例如光发射、吸收、颜色和/或位置等等。与用户接口100相连的是一个光场(LF)计算单元102。
LF计算单元102可用于用上面定义的四维坐标系统来定义一个光场,以便将物体绘制进光场中的一个场景中,并激活光发射,使得辐射在光场中分布。
一个取景器单元104与LF计算单元102相连,以便从其获得关于光场的沿光线72的辐射值的数据取景器单元104可用于将这些辐射值变换成一个聚焦图象,并将该聚焦图象处理成一个可以被观察的形式。如同参考图1所述的,取景器单元104与VDU 12相连接。
图12包括显示LF计算单元102的部件的方框图。LF计算单元102包括一个不能由用户的行为修改的预定光场106。
在一个替换实施例中,光场106的分辨率可以由用户修改。这一点可以被实现以便根据用户需求选择高速、或高质量成象。
通过参考图11所描述的用户接口100,用户定义或调用一个预定场景定义文件108。该场景定义文件108包含关于要被放置在光场106中的物体的性质的信息。这些物体定义被放在一个物体文件110中。物体定义信息包括表面反射特性、光发射特性、任何光传输特性以及任何表面模式。它还包括场景中物体的几何形状和位置的描述。
LF计算单元102进一步包括一个交点数据计算单元112,该单元112对于预定光场106依次考虑来自物体文件110的每个物体,以便建立沿光场的每个相交光线的交点的位置。交点数据计算单元112可用于为预定光场106中的所有光线产生一个交点数据表114。
LF计算单元102还包括一个光计算单元116,光计算单元116参考物体文件110来识别发光物体,以及参考预定光场106和交点数据表114来绘制光场中的光。如上所述,通过更新交点数据表114中的数据,在光场中绘制光。
图13更详细地显示了取景器单元104的部件。取景器单元104包括预定取景器118的定义(例如,人眼,常规照相机镜头,广角镜头,宽角窗口,变焦等等),可以通过用户接口100由用户选择和/或修改。用户接口100还提供了用于指定要在光场中使用的取景器镜头的位置和朝向的机构。这个机构是一个命令行接口,在此,取景器的坐标和观察方向由用户指定。可以提供替换结构,例如通过指点设备(例如,鼠标,跟踪球)或其他定向设备(例如,条形码读入器)。
取景器单元104进一步包括一个参考所选择取景器镜头和LF计算102的交点数据表114的观察图象计算单元120。观察图象计算单元120可用于根据一个描述所选择镜头的特征的透镜方程式来产生一个图象。应该理解,一个选定取景器118包括一系列透镜,这些透镜的组合提供了所希望的光学效果。
此外,取景器可以包括一个能够提供表示在一个点或一个表面上接收的光的数据的光度计。这在考虑光分布很重要的建筑和舞台设计中特别有用。
将对应于该图象的数据传送到一个数据变换部件122,例如用于将数据变换成栅扫描数据,以供VDU使用。直至该点,可以定义图象的分辨率级,以适合光场的分辨率,并且只需要在最后一个阶段变换成一个全象素表示的图象。然后将变换的图象输出到VDU12。
可以定义多个取景器118,或者用于向不同的VDU提供不同的图象,或者,在提供两个取景器的情况下,向用在虚拟现实应用中的头戴式设备中的屏幕提供立体图象。
图14到20描述了由LF计算单元102在其操作期间执行的过程。图14描述了LF计算单元102的主过程。
在该过程的开始,在步骤S1-2中由“建立LF”过程来建立LF,这在后面将说明。LF被建立后,在步骤S1-4中由后面将说明的“将物体绘制进LF”过程将物体绘制进LF。
在已经将所有物体都绘制进LF之后,在步骤S1-6通过后面将说明的“激活LF中的发光体”过程来激活那些是发光体的物体。然后,在步骤S1-8,在已经激活了发光体之后,通过后面将说明的“计算LF中的反射”过程来发出通过LF的辐射。在已经完成该过程之后,就已经用在其中绘制的物体和激活的光发射完全建立了LF。下面将参考图15描述“建立LF”过程。首先,在步骤S3-2,将一个平行子场70定义为nxn个平行光线的栅格。将光线在x,y,z空间内平行于z轴排列,并且子场由下列约束条件界定-1≤x≤1-1≤y≤1-1≤z≤1在这个步骤之后,在步骤S3-4中,通过一预定数目的方向φ和θ来对子场循环,其中,φ是光线与z轴的角度,θ是在分解到x,y平面的光线与x轴之间限定的角度。为了覆盖光线所有可能的方向,φ和θ必须通过下列范围φ=00<φ<π/2;0≤θ<2πφ=π/2;0≤θ<π根据上面标识出的第二个方法来对φ,θ进行离散化,以便产生光线方向的近似均匀分布。在步骤S3-6,产生与预先旋转的z轴平行的一组光线。如同上面参考图9所说明的,将这些光线查找成间隔树的一个四维阵列。步骤S3-8询问是否需要考虑φ,θ的任何进一步的组合。如果是,步骤S3-10选择下一个组合,循环重新开始。如果不是,例程返回。
下面参考图16说明“将物体绘制进LF”过程。该过程开始于在步骤S5-2询问是否要将物体绘制进LF。这是通过调用“物体”文件110实现的。如果没有要绘制进LF的物体,则过程返回主过程。否则,在步骤S5-4,调用“物体”文件110来获得定义该物体的参数。这些参数包括用其几何形状表示的形状定义以及物体的表面特性。这些表面特性包括光吸收特性以及表面的双向反射分布函数(BRDF)。物体参数还包括物体的任何发光特性的细节。然而,在这里,只考虑物体的几何形状。
在获得定义物体的参数之后,过程在步骤S5-6定义一个子过程,即“获得光线与物体的交点的细节”210。当该子过程完成时,过程返回步骤S5-2,重复询问是否还有物体要被绘制进LF。如果再没有物体需要绘制进LF,则过程返回,否则过程根据需要选择下一个物体并重复。
下面将参考图20描述“获得光线与物体的交点的细节”过程。首先,在步骤S13-2,过程询问是否还要考虑与物体相交的任何光线。如果没有更多的光线还要考虑,则过程返回上述的“将物体绘制进LF”过程。否则,在步骤S13-4,考虑一个相交的光线,并且,在步骤S13-6,将该光线与物体的交点连续装载在用于该光线的二进制树上。该交点数据包括交点在光线上的位置、相交物体的身份以及出自交点的辐射的潜在方向。这些数据是通过其坐标(x,y,φ,θ)从为光线识别出的参数方程式确定出的。此外,交点数据包括初始设置为0的辐射和未射中辐射值。然后,在步骤S13-8,过程询问是否还要考虑其他任何光线。如果没有更多的光线还要考虑,则过程返回前面所述的“将物体绘制进LF”过程。否则,过程循环回步骤S13-4。
一旦已经将所有物体都绘制进LF,则调用“激活LF中的光图象”过程。下面参考图17更详细地描述该过程。该过程开始于在步骤S7-2考虑物体的发光特性。然后,在步骤S7-4调用一个子过程“找到与物体相交的光线及其交点”212。后面将描述这个过程。
一旦已经识别出与物体相交的光线及其交点,则在步骤S7-6,定义一个间隔,该间隔由该交点和在预测辐射方向(即,“右”或“左”)上从该物体沿该光线的下一个交点界定,其中预测辐射方向是在与交点相联系的数据中定义的。然后,在步骤S7-8,将该间隔中的辐射设置在与所考虑的交点相联系的数据结构中。该辐射的设置与物体的发光特性成比例,该发光特性是从在物体文件110中所保存的定义“物体”的参数中调出的。
在步骤S7-10,询问在该间隔中的辐射是否大于一预定阈值。该阈值是参考用于表示辐射的换算比例以及在想要光场表示的应用中光的可见性的阈值来设置的。对于一个用图形表示的图象,将这个可见性阈值确定为人眼的灵敏度,而对于一个光度计应用,则确定为光度计的最小灵敏度。
如果辐射大于预定阈值,则过程推断出,计算从该辐射的任何反射都是值得的。因此,在步骤S7-12,将所讨论的交点数据中的未射中辐射设置为对应于辐射中的变化。在步骤S7-14中识别出在该间隔的另一端的物体,并在步骤S7-16中将该物体标记为接收到未射中辐射。
如果该间隔中的辐射小于阈值,则不设置未射中辐射,并且不需要识别和标记在间隔另一端的物体。然后,在步骤S7-18和S7-20考虑该光线与所讨论物体的任何其他交点,并根据需要更新未射中辐射。然后在步骤S7-22考虑与物体相交的任何其他光线,然后在步骤S7-24以相同方式考虑带有发光特性的任何其他物体。一旦已经以相同方式处理了所有带有发光特性的物体,该过程返回。
“激活LF中的发光体”过程调用“找到与物体相交的光线及其交点”过程。下面将参考图19描述该过程。该过程首先在步骤S11-2询问物体是否用平面多边形定义。将该信息包含在“物体”文件118中。如果是这样描述的,则后面跟着一个更简化的过程。在步骤S11-4考虑一个平面多边形,并且在步骤S11-6找到一个在多边形的顶点之间通过的光线。在步骤S11-8将光线标记为已经找到,并在步骤S11-10通过在所考虑的多边形内的z-内插找到该光线的交点。一旦找到该交点,该过程返回。
如同Foley,Van Dam,Feiner和Hughes在“计算机图形、原理和实践”第92-99页中所阐述的,找到和处理通过一个平面多边形的光线的过程可以采用一个2-D填充算法来处理。
通过采用一个z-内插技术来获得交点位置,可以自动生成z-缓冲器数据,该数据可以用于产生依据实施例定义的场景与采用z-缓冲器算法输入进场景的可以是动态的又一些物体的复合体的图象。
在一个替换情况下,步骤S11-2可以识别出,一个物体不是用平面多边形描述的,而是用几何形状、例如球体、椭圆体和各种图元的复合物来描述的。
一种将这样一个物体绘制进场景中的方法包括在步骤S11-12定义物体周围的边界框,边界框是沿轴对齐的,具有包含物体的最小可能尺寸。沿轴对齐的框便于计算和找到与其相交的光线。
在步骤S11-14考虑边界框的一个边,并且在步骤S11-16找到一个在边界框的该边的顶点之间通过的光线。在找到该光线时,在步骤S11-18检查光线是否已经被标记为找到。如果是,在步骤S11-20,询问是否还要考虑更多的光线。如果不是,在步骤S11-14考虑边界框的一个新边。如果是,在步骤S11-16从同一条边找到一条新的光线。如果步骤S11-18的询问显示该光线未被标记为找到,则在步骤S11-24询问光线是否通过该物体。因为一个光线可以通过边界框而不与物体相交,所以这个检查是需要的。如果光线未通过该物体,则过程从步骤S11-20继续,进行与前面相同的检查。
一旦已经找到一条通过物体的光线,则相对于物体形状的定义来计算光线与物体的交点。一旦识别出这些交点,则该过程返回。
光线与物体之间的交点可以以另一种方式来识别。对于由φ和θ的可得到的组合定义的每个方向,找到在物体周围的边界框的方向对齐的2D投影。然后,对于交点(如果有的话)和交点所在的光线上的点,相对于物体来测试在φ,θ方向通过该2D投影的所有光线。
最后,一旦已经激活LF中的所有发光体,并且已经将辐射添加到与这些发光体相交的所有光线,则计算出通过LF的反射。这是通过调用“计算LF中的反射”过程实现的,下面将参考图18更详细地说明该过程。首先,在步骤S9-2,过程查询是否有物体被标记为已经接收到未射中辐射。作为光线交点已经具有添加到其上的高于一预定阈值的辐射的结果,物体将被标记,并且因此相应的未射中辐射已经同样添加到其上。如果未找到这样的物体,该过程返回。
在步骤S9-4考虑一个已经这样标记的物体,然后在步骤S9-6去掉标记。在步骤S9-8,调用如前所述的过程“找到与物体相交的光线及其交点”。然后在步骤S9-10识别该光线与物体0的交点T2。过程然后在步骤S9-12参考如同在交点T2的交点数据中定义的在该交点的BRDF,检索为方便的二进制树形式的数据结构,以识别在可能辐射方向上沿光线的相邻交点T1。在步骤S9-14检查相邻交点T1,以检查它是否包含未射中辐射。如果它不包含未射中辐射,则过程返回步骤S9-8,以便与前面一样考虑与所讨论的物体相交的另一条光线。一旦识别出一条光线具有与物体的交点并且其相邻交点包含未射中辐射,则识别到一个反射光线。
在步骤S9-16中找到反射光线的步骤需要参考包含在“物体”文件110中的物体的BRDF。在这个实施例中,BRDF指明漫反射、镜面反射或其组合。在漫反射的情况下,在所考虑的入射光线与物体的交点上存在着将被找到的多个反射光线。对于镜面反射,反射光线整个为光场的一条光线,是最适合相对于公知的反射定理而计算出的真实反射光线的光线。
除了镜面反射和漫反射之外,在特定的实施例中,BRDF可以指定更复杂的反射模型,例如“光滑”反射,其中,对应于一给定入射光线,产生反射光线的一个锥面。这个效果表示不完善的镜面反射,如同Phong在CACM 18(6),19756月,311-317中所描述的。
就该反射光线或每个反射光线而言,在步骤S9-18识别该光线与所讨论物体的交点。在步骤S9-20,考虑依据BRDF的辐射中的变化,看它是否大于前述的预定阈值。如果它大于预定阈值,则在步骤S9-22,将依据BRDF的辐射设置在与所讨论物体的交点中。然后,在步骤S9-24将前述相邻物体标记为已经接收到未射中辐射,并在步骤S9-26更新与所考虑的物体的前述交点,以便反映出在未射中辐射上的增加。否则,不考虑未射中辐射。
然后在步骤S9-28,询问是否还要考虑更多的反射光线。如果是,过程返回步骤S9-10。一旦已经对要考虑的所有反射光线都实现了步骤S9-10,就在步骤S9-30中进一步考虑该物体,以确立与该物体相交的任何其他光线是否已经接收到未射中辐射。如果是,则过程返回步骤S9-8。如果没有更多的光线要考虑,则过程返回步骤S9-2,在这里,进一步考虑光场,以确立是否还有被标记为接收到来射中辐射的任何物体。一旦所有物体都未被标记,该过程返回。
一旦已经考虑了来自所有物体的所有未射中反射,则对在光场中绘制的场景而言已经完全定义了光场。在该点,存在一个完全的数据结构,与任何观察器的任何观察位置或特性无关。在不参考任何观察器的情况下就可以例如在一个甚至需要考虑整个光场区域的光分布的艺术展览的设计中使用光场。在画廊中的光的分布可以用上述结构来设计,入射在任一特定墙面上的光可以通过一个作为观察器的替换物的光度计来监视。这样,可以从一特定墙消除明亮斑纹或暗淡斑纹。
然而,该实施例也特别适合于需要一个特定视点的应用,例如图10中所示,利用一个模拟眼睛44。通过下面将参考图21说明的过程可以从LF构造一个视图。这个过程独立于运行LF计算的过程,由用户接口100控制。观察器过程开始于步骤S15-2,调用观察器的光圈的规格说明。这是在用户100的控制下从“观察器”文件118识别的。光圈规格说明包括光圈的实际直径加上其在空间和朝向上的位置。一旦已经识别出光圈,则在步骤S15-4识别进入光圈的一组光线。这是采用前面所述的诸如“找到与物体相交的光线及其交点”过程的过程来实现的。
在找到进入光圈的每个光线时,在步骤S15-6找到该光线在图象平面上的端点。在步骤S15-6,将光线表示为一个通过一个矢量方程式到达镜头组合的矢量。将参考“观察器”文件118描述镜头组合。矢量方程式的结果是在图象平面82上的一点。
将图象平面定义为一个元素阵列;在步骤S15-8,将与该光线的分段相联系的从光线与物体的前一个交点收回的辐射映射到该阵列内的一个元素上。几个光线可以入射在任何特定元素上,并且当每个光线入射在一个元素上时,将辐射加在一起。
最终,在考虑了所有光线之后,在由元素组成的图象平面上将形成一个亮度图,该亮度图可以通过滤波和从元素阵列变换来处理,以形成一个用象素表示的图象。特别地,如果镜头结构是相对简单的箱式照相机的镜头结构,则图象在能够正确显示在VDU上之前需要反转。
上面设置的观察过程可能相对较快,并且与图象的复杂级别无关。事实上,它是在观察器移动时一帧一帧地以大致恒定的时间产生的。如果具有足够的和合理的处理能力,该恒定时间可以被减少到可以将观察器实现为一个实时观察器的程度。
上面识别出的结构也可以用在一个用于虚拟现实应用的头戴式设备中,可以将立体图象投射到眼睛中。两个图象的计算都很快。此外,从其计算图象的观察方向的朝向可以根据头戴式设备的佩带者的眼睛的凝视角度而改变。这是一个重要的发展,对于其实现,以前需要相当大量的计算能力。
虽然上述设备已经具有实时改变静态场景的视图的潜力,但对这些场景本身的实时动态改变的实现仍然相当困难。然而,该设备可以与其他设备结合,以便根据本发明定义一个静态背景场景的图象,同时,其他设备产生可以动态改变的图象,将该图象叠加在静态场景的图象上。这可能会导致整个图象的真实性的降低,因为在光场和动态物体之间不太可能是完全相互作用的。如上所述,该设备可以容易地用于检索出z-值,以便与将物体绘制进场景中的z-缓冲器方法相结合。
此外,上述实施例假设发光介质是不参与的。实际上,介质很少是不参与的,因此衰减特性可以通过沿光场中的光线随机放置交点来表示。这些随机交点的密集度取决于所讨论介质对通过它发送的光的衰减级别。这样,可以考虑介质的衰减特性来图示场景。事实上,衰减通常是空气中悬浮的粒子(例如水滴或灰尘)的结果,因此指导的随机分布是现实的合理近似。
已经相对于场景的模化描述了上述的本发明的最佳实施例,其中在模化之后对场景不作出改变。然而,会出现希望能够从场景中删除物体或向场景添加物体的情况。图22和23描述了可以实现这两种行为的过程。
首先,图22显示了一个定义用于从在已经加上了光的光场中定义的场景删除一个物体的过程的流程图。在步骤S17-2,识别一条与要删除的物体相交的光线。然后,在步骤S17-4,为入射在所讨论物体上的带有辐射的所识别的光线找到一个T-交点。
然后,在步骤S17-6,标注沿该间隔的辐射R,其中所找到的T-交点形成了该间隔的一个边界。找到在要被删除的物体上的交点处的表面法线,并通过增加负辐射(和未射中辐射)到该反射光线或每个反射光线的T-交点来确定沿反射光线的辐射的重新分布。然后,根据前面参考图18所描述的过程,象处理正的未射中辐射一样处理负的未射中辐射。
然后,在步骤S17-8,将对应于所发射光线的T-交点处的辐射设置为等于入射辐射R。
然后,在步骤S17-10询问对于要删除的物体是否还要考虑更多的T-交点。如果是,则对下一个T-交点重复该过程。
然后,在步骤S17-12,询问是否还要考虑更多的光线。如果是,对于更多的光线重复上述过程;否则,在步骤S17-16,从与这些光线有关的间隔树删除对应于所删除物体的交点。然后,对于被标记为接收到未射中能量的物体,可以调用前面所述的例程“计算LF中的反射”。
图23是显示在已经激活了发光体之后允许将一个物体增加到被绘制进光场的场景中的过程的步骤的流程图。
首先,在步骤S19-2,将物体在光场中定位,并找到与要被增加的物体相交的光线。然后,在步骤S19-4,识别一个沿光线由所谓的与要增加的物体的第二交点界定的间隔,从该第二交点的潜在辐射的方向是向左的。在步骤S19-6查找目前沿该间隔的辐射R,并在步骤S19-8找到在与物体的第二交点处的表面法线。在步骤S19-10从在交点处的物体的BRDF来确定传播辐射R要通过的光线,并在步骤S19-12根据BRDF将辐射和未射中反射添加到这些光线与物体的交点上。在步骤S19-14对接收到未射中能量的物体进行标记。
在步骤S19-16识别沿对应于该物体内部的光线的间隔,并在步骤S19-18将其辐射设置为0。
最后,在步骤S19-20,识别一个沿光线由所谓的与物体的第一交点界定的间隔,从该第一交点的潜在辐射方向是向右的。在步骤S19-22中将沿该间隔的未射中辐射设置为-R,并在步骤S19-24中将在该间隔的另一端的物体(如果有的话)标记为接收到未射中辐射。由物体接收到的未射中能量是“负”的这个事实是不相关的;它只在需要通过光场处理的未射中能量改变时才是重要的。
然后,在步骤S19-26,询问对于要增加的物体是否还要考虑更多的光线,如果是,重复上述步骤。如果没有要考虑的光线,则在步骤S19-28对于被标记为接收到未射中能量(无论正负)的物体调用过程“计算LF中的反射”,随后完成“增加一个物体”过程。
上述两个过程是可选的特征,最好可以从用户接口100调用。
可以将这两个过程合并,以便提供一个移动物体的过程。在该合并过程中,考虑处于其初始位置的物体与处于其新位置的物体的联合体,并找到与该联合体相交的光线。当顺序地运用单独的步骤时,这在计算上少于考虑物体的删除和增加,因为在处理处于其第二位置的物体时,与处于其第一位置的物体相交的许多光线也将被考虑。
该实施例的特别优势在于,它能够提供球形显示场景,该场景可以通过增加、删除或移动场景中的物体来修改,而不需要重新计算整个场景的图示。
可以提供列出T-交点的进一步的替换方式。例如,可以为每个光线定义一个阵列,并且可以以t-值将T-交点装载进该阵列。其缺点是需要提前选择沿一条光线的交点的最大数目。
或者,可以将T-交点存储在一个标准链接列表或双链接列表中,这样使得插入新元素或从列表中删除元素将特别容易。其缺点是与二进制树方法所需的算法搜索时间相比,对于任何特定元素将是线性搜索时间。
作为另一个替换方式,可以将光线分成N个相等分段。如果N较大(比如1000),则任何t值由一个索引近似成光线的一个特定分段。因此,可以使用由对应于交点的分段的索引数索引的一维T-交点阵列。其优点是具有恒定查找时间(因此对于大量交点它比二进制树方法更快),但其缺点是近似性和存储器需求(因为阵列中的大多数项都是空的)。例如,假设N=1000,但沿一给定光线只有20个交点。在这种情况下,该光线的阵列中的980个可能的项都是空的。
上述替换方式的存储器缺陷至少可以以两种不同的方式来克服。第一种方式是采用一个行程编码方法。在这种情况下,存储形式为空项数目后面跟着实际非空项,对整个阵列都是如此。因此,对该阵列的查找时间是不恒定的,取决于阵列中非空项的数目和位置。
改进上述最后一种替换方式的第二种方式是将许多可能的表示打包成字,而不是将其作为单个阵列项考虑。例如,如果N=1024(232),则可以用32个无符号整数表示1024个“0”和“1”项。因此,将提供一个由32个无符号整数组成的阵列,而不是由1024个潜在T-交点组成的阵列,其中每个整数都被初始化为0。这不需要太密集的存储器。与每个这样的整数相联系的是对应于词中的“1”项的那些特定T-交点的有序列表。因此,给定一特定t-值,可以找到表示中最接近的分段。分段的索引被32除的商给出t-值所位于的一特定阵列元素。分段索引被32除的余数将识别出必须被设置为1以表示这个t-值的特定位。最后,可以将T-交点存储在与这个特定整数相联系的链接列表中。
应该理解,在考虑漫反射时,上述技术在计算上比考虑镜面反射时相对更加昂贵。这是因为漫反射从一单个入射光线上产生非常大数目的反射光线。如果在一个场景中包括漫反射体并且按照上述方法来处理,则计算量级会变得不容许实现。因此,已经以一个视图设计出下面的过程,以便显著减少考虑场景中的漫反射体所需的计算量级。
例如,图24显示了一个完美的漫反射物体230,如上所述,其表面与光场的第一和第二光线232,234相交。两条光线232,234也与作为发光体的另一个物体(未显示)相交。两条光线232,234与漫反射物体230的表面大致相交在同一点。
因此,当考虑由物体接收到未射中能量并且随之发生的光反射时,根据前述方法,考虑第一光线232,并识别其与漫反射体230的交点。一旦已经找到交点,则在以交点为中心、由在交点与物体表面相切的平面界定的区域限定的半球中识别反射光线。将辐射和未射中辐射加到这些反射光线上。然后,以相同的方式考虑第二光线234。然而,由于第二光线234与漫反射体的交点与第一光线232与漫反射体的交点大致相同,所以关于第二入射光线的许多(如果不是所有的话)反射光线将与第一入射光线的反射光线相同。
已经以一个视图设计出下列方法来减少在发射在漫反射表面得到的辐射中所需的计算量。
图25显示了漫反射体230的表面的一部分的示意图。通过对该方法的说明,将该表面的部分划分成包括多个元素240的栅格。所示的两个入射光线232,234与一个特定元素240内的物体表面相交。一旦已经找到第一光线交点,不是将该光线立即反射,而是相对于该元素240累积与该入射光线相联系的能量。然后,当计算在同一元素内相交的第二入射光线234时,也相对于该元素240累积与该光线相联系的能量。这个步骤得到具有与其相联系的累积能量的表面元素。能量的累积是根据各项的加权和来实现的。每一项表示从一个不同光线接收的能量。每一项的加权是相对于物体表面上入射光线的入射角以及由该表面的BRDF定义的表面特性来确定的。特别地,以一个非常小的锐角入射到物体表面的光线可以比垂直于表面的光线吸收得多或少,这取决于表面的性质。
图26显示了物体表面的同一部分,其中显示了一个步骤,将辐射发送到被识别为在自表面元素240的反射方向上的光线上。在这个步骤中,将表面元素240的累积能量反射到出自表面元素240的所有识别出的反射光线。这样,对每个表面元素240只进行一次在计算上昂贵的反射能量计算。因此,可以减少计算漫反射所需的计算量级。
将元素240的累积能量存储在与该元素相联系的并且在该表面元素与物体表面的表面法线大致一致的光场的光线有关的T-交点结构中的一个附加字段中。在实际上,不可能仅仅增加字段到对应于表面法线的T-交点集合中,因此字段包括在T-交点数据结构的结构中,作为其一部分。对于所有T-交点,将累积能量字段初始化为0。对于几乎对应于表面法线的T-交点,累积能量字段将保持设置为0。因此,如图27所示,与在入射光线232,234的交点与表面法线N一致的光线相联系的T-交点在其中存储有与入射光线的辐射有关的累积能量。
然后,将累积能量释放到根据在该点的物体的BRDF而识别的反射光线上。
通过在T-交点数据结构的一部分中存储与每个元素240的累积能量有关的信息,获得了本发明的特定实施例的一个特定优点。也就是说,没有保存关于场景中物体的数据,只保存用交点表示的数据。
这个实施例具有几种应用,其中一些应用已经在说明书中进行了说明。下面说明其他应用。
首先,可以将一个建筑物模型绘制进光场,并以所希望的方式显示,以检验一个建筑设计的质量。光场数据可以通过信号从一个建筑师传送给一个客户,这样客户可以检查建筑师的设计。此外,可以在该绘制出的建筑物中设计照明,以供在艺术作品的产品中使用,例如展览、舞台表演或电影布置。
其次,交换视图和视图特征的能力使得该设备能够用在电视或电影制作的一系列镜头的设计中。本发明将适合于在其构造之前模拟在不同布局和照明条件下、以及具有不同类型的摄像镜头的电影布置的出现。
第三,光场是一个场景通过场景中的光的表示的数字编码表示,数字编码对于压缩和后续传输、例如对于广播电视是理想的。一个硬连线的对所发送的数字编码进行译码并且能够从所定义的光场提取出图象的本地机顶盒可以用于在家中向人们显示游戏或其他娱乐节目。数字编码也可以通过因特网传送。
第四,在提供了同一光场的视图的两个图象的情况下,可以将这两个图象发送到一个头部安装的显示器上。这样,可以形成立体图象,提供一个高度投入的虚拟现实环境。
在图28中,显示了具有图1所示图象处理设备的所有部件的图象处理设备的方框图。
然而,在这种情况下,中央处理单元4可用于产生在其中实现的光场的两个图象。这两个图象由光场内的两个观察器产生,平行的主光轴之间具有合适的瞳间距离,瞳间距离可以由用户调节。
在这些观察器产生的图象被从中央处理单元4传送到帧缓冲器10。与帧缓冲器10相连的是一个CD制造设备250,可用于产生光盘252,在其上存储有与从帧缓冲器10传送的图象有关的编码数据。这样,可以将来自光场的图象序列存储在光盘上,以供以后在合适的查看设备上查看。
提供了一个头部安装显示器(HMD)254,可用于从帧缓冲器10接收图象的两个序列。提供了第二VDU12’,则可以在这两个VDU12,12’上显示两个图象序列。
在这种情况下,输入装置8可以包括一个手动输入设备,例如通常用在虚拟真实应用中。这样,用户在虚拟真实环境的进程可以由用户通过操纵手动输入设备来控制,并且因此可以调节由中央处理单元4产生的两个图象。此外,瞳间距离可以在HMD254中进行测量,并且可以将这个测量值提供给输入8。可以将瞳间距离变换成在中央处理单元4中定义的在光场中的两个观察器的光轴之间的距离,其中中央处理单元产生两个图象以供在HMD254中显示。
CPU4进一步与一个数据压缩器260相连,数据压缩器260用于接收与CPU4中的光场的定义有关的数据,并根据一个适当的压缩算法进行压缩。数据压缩器260与一个发射器262相连,发射器262用于从数据压缩器260接收压缩数据,并通过在电磁载波辐射上调制来发射该数据。由接收器264接收发射的数据,接收器264在实际上实施为电视机266的机顶盒。接收器264包括译码器268,译码器268能够接收所发射的数据并将其恢复其未压缩状态,以便恢复定义光场的数据。然后将定义光场的数据传送到接收器264的一个观察器270,观察器270是与附图中的图13中所显示的观察器类似的结构。这样,可以将3D环境的定义发送到一个接收器,以供用户操纵。
参考图29,HMD254包括一个适合于放置在用户头部272上的观察镜。电缆274将HMD254连接到前述的图象处理设备。
HMD254在常规上包括两个显示单元276(如图30所示),前述的立体图象可以投影在这两个显示单元上。
所述实施例特别适合于观察一个立体环境,因为从一个已经构造的光场生成一个图象几乎不用进行计算。因此,可以在没有过多计算的情况下生成同一光场的两个视图。可以响应于采用包含在头部安装显示器254中的监视装置监视用户眼睛的凝视角度来改变观察器,以便在用户所感兴趣的场景中建立物体。这样,这些物体可以被聚焦。
此外,本发明并不限于一个场景中的光传播的表示。热和声音也可以构成能够表示为来自源辐射的能量的形式,并且这些形式的能量的传播的表示因此也可以用上述技术来实现。事实上,在T-交点数据结构中除了现有的辐射和未射中辐射字段之外,可以包括另外的字段来用于热和/或声音数据。依据本发明,可以增加热和未射中热字段以及声音和未射中声音字段。
该实施例可以用于光、热和/声音的动态源,因为在一特定T-交点的辐射值可以作为标称源强度的函数来计算,直到设置了实际源强度。当设置了实际强度时,可以确定在该T-交点的实际辐射值。因此,在用于声音传播判定的场的情况下,可以将传播作为一个标称声音强度的函数进行计算,然后可以通过计算给定所希望声音源强度的函数的输出来计算所接收的声音强度。
权利要求
1.一种用于处理数据以便对一个三维场景内的能量传播进行模化的计算机设备,包括用于定义一个包含所要表示的场景的三维环境的装置,所述环境包括在一个三维空间内的多个方向上的多个离散能量传播路径;用于定义所述三维空间内的物体和能量源的装置;用于确定在所述路径与所述三维空间内的所述物体和能量源之间的交点的装置;用于根据所述确定的交点来确定能量沿路径传播的装置;用于在所述三维空间内定义一个能量接收器的装置,所述能量接收器用于接收沿所述路径中的一个或多个传播的能量;以及,用于根据计算出的能量传播来计算由所述能量接收器接收的能量的装置。
2.如权利要求1所述的设备,其中,能量计算装置用于在由能量接收器接收的能量的基础上计算一个能量振幅值。
3.如权利要求1所述的设备,其中,用于定义一个能量接收器的装置可用于在所述环境内定位一个观察平面,以及确定所述环境的路径与所述观察平面的交点,所述能量计算装置可用于在沿入射到观察平面上的路径进行的能量传播的基础上产生图象数据。
4.如权利要求3所述的设备,其中,能量计算装置可用于确定所述路径与所述观察平面的入射角,以及根据所述入射角产生所述图象数据。
5.如前面任何一个权利要求所述的设备,其中,用于定义一个三维环境的装置包括用于在三维空间内的不同方向定义多个路径子集的装置,每个子集的路径是平行的。
6.如权利要求5所述的设备,其中,用于定义子集的装置可用于将子集定义为使得每个路径子集包括在一个长方形阵列中排列的平行路径。
7.如权利要求5或权利要求6所述的设备,其中,三维环境定义装置包括索引装置,索引装置可用于根据每个子集的路径的方向来对路径子集进行索引。
8.如权利要求7所述的设备,其中,索引装置可用于根据相对于一个基准平面的球坐标来对子集进行索引。
9.如权利要求9所述的设备,其中,用于定义一个环境的装置可用于定义这样一个环境,所述环境在与基准平面的角度较小的方向上包括比在与基准平面的角度较大的方向上所定义的更多数目的路径,以使得在所述场内的路径方向的分布实质上是均匀的。
10.如权利要求9所述的设备,其中,用于定义一个环境的装置可用于将路径定义为使得在与基准平面有一特定角度的方向上定义的路径数目实质上正比于所述特定角度的余角。
11.如前面任何一个权利要求所述的设备,其中,用于确定交点的装置可用于存储关于一个交点的、涉及路径和路径所相交的物体的身份的信息。
12.如权利要求11所述的设备,其中,用于确定交点的装置可用于存储关于一个交点的、定义在该交点的能量传播的信息。
13.如前面任何一个权利要求所述的设备,其中,能量传播确定装置可用于为一个与一个物体相交的路径来处理能量传播信息,以识别能量要从所述相交路径传播到的一个或多个路径,并为所述识别出的一个路径或多个路径产生能量传播信息。
14.一种用于产生表示一个三维场景中的能量传播的数据的设备,所述设备包括用于定义一个包含一个能量传播要在其中表示的场景的三维能量传播环境的装置,所述环境包括在一个三维空间中的多个方向上的多个离散能量传播路径,能量沿所述路径的传播将被表示;用于定义所述三维空间内的物体和能量源的装置;用于确定和存储定义所述路径与所述三维空间内的物体和能量源的交点的信息的装置;以及,用于根据所述确定出的交点来确定定义在路径之间的能量传播的数据的装置。
15.如权利要求14所述的设备,其中,用于定义一个三维环境的装置包括用于在三维空间内的不同方向定义多个路径子集的装置,每个子集的路径是平行的。
16.如权利要求15所述的设备,其中,用于定义子集的装置可用于将子集定义为使得每个路径子集包括在一个长方形阵列中排列的平行路径。
17.如权利要求15或权利要求16所述的设备,其中,三维环境定义装置包括索引装置,索引装置可用于根据每个子集的路径的方向来对路径子集进行索引。
18.如权利要求17所述的设备,其中,索引装置可用于根据相对于一个基准平面的球坐标来对子集进行索引。
19.如权利要求18所述的设备,其中,用于定义一个环境的装置可用于定义这样一个环境,所述环境在与基准平面的角度较小的方向上包括比在与基准平面的角度较大的方向上所定义的更多数目的路径,以使得在所述场内的路径方向的分布大致均匀。
20.如权利要求19所述的设备,其中,用于定义一个环境的装置可用于将路径定义为使得在与基准平面有一特定角度的方向上定义的路径数目实质上正比于所述特定角度的余角。
21.如权利要求15到20中的任何一个所述的设备,其中,用于确定交点的装置可用于存储关于一个交点的、涉及路径和路径所相交的物体的身份的信息。
22.如权利要求21所述的设备,其中,用于确定交点的装置可用于存储关于一个交点的、定义在该交点的能量传播的信息。
23.如权利要求15到22中的任何一个所述的设备,其中,能量传播确定装置可用于为一个与一个物体相交的路径来处理能量传播信息,以识别能量要从所述相交路径传播到的一个或多个路径,并为所述识别出的一个路径或多个路径产生能量传播信息。
24.一种用于分析一个三维场景内的能量传播的设备,包括用于接收定义一个三维能量传播环境的数据的装置,所述三维能量传播环境包括在一个三维空间内的多个方向上的多个离散能量传播路径,所述数据包括所述三维空间内的物体和能量源、所述路径与所述物体和能量源的交点以及沿所述路径的能量传播;用于在所述三维空间内定义一个用于接收沿所述路径中的一个或多个传播的能量的能量接收器的装置;以及用于计算由所述能量接收器接收的能量的装置。
25.如权利要求24所述的设备,其中,能量计算装置用于在由能量接收器接收的能量的基础上计算一个能量振幅值。
26.如权利要求24所述的设备,其中,用于定义一个能量接收器的装置可用于在所述环境内定位一个观察平面,以及确定所述环境的路径与所述观察平面的交点,所述能量计算装置可用于在沿入射到观察平面上的路径进行的能量传播的基础上产生图象数据。
27.如权利要求26所述的设备,其中,能量计算装置可用于确定所述路径与所述观察平面的入射角,以及根据所述入射角产生所述图象数据。
28.一种用于处理数据以便对一个三维场景内的能量传播进行模化的方法,包括定义一个包含一个要被表示的场景的三维环境;定义在所述环境中的多个方向上的多个离散能量传播路径;定义所述场景内的物体和能量源;确定所述路径与所述物体和光源的交点;根据所述交点确定定义路径之间的能量传播的数据;在所述场景中的一个位置接收所述路径中的一个或多个的能量传播信息;以及根据沿所述路径的一个选定子集的能量传播数据来计算所述接收步骤中接收的能量。
29.如权利要求28所述的方法,其中,能量计算步骤包括在由能量接收器接收的能量的基础上计算一个能量振幅值。
30.如权利要求28所述的方法,其中,接收能量的步骤包括在所述环境内定位一个观察平面,以及确定所述环境的路径与所述观察平面的交点,所述能量计算步骤包括在沿入射到观察平面上的路径进行的能量传播的基础上产生图象数据。
31.如权利要求30所述的方法,其中,能量计算步骤包括确定所述路径与所述观察平面的入射角,以及根据所述入射角产生所述图象数据。
32.如权利要求28到31中的任何一个所述的方法,其中,定义一个三维环境的步骤包括定义多个路径子集的步骤,每个子集的路径是平行的。
33.如权利要求32所述的方法,其中,定义路径子集的步骤包括定义每个子集中的平行路径的一个长方形阵列。
34.如权利要求32或权利要求33所述的方法,其中,定义三维环境的步骤包括根据每个子集的路径的方向来对路径子集进行索引。
35.如权利要求34所述的方法,其中,索引步骤包括根据相对于一个基准平面的球坐标来对子集进行索引。
36.如权利要求35所述的方法,其中,定义路径的步骤包括在与基准平面的角度较小的方向上定义比在与基准平面的角度较大的方向上所定义的更多数目的路径,以使得在所述场内的路径方向的分布大致均匀。
37.如权利要求36所述的方法,其中,定义路径的步骤包括在与基准平面有一特定角度的方向上定义数目实质上正比于所述特定角度的余角的路径。
38.如权利要求28到37中的任何一个所述的方法,其中,确定交点的步骤包括存储关于一个交点的、涉及路径和路径所相交的物体的身份的信息的步骤。
39.如权利要求28到38中的任何一个所述的方法,其中,确定能量传播的步骤包括为一个与一个物体相交的路径来处理能量传播信息,识别能量要从所述相交路径传播到的一个或多个路径,并为所述识别出的一个路径或多个路径产生能量传播信息。
40.一种用于产生表示在一个三维场景内的能量传播的数据的方法,包括定义一个包含一个要在其内表示能量传播的场景的能量传播场,包括定义在多个方向上的多个离散路径,沿所述路径的能量传播要被表示;定义所述场景内的物体和能量源;确定并存储定义所述路径与所述场景的物体和能量源的交点的信息;以及根据所述交点确定定义能量沿路径的传播的数据。
41.如权利要求40所述的方法,其中,定义三维环境的路径的步骤包括定义多个路径子集,每个子集的路径是平行的。
42.如权利要求41所述的方法,其中,定义多个子集的步骤包括将每个路径子集定义为包括在一个长方形阵列中排列的平行路径。
43.如权利要求41或权利要求42所述的方法,其中,定义一个三维环境的步骤包括根据每个子集的路径的方向来对路径子集进行索引。
44.如权利要求43所述的方法,其中,索引步骤包括根据相对于一个基准平面的球坐标来对子集进行索引。
45.如权利要求44所述的方法,其中,定义路径的步骤包括在与基准平面的角度较小的方向上定义比在与基准平面的角度较大的方向上所定义的更多数目的路径,以使得在所述场内的路径方向的分布大致均匀。
46.如权利要求45所述的方法,其中,定义路径的步骤包括在与基准平面有一特定角度的方向上定义数目实质上正比于所述特定角度的余角的路径。
47.如权利要求40到46中的任何一个所述的方法,其中,确定交点的步骤包括存储关于一个交点的、涉及路径和路径所相交的物体的身份的信息的步骤。
48.如权利要求40到47中的任何一个所述的方法,其中,确定能量传播的步骤包括为一个与一个物体相交的路径来处理能量传播信息,识别能量要从所述相交路径传播到的一个或多个路径,并为所述识别出的一个路径或多个路径产生能量传播信息。
49.一种用于分析一个三维场景内的能量传播的方法,包括接收和存储定义一个三维能量传播环境的信息,所述三维能量传播环境包括多个方向上的多个能量传播路径,所述信息包括定义所述路径与所述场景内的物体和能量源的交点的信息以及定义沿所述路径的能量传播的信息;在所述环境内定位一个能量接收器,并用所述接收器来测量沿所述路径中的一个或多个进行的能量传播。
50.如权利要求49所述的方法,其中,能量计算步骤包括在由能量接收器接收的能量的基础上计算一个能量振幅值。
51.如权利要求49所述的方法,其中,定位一个能量接收器的步骤包括在所述环境内定位一个观察平面,以及确定所述环境的路径与所述观察平面的交点,所述方法进一步包括在所测量的沿入射到观察平面上的路径进行的能量传播的基础上产生图象数据的步骤。
52.如权利要求51所述的方法,包括确定所述路径与所述观察平面的入射角,以及根据所述入射角产生所述图象数据。
53.一种计算机存储介质,存储可用于配置一个计算机设备以执行权利要求28到52中的至少一种方法的处理器可执行指令。
54.一种信号,携带可用于配置一个计算机设备以执行权利要求28到52中的至少一种方法的处理器可执行指令。
55.如权利要求31、51和52中的至少一个所述的方法,包括产生一个运送由所述图象数据产生步骤产生的图象数据的信号并直接或间接地记录信号的步骤。
56.如权利要求40到48中的至少一个所述的方法,包括产生一个运送定义场、路径、所述路径的交点和沿所述路径的能量传播的信息的信号并直接或间接地记录信号的步骤。
57.如权利要求56所述的方法,包括在所述记录信号上运送的信息上执行权利要求49到52中的至少一种方法的步骤。
全文摘要
一种模拟装置(2,70)可用于模拟场景中的光传播。该装置定义了一个包含在多个方向上的多个离散路径(72)的环境,其中能量沿所述多个方向在该环境中传播。该装置确定场景中的物体和光源的位置,并记录路径上的点,在每一点上,场景中的物体或光源与路径(72)有一个交叉。该装置根据交叉识别光源沿路径从光源到其他路径的传播。还提供了一种相应的方法。另外,或者作为光传播模拟的替换,可以模拟其他能量、例如声音或热量的传播的分布。
文档编号G06T15/55GK1328673SQ9981386
公开日2001年12月26日 申请日期1999年9月29日 优先权日1998年9月29日
发明者M·斯拉特 申请人:伦敦大学学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1