好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法.docx

5页
  • 卖家[上传人]:ting****789
  • 文档编号:309422961
  • 上传时间:2022-06-13
  • 文档格式:DOCX
  • 文档大小:20.13KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法专利名称:一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法技术领域:本发明属于真实 感3D虚拟场景绘制技术领域,涉及一种绘制由镜面反射产生的 3D虚拟场景的面焦散效果的方法背景技术:真实感3D虚拟场景绘制技术在数字娱乐、影视特效、建筑CAD、广告动画等领域受 到人们的广泛关注目前3D虚拟场景绘制技术虽然已经得到深入的研究,但是如何快速绘 制具有高度真实感的3D虚拟场景画面仍然是一个有待进一步解决的难题当光源发出的 光线入射到光滑表面上时,光滑表面的镜面反射过程可能对反射光线产生聚焦或者离焦作 用,从而导致反射光线形成复杂的空间分布当这些空间分布复杂的反射光线再次入射到 不透明的反射表面上时,就会在反射表面上产生形状复杂的亮斑,这就是由镜面反射产生 的面焦散光子映射是一种绘制面焦散效果的经典方法标准的光子映射算法首先对大量的 从光源发射的光子进行跟踪,将这些光子与场景表面的碰撞位置及其相关数据记录在光子 缓存中;然后根据光子缓存中的数据计算场景的焦散图;最后利用类似阴影映射的方法把 焦散图投影到场景表面上,从而绘制出面焦散效果由于大量的光子跟踪计算存在较大的 系统执行时间和存储空间开销,因此利用光子映射算法绘制面焦散效果的效率通常不高。

      随着3D虚拟场景绘制技术的不断发展,影视特效、游戏、视景仿真等3D应用对绘 制画面的真实感要求变得越来越高在这些3D应用中加入由镜面反射产生的3D虚拟场景 的面焦散效果可显著增强绘制画面的真实感目前人们迫切需要在不明显降低绘制效率的 条件下,将面焦散效果加入到3D虚拟场景的绘制之中因此设计快速绘制由镜面反射产生 的3D虚拟场景的面焦散效果的方法具有重要的意义值得注意的是,在大多数3D虚拟场 景中,仅绘制由一次镜面反射(即对光源直接光照的镜面反射)产生的面焦散效果就可以 获得很好的真实感充分利用这一特点,可以设计出不需光子跟踪的算法来绘制由镜面反 射产生的面焦散效果发明内容本发明的目的在于提供一种快速绘制由镜面反射产生的3D虚拟场景的面焦散效 果的方法本方法首先计算所有镜面反射三角形面片顶点位置处的反射光线,根据这些反 射光线确定3D虚拟场景中的所有焦散照明体;在绘制3D虚拟场景时,如果待绘制场景点处 于某个焦散照明体之中,则在该场景点的光照值中加入此焦散照明体的贡献,从而实现对 面焦散效果的绘制本发明首先提供一种存储3D虚拟场景(A001)中的镜面反射三角形面片的顶点 位置(A002)、顶点法向量(A003)以及顶点位置处的反射光线方向向量(A004)的数据结构 (A005),在本发明中称数据结构(A005)为镜面反射顶点数据结构(A006);如图1所示,镜面反射顶点数据结构(A006)包括顶点位置的χ坐标Px(101)、顶点位置的y坐标Py(102)、 顶点位置的ζ坐标Pz (103)、顶点法向量的χ分量nx (104)、顶点法向量的y分量ny (105)、顶 点法向量的ζ分量nz (106)、顶点位置处的反射光线方向向量的χ分量Rx (107)、顶点位置处 的反射光线方向向量的y分量Ry(IOS)、顶点位置处的反射光线方向向量的ζ分量Rz(109) 等9个成员变量。

      本发明的方法(010)部分创建3D虚拟场景(A001)中的镜面反射顶点列表 (B001),并计算各镜面反射顶点位置处的反射光线方向向量,具体步骤如下步骤(SOll)将3D虚拟场景(A001)中的所有镜面反射三角形面片的顶点位 置(B002)及其法向量(B003)存入镜面反射顶点列表(B001)中,其中镜面反射顶点列表 (B001)的每个元素(B004)都是一个镜面反射顶点数据结构(A006)类型的变量;步骤(S012)对镜面反射顶点列表(B001)中的每个元素(B004),做如下计算①计算从元素(B004)包含的顶点位置指向点光源(207)位置的向量(B005);②对向量(B005)进行归一化运算;③将元素(B004)包含的顶点法向量(B003)与向量(B005)进行点乘运算,如果点 乘运算的结果小于或等于0,则将元素(B004)从镜面反射顶点列表(B001)中删除,否则以 向量(B005)与元素(B004)包含的顶点法向量(B003)的夹角为入射角,根据镜面反射定律 计算元素(B004)包含的顶点位置处的反射光线方向向量(B006),并将反射光线方向向量 (B006)的χ分量、y分量、ζ分量分别存储在元素(B004)的Rx (107)、Ry (108)、Rz (109)成员 变量之中。

      本发明的方法(020)部分创建产生焦散照明体的三角形列表(C001),具体步骤如 下步骤(S021)将3D虚拟场景(A001)中的所有镜面反射三角形面片存入一个镜面 反射三角形列表(C002)中;步骤(S022)对于镜面反射三角形列表(C002)中的每个三角形面片(C003),如果 在镜面反射顶点列表(B001)中不能一一找到与三角形面片(C003)的各个顶点位置对应的 元素,则将三角形面片(C003)从镜面反射三角形列表(C002)中删除;步骤(S023)将镜面反射三角形列表(C002)赋值给三角形列表(C001)本发明的方法(030)部分实现场景点(D001)的焦散光照值的计算,具体步骤如 下步骤(S031)创建一个包含场景点(D001)的平面(D002),且平面(D002)的法向 量平行于场景点(D001)的法向量;步骤(S032)对于三角形列表(C001)中的每个三角形面片(D003),做如下计算①在镜面反射顶点列表(B001)中找出与三角形面片(D003)包含的三个顶点位置 对应的元素的索引号,并分别赋值给索引变量idp id2和id3 ;②将索引变量Id1对应的镜面反射顶点列表(B001)的元素赋值给变量V1,将索引 变量id2对应的镜面反射顶点列表(B001)的元素赋值给变量V2,将索引变量1(13对应的镜 面反射顶点列表(B001)的元素赋值给变量V3 ; ③根据变量V1包含的顶点位置的χ坐标Px(IOl)、顶点位置的y坐标Py(102)、顶 点位置的ζ坐标Pz (103)、顶点位置处的反射光线方向向量的χ分量Rx (107)、顶点位置处的反射光线方向向量的1分量Ry (108)、顶点位置处的反射光线方向向量的Z分量Rz (109)等6个成员变量,创建一条起始于变量V1包含的顶点位置,方向平行于变量V1包含的顶点位 置处的反射光线方向向量的射线(D004),并判断射线(D004)与平面(D002)是否相交,如果 相交则计算出对应的交点(D005)并置Flagl = 1,否则置Flagl = 0 ;④根据变量V2包含的顶点位置的χ坐标Px(IOl)、顶点位置的y坐标Py(102)、顶 点位置的ζ坐标Pz (103)、顶点位置处的反射光线方向向量的χ分量Rx (107)、顶点位置处的 反射光线方向向量的y分量Ry (108)、顶点位置处的反射光线方向向量的ζ分量Rz (109)等 6个成员变量,创建一条起始于变量V2包含的顶点位置,方向平行于变量V2包含的顶点位 置处的反射光线方向向量的射线(D006),并判断射线(D006)与平面(D002)是否相交,如果 相交则计算出对应的交点(D007)并置Flag2 = 1,否则置Flag2 = 0 ;⑤根据变量V3包含的顶点位置的χ坐标Px(IOl)、顶点位置的y坐标Py(102)、顶 点位置的ζ坐标Pz (103)、顶点位置处的反射光线方向向量的χ分量Rx (107)、顶点位置处的 反射光线方向向量的y分量Ry (108)、顶点位置处的反射光线方向向量的ζ分量Rz (109)等 6个成员变量,创建一条起始于变量V3包含的顶点位置,方向平行于变量V3包含的顶点位 置处的反射光线方向向量的射线(D008),并判断射线(D008)与平面(D002)是否相交,如果 相交则计算出对应的交点(D009)并置Flag3 = 1,否则置Flag3 = 0 ;⑥如果Flagl = 1且Flag2 = 1且Flag3 = 1,则转⑦,否则三角形面片(D003)产 生的焦散照明体对场景点(D001)的光照贡献为0,结束三角形面片(D003)产生的焦散照明 体对场景点(D001)的光照贡献计算;⑦如果场景点(D001)处于由交点(D005)、交点(D007)和交点(D009)确定的三角 形之内(或者确定的直线段之上),则转⑧,否则三角形面片(D003)产生的焦散照明体对场 景点(D001)的光照贡献为0,结束三角形面片(D003)产生的焦散照明体对场景点(D001) 的光照贡献计算;⑧首先创建一个包含场景点(D001)的平面(D010),且平面(D010)的法向量平行 于三角形面片(D003)的法向量,然后计算射线(D004)与平面(D010)的交点(DOll),计算 射线(D006)与平面(D010)的交点(D012),计算射线(D008)与平面(D010)的交点(D013); 根据变量V1、变量V2、变量V3包含的顶点位置处的反射光线方向向量,通过插值计算出, 在由交点(DOll)、交点(D012)和交点(D013)确定的三角形内(或者直线段上),场景点 (D001)位置处的反射光线方向向量(D014);⑨创建一条起始于场景点(D001)位置,方向平行于反射光线方向向量(D014)的 反向向量的射线(D015);计算射线(D015)与三角形面片(D003)的交点(D016);创建一条 起始于交点(D016),终止于点光源(207)位置的线段(D017);测试3D虚拟场景(A001)中 是否有三角形面片(D018)与线段(D017)有交,如果无交则转⑩,否则三角形面片(D003) 相对于点光源(207)被部分遮挡,其产生的焦散照明体对场景点(D001)的光照贡献为0,结 束三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献计算;⑩计算由交点(DOll)、交点(D012)和交点(D013)确定的三角形的面积与三角 形面片(D003)的面积之比α (D019);创建从交点(D016)指向点光源(207)位置的向量 (D020);对向量(D020)进行归一化计算;根据三角形面片(D003)的三个顶点位置,计算 三角形面片(D003)的表面法向量(D021);根据点光源(207)到交点(D016)的距离、向量(D020)与表面法向量(D021)的夹角以及点光源(207)的辐射亮度,计算三角形面片 (D003)的照明度(D022),将照明度(D022)乘以面积之比α (D019)并赋值给变量I (D023); 根据变量I(D023)的值、场景点(D001)的材质属性以及场景点(D001)的法向量与反射光 线方向向量(D014)的反向向量的夹角,按照光照反射模型计算三角形面片(D003)产生的 焦散照明体对场景点(D001)的光照贡献值,并将其加到场景点(D001)的总光照值之中。

      有益效果本发明提供了一种由镜面反射产生的3D虚拟场景面焦散效果的绘制方法本发 明方法与光子映射方法相比,避免了对大量的从光源发射的光子的跟踪运算,提高了面焦 散效果的绘制效率另外,本发明方法能够很容易地集成到光线跟踪等全局光照绘制算法 框架之中,可显著地提高3D虚拟场景画面绘制的真实感图1是镜面反射顶点数据结构示意图具体实施例方式为了使本发明的特征和优点更加清楚明白,下面参照附图结合具体实施例对本发 明 作进一步的描述在本实施例中,使用光线跟踪算法绘制3D虚拟场景由于光线跟踪算法只对镜面 反射光线进行递归跟踪,因此无法绘制出漫反射表面上的面焦散效果为此,需要在场景点 的光照值计算中增加一个新过程,以便获得场景点的焦散光照值计算出所有待绘制场景 点的焦散光照值,就实现了对3D虚拟场景面焦散效果的绘制将焦散光照值加到标准光线 跟踪算法计算出的场景点光照值之中,可进一步地把面焦散效。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.