基于光线追踪且实时可交互的集成成像生成方法及系统转让专利

申请号 : CN201910438381.4

文献号 : CN110276823A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蒋晓瑜秦志强张文阁严志强

申请人 : 中国人民解放军陆军装甲兵学院

摘要 :

本发明公开了一种基于光线追踪且实时可交互的集成成像生成方法及系统,涉及计算机集成成像生成技术领域,包括首先读取系统参数文件,加载虚拟场景三维模型和虚拟场景纹理文件,并根据上述文件和模型,建立层次包围盒加速结构和集成光场视见模型;然后判断是否接收到交互指令,若是则根据修改后的集成光场视见模型的属性值生成每个像素对应的光线,若否则直接根据集成光场视见模型的属性值生成每个像素对应的光线;最后采用层次包围盒加速结构和光线追踪技术,并行渲染所有光线,生成单元图像阵列并显示。采用本发明提供方法或者系统,摆脱了虚拟相机模型的采集过程,精简了计算流程,提高了交互功能的实时性。

权利要求 :

1.一种基于光线追踪且实时可交互的集成成像生成方法,其特征在于,所述集成成像生成方法包括:

使用开源的函数库读取系统参数文件,使用开源的函数库加载虚拟场景三维模型和虚拟场景纹理文件;其中,所述系统参数文件存入参数类ConfigXML中,所述虚拟场景三维模型和所述虚拟场景纹理文件存入模型数据结构MeshBuffer中;

根据所述模型数据结构MeshBuffer中的数据,建立层次包围盒加速结构;

根据所述参数类ConfigXML中的数据,建立集成光场视见模型;所述集成光场视见模型依次包括虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面以及光线发射平面;所述集成光场视见模型由ILFR类实现,所述集成光场视见模型的属性值包含数据类EIABuffer,世界坐标数据,平面距离数据、LCD显示屏的像素大小以及透镜光心的位置数据;所述数据类EIABuffer是一个大小与单元图像阵列相同的二维结构体,用于存放单元图像阵列内每个像素的颜色值;所述世界坐标数据由点Lookat、点Or和向量up的世界坐标数据组成,点Lookat为集成光场视见模型坐标系的原点,点Or为世界坐标系的原点,向量up为集成光场视见模型坐标系的顶向量;所述平面距离数据包括虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离,虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离,以及三维物体中心所在平面与光线发射平面之间的距离;所述透镜光心的位置数据是指透镜光心在单元图像阵列上垂直投影点所在像素,在单元图像阵列中的位置数据;

判断是否接收到交互指令,得到第一判断结果;所述交互指令包括键盘交互指令和鼠标交互指令;

若所述第一判断结果表示接收到交互指令,则根据所述交互指令,修改所述集成光场视见模型的属性值,并根据修改后的集成光场视见模型的属性值,生成每个像素对应的光线;

若所述第一判断结果表示未接收到交互指令,则根据所述集成光场视见模型的属性值,生成每个像素对应的光线;

采用所述层次包围盒加速结构和光线追踪技术,并行渲染所有所述光线,生成单元图像阵列;

采用双缓存技术在显示屏上绘制所述单元图像阵列并显示。

2.根据权利要求1所述的一种基于光线追踪且实时可交互的集成成像生成方法,其特征在于,所述系统参数文件包括一个xml文件和一个csv文件;其中,所述csv文件包含透镜阵列中所有透镜中心的位置数据,所述xml文件包含LCD显示屏的像素大小、单元图像阵列与透镜阵列之间的距离、透镜焦距、LCD显示屏的宽度、虚拟空间内单元图像阵列的宽度数值、单元图像阵列水平分辨率、单元图像阵列垂直分辨率、透镜阵列中透镜的个数、每个单元图像阵列的像素数以及透镜中心位置数据文件的文件名;

所述虚拟场景三维模型中文件为ply文件、obj文件和txt文件,所述虚拟场景纹理文件为ppm文件、hdr文件和jpg文件。

3.根据权利要求2所述的一种基于光线追踪且实时可交互的集成成像生成方法,其特征在于,所述根据所述参数类ConfigXML中的数据,建立集成光场视见模型,具体包括:采用右手笛卡尔坐标系,建立坐标轴为xw、yw、zw的世界坐标系;其中,点Or为世界坐标系的原点;

将点Lookat设为集成光场视见模型坐标系的原点,将所述点Or到所述点Lookat形成的向量设为集成光场视见模型坐标系的zc轴,建立坐标轴为xc、yc、zc的集成光场视见模型坐标系;其中,所述点Lookat为三维虚拟物体的体积中心点;向量up是所述集成光场视见模型坐标系的顶向量,用于构建所述集成光场视见模型坐标系的单位正交基底;

根据虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面、光线发射平面以及所述集成光场视见模型坐标系,建立集成光场视见模型;其中,所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面、所述三维物体中心所在平面以及所述光线发射平面均与所述集成光场视见模型坐标系的zc轴垂直;所述光线发射平面与所述集成光场视见模型坐标系的zc轴相交于点Or,所述三维物体中心所在平面与所述集成光场视见模型坐标系的zc轴相交于点D,且虚拟透镜阵列的中心点与所述点D重合;所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面的位置关系与物理再现系统中虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面的位置关系一致。

4.根据权利要求3所述的一种基于光线追踪且实时可交互的集成成像生成方法,其特征在于,所述交互指令包括旋转指令、移动指令、缩放指令、显示微调指令;其中,所述旋转指令是通过监控鼠标左键拖动,重新设定所述集成光场视见模型中点Or的世界坐标实现的;

所述移动指令是通过监控鼠标右键拖动,重新设定所述集成光场视见模型中点Lookat和点Or的世界坐标实现的;

所述缩放指令是通过监控鼠标滚轮键拖动,按照一定比例重新设定所述集成光场视见模型中虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离、虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离以及LCD显示屏的像素大小实现的;

所述显示微调指令是通过键盘按键单独修改所述集成光场视见模型中虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离、虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离、三维物体中心所在平面与光线发射平面之间的距离以及LCD显示屏的像素大小实现的。

5.根据权利要求1所述的一种基于光线追踪且实时可交互的集成成像生成方法,其特征在于,所述生成每个像素对应的光线,具体包括:对每个像素分配一个线程;

根据每个像素对应的线程以及所述集成光场视见模型的属性值,计算当前像素对应的光线的发射点坐标和方向向量;

根据所述光线的发射点坐标和方向向量,生成每个像素对应的光线。

6.根据权利要求1所述的一种基于光线追踪且实时可交互的集成成像生成方法,其特征在于,所述采用所述层次包围盒加速结构和光线追踪技术,并行渲染所有所述光线,生成单元图像阵列,具体包括:步骤S1:采用所述层次包围盒加速结构和开源的光线追踪技术中引擎Optix,并行计算每条光线的辐射度值,并存放在所述集成光场视见模型的数据结构EIABuffer中;

步骤S2:直到单元图像阵列中每个像素对应的光线的辐射度值都计算完毕,所述数据结构EIABuffer中所有的数据为一帧单元图像阵列,将所述数据结构EIABuffer中所有的数据复制到集成光场视见模型内的OpenGL的空闲缓存中,并刷新所述数据结构EIABuffer;

步骤S3:重复步骤S1至步骤S2,直到生成所有帧的单元图像阵列。

7.根据权利要求1所述的一种基于光线追踪且实时可交互的集成成像生成方法,其特征在于,所述采用双缓存技术在显示屏上绘制所述单元图像阵列并显示,具体包括:使用开源的OpenGL图形库中的双缓存技术,在LCD显示屏上绘制每一帧所述单元图像阵列并显示。

8.一种基于光线追踪且实时可交互的集成成像生成系统,其特征在于,所述集成成像生成系统包括:

初始化模块,用于使用开源的函数库读取系统参数文件,使用开源的函数库加载虚拟场景三维模型和虚拟场景纹理文件;其中,所述系统参数文件存入参数类ConfigXML中,所述虚拟场景三维模型和所述虚拟场景纹理文件存入模型数据结构MeshBuffer中;

层次包围盒加速结构建立模块,用于根据所述模型数据结构MeshBuffer中的数据,建立层次包围盒加速结构;

集成光场视见模型建立模块,用于根据所述参数类ConfigXML中的数据,建立集成光场视见模型;所述集成光场视见模型依次包括虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面以及光线发射平面;所述集成光场视见模型由ILFR类实现,所述集成光场视见模型的属性值包含数据类EIABuffer,世界坐标数据,平面距离数据、LCD显示屏的像素大小以及透镜光心的位置数据;所述数据类EIABuffer是一个大小与单元图像阵列相同的二维结构体,用于存放单元图像阵列内每个像素的颜色值;所述世界坐标数据由点Lookat、点Or和向量up的世界坐标数据组成,点Lookat为集成光场视见模型坐标系的原点,点Or为世界坐标系的原点,向量up为集成光场视见模型坐标系的顶向量;所述平面距离数据包括虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离,虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离,以及三维物体中心所在平面与光线发射平面之间的距离;所述透镜光心的位置数据是指透镜光心在单元图像阵列上垂直投影点所在像素,在单元图像阵列中的位置数据;

第一判断结果得到模块,用于判断是否接收到交互指令,得到第一判断结果;所述交互指令包括键盘交互指令和鼠标交互指令;

第一光线生成模块,用于当所述第一判断结果表示接收到交互指令时,根据所述交互指令,修改所述集成光场视见模型的属性值,并根据修改后的集成光场视见模型的属性值,生成每个像素对应的光线;

第二光线生成模块,用于当所述第一判断结果表示未接收到交互指令时,根据所述集成光场视见模型的属性值,生成每个像素对应的光线;

单元图像阵列生成模块,用于采用所述层次包围盒加速结构和光线追踪技术,并行渲染所有所述光线,生成单元图像阵列;

显示模块,用于采用双缓存技术在显示屏上绘制所述单元图像阵列并显示。

9.根据权利要求8所述的一种基于光线追踪且实时可交互的集成成像生成系统,其特征在于,所述集成光场视见模型建立模块,具体包括:世界坐标系建立单元,用于采用右手笛卡尔坐标系,建立坐标轴为xw、yw、zw的世界坐标系;其中,点Or为世界坐标系的原点;

集成光场视见模型坐标系建立单元,用于将点Lookat设为集成光场视见模型坐标系的原点,将所述点Or到所述点Lookat形成的向量设为集成光场视见模型坐标系的zc轴,建立坐标轴为xc、yc、zc的集成光场视见模型坐标系;其中,所述点Lookat为三维虚拟物体的体积中心点;向量up是所述集成光场视见模型坐标系的顶向量,用于构建所述集成光场视见模型坐标系的单位正交基底;

集成光场视见模型建立单元,用于根据虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面、光线发射平面以及所述集成光场视见模型坐标系,建立集成光场视见模型;其中,所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面、所述三维物体中心所在平面以及所述光线发射平面均与所述集成光场视见模型坐标系的zc轴垂直;所述光线发射平面与所述集成光场视见模型坐标系的zc轴相交于点Or,所述三维物体中心所在平面与所述集成光场视见模型坐标系的zc轴相交于点D,且虚拟透镜阵列的中心点与所述点D重合;所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面的位置关系与物理再现系统中虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面的位置关系一致。

10.根据权利要求8所述的一种基于光线追踪且实时可交互的集成成像生成系统,其特征在于,所述显示模块,具体包括:显示单元,用于使用开源的OpenGL图形库中的双缓存技术,在LCD显示屏上绘制每一帧所述单元图像阵列并显示。

说明书 :

基于光线追踪且实时可交互的集成成像生成方法及系统

技术领域

[0001] 本发明涉及计算机集成成像生成技术领域,特别是涉及一种基于光线追踪且实时可交互的集成成像生成方法及系统。

背景技术

[0002] 现有的计算生成集成成像方法为:在每一个透镜或每一个视点上建立一个虚拟相机模型,然后每个虚拟相机采集的一定视角或一定方向的光场信息(视角图或其中某些像素),通过二次采样、像素映射等数据处理过程计算得到单元图像阵列(Element ImageArray,EIA)。上述方法虽然能够得到单元图像阵列,但是计算耗时,限制集成成像的观看性能,且不利于实现交互功能。
[0003] 具体讲,Point Retracing Rendering(PRR)、Multiple Viewpoint Rendering(MVR)、Parallel Group Rendering(PGR)和ViewpointVectorRendering(VVR)等方法,通过商业三维软件中的虚拟相机获取多个视角图,根据一定的映射关系将视角图中的像素填充到EIA中,但是视角图采集过程中出现很多冗余信息,像素映射过程比较耗时。随后,学者们编写特定的虚拟相机,并利用并行处理提高计算速度。image space parallelprocessing(ISPP)优化算法,将每一个六角形透镜建立为虚拟相机模型,为每个像素分配GPU线程,在ISPP算法基础上优化并行算法架构,实时计算生成EIA。multiple ray clusterrendering(MRCR)方法根据观察者位置,为每个视点建立一种类似于虚拟相机的Ray Clusters模型,计算适合当前距离观看的集成光场,利用并行计算实现实时交互显示。国内北京邮电大学提出BackwardRayTracing CGII方法,为每个视点建立虚拟相机,通过虚拟相机为每个像素发射光线,使用逆向光线追踪技术渲染光线,使用并行计算技术实现实时显示。这些算法虽然避免了采集信息的冗余,但是在利用虚拟相机模型的采集结果间接计算EIA,并没有以集成光场为模型直接计算EIA;在实现交互显示功能时,增加了技术难度,同时,不断计算虚拟相机的空间转换矩阵等过程,增加了交互计算的复杂度,影响了交互的实时性。

发明内容

[0004] 本发明的目的是提供一种基于光线追踪且实时可交互的集成成像生成方法及系统,摆脱虚拟相机模型的采集过程,精简计算流程,提高交互功能的实时性。
[0005] 为实现上述目的,本发明提供了如下方案:
[0006] 一种基于光线追踪且实时可交互的集成成像生成方法,包括:
[0007] 使用开源的函数库读取系统参数文件,使用开源的函数库加载虚拟场景三维模型和虚拟场景纹理文件;其中,所述系统参数文件存入参数类ConfigXML中,所述虚拟场景三维模型和所述虚拟场景纹理文件存入模型数据结构MeshBuffer中;
[0008] 根据所述模型数据结构MeshBuffer中的数据,建立层次包围盒加速结构;
[0009] 根据所述参数类ConfigXML中的数据,建立集成光场视见模型;所述集成光场视见模型依次包括虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面以及光线发射平面;所述集成光场视见模型由ILFR类实现,所述集成光场视见模型的属性值包含数据类EIABuffer,世界坐标数据,平面距离数据、LCD显示屏的像素大小以及透镜光心的位置数据;所述数据类EIABuffer是一个大小与单元图像阵列相同的二维结构体,用于存放单元图像阵列内每个像素的颜色值;所述世界坐标数据由点Lookat、点Or和向量up的世界坐标数据组成,点Lookat为集成光场视见模型坐标系的原点,点Or为世界坐标系的原点,向量up为集成光场视见模型坐标系的顶向量;所述平面距离数据包括虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离,虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离,以及三维物体中心所在平面与光线发射平面之间的距离;所述透镜光心的位置数据是指透镜光心在单元图像阵列上垂直投影点所在像素,在单元图像阵列中的位置数据;
[0010] 判断是否接收到交互指令,得到第一判断结果;所述交互指令包括键盘交互指令和鼠标交互指令;
[0011] 若所述第一判断结果表示接收到交互指令,则根据所述交互指令,修改所述集成光场视见模型的属性值,并根据修改后的集成光场视见模型的属性值,生成每个像素对应的光线;
[0012] 若所述第一判断结果表示未接收到交互指令,则根据所述集成光场视见模型的属性值,生成每个像素对应的光线;
[0013] 采用所述层次包围盒加速结构和光线追踪技术,并行渲染所有所述光线,生成单元图像阵列;
[0014] 采用双缓存技术在显示屏上绘制所述单元图像阵列并显示。
[0015] 可选的,所述系统参数文件包括一个xml文件和一个csv文件;其中,所述csv文件包含透镜阵列中所有透镜中心的位置数据,所述xml文件包含LCD显示屏的像素大小、单元图像阵列与透镜阵列之间的距离、透镜焦距、LCD显示屏的宽度、虚拟空间内单元图像阵列的宽度数值、单元图像阵列水平分辨率、单元图像阵列垂直分辨率、透镜阵列中透镜的个数、每个单元图像阵列的像素数以及透镜中心位置数据文件的文件名;
[0016] 所述虚拟场景三维模型中文件为ply文件、obj文件和txt文件,所述虚拟场景纹理文件为ppm文件、hdr文件和jpg文件。
[0017] 可选的,所述根据所述参数类ConfigXML中的数据,建立集成光场视见模型,具体包括:
[0018] 采用右手笛卡尔坐标系,建立坐标轴为xw、yw、zw的世界坐标系;其中,点Or为世界坐标系的原点;
[0019] 将点Lookat设为集成光场视见模型坐标系的原点,将所述点Or到所述点Lookat形成的向量设为集成光场视见模型坐标系的zc轴,建立坐标轴为xc、yc、zc的集成光场视见模型坐标系;其中,所述点Lookat为三维虚拟物体的体积中心点;向量up是所述集成光场视见模型坐标系的顶向量,用于构建所述集成光场视见模型坐标系的单位正交基底;
[0020] 根据虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面、光线发射平面以及所述集成光场视见模型坐标系,建立集成光场视见模型;其中,所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面、所述三维物体中心所在平面以及所述光线发射平面均与所述集成光场视见模型坐标系的zc轴垂直;所述光线发射平面与所述集成光场视见模型坐标系的zc轴相交于点Or,所述三维物体中心所在平面与所述集成光场视见模型坐标系的zc轴相交于点D,且虚拟透镜阵列的中心点与所述点D重合;所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面的位置关系与物理再现系统中虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面的位置关系一致。
[0021] 可选的,所述交互指令包括旋转指令、移动指令、缩放指令、显示微调指令;其中,[0022] 所述旋转指令是通过监控鼠标左键拖动,重新设定所述集成光场视见模型中点Or的世界坐标实现的;
[0023] 所述移动指令是通过监控鼠标右键拖动,重新设定所述集成光场视见模型中点Lookat和点Or的世界坐标实现的;
[0024] 所述缩放指令是通过监控鼠标滚轮键拖动,按照一定比例重新设定所述集成光场视见模型中虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离、虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离以及LCD显示屏的像素大小实现的;
[0025] 所述显示微调指令是通过键盘按键单独修改所述集成光场视见模型中虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离、虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离、三维物体中心所在平面与光线发射平面之间的距离以及LCD显示屏的像素大小实现的。
[0026] 可选的,所述生成每个像素对应的光线,具体包括:
[0027] 对每个像素分配一个线程;
[0028] 根据每个像素对应的线程以及所述集成光场视见模型的属性值,计算当前像素对应的光线的发射点坐标和方向向量;
[0029] 根据所述光线的发射点坐标和方向向量,生成每个像素对应的光线。
[0030] 可选的,所述采用所述层次包围盒加速结构和光线追踪技术,并行渲染所有所述光线,生成单元图像阵列,具体包括:
[0031] 步骤S1:采用所述层次包围盒加速结构和开源的光线追踪技术中引擎Optix,并行计算每条光线的辐射度值,并存放在所述集成光场视见模型的数据结构EIABuffer中;
[0032] 步骤S2:直到单元图像阵列中每个像素对应的光线的辐射度值都计算完毕,所述数据结构EIABuffer中所有的数据为一帧单元图像阵列,将所述数据结构EIABuffer中所有的数据复制到集成光场视见模型内的OpenGL的空闲缓存中,并刷新所述数据结构EIABuffer;
[0033] 步骤S3:重复步骤S1至步骤S2,直到生成所有帧的单元图像阵列。
[0034] 可选的,所述采用双缓存技术在显示屏上绘制所述单元图像阵列并显示,具体包括:
[0035] 使用开源的OpenGL图形库中的双缓存技术,在LCD显示屏上绘制每一帧所述单元图像阵列并显示。
[0036] 一种基于光线追踪且实时可交互的集成成像生成系统,包括:
[0037] 初始化模块,用于使用开源的函数库读取系统参数文件,使用开源的函数库加载虚拟场景三维模型和虚拟场景纹理文件;其中,所述系统参数文件存入参数类ConfigXML中,所述虚拟场景三维模型和所述虚拟场景纹理文件存入模型数据结构MeshBuffer中;
[0038] 层次包围盒加速结构建立模块,用于根据所述模型数据结构MeshBuffer中的数据,建立层次包围盒加速结构;
[0039] 集成光场视见模型建立模块,用于根据所述参数类ConfigXML中的数据,建立集成光场视见模型;所述集成光场视见模型依次包括虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面以及光线发射平面;所述集成光场视见模型由ILFR类实现,所述集成光场视见模型的属性值包含数据类EIABuffer,世界坐标数据,平面距离数据、LCD显示屏的像素大小以及透镜光心的位置数据;所述数据类EIABuffer是一个大小与单元图像阵列相同的二维结构体,用于存放单元图像阵列内每个像素的颜色值;所述世界坐标数据由点Lookat、点Or和向量up的世界坐标数据组成,点Lookat为集成光场视见模型坐标系的原点,点Or为世界坐标系的原点,向量up为集成光场视见模型坐标系的顶向量;所述平面距离数据包括虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离,虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离,以及三维物体中心所在平面与光线发射平面之间的距离;所述透镜光心的位置数据是指透镜光心在单元图像阵列上垂直投影点所在像素,在单元图像阵列中的位置数据;
[0040] 第一判断结果得到模块,用于判断是否接收到交互指令,得到第一判断结果;所述交互指令包括键盘交互指令和鼠标交互指令;
[0041] 第一光线生成模块,用于当所述第一判断结果表示接收到交互指令时,根据所述交互指令,修改所述集成光场视见模型的属性值,并根据修改后的集成光场视见模型的属性值,生成每个像素对应的光线;
[0042] 第二光线生成模块,用于当所述第一判断结果表示未接收到交互指令时,根据所述集成光场视见模型的属性值,生成每个像素对应的光线;
[0043] 单元图像阵列生成模块,用于采用所述层次包围盒加速结构和光线追踪技术,并行渲染所有所述光线,生成单元图像阵列;
[0044] 显示模块,用于采用双缓存技术在显示屏上绘制所述单元图像阵列并显示。
[0045] 可选的,所述集成光场视见模型建立模块,具体包括:
[0046] 世界坐标系建立单元,用于采用右手笛卡尔坐标系,建立坐标轴为xw、yw、zw的世界坐标系;其中,点Or为世界坐标系的原点;
[0047] 集成光场视见模型坐标系建立单元,用于将点Lookat设为集成光场视见模型坐标系的原点,将所述点Or到所述点Lookat形成的向量设为集成光场视见模型坐标系的zc轴,建立坐标轴为xc、yc、zc的集成光场视见模型坐标系;其中,所述点Lookat为三维虚拟物体的体积中心点;向量up是所述集成光场视见模型坐标系的顶向量,用于构建所述集成光场视见模型坐标系的单位正交基底;
[0048] 集成光场视见模型建立单元,用于根据虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面、光线发射平面以及所述集成光场视见模型坐标系,建立集成光场视见模型;其中,所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面、所述三维物体中心所在平面以及所述光线发射平面均与所述集成光场视见模型坐标系的zc轴垂直;所述光线发射平面与所述集成光场视见模型坐标系的zc轴相交于点Or,所述三维物体中心所在平面与所述集成光场视见模型坐标系的zc轴相交于点D,且虚拟透镜阵列的中心点与所述点D重合;所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面的位置关系与物理再现系统中虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面的位置关系一致。
[0049] 可选的,所述显示模块,具体包括:
[0050] 显示单元,用于使用开源的OpenGL图形库中的双缓存技术,在LCD显示屏上绘制每一帧所述单元图像阵列并显示。
[0051] 根据本发明提供的具体实施例,本发明公开了以下技术效果:
[0052] 本发明在预处理过程中构建虚拟场景加速结构,提升渲染过程中光线追踪渲染的效率,同时构建集成光场视见模型,取代以往算法中的虚拟相机阵列,省去了ISPP优化算法中生成虚拟相机阵列、计算虚拟相机转换矩阵的计算过程,精简了精简计算流程,提高交互功能的实时性。

附图说明

[0053] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0054] 图1为本发明实施例基于光线追踪且实时可交互的集成成像生成方法的流程示意图;
[0055] 图2为本发明实施例集成光场视见模型基本结构图;
[0056] 图3为本发明实施例光线方程计算示意图;
[0057] 图4为本发明实施例基于光线追踪且实时可交互的集成成像生成系统的结构示意图。

具体实施方式

[0058] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0059] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0060] 实施例一
[0061] 如图1所示,本实施例提供的一种基于光线追踪且实时可交互的集成成像生成方法包括:
[0062] 步骤101:使用开源的函数库读取系统参数文件,使用开源的函数库加载虚拟场景三维模型和虚拟场景纹理文件;其中,所述系统参数文件存入参数类ConfigXML中,所述虚拟场景三维模型和所述虚拟场景纹理文件存入模型数据结构MeshBuffer中。
[0063] 所述系统参数文件包括一个xml文件和一个csv文件;其中,所述csv文件包含透镜阵列中所有透镜中心的位置数据,所述xml文件包含LCD显示屏的像素大小、单元图像阵列与透镜阵列之间的距离、透镜焦距、LCD显示屏的宽度、虚拟空间内单元图像阵列的宽度数值、单元图像阵列水平分辨率、单元图像阵列垂直分辨率、透镜阵列中透镜的个数、每个单元图像阵列的像素数以及透镜中心位置数据文件的文件名;所述虚拟场景三维模型中文件的格式为ply文件、obj文件和txt文件,所述虚拟场景纹理文件的格式为ppm文件、hdr文件和jpg文件。
[0064] 步骤102:根据所述模型数据结构MeshBuffer中的数据,建立层次包围盒加速结构。
[0065] 步骤103:根据所述参数类ConfigXML中的数据,建立集成光场视见模型;所述集成光场视见模型依次包括虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面以及光线发射平面;所述集成光场视见模型由ILFR类实现,所述集成光场视见模型的属性值包含数据类EIABuffer,世界坐标数据,平面距离数据、LCD显示屏的像素大小以及透镜光心的位置数据;所述数据类EIABuffer是一个大小与单元图像阵列相同的二维结构体,用于存放单元图像阵列内每个像素的颜色值;所述世界坐标数据由点Lookat、点Or和向量up的世界坐标数据组成,点Lookat为集成光场视见模型坐标系的原点,点Or为世界坐标系的原点,向量up为集成光场视见模型坐标系的顶向量;所述平面距离数据包括虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离,虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离,以及三维物体中心所在平面与光线发射平面之间的距离;所述透镜光心的位置数据是指透镜光心在单元图像阵列上垂直投影点所在像素,在单元图像阵列中的位置数据。
[0066] 步骤104:判断是否接收到交互指令,得到第一判断结果;所述交互指令包括键盘交互指令和鼠标交互指令;若所述第一判断结果表示接收到交互指令,则执行步骤105;若所述第一判断结果表示未接收到交互指令,则执行步骤106。
[0067] 步骤105:根据所述交互指令,修改所述集成光场视见模型的属性值,并根据修改后的集成光场视见模型的属性值,生成每个像素对应的光线。
[0068] 步骤106:根据所述集成光场视见模型的属性值,生成每个像素对应的光线。
[0069] 步骤107:采用所述层次包围盒加速结构和光线追踪技术,并行渲染所有所述光线,生成单元图像阵列。
[0070] 步骤108:采用双缓存技术在显示屏上绘制所述单元图像阵列并显示。
[0071] 步骤103具体包括:
[0072] 采用右手笛卡尔坐标系,建立坐标轴为xw、yw、zw的世界坐标系;其中,点Or为世界坐标系的原点。
[0073] 将点Lookat设为集成光场视见模型坐标系的原点,将所述点Or到所述点Lookat形成的向量设为集成光场视见模型坐标系的zc轴,建立坐标轴为xc、yc、zc的集成光场视见模型坐标系;其中,所述点Lookat为三维虚拟物体的体积中心点;向量up是所述集成光场视见模型坐标系的顶向量,用于构建所述集成光场视见模型坐标系的单位正交基底。
[0074] 根据虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面、光线发射平面以及所述集成光场视见模型坐标系,建立集成光场视见模型;其中,所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面、所述三维物体中心所在平面以及所述光线发射平面均与所述集成光场视见模型坐标系的zc轴垂直;所述光线发射平面与所述集成光场视见模型坐标系的zc轴相交于点Or,所述三维物体中心所在平面与所述集成光场视见模型坐标系的zc轴相交于点D,且虚拟透镜阵列的中心点与所述点D重合;所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面的位置关系与物理再现系统中虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面的位置关系一致。
[0075] 步骤104中的交互指令包括旋转指令、移动指令、缩放指令、显示微调指令;其中,所述旋转指令是通过监控鼠标左键拖动,重新设定所述集成光场视见模型中点Or的世界坐标实现的;所述移动指令是通过监控鼠标右键拖动,重新设定所述集成光场视见模型中点Lookat和点Or的世界坐标实现的;所述缩放指令是通过监控鼠标滚轮键拖动,按照一定比例重新设定所述集成光场视见模型中虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离、虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离以及LCD显示屏的像素大小实现的;所述显示微调指令是通过键盘按键单独修改所述集成光场视见模型中虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离、虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离、三维物体中心所在平面与光线发射平面之间的距离以及LCD显示屏的像素大小实现的。
[0076] 步骤105和步骤106中生成每个像素对应的光线这一步骤具体包括:
[0077] 对每个像素分配一个线程。
[0078] 根据每个像素对应的线程以及所述集成光场视见模型的属性值,计算当前像素对应的光线的发射点坐标和方向向量。
[0079] 根据所述光线的发射点坐标和方向向量,生成每个像素对应的光线。
[0080] 步骤107具体包括:
[0081] 步骤S1:采用所述层次包围盒加速结构和开源的光线追踪技术中引擎Optix,并行计算每条光线的辐射度值,并存放在所述集成光场视见模型的数据结构EIABuffer中。
[0082] 步骤S2:直到单元图像阵列中每个像素对应的光线的辐射度值都计算完毕,所述数据结构EIABuffer中所有的数据为一帧单元图像阵列,将所述数据结构EIABuffer中所有的数据复制到集成光场视见模型内的OpenGL的空闲缓存中,并刷新所述数据结构EIABuffer。
[0083] 步骤S3:重复步骤S1至步骤S2,直到生成所有帧的单元图像阵列。
[0084] 步骤108具体包括:
[0085] 使用开源的OpenGL图形库中的双缓存技术,在LCD显示屏上绘制每一帧所述单元图像阵列并显示。
[0086] 实施例二
[0087] 本实施例提供的集成成像生成方法主要包括输入模块、预处理模块、交互模块、渲染模块和显示模块。
[0088] 一、输入模块
[0089] (一)使用开源的函数库读取系统参数文件,该系统参数文件包括一个xml文件和一个csv文件。
[0090] 其中,csv文件包含透镜阵列中所有透镜中心的位置数据。
[0091] xml文件包含主要数据有:
[0092] pixelSize:LCD显示屏的像素大小(mm);
[0093] lens_EIA_dist:EIA与透镜阵列之间的距离大小(mm);
[0094] lenf:透镜焦距(mm);
[0095] LCDw:LCD显示屏的宽度(mm);
[0096] VLCDw:虚拟空间内EIA的宽度数值;
[0097] film_horRes:EIA水平分辨率;
[0098] film_verRes:EIA垂直分辨率;
[0099] LensCount:透镜阵列中透镜的个数;
[0100] Parallax:每个EIA的像素数;
[0101] lensCenter_csv:透镜中心位置数据文件的文件名;
[0102] 透镜光心的位置数据:透镜光心的位置数据是指透镜光心在单元图像阵列上垂直投影点所在像素,在单元图像阵列中的位置数据。
[0103] 上述两个文件读取之后的所有数据都存放在一个参数类ConfigXML中。
[0104] (二)使用开源的函数库加载加载虚拟场景三维模型和虚拟场景纹理文件。虚拟场景三维模型文件的格式可以是ply文件、obj文件、txt文件,虚拟场景纹理文件可以是ppm文件、hdr文件、jpg文件。将这些数据存放在模型数据结构MeshBuffer中。
[0105] 二、预处理模块
[0106] (一)根据模型数据结构MeshBuffer中的数据,使用开源的函数库,建立层次包围盒加速结构(GeometryGroup类),用于后续的光线追踪计算。
[0107] (二)根据参数类ConfigXML中的数据,建立集成光场视见模型,该集成光场视见模型的基本结构如图2所示。
[0108] 集成光场视见模型包括EIAP(虚拟EIA所在平面)、LAP(虚拟透镜阵列所在平面)、CDP(三维物体中心所在平面)和ROP(光线发射平面)等部分。采用右手笛卡尔坐标系,建立坐标轴为xw、yw、zw的世界坐标系。建立坐标轴为xc、yc、zc的集成光场视见模型坐标系(简称内空间),点Lookat是内空间的原点(初始默认将三维虚拟物体的体积中心作为点Lookat,以保证生成的EIA能够为集成成像物理再现系统提供基本的初始显示效果),点Or(世界坐标系的原点)与点Lookat相距p个单位长度(内空间所有数值都使用该单位长度),从点Or到点Lookat形成的向量是内空间的zc轴,向量up是内空间的顶向量(用于构建内空间单位正交基底)。平面EIAP、平面LAP、平面CDP和平面ROP都与内空间的zc轴垂直,它们之间的距离分别用g、h、p表示。面ROP与zc轴相交于点Or,面CDP与zc轴相交于点D。为保证基本的初始显示效果和方便计算,通常将虚拟透镜阵列中间位置(矩形中心)附近的透镜的中心放在点D上。虚拟EIA与虚拟透镜阵列的位置关系同集成成像物理再现系统中EIA和透镜阵列的位置关系保持一致。虚拟EIA中像素Aij的内空间坐标由像素位置(第i行第j列)和虚拟像素大小pixelSize来决定。射线Rayij代表像素Aij对应的光线(本发明中光线都默指从平面ROP发出的主光线,区别于阴影光线),像素Aij的中心点和对应透镜中心Dmn所在直线,与平面ROP的交点是射线Rayij的发射点,因此,平面ROP左侧的虚拟场景可见,右侧虚拟场景不可见,所以初始设定的p值一般大于三维物体大小。closestHit点是光线Rayij与虚拟场景三维模型的最近交叉点,线段Rays代表光线追踪技术中的阴影光线,Light代表虚拟三维场景光照模型(点光源和环境光)中的点光源。
[0109] 集成光场视见模型用于生成每一个像素的光线Rayij,然后使用光线追踪技术计算光线Rayij与虚拟场景三维模型的最近交叉点closestHit,并根据光照系统(点光源Light等全局光照)、材质、纹理等虚拟场景信息计算光线Rayij的辐射度值,然后赋给Aij像素,最终得到EIA。
[0110] 集成光场视见模型由ILFR类实现,主要属性包含EIABuffer单元(存放EIA每个像素的颜色值),点Lookat、点Or、向量up的世界坐标数据以及数值g、数值h、数值p、数值pixelSize,并为这些属性提供读写接口。EIABuffer单元是一个大小与EIA相同的二维结构体,结构体单元是一个自定义数据类RGBColor,存放一个像素的颜色值。
[0111] 三、交互模块
[0112] 使用开源库OpenGL监视键盘和鼠标的事件,如左键拖动、右键拖动、滚轮键拖动、键盘的按键。如果没有接收到事件,那么就按照当前的集成光场视见模型的属性值继续渲染EIA,否则,使用相关接口修改ILFR类中的属性,而后渲染EIA。交互的细节有旋转、移动、缩放、显示微调等四个。
[0113] (一)旋转。通过监控鼠标左键拖动,重新设定集成光场视见模型中点Or的世界坐标,即可实现。
[0114] (二)移动。通过监控鼠标右键拖动,重新设定集成光场视见模型中点Lookat和点Or的世界坐标,即可实现。
[0115] (三)缩放。通过监控鼠标滚轮键拖动,按照一定比例(0.5-3倍)重新设定数值g、数值h、数值pixelSize的大小,即可实现。
[0116] (四)显示微调。通过键盘按键单独修改数值g、数值h、数值p、数值pixelSize的大小,来调试显示效果。
[0117] 四、渲染模块
[0118] (一)光线生成。该过程由集成光场视见模型完成,集成光场视见模型为每一个像素分配一个线程进行并行计算,每个线程根据集成光场视见模型的属性值计算当前像素所对应光线的光线方程。
[0119] 本发明中,向量和点的坐标都用列向量表示,“*”表示向量内积,“^”表示向量外积,“normalize(m)”表示求解向量m的单位向量(m不能是零向量)。
[0120] 本发明光线模型Rij是射线模型,含有发射点Oij(坐标由向量 表示)和方向单位向量Directionij(坐标由向量 表示)等参数,光线上的点P(坐标由向量 表示)满足下列公式,即光线方程:
[0121] 实数t的大小决定了点P的位置。光线在集成光场视见模型中生成,如图3所示。图3中Oij和Directionij分别是光线Rij的发射点和方向,D1mn、D2mn是透镜中心Dmn在平面EIAP和平面ROP平面的垂直投影点,其内空间的x、y坐标都是相同的。点Oij、点Aij、点D1mn、点D2mn的内空间坐标存在以下关系:
[0122]
[0123] 通过公式(2)计算光线发射点Oij的内空间坐标origin,经过空间坐标系转换可以得到Oij的世界坐标originw,以及光线的单位方向向量directionw,其计算公式为:
[0124]
[0125] 向量组{U、V、W}是内空间坐标系的一个单位正交基底,可由点lookat、点Or与向量up计算得来,其计算公式为:
[0126]
[0127] 上式中,集成光场视见模型的顶向量up与点Lookat、点Or所在直线(内空间z轴)不能平行,否则向量up与向量W的叉乘结果U向量将是零向量,无法作为内空间的单位正交基底。
[0128] 通过上述计算求得光线的发射点坐标和方向向量后,便可得到光线方程,方便后续光线辐射度的计算。
[0129] (二)使用光线追踪技术渲染光线。使用开源的光线追踪技术引擎Optix和虚拟场景加速结构进行实现,并行计算每条光线的辐射度值(用RGB颜色值表示),并存放在集成光场视见模型的数据结构EIABuffer中,当EIA中每个像素都计算完毕之后,即得到了一帧EIA数据之后,将数据结构EIABuffer交给显示模块进行显示。然后刷新数据结构EIABuffer,并循环到交互模块继续计算下一帧EIA的计算。
[0130] 五、显示模块
[0131] 使用开源的OpenGL图形库中的双缓存技术在LCD显示屏上绘制EIA,实现一帧EIA数据的显示。
[0132] 本发明包括输入模块、预处理模块、交互模块、渲染模块和显示模块,与ISPP优化算法中五个模块类似(ISPP优化算法是以往算法中比较典型的算法),相对于模型数据不断变化的动态模型(动画数据)来说,静态模型计算、显示的实时性不受输入模块、预处理模块计算效率的影响,而是取决于另外三个模块(如本发明的交互模块、渲染模块和显示模块,或者ISPP优化算法中的计算模块、渲染模块和显示模块)的计算效率。因此,本发明在预处理模块中构建虚拟场景加速结构,提升渲染模块中光线追踪渲染的效率,同时构建集成光场视见模型(Integral light fieldviewing model,ILFVM),取代以往算法中的虚拟相机阵列,省去了ISPP优化算法中生成虚拟相机阵列、计算虚拟相机转换矩阵的计算过程,精简了算法复杂度,而且灵活性高,提高交互功能的实时性。
[0133] 实施例三
[0134] 如图4所示,本实施例提供了一种基于光线追踪且实时可交互的集成成像生成系统,包括:
[0135] 初始化模块100,用于使用开源的函数库读取系统参数文件,使用开源的函数库加载虚拟场景三维模型和虚拟场景纹理文件;其中,所述系统参数文件存入参数类ConfigXML中,所述虚拟场景三维模型和所述虚拟场景纹理文件存入模型数据结构MeshBuffer中。
[0136] 层次包围盒加速结构建立模块200,用于根据所述模型数据结构MeshBuffer中的数据,建立层次包围盒加速结构。
[0137] 集成光场视见模型建立模块300,用于根据所述参数类ConfigXML中的数据,建立集成光场视见模型;所述集成光场视见模型依次包括虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面以及光线发射平面;所述集成光场视见模型由ILFR类实现,所述集成光场视见模型的属性值包含数据类EIABuffer,世界坐标数据,平面距离数据、LCD显示屏的像素大小以及透镜光心的位置数据;所述数据类EIABuffer是一个大小与单元图像阵列相同的二维结构体,用于存放单元图像阵列内每个像素的颜色值;所述世界坐标数据由点Lookat、点Or和向量up的世界坐标数据组成,点Lookat为集成光场视见模型坐标系的原点,点Or为世界坐标系的原点,向量up为集成光场视见模型坐标系的顶向量;所述平面距离数据包括虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离,虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离,以及三维物体中心所在平面与光线发射平面之间的距离;所述透镜光心的位置数据是指透镜光心在单元图像阵列上垂直投影点所在像素,在单元图像阵列中的位置数据。
[0138] 第一判断结果得到模块400,用于判断是否接收到交互指令,得到第一判断结果;所述交互指令包括键盘交互指令和鼠标交互指令。
[0139] 第一光线生成模块500,用于当所述第一判断结果表示接收到交互指令时,根据所述交互指令,修改所述集成光场视见模型的属性值,并根据修改后的集成光场视见模型的属性值,生成每个像素对应的光线。
[0140] 第二光线生成模块600,用于当所述第一判断结果表示未接收到交互指令时,根据所述集成光场视见模型的属性值,生成每个像素对应的光线。
[0141] 单元图像阵列生成模块700,用于采用所述层次包围盒加速结构和光线追踪技术,并行渲染所有所述光线,生成单元图像阵列。
[0142] 显示模块800,用于采用双缓存技术在显示屏上绘制所述单元图像阵列并显示。
[0143] 所述系统参数文件包括一个xml文件和一个csv文件;其中,所述csv文件包含透镜阵列中所有透镜中心的位置数据,所述xml文件包含LCD显示屏的像素大小、单元图像阵列与透镜阵列之间的距离、透镜焦距、LCD显示屏的宽度、虚拟空间内单元图像阵列的宽度数值、单元图像阵列水平分辨率、单元图像阵列垂直分辨率、透镜阵列中透镜的个数、每个单元图像阵列的像素数以及透镜中心位置数据文件的文件名。
[0144] 所述虚拟场景三维模型中文件的格式为ply文件、obj文件和txt文件,所述虚拟场景纹理文件的格式为ppm文件、hdr文件和jpg文件。
[0145] 集成光场视见模型模块300,具体包括:
[0146] 世界坐标系建立单元,用于采用右手笛卡尔坐标系,建立坐标轴为xw、yw、zw的世界坐标系;其中,点Or为世界坐标系的原点。
[0147] 集成光场视见模型坐标系建立单元,用于将点Lookat设为集成光场视见模型坐标系的原点,将所述点Or到所述点Lookat形成的向量设为集成光场视见模型坐标系的zc轴,建立坐标轴为xc、yc、zc的集成光场视见模型坐标系;其中,所述点Lookat为三维虚拟物体的体积中心点;向量up是所述集成光场视见模型坐标系的顶向量,用于构建所述集成光场视见模型坐标系的单位正交基底。
[0148] 集成光场视见模型建立单元,用于根据虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面、三维物体中心所在平面、光线发射平面以及所述集成光场视见模型坐标系,建立集成光场视见模型;其中,所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面、所述三维物体中心所在平面以及所述光线发射平面均与所述集成光场视见模型坐标系的zc轴垂直;所述光线发射平面与所述集成光场视见模型坐标系的zc轴相交于点Or,所述三维物体中心所在平面与所述集成光场视见模型坐标系的zc轴相交于点D,且虚拟透镜阵列的中心点与所述点D重合;所述虚拟单元图像阵列所在平面、所述虚拟透镜阵列所在平面的位置关系与物理再现系统中虚拟单元图像阵列所在平面、虚拟透镜阵列所在平面的位置关系一致。
[0149] 所述交互指令包括旋转指令、移动指令、缩放指令、显示微调指令;其中,[0150] 所述旋转指令是通过监控鼠标左键拖动,重新设定所述集成光场视见模型中点Or的世界坐标实现的。
[0151] 所述移动指令是通过监控鼠标右键拖动,重新设定所述集成光场视见模型中点Lookat和点Or的世界坐标实现的。
[0152] 所述缩放指令是通过监控鼠标滚轮键拖动,按照一定比例重新设定所述集成光场视见模型中虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离、虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离以及LCD显示屏的像素大小实现的。
[0153] 所述显示微调指令是通过键盘按键单独修改所述集成光场视见模型中虚拟单元图像阵列所在平面与虚拟透镜阵列所在平面之间的距离、虚拟透镜阵列所在平面与三维物体中心所在平面之间的距离、三维物体中心所在平面与光线发射平面之间的距离以及LCD显示屏的像素大小实现的。
[0154] 第一光线生成模块500,具体包括:
[0155] 第一分配单元,用于对每个像素分配一个线程。
[0156] 属性值修改单元,用于根据交互指令,修改集成光场视见模型的属性值。
[0157] 第一发射点坐标和方向向量计算单元,用于根据每个像素对应的线程以及修改后的集成光场视见模型的属性值,计算当前像素对应的光线的发射点坐标和方向向量。
[0158] 第一光线生成单元,用于根据所述光线的发射点坐标和方向向量,生成每个像素对应的光线。
[0159] 第二光线生成模块600,具体包括:
[0160] 第二分配单元,用于对每个像素分配一个线程。
[0161] 第二发射点坐标和方向向量计算单元,用于根据每个像素对应的线程以及集成光场视见模型的属性值,计算当前像素对应的光线的发射点坐标和方向向量。
[0162] 第二光线生成单元,用于根据所述光线的发射点坐标和方向向量,生成每个像素对应的光线。
[0163] 单元图像阵列模块700,具体以下步骤:
[0164] 步骤S1:采用所述层次包围盒加速结构和开源的光线追踪技术中引擎Optix,并行计算每条光线的辐射度值,并存放在所述集成光场视见模型的数据结构EIABuffer中。
[0165] 步骤S2:直到单元图像阵列中每个像素对应的光线的辐射度值都计算完毕,所述数据结构EIABuffer中所有的数据为一帧单元图像阵列,将所述数据结构EIABuffer中所有的数据复制到集成光场视见模型内的OpenGL的空闲缓存中,并刷新所述数据结构EIABuffer。
[0166] 步骤S3:重复步骤S1至步骤S2,直到生成所有帧的单元图像阵列。
[0167] 显示模块800,具体包括:
[0168] 使用开源的OpenGL图形库中的双缓存技术,在LCD显示屏上绘制每一帧所述单元图像阵列并显示。
[0169] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0170] 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。