[发明专利]光源可见性复用范围的自适应3D场景绘制方法有效

专利信息
申请号: 201711103516.9 申请日: 2017-11-10
公开(公告)号: CN107909639B 公开(公告)日: 2021-02-19
发明(设计)人: 陈纯毅;杨华民;蒋振刚;李华 申请(专利权)人: 长春理工大学
主分类号: G06T15/06 分类号: G06T15/06;G06T15/50
代理公司: 吉林长春新纪元专利代理有限责任公司 22100 代理人: 王薇
地址: 130022 *** 国省代码: 吉林;22
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明涉及一种根据位置自适应控制光源可见性复用范围的3D场景绘制方法,该方法根据待绘制场景点及其邻近可视场景点与特点光源采样点的连线夹角大小来控制光源可见性复用范围,而不是简单地仅通过可视场景点间距控制光源可见性复用范围。本方法对于不同可视场景区域的待绘制可视场景点,可以自适应地确定与之匹配的可见性复用范围,达到增强光源可见性复用准确性的目的,进而提高3D场景的直接光照效果绘制质量。
搜索关键词: 光源 可见 性复用 范围 自适应 场景 绘制 方法
【主权项】:
根据位置自适应控制光源可见性复用范围的3D场景绘制方法,其特征在于:把虚拟相机放在视点位置,按照相机观察参数,利用光线投射技术绘制3D场景;对于每条从视点出发穿过虚拟像素平面上的像素的光线A001,光线A001和虚拟像素平面上的像素一一对应,判断光线A001与3D场景的几何对象是否相交,如果相交则进一步计算光线A001与3D场景的几何对象的离视点最近的交点A002,交点A002为一个可视场景点,同时在面光源上随机产生NUM个服从均匀分布的光源采样点A003,记录这NUM个光源采样点A003的空间位置,并计算每个光源采样点A003与交点A002之间的可见性VIS;对于每个交点A002,通过复用交点A002的在一个特定区域内的邻近可视场景点的面光源采样点及可见性计算结果来加速计算面光源对交点A002的近似直接光照值;具体实现步骤如下:提供一种数据结构LSPD,用于存储与面光源采样点相关的数据;数据结构LSPD包括光源采样点的空间位置和光源采样点的可见性共两个成员变量;1)实现对面光源的采样,以及计算面光源采样点与可视场景点之间的可见性,具体步骤如下:步骤Step101:把虚拟相机放在视点位置,按照相机观察参数,利用光线投射技术绘制3D场景;对于每条从视点出发穿过虚拟像素平面上的像素的光线A001,光线A001与虚拟像素平面上的像素一一对应,判断光线A001与3D场景的几何对象是否相交,如果相交则进一步计算光线A001与3D场景的几何对象的离视点最近的交点A002,交点A002为一个可视场景点,可视场景点对应了虚拟像素平面上的一个唯一的像素;步骤Step102:创建一个包含M行、N列元素的数组LS,M为虚拟像素平面上的像素行数,N为虚拟像素平面上的像素列数;数组LS的每个元素存储一个列表A004,列表A004的每个元素存储一个数据结构LSPD类型的变量;令数组LS的每个元素存储的列表A004为空;数组LS的每个元素和虚拟像素平面上的像素一一对应;步骤Step103:对于每个可视场景点PV,执行如下操作:在面光源上随机产生NUM个服从均匀分布的光源采样点A003;在计算机存储器中创建NUM个数据结构LSPD类型的变量,其与NUM个光源采样点A003一一对应;把每个光源采样点A003的空间位置赋值给与之对应的数据结构LSPD类型的变量的光源采样点的空间位置成员变量;对于每个光源采样点A003,判断从光源采样点A003的空间位置到可视场景点PV的线段是否与3D场景的几何对象相交,如果相交,则令与光源采样点A003对应的数据结构LSPD类型的变量的光源采样点的可见性成员变量的值为0,否则令与光源采样点A003对应的数据结构LSPD类型的变量的光源采样点的可见性成员变量的值为1;把NUM个光源采样点A003对应的NUM个数据结构LSPD类型的变量添加到可视场景点PV对应的虚拟像素平面上的像素对应的数组LS的元素存储的列表A004中;2)对每个可视场景点的近似直接光照值计算,并绘制出3D场景的直接光照效果,具体步骤如下:步骤Step201:创建一个包含M行、N列元素的数组ILU,M为虚拟像素平面上的像素行数,N为虚拟像素平面上的像素列数;数组ILU的每个元素与虚拟像素平面上的像素一一对应,数组ILU的每个元素用于保存虚拟像素平面上的像素对应的可视场景点的直接光照值;令数组ILU的每个元素的值为背景色对应的光照值;把步骤Step101中得到的所有可视场景点放到一个列表B001中,列表B001中的每个元素都存储一个可视场景点,列表B001的元素个数等于步骤Step101中得到的所有可视场景点的个数;步骤Step202:对于每个可视场景点EV,执行如下操作:步骤Step202‑1:令PA0代表可视场景点EV;令α1代表从面光源中心点指向PA0的向量;创建一个列表LREUSE,列表LREUSE的每个元素存储一个与PA0邻近的适合参与光源可见性复用的可视场景点;令列表LREUSE为空;步骤Step202‑2:对于列表B001中的每个元素B002,执行如下操作:令α2代表从面光源中心点指向元素B002存储的可视场景点的向量;如果(α1·α2)/(|α1|·|α2|)大于Ta,则把元素B002存储的可视场景点添加到列表LREUSE中;|α1|表示向量α1的模,|α2|表示向量α2的模,Ta表示参考面光源中心点的方向差异阈值;步骤Step202‑3:创建一个列表LRULS,用于存储数据结构LSPD类型的变量;令列表LRULS为空;步骤Step202‑4:对列表LREUSE中的每个元素B003,执行如下操作:令LA1代表元素B003存储的可视场景点对应的虚拟像素平面上的像素对应的数组LS的元素存储的列表A004;令PA1代表元素B003存储的可视场景点;对于LA1中存储的每个数据结构LSPD类型的变量B004,执行如下操作:令β1代表从变量B004的光源采样点的空间位置成员变量所表示的空间位置指向PA0的向量;令β2代表从变量B004的光源采样点的空间位置成员变量所表示的空间位置指向PA1的向量;令n1代表PA0所在位置的归一化几何对象表面法向量;n2代表PA1所在位置的归一化几何对象表面法向量;如果(β1·β2)/(|β1|·|β2|)大于Tb且PA0到PA1的距离小于Td且(n1·n2)大于Tn,则把变量B004添加到列表LRULS中;|β1|表示向量β1的模,|β2|表示向量β2的模;Tb表示参考光源采样点的方向差异阈值,Td表示距离差异阈值,Tn表示法向量差异阈值;步骤Step202‑5:令nsi为列表LRULS中存储的数据结构LSPD类型的变量个数;如果nsi≥Nst,则转步骤Step202‑6,否则按均匀分布在面光源上随机产生Nst‑nsi个光源采样点C001,在计算机存储器中创建Nst‑nsi个数据结构LSPD类型的变量,其与Nst‑nsi个光源采样点C001一一对应,把每个光源采样点C001的空间位置赋值给与之对应的数据结构LSPD类型的变量的光源采样点的空间位置成员变量;对于每个光源采样点C001,判断从光源采样点C001的空间位置到PA0的线段是否与3D场景的几何对象相交,如果相交,则令与光源采样点C001对应的数据结构LSPD类型的变量的光源采样点的可见性成员变量为0,否则令与光源采样点C001对应的数据结构LSPD类型的变量的光源采样点的可见性成员变量为1;把Nst‑nsi个光源采样点C001对应的Nst‑nsi个数据结构LSPD类型的变量添加到列表LRULS中;Nst表示估计可视场景点的近似直接光照值所需的最少光源采样点数;步骤Step202‑6:根据列表LRULS中存储的所有数据结构LSPD类型的变量的光源采样点的空间位置成员变量的值来确定PA0的蒙特卡罗直接光照值估计所需的光源采样点,用列表LRULS中存储的所有数据结构LSPD类型的变量的光源采样点的可见性成员变量的值作为对应的光源采样点对PA0的可见性近似值,并使用蒙特卡罗直接光照值估计技术来计算PA0的直接光照近似值C002;步骤Step202‑7:计算PA0对应的虚拟像素平面上的像素在虚拟像素平面上的行号irow和列号jcol;把数组ILU的第irow行、第jcol列的元素赋值为直接光照近似值C002;步骤Step203:把数组ILU的每个元素保存的直接光照值转换成3D场景画面图像像素颜色值,并把3D场景画面图像显示在显示器上。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于长春理工大学,未经长春理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201711103516.9/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top