[发明专利]基于虚拟点光源的复杂真实感三维场景渐进交互式绘制方法有效
申请号: | 201811370909.0 | 申请日: | 2018-11-20 |
公开(公告)号: | CN109472856B | 公开(公告)日: | 2022-12-09 |
发明(设计)人: | 陈纯毅;杨华民;蒋振刚;曲福恒;李华;权巍 | 申请(专利权)人: | 长春理工大学 |
主分类号: | G06T15/50 | 分类号: | G06T15/50;G06T15/06 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 130022 *** | 国省代码: | 吉林;22 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种基于虚拟点光源的复杂真实感三维场景渐进交互式绘制方法。本方法使用计算机绘制线程程序实现三维场景画面绘制操作,使用计算机显示线程程序实现三维场景画面显示操作,计算机绘制线程程序和计算机显示线程程序能够并行执行。使用本发明绘制真实感三维场景,设计师能随时使用交互控制命令来修改三维场景模型和视点观察参数,同时不断获得越来越精化的三维场景全局光照效果绘制画面,以便既能快速地获得三维场景画面视觉效果反馈,又能方便地得到高品质的全局光照效果绘制画面。 | ||
搜索关键词: | 基于 虚拟 光源 复杂 真实感 三维 场景 渐进 交互式 绘制 方法 | ||
【主权项】:
1.基于虚拟点光源的复杂真实感三维场景渐进交互式绘制方法,其特征在于,需要在计算机系统中执行计算机绘制线程程序和计算机显示线程程序,具体步骤如下:Step101:通过计算机绘制线程程序在计算机系统的全局共享内存中创建一个命令队列CmdQ,把命令队列CmdQ设置成空队列;通过计算机绘制线程程序在计算机系统的全局共享内存中创建一个计数器Counter,把计数器Counter的值设置成0;Step102:在计算机绘制线程程序中,根据三维场景模型以及光源LS的参数,使用随机走步法从光源出发跟踪Npath条光线传输路径,创建Mvpl个虚拟点光源A001,在此过程中计算出每个虚拟点光源A001的所在位置坐标POS、所在位置法向量VN、所在位置的表面双向反射分布函数BRDF、光入射方向VI和光通量Φ;把虚拟点光源A001的所在位置坐标POS、所在位置法向量VN、所在位置的表面双向反射分布函数BRDF、光入射方向VI以及光通量Φ与虚拟点光源A001关联在一起;Step103:在计算机绘制线程程序中,使用k‑means聚类技术对步骤Step102中创建的Mvpl个虚拟点光源A001进行聚类,得到Ncls个簇A002,每个簇A002包含若干相似的虚拟点光源A001;在执行k‑means聚类操作时,虚拟点光源A001到簇A002的中心的距离计算公式为D=w1Δx+w2Δα,Δx表示虚拟点光源A001的所在位置到簇A002的中心位置的欧氏距离,Δα表示虚拟点光源A001的所在位置法向量VN与簇A002的法向量之间的夹角;Step104:在计算机绘制线程程序中,根据三维场景模型、光源LS的参数以及视点观察参数,使用光栅化与阴影映射技术绘制三维场景,得到三维场景的可视区域在光源LS的照射下的直接光照图像A003;把直接光照图像A003保存在计算机系统的全局共享内存中;如果全局共享内存中不存在间接光照图像INDIMAG,则在计算机系统的全局共享内存中创建直接光照图像A003的一个副本并重命名为间接光照图像INDIMAG,同时把间接光照图像INDIMAG的每个像素的值更改为0;Step105:在计算机显示线程程序中,读取全局共享内存中的直接光照图像A003,把直接光照图像A003转换成可以在显示器上显示的三维场景图像画面并显示在显示器上;Step106‑A:在计算机绘制线程程序中,执行如下操作:Step106‑A‑1:在计算机绘制线程程序中,判断全局共享内存中的命令队列CmdQ是否为空,如果为空,则转步骤Step106‑A‑2,否则转步骤Step106‑A‑3;Step106‑A‑2:如果全局共享内存中的计数器Counter的值大于Mcnt,则转步骤Step106‑A‑4,否则执行以下操作:针对步骤Step103中得到的每个簇A002,按均匀分布从每个簇A002中随机选取一个虚拟点光源A001,共得到Ncls个虚拟点光源A001,用通过随机选取产生的这Ncls个虚拟点光源A001照射三维场景,根据三维场景模型、视点观察参数以及这Ncls个虚拟点光源A001的所在位置坐标POS、所在位置法向量VN、所在位置的表面双向反射分布函数BRDF、光入射方向VI和光通量Φ参数值,使用光栅化与阴影映射技术绘制三维场景,得到三维场景的可视区域在这Ncls个虚拟点光源A001的照射下的间接光照图像B001;令I0表示全局共享内存中的间接光照图像INDIMAG的第row行、第col列像素的值,令I1表示间接光照图像B001的第row行、第col列像素的值,令nct表示计数器Counter的值,把全局共享内存中的间接光照图像INDIMAG的第row行、第col列像素的值更新为I0×nct/(1+nct)+I1/(1+nct),其中row=1,2,…,Mpix,col=1,2,…,Npix,Mpix表示间接光照图像B001的像素行数,Npix表示间接光照图像B001的像素列数;令计数器Counter的值增加1,即Counter=Counter+1;转步骤Step106‑A‑4;Step106‑A‑3:执行如下步骤:Step106‑A‑3‑1:从全局共享内存中的命令队列CmdQ的队首取出一个交互控制命令A004,判断交互控制命令A004是否为关闭绘制程序命令,如果是,则转步骤Step107,否则根据交互控制命令A004对三维场景模型和视点观察参数执行变换更新操作;Step106‑A‑3‑2:如果命令队列CmdQ不为空,转步骤Step106‑A‑3‑1,否则把全局共享内存中的计数器Counter的值设置成0,把全局共享内存中的间接光照图像INDIMAG的所有像素的值赋值为0,转步骤Step102;Step106‑A‑4:转步骤Step106‑A‑1;Step106‑B:在计算机显示线程程序中,执行以下操作:Step106‑B‑1:在计算机显示线程程序中,读取全局共享内存中的直接光照图像A003和间接光照图像INDIMAG,把直接光照图像A003与间接光照图像INDIMAG相加在一起的结果转换成可以在显示器上显示的三维场景图像画面并显示在显示器上,接收设计师发出的交互控制命令A004,把交互控制命令A004添加到计算机系统的全局共享内存中的命令队列CmdQ的队尾;Step106‑B‑2:转步骤Step106‑B‑1;Step107:三维场景绘制结束,终止计算机绘制线程程序和计算机显示线程程序;从步骤Step101至步骤Step105,计算机绘制线程程序和计算机显示线程程序按照步骤Step101至步骤Step105的顺序先后执行相应操作;计算机绘制线程程序执行步骤Step106‑A和计算机显示线程程序执行步骤Step106‑B是并行的;计算机绘制线程程序和计算机显示线程程序可以对计算机系统的全局共享内存执行读和写操作,对于共享数据的读取采用操作系统的信号量机制实现互斥。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于长春理工大学,未经长春理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811370909.0/,转载请声明来源钻瓜专利网。