发明名称 包含由镜面反射产生的面焦散效果的3D虚拟场景的近似绘制方法
摘要 本发明公开一种包含由镜面反射产生的面焦散效果的3D虚拟场景的近似绘制方法,属于真实感三维虚拟场景绘制技术领域。本方法通过三个绘制操作步骤来完成包含面焦散效果的3D虚拟场景的绘制。第一步将虚拟相机放置在点光源处,绘制3D虚拟场景中的镜面反射物体表面,创建虚拟聚光灯来模拟镜面反射光线产生的二次光照;第二步将虚拟相机放置在眼睛处,绘制所有虚拟聚光灯照射下的3D虚拟场景的漫反射物体表面,得到面焦散绘制结果;第三步将虚拟相机放置在眼睛处,绘制点光源照射下的3D虚拟场景的所有物体表面。合并第二和第三步的绘制结果,得到最终的3D虚拟场景的绘制结果。本发明方法的绘制时间仅相当于光子映射方法的10%~15%。
申请公布号 CN102298792A 申请公布日期 2011.12.28
申请号 CN201110225284.0 申请日期 2011.08.08
申请人 长春理工大学 发明人 陈纯毅;杨华民;蒋振刚;范静涛;李岩芳;冯欣;底晓强;李华;李奇;丁莹;陈占芳;韩成
分类号 G06T15/50(2006.01)I 主分类号 G06T15/50(2006.01)I
代理机构 代理人
主权项 包含由镜面反射产生的面焦散效果的3D虚拟场景的近似绘制方法,其特征在于,技术解决方案和具体步骤如下:本发明方法的目的在于提高3D虚拟场景中由镜面反射产生的面焦散效果的绘制速度,减少在影视特效、游戏、视景仿真等应用中设计3D虚拟场景时的预览时间开销;本发明方法的技术解决方案:包含由镜面反射产生的面焦散效果的3D虚拟场景的近似绘制方法,首先将虚拟相机放置在点光源S的位置上,利用光栅化技术绘制3D虚拟场景中的所有镜面反射物体表面,记录所有片段的空间位置及表面法线,然后根据记录的片段的空间位置及表面法线数据创建虚拟聚光灯列表,用虚拟聚光灯列表中的所有聚光灯照射3D虚拟场景,再将虚拟相机放置在眼睛位置处,利用光栅化技术绘制3D虚拟场景中的所有漫反射物体表面,将像素缓存中的绘制结果保存在变量PIX1中;将虚拟相机放置在眼睛位置处,用点光源S照射3D虚拟场景,利用光栅化技术绘制3D虚拟场景中的所有物体表面,将像素缓存中的绘制结果保存在变量PIX2中;合并变量PIX1和变量PIX2的绘制结果,即得到最终的包含面焦散效果的绘制结果;本发明方法的具体步骤如下:Step001:创建一个中心位于点光源S的位置的正立方体,且该正立方体将3D虚拟场景完全包裹;从正立方体的各个顶点向光源S的位置连线,将整个正立方体空间等分为6份,每份等分空间形成一个正四棱锥,记为正四棱锥Q1、正四棱锥Q2、正四棱锥Q3、正四棱锥Q4、正四棱锥Q5和正四棱锥Q6;Step002:创建一个空的虚拟聚光灯列表L;Step003:对于第i个正四棱锥Qi,i=1,2,...,6,做如下计算:①将虚拟相机放置在点光源S的位置上,根据正四棱锥Qi的几何参数来设置虚拟相机的透视投影视域体参数,使虚拟相机的透视投影视域体与正四棱锥Qi重叠;打开深度测试,绘制3D虚拟场景中的所有镜面反射物体表面;在片段着色程序中,对于所有通过深度测试的片段(A001),将片段(A001)的空间位置(A002)及表面法线(A003)记录在像素缓存(A004)中;②对于像素缓存(A004)中记录的每个片段(A001)的空间位置(A002)及表面法线(A003)数据,做如下计算:首先,根据片段(A001)的表面法线(A003)和从片段(A001)的空间位置(A002)向点光源S的位置的连线,确定光线的入射角,按照理想镜面反射定律,计算反射光线方向(A005);然后,创建一个虚拟聚光灯(A006),虚拟聚光灯(A006)的位置设置在片段(A001)的空间位置(A002)处,虚拟聚光灯(A006)的中线方向设置为反射光线方向(A005),虚拟聚光灯(A006)的发散角设置为π/2n+1弧度,其中n≥0为镜面反射的汇聚度;最后,将虚拟聚光灯(A006)添加到虚拟聚光灯列表L中;Step004:关闭点光源S,使用虚拟聚光灯列表L中的所有虚拟聚光灯照射3D虚拟场景;将虚拟相机放置在眼睛位置处,打开深度测试,按照正常的绘制流程,绘制3D虚拟场景中的所有漫反射物体表面,获得虚拟聚光灯列表L中的所有虚拟聚光灯对各漫反射物体表面的光照贡献,将绘制结果保存在像素缓存中;将像素缓存中的绘制结果保存在变量PIX1中;Step005:仅以点光源S照射3D虚拟场景,将虚拟相机放置在眼睛位置处,打开深度测试,按照正常的绘制流程,绘制3D虚拟场景中的所有物体表面,获得点光源S对3D虚拟场景中的物体表面的光照贡献,将绘制结果保存在像素缓存中;将像素缓存中的绘制结果保存在变量PIX2中;Step006:合并变量PIX1和变量PIX2中的绘制结果,得到最终的包含面焦散效果的绘制结果。
地址 130022 吉林省长春市卫星路7089号