基于空间复用的真实感虚拟3D场景光场投影图像绘制方法技术

技术编号:17706758 阅读:36 留言:0更新日期:2018-04-14 19:10
本发明专利技术公开一种基于空间复用的真实感虚拟3D场景光场投影图像绘制方法,其特征在于:在绘制虚拟相机阵列拍摄的各幅虚拟3D场景画面时,通过对光照计算结果进行空间复用来加快3D场景画面的绘制速度。对于面光源照射下的虚拟3D场景的间接光照结果,该方法使用光子映射技术来实现在绘制各个虚拟相机拍摄画面时对间接光照计算结果的空间复用。对于面光源照射下的虚拟3D场景的直接光照结果,该方法对面光源采样点的可见性计算结果进行空间复用。

【技术实现步骤摘要】
基于空间复用的真实感虚拟3D场景光场投影图像绘制方法
本专利技术涉及一种基于空间复用的真实感虚拟3D场景光场投影图像绘制方法,属于3D场景绘制和显示

技术介绍
当前,真三维显示技术受到人们的广泛关注。光场三维显示技术是近年来出现的一种新型真三维显示技术。发表在《液晶与显示》2017年32卷4期的论文《基于液晶多层屏的3D显示系统和算法设计》介绍的多层LCD三维显示系统就是光场三维显示技术的一种具体实现。目前,主要有两种用于获取光场三维显示系统显示的三维数据的方法;一种是针对实际3D场景的360度多视角图像采集方法,其使用围绕实际3D场景圆周分布的CCD相机阵列从多个视角对场景的不同侧面进行拍摄,得到相应的拍摄图像;另一种是使用虚拟相机阵列拍摄虚拟3D场景,以获得虚拟3D场景的光场的投影图像。如果把光场三维显示技术应用在影视娱乐中,就显示内容制作而言,第二种方法可根据需要使用软件创建三维场景,因此具有更大的灵活性。已有文献对虚拟3D场景的光场的投影图像生成过程作过论述,例如,发表在《液晶与显示》2017年32卷4期的论文《基于液晶多层屏的3D显示系统和算法设计》、浙江大学的夏新星于2014年完成的博士学位论文《水平光场三维显示机理及实现技术研究》、浙江大学的丁俊于2016年完成的硕士学位论文《基于多层液晶的近眼三维显示研究》等。对于近眼光场显示系统而言,通常要求在整个圆形瞳孔区域内进行视点采样,每个视点采样对应一个虚拟相机的视点位置,所有虚拟相机构成一个虚拟相机阵列,另外还要求确定各个虚拟相机的视口朝向、视场角和相机分辨率。这一过程的具体实现方法在《基于多层液晶的近眼三维显示研究》中有介绍。在确定虚拟相机阵列的各个虚拟相机的视点位置、视口朝向、视场角和相机分辨率后,使用三维场景绘制技术可以绘制出各个虚拟相机拍摄到的虚拟3D场景画面,每幅画面就是一幅虚拟3D场景的光场投影图像。为了使虚拟3D场景画面具有良好的真实感,需要绘制虚拟3D场景画面的全局光照效果。对于复杂虚拟3D场景来说,绘制考虑全局光照效果时的场景画面是一件非常耗时的工作。在生成真实感虚拟3D场景的光场投影图像时,如果对虚拟相机阵列中的每个相机,都独立地执行一遍场景绘制操作,则总耗时将随虚拟相机个数的增加而成倍增长。对用于近眼光场显示的一系列光场投影图像而言,各幅光场投影图像之间虽然存在细微差异,但通常保持着明显的相似性。这种相似性为在绘制真实感虚拟3D场景画面的过程中利用空间复用来减少绘制操作时间消耗提供了物理基础。光源发出的光入射到一个3D场景点后,会被3D场景点散射而沿其他方向传递光照。可以把经一个3D场景点散射后直接进入虚拟相机的光亮度分为源自直接光照的光亮度和源自间接光照的光亮度。源自直接光照的光亮度可以使用蒙特卡罗积分求解方法来估计。这需要在面光源上产生一定数目的采样点(如图1所示),并计算每个采样点与可视场景点之间的可见性。发表在《ACMTransactionsonGraphics》1996年15卷1期1~36页的论文详细介绍了蒙特卡罗直接光照亮度值估计技术。光子映射(PhotonMapping)技术常被用来计算源自间接光照的光亮度。首先使用光子跟踪技术创建光子图,然后利用光线投射技术找到可视场景点。对每个漫反射类型的可视场景点,可从光子图中搜索与该可视场景点邻近的光子并据此计算被该可视场景点散射进入虚拟相机的源自间接光照的光亮度。然而,这种直接根据光子图中的光子计算被可视场景点散射进入虚拟相机的源自间接光照的光亮度的方式会导致三维场景画面中出现明显的低频噪声。解决这一问题的方法是使用最终聚集(FinalGathering)技术。最终聚集技术在许多文献中有专门论述,例如2010年MorganKaufmann出版社出版的由M.Pharr和G.Humphreys撰写的书《PhysicallyBasedRendering:FromTheorytoImplementation,2ndEdition》、山东大学2014年崔云鹏的硕士学位论文《基于Renderman的光子映射算法研究与实现》等。光线投射技术是三维图形绘制中的一种常见技术,其关键步骤是从虚拟相机的视点位置发射穿过虚拟像素平面上的各个像素的中心点的光线,并计算光线与3D场景几何对象之间的离视点位置最近的交点。如图2所示,点E是虚拟相机的视点位置,矩形ABCD是虚拟像素平面,点E和矩形ABCD的中心点G的连线垂直于矩形ABCD所在平面,线段EG的长度可以指定为1,从点E指向矩形ABCD的中心点G的向量对应了虚拟相机的视口朝向,点K为线段BC的中点,点H为线段AD的中点,点R为线段AB的中点,点S为线段CD的中点,线段EH和线段EK所夹的角对应了虚拟相机的水平视场角,线段ER和线段ES所夹的角对应了虚拟相机的竖直视场角,矩形ABCD中的每个小方格表示虚拟像素平面上的一个像素,虚拟像素平面上的像素行数和列数由虚拟相机的分辨率确定,例如1024×768的虚拟相机分辨率可对应包含1024行像素、768列像素的虚拟像素平面。在三维图形绘制中,常用kd树空间数据结构来组织数据集,以便能够根据主键值快速地找到满足特定条件的数据集元素。kd树空间数据结构在PearsonEducation公司2014年出版的《ComputerGraphics:PrinciplesandPractice(3rdEdition)》中有详细介绍。本专利技术公开一种利用光照计算结果空间复用来加快真实感虚拟3D场景光场投影图像绘制速度的方法,为快速生成真实感虚拟3D场景的光场投影图像提供支持。
技术实现思路
本专利技术的目的在于提供一种基于空间复用的真实感虚拟3D场景光场投影图像绘制方法,绘制出使用包含Ncamr×Ncamc个虚拟相机的虚拟相机阵列拍摄的虚拟3D场景画面,为近眼光场显示应用系统提供三维数据。本专利技术的技术方案是这样实现的:一种基于空间复用的真实感虚拟3D场景光场投影图像绘制方法,其特征在于:首先使用光子跟踪技术创建光子图,接着计算虚拟相机阵列中的所有虚拟相机对应的可视场景点,并把所有可视场景点保存在一个列表中,然后计算列表中的所有可视场景点的全局光照值,具体实现步骤如下:提供一种数据结构TVSPT,用于存储与可视场景点相关的数据;数据结构TVSPT包含可视场景点所在位置vsPos、可视场景点所在位置的几何对象表面的法向量vsNrm、可视场景点对应的虚拟相机编号nCam、可视场景点对应的虚拟相机的虚拟像素平面上的像素的行号vnRow、可视场景点对应的虚拟相机的虚拟像素平面上的像素的列号vnCol、从可视场景点散射进入对应虚拟相机的光线的光亮度vsL、可视场景点对应的光源采样点位置vsQ、可视场景点对应的光源可见性vsV共八个成员变量;提供一种数据结构TALSPT,用于存储光源采样点相关数据;数据结构TALSPT包含光源采样点位置lsPos、光源可见性lsV共两个成员变量;1)使用光子跟踪技术创建光子图,具体方法如下:首先在计算机的存储器中创建一个不包含任何光子记录的光子图PMap;使用光子跟踪技术从面光源向三维场景发射Npt个光子,跟踪这Npt个光子在3D场景中传播时与几何对象发生碰撞而被散射的过程;对于本文档来自技高网
...
基于空间复用的真实感虚拟3D场景光场投影图像绘制方法

【技术保护点】
基于空间复用的真实感虚拟3D场景光场投影图像绘制方法,其特征在于:首先使用光子跟踪技术创建光子图,接着计算虚拟相机阵列中的所有虚拟相机对应的可视场景点,并把所有可视场景点保存在一个列表中,然后计算列表中的所有可视场景点的全局光照值,具体实现步骤如下:提供一种数据结构TVSPT,用于存储与可视场景点相关的数据;数据结构TVSPT包含可视场景点所在位置vsPos、可视场景点所在位置的几何对象表面的法向量vsNrm、可视场景点对应的虚拟相机编号nCam、可视场景点对应的虚拟相机的虚拟像素平面上的像素的行号vnRow、可视场景点对应的虚拟相机的虚拟像素平面上的像素的列号vnCol、从可视场景点散射进入对应虚拟相机的光线的光亮度vsL、可视场景点对应的光源采样点位置vsQ、可视场景点对应的光源可见性vsV共八个成员变量;提供一种数据结构TALSPT,用于存储光源采样点相关数据;数据结构TALSPT包含光源采样点位置lsPos、光源可见性lsV共两个成员变量;1)使用光子跟踪技术创建光子图,具体方法如下:首先在计算机的存储器中创建一个不包含任何光子记录的光子图PMap;使用光子跟踪技术从面光源向三维场景发射Npt个光子,跟踪这Npt个光子在3D场景中传播时与几何对象发生碰撞而被散射的过程;对于每个光子A002,在跟踪光子A002在3D场景中传播时与几何对象发生碰撞而被散射的过程中,从光子A002第二次与3D场景几何对象发生碰撞开始,每发生一次碰撞就向光子图PMap中添加一个光子记录,每个光子记录包括光子与3D场景几何对象的碰撞位置PPos、光子在碰撞位置PPos处的归一化入射方向向量PVi,光子在碰撞位置PPos处的入射功率PW共三个分量;2)计算包含Ncamr×Ncamc个虚拟相机的虚拟相机阵列中的每个虚拟相机的虚拟像素平面上的每个像素对应的可视场景点,具体方法如下:步骤Step201:在计算机的存储器中创建一个列表Ltvspt,列表Ltvspt的每个元素用于存储一个数据结构TVSPT类型的变量,令列表Ltvspt为空;步骤Step202:对于包含Ncamr×Ncamc个虚拟相机的虚拟相机阵列中的每个虚拟相机A003,做如下操作:根据虚拟相机A003的视点位置、视口朝向、视场角和相机分辨率参数,利用光线投射技术,从虚拟相机A003的视点位置发射穿过虚拟相机A003的虚拟像素平面上的每个像素中心点的光线A004,光线A004与虚拟相机A003的虚拟像素平面上的像素一一对应;对虚拟相机A003的虚拟像素平面上的每个像素对应的光线A004,执行如下操作:判断光线A004与3D场景的几何对象是否相交,如果光线A004与3D场景的几何对象相交,则进一步执行如下两个子步骤:步骤Step202‑1:计算光线A004与3D场景的几何对象的离虚拟相机A003的视点位置最近的交点A005,交点A005是一个可视场景点,创建一个数据结构TVSPT类型的变量A006,变量A006对应了一条唯一的光线A004,把变量A006的可视场景点所在位置vsPos成员变量赋值为交点A005的位置,把变量A006的可视场景点所在位置的几何对象表面的法向量vsNrm成员变量赋值为交点A005处的几何对象表面法向量,把变量A006的可视场景点对应的虚拟相机编号nCam成员变量赋值为虚拟相机A003在虚拟相机阵列中的编号,把变量A006的可视场景点对应的虚拟相机的虚拟像素平面上的像素的行号vnRow成员变量赋值为变量A006对应的光线A004对应的虚拟相机A003的虚拟像素平面上的像素的行号,把变量A006的可视场景点对应的虚拟相机的虚拟像素平面上的像素的列号vnCol成员变量赋值为变量A006对应的光线A004对应的虚拟相机A003的虚拟像素平面上的像素的列号,把变量A006的从可视场景点散射进入对应虚拟相机的光线的光亮度vsL成员变量赋值为0;步骤Step202‑2:把变量A006添加到列表Ltvspt中;3)计算经每个可视场景点散射进入对应的虚拟相机的光线的光亮度,具体方法如下:步骤Step301:对列表Ltvspt中的每个元素B001,执行如下操作:按均匀分布在面光源上产生一个随机光源采样点B002;把元素B001存储的数据结构TVSPT类型的变量的可视场景点对应的光源采样点位置vsQ成员变量赋值为光源采样点B002所在位置;判断从光源采样点B002所在位置到元素B001存储的数据结构TVSPT类型的变量的可视场景点所在位置vsPos成员变量表示的位置的线段B003与3D场景的几何对象是否相交,如果相交,则把元素B001存储的数据结构TVSPT类型的变量的可视场景点对应的光源可见性vsV成员变量赋值为0,否则把元素B001存储的数据结构TVSPT类型的变量的可视场景点对应...

【技术特征摘要】
1.基于空间复用的真实感虚拟3D场景光场投影图像绘制方法,其特征在于:首先使用光子跟踪技术创建光子图,接着计算虚拟相机阵列中的所有虚拟相机对应的可视场景点,并把所有可视场景点保存在一个列表中,然后计算列表中的所有可视场景点的全局光照值,具体实现步骤如下:提供一种数据结构TVSPT,用于存储与可视场景点相关的数据;数据结构TVSPT包含可视场景点所在位置vsPos、可视场景点所在位置的几何对象表面的法向量vsNrm、可视场景点对应的虚拟相机编号nCam、可视场景点对应的虚拟相机的虚拟像素平面上的像素的行号vnRow、可视场景点对应的虚拟相机的虚拟像素平面上的像素的列号vnCol、从可视场景点散射进入对应虚拟相机的光线的光亮度vsL、可视场景点对应的光源采样点位置vsQ、可视场景点对应的光源可见性vsV共八个成员变量;提供一种数据结构TALSPT,用于存储光源采样点相关数据;数据结构TALSPT包含光源采样点位置lsPos、光源可见性lsV共两个成员变量;1)使用光子跟踪技术创建光子图,具体方法如下:首先在计算机的存储器中创建一个不包含任何光子记录的光子图PMap;使用光子跟踪技术从面光源向三维场景发射Npt个光子,跟踪这Npt个光子在3D场景中传播时与几何对象发生碰撞而被散射的过程;对于每个光子A002,在跟踪光子A002在3D场景中传播时与几何对象发生碰撞而被散射的过程中,从光子A002第二次与3D场景几何对象发生碰撞开始,每发生一次碰撞就向光子图PMap中添加一个光子记录,每个光子记录包括光子与3D场景几何对象的碰撞位置PPos、光子在碰撞位置PPos处的归一化入射方向向量PVi,光子在碰撞位置PPos处的入射功率PW共三个分量;2)计算包含Ncamr×Ncamc个虚拟相机的虚拟相机阵列中的每个虚拟相机的虚拟像素平面上的每个像素对应的可视场景点,具体方法如下:步骤Step201:在计算机的存储器中创建一个列表Ltvspt,列表Ltvspt的每个元素用于存储一个数据结构TVSPT类型的变量,令列表Ltvspt为空;步骤Step202:对于包含Ncamr×Ncamc个虚拟相机的虚拟相机阵列中的每个虚拟相机A003,做如下操作:根据虚拟相机A003的视点位置、视口朝向、视场角和相机分辨率参数,利用光线投射技术,从虚拟相机A003的视点位置发射穿过虚拟相机A003的虚拟像素平面上的每个像素中心点的光线A004,光线A004与虚拟相机A003的虚拟像素平面上的像素一一对应;对虚拟相机A003的虚拟像素平面上的每个像素对应的光线A004,执行如下操作:判断光线A004与3D场景的几何对象是否相交,如果光线A004与3D场景的几何对象相交,则进一步执行如下两个子步骤:步骤Step202-1:计算光线A004与3D场景的几何对象的离虚拟相机A003的视点位置最近的交点A005,交点A005是一个可视场景点,创建一个数据结构TVSPT类型的变量A006,变量A006对应了一条唯一的光线A004,把变量A006的可视场景点所在位置vsPos成员变量赋值为交点A005的位置,把变量A006的可视场景点所在位置的几何对象表面的法向量vsNrm成员变量赋值为交点A005处的几何对象表面法向量,把变量A006的可视场景点对应的虚拟相机编号nCam成员变量赋值为虚拟相机A003在虚拟相机阵列中的编号,把变量A006的可视场景点对应的虚拟相机的虚拟像素平面上的像素的行号vnRow成员变量赋值为变量A006对应的光线A004对应的虚拟相机A003的虚拟像素平面上的像素的行号,把变量A006的可视场景点对应的虚拟相机的虚拟像素平面上的像素的列号vnCol成员变量赋值为变量A006对应的光线A004对应的虚拟相机A003的虚拟像素平面上的像素的列号,把变量A006的从可视场景点散射进入对应虚拟相机的光线的光亮度vsL成员变量赋值为0;步骤Step202-2:把变量A006添加到列表Ltvspt中;3)计算经每个可视场景点散射进入对应的虚拟相机的光线的光亮度,具体方法如下:步骤Step301:对列表Ltvspt中的每个元素B001,执行如下操作:按均匀分布在面光源上产生一个随机光源采样点B002;把元素B001存储的数据结构TVSPT类型的变量的可视场景点对应的光源采样点位置vsQ成员变量赋值为光源采样点B002所在位置;判断从光源采样点B002所在位置到元素B001存储的数据结构TVSPT类型的变量的可视场景点所在位置vsPos成员变量表示的位置的线段B003与3D场景的几何对象是否相交,如果相交,则把元素B001存储的数据结构TVSPT类型的变量的可视场景点对应的光源可见性vsV成员变量赋值为0,否则把元素B001存储的数据结构TVSPT类型的变量的可视场景点对应的光源可见性vsV成员变量赋值为1;步骤Step302:以数据结构TVSPT类型的变量的可视场景点所在位置vsPos成员变量的值作为主键值,把列表Ltvspt中的所有元素存储的数据结构TVSPT类型的变量保存在一个kd树空间数据结构C001中;步骤Step303:对列表Ltvspt中的每个元素B001,执行如下子步骤:步骤Step303-1:在计算机存储器中创建一个列表C002,列表C002的每个元素存储一个数据结构TVSPT类型的变量,令列表C002为空;从kd树空间数据结构C001中找出满足条件COND1的所有数据结构TVSPT类型的变量,并把这些被找出的数据结构TVSPT类型的变量添加到列表C002中;条件COND1为:kd树空间数据结构C001中存储的数据结构TVSPT类型的变量的可视场景点所在位置vsPos成员变量表示的位置到元素B001存储的数据结构TVSPT类型的变量的可视场景点所在位置vsPos成员变量表示的位置的距离小于Td;步骤Step303-2:对列表C002中的每个元素C003,执行如下操作:步骤Step303-2-1:令Vs代表元素C003存储的数据结构TVSPT类型的变量的可视场景点所在位置的几何对象表面的法向量vsNrm成员...

【专利技术属性】
技术研发人员:陈纯毅杨华民蒋振刚姜会林
申请(专利权)人:长春理工大学
类型:发明
国别省市:吉林,22

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1