多光源下的全局光照绘制方法及装置的制造方法_3

文档序号:8340278阅读:来源:国知局
齐空间包围盒之间的 距离的示意图;
[0106] 图9示出根据本发明另一实施例的可见性测试的示意图;
[0107] 图10a、图IOb分别示出现有技术中光树及光割的示意图;
[0108] 图11a、图Ilb分别示出调入几何块的IO操作的示意图;
[0109] 图12示出根据本发明另一实施例的多光源下的全局光照绘制方法的示意图;
[0110] 图13示出根据本发明另一实施例的多光源下的全局光照绘制装置的结构示意 图;
[0111] 图14示出根据本发明另一实施例的一种网络设备的结构框图。
【具体实施方式】
[0112] 以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同 的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除 非特别指出,不必按比例绘制附图。
[0113] 在这里专用的词"示例性"意为"用作例子、实施例或说明性"。这里作为"示例性" 所说明的任何实施例不必解释为优于或好于其它实施例。
[0114] 另外,为了更好的说明本发明,在下文的【具体实施方式】中给出了众多的具体细节。 本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于 本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
[0115] 图1示出根据本发明一实施例的多光源下的全局光照绘制方法的流程图。如图1 所示,该方法主要包括:
[0116] 步骤10、对场景的几何面片和虚拟点光源分别基于莫顿码进行处理,得到第一数 量的几何块以及第二数量的光源块;
[0117] 步骤20、以场景的采样点为行坐标,以所述虚拟点光源为列坐标建立光传递矩 阵;
[0118] 步骤30、将所述光传递矩阵划分为所述第二数量的列,将所述光传递矩阵划分为 第三数量的行,每一行与每一列相交构成为一个子矩阵,所述第三数量为所述采样点的聚 类数量;
[0119] 步骤40、根据各虚拟点光源的材质属性、衰减属性、可见性以及光强度计算对应子 矩阵中的光线的亮度贡献值;
[0120] 步骤50、将可见性为可见的光线的亮度贡献值累加到对应的子矩阵的采样点上, 并输出所述采样点的总亮度。
[0121] 图2示出根据本发明另一实施例的全局光照绘制方法的流程图。该全局光照绘制 方法用于渲染包含有物体和阴影的场景,如图2所示,该方法主要包括:
[0122] 步骤100、读入并处理几何信息。
[0123] 该步骤具体包括:
[0124] 步骤101、读入三角面片。
[0125] 如图3所示,对于要绘制的场景,场景里面有很多个物体(Object),每个物体的表 面都由面片来描述,面片的属性包括三轴坐标、法向或纹理等。面片可以由已知商业建模软 件产生,如3dsMa X,Maya等。本实施例中将无序的三角面片作为几何信息,将该三角面片作 为输入,并假设其全部属性都已知,也可以采用其它面片例如四边形面片来描述。
[0126] 步骤102、对三角面片进行排序。
[0127] 具体地,采用Out-of-Core排序工具,例如ExSort库,对三角面片进行排序,该排 序的过程包括:
[0128] 步骤1021、计算各三角面片的重心在X轴、y轴和z轴上的位置码。
[0129] 因为所绘制的场景为立体场景,每个三角面片都具有X轴、y轴和z轴坐标,三角 面片的重心即三角形三条中线的交点。
[0130] 以X轴为例,将读入的三角面片中重心的最大X轴坐标和最小X轴坐标之间的X 轴称为L,把L平均分为21°段,按顺序把每一段做上标记,共需要10个比特的标记长度,从 而X轴坐标与所做的标记一一对应;根据空间点的X坐标就能够得到对应的标记,该标记即 该空间点的X轴位置码。依照该方法可以计算出每个三角面片空间点的X轴位置码、y轴 位置码和z轴位置码。
[0131] 步骤1022、根据重心的X轴位置码、y轴位置码和z轴位置码计算得到完整的莫顿 码。
[0132] 本实施例采用错位组合的方法进行计算,具体而言,莫顿码第1位为X轴位置码第 1位,莫顿码第2位为y轴位置码第1位,莫顿码第3位为Z轴位置码第1位,莫顿码第4位 为X轴位置码第2位,莫顿码第5位为y轴位置码第2位,莫顿码第6位为z轴位置码第2 位,以此类推,直到取得30比特长度的莫顿码。
[0133] 步骤1023、根据莫顿码对三角面片进行排序和划分。
[0134] 因为空间位置相近的三角面片的三轴坐标也相近,因此具有相近的莫顿码,使用 莫顿码可对三角面片进行排序,也就是把三角面片根据空间位置进行划分,每读取10万个 面片就划分一个块,把具有相同的重心莫顿码的三角面片放入相同的块中。这样在后续步 骤计算可见性时,与一个子矩阵有遮挡关系的面片都集中在少量的几何块中,可以有效减 少几何块的读取次数,提高效率。而且,由于内存的处理速度远远大于外存的处理速度,因 此将三角面片一块或几块地从外存读入到内存中进行处理,这种分块读入和处理的方式也 可以提高处理速度和处理效率。
[0135] 步骤103、将排序后的三角面片读入到Out-of-Core数据管理器中。
[0136] 将上一步骤划分的几何块按照排序后的顺序在Out-of-Core数据管理器中注册 为对应的几何块。
[0137] 步骤200、读入并处理光源信息。
[0138] 本步骤200与步骤100的执行顺序不限于此,也可以同时执行,或者先执行步骤 200再执行步骤100。本实施例中的光源信息指虚拟点光源,假设一个三角面片上有一个虚 拟点光源,虚拟点光源的属性有光强值,朝向(法向),三轴坐标,虚拟点光源的格式可以是 任意能够读入的格式,包括自定义的文件格式。与几何信息类似,首先计算虚拟点光源的重 心的位置码,然后根据位置码得出莫顿码。使用莫顿码对虚拟点光源进行排序后,将每10 万个连续的虚拟点光源划分为一个块,并将划分的块在Out-of-Core数据管理器中注册为 对应的光源块。
[0139] 步骤300、建立光传递矩阵并将其划分为若干个子矩阵。
[0140] 步骤301、以采样点作为行坐标,以虚拟点光源作为列坐标建立光传递矩阵。
[0141] 其中,根据视点的位置、最后绘制出的图像的大小,通过射线求交的方法来选取采 样点。具体地,如图4所示,视点由用户输入,代表的是用户的眼睛或拍摄装置在场景坐标 系中的位置,双眼正上方的朝向以及眼睛的朝向。最终绘制得到的两维图像上的两维像素 点是三维场景中三维采样点根据视点方向在与其垂直的成像平面(即用户看到的该两维图 像)上的投影。
[0142] 该光传递矩阵的第X行第y列的元素表示第y个虚拟点光源对第X行采样点的亮 度贡献,光传递矩阵的一行为一个采样点所投影对应的像素点。
[0143] 步骤302、将建立的光传递矩阵划分为若干个子矩阵。
[0144] 步骤3021、根据步骤200得到的光源块的数量将光传递矩阵划分为相应数量的 列。
[0145] 例如,在步骤200中输入了 43个光源块,则把光传递矩阵划分为43份列,每一份 包含一个光源块的虚拟点光源,即每一列对应一个光源块。
[0146] 步骤3022、根据采样点之间的相关性,采用聚类方法例如k-均值(means)方法、 J-均值方法、CLARANS方法、BIRCH方法、DBSCAN方法、PGCS方法或⑶RE方法等对采样点进 行的聚类。
[0147] 本实施例以把采样点聚成165类为例进行说明,一类采样点称为一个采样点块, 本实施例中每一类剩一定阈值的采样点时停止聚类。
[0148] 步骤3023、根据聚类得到的数量将光传递矩阵划分为相应数量的行。
[0149] 经过上述步骤的聚类之后,光传递矩阵被划分为165个行,43个列,从而光传递矩 阵被划分为165*43=7095个子矩阵。
[0150] 如图5所示,将光传递矩阵进行划分,将采样点聚类成采样点块Pi,图5中以P 1-P4 为例进行说明,将虚拟点光源划分为光源块h,图5中以L1-L4为例进行说明,每个采样点块 和每个光源块组成一个子矩阵。
[0151] 步骤400、判断子矩阵和几何块是否需要进行可见性测试;包括:
[0152] 步骤401、对于每个子矩阵,将子矩阵中的所有光线包含在一个椎体空间包围盒 中,对于每个几何块,将几何块的所有面片包含在一个轴对齐空间包围盒中。
[0153] 其中,光线即一个采样点与一个虚拟点光源的连线。一个子矩阵对应一个椎体空 间包围盒,一个几何块对应一个轴对齐空间包围盒。
[0154] 如图6所示,本实施例中的椎体空间包围盒由两个球体以及连接两球体的侧面构 成。一个球体为包含所述子矩阵中所有采样点的最小球体,另一个球体为包含所述子矩阵 中所有虚拟点光源的最小球体。例如:其中一个球体以对应的子矩阵中所有采样点的空间 中心Cl为球心,以距球心最远的采样点到球心的距离Rl为半径,包含该子矩阵中所有的采 样点,即图6中较小球体中的5个点。例如:子矩阵中有两个采样点的坐标分别为(1,0, 0) 和(2, 0, 0),则这个球体以(1. 5, 0, 0)为中心,以0. 5为半径。另一个球体以该子矩阵中所 有虚拟点光源的空间中心C2为球心,以距球心最远的虚拟点光源到球心的距离R2为半径, 包含该子矩阵中所有的虚拟点光源,即图6中较大球体中的4个点。最后在两个球体上分 别截取过球心并与两个球心连线垂直的切面,两切面与球体相交的边连结起来就构成了椎 体空间包围盒的侧面。较大球体中的4个虚拟点光源与较小球体中的5个采样点连接构成 20条光线。
[0155] 如图7所示,本实施例中的轴对齐空间包围盒由包含所述几何块中所有几何面片 的最小轴对齐长方体构成,例如由其所包围的所有面片的最小X轴、y轴、Z轴坐标,即Q点 坐标及最大X轴、y轴、z轴坐标,即P点坐标共6个量组成,表示被这6个量围住的空间。 这6个量可以通过遍历对应几何块的所有面片并计算其在各
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1