[发明专利]快速百分比靠近软阴影绘制方法有效
| 申请号: | 201811300421.0 | 申请日: | 2018-11-02 |
| 公开(公告)号: | CN109493406B | 公开(公告)日: | 2022-11-11 |
| 发明(设计)人: | 朱敏;王建华;李晓伟;杨瑞丰;陈奕筱 | 申请(专利权)人: | 四川大学 |
| 主分类号: | G06T15/00 | 分类号: | G06T15/00;G06T15/60;G06T1/60 |
| 代理公司: | 成都信博专利代理有限责任公司 51200 | 代理人: | 王沙沙 |
| 地址: | 610065 四川*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 快速 百分比 靠近 阴影 绘制 方法 | ||
1.一种快速百分比靠近软阴影绘制方法,其特征在于,包括以下步骤:
步骤1:生成缩减式多尺度阴影图;
步骤1.1:设置阴影图的大小为2k×2k,k为自然数;以面光源中心为视点对场景进行绘制,将场景深度信息保存到阴影图中,并将阴影图作为缩减式多尺度阴影图的第0层;用i表示当前处理的层数,并设置i=1;
步骤1.2:如果i>k,流程结束;否则需要计算第i层数据,该层的大小为(2k-2i-1)×(2k-2i-1),相对于阴影图来说,左、上边少了2i-1个像素,右、下边少了2i-1-1个像素;在对第i层坐标为(x,y)的像素进行计算时,需要第i-1层4个像素存储的信息,这些信息包括区域内最小深度值、区域内最大深度值、区域内深度值之和以及区域内像素个数;如果i=1,则4个像素的坐标分别为(x-1,y-1)、(x-1,y)、(x,y-1)以及(x,y);否则,4个像素的坐标分别为(x-2i-2,y-2i-2)、(x+2i-2,y-2i-2)、(x-2i-2,y+2i-2)以及(x+2i-2,y+2i-2);i的值加1,重复步骤1.2;
在使用缩减式多尺度阴影图对阴影图进行查询时,若查询区域的大小不是2n×2n,n为自然数,需要寻找一个与其相似且大小为2n×2n的区域来替代它;设原区域的中心点坐标为(qx,qy),区域大小为qs×qs,近似区域的中心点坐标为(qx′,qy′),大小为qs′×qs′,则近似区域的计算方式为:
1)计算原区域的左边界l、右边界r、上边界t以及下边界b;
2)设阴影图的大小为e,需要将区域的边界限制在阴影图内;
l=max(l,0)
r=min(l,e-1)
t=max(l,0)
b=min(l,e-1)
3)设w=r-l+1、h=b-t+1,w和h分别表示了查询区域的宽度和高度;设lw=log2w,lh=log2h,其反映查询区域的宽和高是否形如2n;用w′表示w的形如2n的近似值,如果lw为整数,则令w′=w;否则,将w写成二进制形式,如果次高位为1,则否则
4)用h′表示h的形如2n的近似值,如果lh为整数,则令h′=h,否则,将h写成二进制形式,如果次高位为1,则否则
5)如果w′=h′,则令qs′=w′,否则令qs′=min(min(w′,h′)×2,e);
6)计算限制后的区域的中心(qx′,qy′);
qx′=l+qs′/2
qy′=t+qs′/2
7)如果(qx′+qs′/2-1)≥e,则令qx′=e-1-qs′/2+1;如果(qy′+qs′/2-1)≥e,则令qy′=e-1-qs′/2+1;
步骤2:对场景进行延迟渲染,生成G缓存;
步骤3:计算各像素的搜索区域,并保存为搜索区域图;
步骤4:使用σ1=0.0,σ2=σ3=0.1的差异性上界、4×4的局部区域,并且在父亲像素中保存孩子的位置信息,得到搜索区域图的层级结构图;其中,σ1、σ2、σ3分别代表两像素间可容忍的区域大小差异、区域中心点差异、深度值差异的最大值;
步骤5:利用3层的线性四叉树进行快速遍历,在遍历时使用缩减式多尺度阴影图查询当前遍历区域,接着使用查询到的信息,对代表像素进行处理,得到代表像素的遮挡物平均深度;
步骤6:利用搜索区域图的层级结构图,填充其余像素的平均遮挡物深度;
步骤7:计算各像素的半影大小;
步骤8:根据半影大小计算各像素的过滤区域范围并保存为过滤区域图;
步骤9:利用σ1=0.0,σ2=σ3=0.1的差异性上界、2×2的局部区域,并且在父亲像素中保存孩子的位置信息,得到过滤区域图的层级结构图;
步骤10:利用3层的线性四叉树进行快速遍历,在遍历时使用缩减式多尺度阴影图查询当前遍历区域,接着使用查询到的信息,对代表像素进行处理,得到代表像素的软阴影值;
步骤11:利用过滤区域图的层级结构图,填充其余像素的软阴影值并保存为软阴影图;
步骤12:对软阴影图进行模糊处理,即使用过滤内核为3×3的高斯滤波,以使生成的软阴影更加平滑;
所述步骤5和步骤10中,进行快速遍历为:给定待测值test以及测试区域a,计算区域a中深度值小于test的像素总数count以及这些像素的像素值之和sum,具体如下:
1)将sum和count初始化为0;
2)得到测试区域a内所有像素的最大值v max和最小值v min;
3)如果test<vmin,说明该区域内不存在小于test的值,因此不改变sum和count,并进行步骤4);如果test>vmax,说明该区域内所有的值都小于test,因此使用缩减式多尺度阴影图获取该区域内像素值之和以及像素总数,分别加到sum和count上,并进行步骤4);否则,说明当前信息不足以完成正确的计算,如果已经遍历到设置的最大层数,就会对该区域进行采样,并利用采样信息得到sum和count的估计值;否则,要将区域a分成多个更小的区域;
4)确定将要遍历的下一区域,如果下一区域存在,则进行步骤2)至3),否则说明已经完成遍历,流程结束;
在进行快速遍历时利用采样信息提高计算结果的精确度,即:
使用数量为1、4以及16的采样点组,而且对于每种数量,生成8个不同的采样点组,将采样点的位置标准化到0~1之间,并将所有的采样点组保存为一幅大小为21×8的图像;对于中心为(px,py),大小为ps×ps区域,采样具体如下:
1)用g表示所需的采样点组序号,采样点数量为1的采样点组编号为0,采样点数量为4的采样点组编号为1,采样点数量为16的采样点组编号为2;设置g=ps/2,将g限定在1~4之间,并令g=log2g;
2)设m=(px+py)mod(8),则使用的采样点组为第m套,而且在第m套采样组中,所需的采样点的起始位置为(4g-1)/3,终止位置为4×(4g-1)/3;
3)对所有标准化的采样点位置按区域大小进行放缩,并进行采样。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川大学,未经四川大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811300421.0/1.html,转载请声明来源钻瓜专利网。





