欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2014106367052
申请人: 长春理工大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-02-26
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.用于近似绘制三维场景柔和阴影的方法,其特征在于,所需的设备、数据结构以及实现步骤如下:提供一种用于近似绘制三维场景柔和阴影的方法;本方法要求三维场景的所有几何对象的表面都是郎伯漫反射类型的表面;平面面光源上的任意一点ps向平面面光源所在平面的法向量指向的半空间内的各个方向均匀地发射光照,平面面光源上的各点的发光特性相同;三维场景柔和阴影绘制的关键是,高效地计算每个可视场景点的平面面光源可见性;

本方法使用光线投射技术,从视点向虚拟屏幕中的各个像素发射光线A001,判断光线A001是否与三维场景中的几何对象相交,如果光线A001与三维场景中的几何对象相交,则利用计算机系统求解交点A002处的平面面光源可见性,并计算平面面光源对交点A002的光照贡献A003,再根据光照贡献A003计算与光线A001相对应的像素的颜色值,否则将与光线A001相对应的像素的颜色值设置为背景颜色值;在光线投射过程中,平面面光源不作为几何对象处理;

本方法的第一部分在计算机系统中计算三维场景可视区域内的各个可视场景点的平面面光源可见性,并将计算结果保存在计算机系统的内存中,具体实现步骤如下:Step001:在计算机系统的内存中创建一个M行N列的数组V,其中M为虚拟屏幕的像素总行数,N为虚拟屏幕的像素总列数;

Step002:对虚拟屏幕中的每个像素B001,做如下操作:

Step002-1:从视点发射一条穿过像素B001中心的光线B002;

Step002-2:判断光线B002是否与三维场景中的几何对象相交,如果不相交,则令vis=-1,转步骤Step002-8;

Step002-3:计算光线B002与三维场景中的几何对象之间的离视点最近的交点B003;

Step002-4:在平面面光源上任选一点ps,创建一个从点ps指向交点B003的向量Vec1;

如果向量Vec1和平面面光源所在平面的法向量的夹角大于或者等于90度,令vis=0,转步骤Step002-8;

Step002-5:令SUM=0;

Step002-6:在平面面光源上,按均匀分布随机地选取NUM个采样点,NUM≥1,对每个采样点B004,做如下操作:Step002-6-1:连接交点B003和采样点B004,得到一条线段B005;判断线段B005与三维场景中的几何对象之间是否还有除线段B005的端点外的交点,如果有,则转步骤Step002-6-3;

Step002-6-2:SUM=SUM+1;

Step002-6-3:针对采样点B004的操作结束;

Step002-7:令vis=SL×SUM/NUM,SL表示平面面光源的面积;

Step002-8:计算像素B001在虚拟屏幕中所处的行序号i和列序号j;

Step002-9:将数组V的第i行、第j列元素赋值为vis;

本方法的第二部分对本方法的第一部分产生的数组V中的数据进行滤波处理,降低随机采样引入的噪声,具体实现步骤如下:Step101:在计算机系统的内存中创建一个M行N列的数组V2,其中M为虚拟屏幕的像素总行数,N为虚拟屏幕的像素总列数;令i=1;

Step102:令j=1;

Step103:如果i+1>M或者i-1<1或者j+1>N或者j-1<1,则将数组V2的第i行、第j列元素赋值为数组V的第i行、第j列元素的值,转步骤Step106;

Step104:如果数组V的从第i-1到i+1行、从第j-1到j+1列的9个元素中的某个元素的值为-1,则将数组V2的第i行、第j列元素赋值为数组V的第i行、第j列元素的值,转步骤Step106;

Step105:用3行3列的空间卷积模板与数组V的从第i-1到i+1行、从第j-1到j+1列的9个元素做空间卷积,cmn为空间卷积模板的第m行、第n列元素,即:将数组V的第i-1行、第j-1列的元素的值与c11之积赋值给S11,将数组V的第i-1行、第j列的元素的值与c12之积赋值给S12,将数组V的第i-1行、第j+1列的元素的值与c13之积赋值给S13,将数组V的第i行、第j-1列的元素的值与c21之积赋值给S21,将数组V的第i行、第j列的元素的值与c22之积赋值给S22,将数组V的第i行、第j+1列的元素的值与c23之积赋值给S23,将数组V的第i+1行、第j-1列的元素的值与c31之积赋值给S31,将数组V的第i+1行、第j列的元素的值与c32之积赋值给S32,将数组V的第i+1行、第j+1列的元素的值与c33之积赋值给S33,将数组V2的第i行、第j列元素赋值为S11+S12+S13+S21+S22+S23+S31+S32+S33;

Step106:j=j+1;如果j≤N,转步骤Step103;

Step107:i=i+1;如果i≤M,转步骤Step102;

在步骤Step105中需要用到空间卷积模板,其用来实现平滑去噪,以减小随机采样引入的噪声;图像处理技术领域中有许多不同的平滑去噪空间卷积模板可以应用在本方法中;例如,可以使用平滑去噪空间卷积模板SF,空间卷积模板SF的各个元素取值为:c11=c12=c13=c21=c22=c23=c31=c32=c33=1/9;

本方法的第三部分在本方法的前两部分产生的结果基础上,绘制包含柔和阴影的三维场景画面,具体实现步骤如下:Step201:对虚拟屏幕中的每个像素C001,做如下操作:

Step201-1:从视点发射一条穿过像素C001中心的光线C002;

Step201-2:判断光线C002是否与三维场景中的几何对象相交,如果不相交,转步骤Step201-7;

Step201-3:计算光线C002与三维场景中的几何对象之间的离视点最近的交点C003;

Step201-4:将∫LG(po,q)dq赋值给MG,其中po表示交点C003对应的位置向量,q为平-2面面光源上的某点对应的位置向量,G(po,q)=cos(θ1)·cos(θ2)·|po-q| ,θ1表示交点C003处的法向量与由交点C003指向q对应的点的向量之间的夹角,θ2表示q对应的点的法向量与由q对应的点指向交点C003的向量之间的夹角,|po-q|表示交点C003到q对应的点的距离,L表示平面面光源;可用蒙特卡洛方法计算∫LG(po,q)dq,也可用和Hanrahan发表在1993年的Siggraph会议论文集上的方法计算∫LG(po,q)dq;

Step201-5:计算像素C001在虚拟屏幕中所处的行序号i和列序号j;将MV赋值为数组V2的第i行、第j列元素的值与 之积,其中 为平面面光源的发射光亮度;

Step201-6:将CP赋值为MG×MV×ρ/π,其中ρ为交点C003处的反射率;根据CP的值计算像素C001的颜色值;转步骤Step201-8;

Step201-7:将像素C001的颜色值赋值为背景色;

Step201-8:针对像素C001的操作结束;

Step202:将虚拟屏幕中的所有像素的颜色值保存为图片,存放到计算机系统的磁盘文件中。