一种三维虚拟场景立体画面的绘制方法

著录项
  • CN201110162976.5
  • 20110617
  • CN102243768A
  • 20111116
  • 长春理工大学
  • 陈纯毅;杨华民;蒋振刚;范静涛;丁莹;韩成;冯欣;底晓强;陈占芳;李奇
  • G06T15/10(2006.01)I
  • G06T15/10(2006.01)I

  • 吉林省长春市卫星路7089号
  • 中国,CN,吉林(22)
摘要
本发明公开一种三维虚拟场景立体画面的绘制方法,属于真实感三维虚拟场景绘制技术领域。传统的三维虚拟场景立体画面绘制方法采用分别独立绘制左右眼虚拟相机的图像画面的方式实现立体画面的绘制。本发明方法首先绘制左眼虚拟相机的图像画面,记录从左眼虚拟相机位置向左眼虚拟相机的像平面上的像素发射的所有主光线与三维虚拟场景的面片的相交信息以及相应的源自光源的漫反射光照值和源自环境光的漫反射光照值;在绘制右眼虚拟相机的图像画面时,基于左眼虚拟相机的图像画面的绘制结果,计算源自光源的漫反射光照值和源自环境光的漫反射光照值,避免了大量的重复光照计算,可实现15%~30%的立体画面绘制加速。
权利要求

1.一种三维虚拟场景立体画面的绘制方法,其特征在于,所需的数据结构及实现步骤如 下:

本发明的目的在于提供一种三维虚拟场景立体画面的绘制方法,首先绘制左眼虚拟相机 的图像画面,并记录从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的像素发射的所有 主光线与三维虚拟场景的面片的相交信息以及相应的源自光源的漫反射光照值和源自环境光 的漫反射光照值;在绘制右眼虚拟相机的图像画面时,利用绘制左眼虚拟相机的图像画面时 记录的源自光源的漫反射光照值和源自环境光的漫反射光照值,来避免大量的重复光照计算, 从而提高三维虚拟场景立体画面的绘制速度;

本发明方法提供一种光照数据记录结构,其包括源自光源的漫反射光照值成员变量I s、 源自环境光的漫反射光照值成员变量I e、交点位置成员变量P s和交点处的面片索引号成员变 量Id;

本发明方法提供一种像素位置映射结构,其包括标识成员变量tag、左眼图像像素行号成 员变量L i、左眼图像像素列号成员变量L j、右眼图像像素行号成员变量R i、右眼图像像素列 号成员变量R j、交点处的面片索引号成员变量id;

本发明方法的第一部分绘制三维虚拟场景的左眼虚拟相机的图像画面,同时记录所有从 左眼虚拟相机光心位置向左眼虚拟相机的像平面上的像素发射的主光线与三维虚拟场景中的 面片的交点位置及相应的源自光源的漫反射光照值和源自环境光的漫反射光照值,具体步骤 如下:

步骤S101:创建一个光照数据记录结构类型的二维矩阵R,其包括M×N个元素,M为 左眼虚拟相机的像平面上的像素行数,N为左眼虚拟相机的像平面上的像素列数,二维矩阵 R中的元素与左眼虚拟相机的像平面上的像素一一对应;将二维矩阵R的每个元素的源自光 源的漫反射光照值成员变量I s和源自环境光的漫反射光照值成员变量I e初始化为0;

步骤S102:从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的每个像素发射主光线 (A01),并测试主光线(A01)与三维虚拟场景的面片是否相交;如果不相交,则将主光线 (A01)对应的像素的颜值设置为背景,否则计算交点位置P i,记录交点处的面片索引 号ID;判断交点位置P i所在面片的光源漫反射系数k d是否为0,若不为0,则利用蒙特卡洛 方法计算交点处的源自光源的漫反射光照值I 1,否则源自光源的漫反射光照值I 1设置为0; 判断交点位置P i所在面片的环境光漫反射系数k e是否为0,若不为0,则利用环境遮蔽体算 法计算源自环境光的漫反射光照值I 2,否则源自环境光的漫反射光照值I 2设置为0;将I 1、I 2、 P i和ID分别赋值给二维矩阵R中与主光线(A01)相对应的元素的源自光源的漫反射光照值 成员变量I s、源自环境光的漫反射光照值成员变量I e、交点位置成员变量P s和交点处的面片 索引号成员变量Id;判断交点位置P i所在面片的镜面反射系数k s是否为0,若不为0,则利 用蒙特卡洛方法计算源自光源的镜面反射光照值I 3,同时生成镜面反射二次光线,并递归地 跟踪计算源自镜面反射二次光线的光照值I 4,否则源自光源的镜面反射光照值I 3设置为0, 源自镜面反射二次光线的光照值I 4设置为0;将I 1+I 2+I 3+I 4作为主光线(A01)对应的像 素的颜值;

如果三维虚拟场景中的某点(105)在左眼虚拟相机(101)的像平面(102)上的成像点 位于像素p 1上,在右眼虚拟相机(102)的像平面(104)上的成像点位于像素p 2上,则像素 p 1和像素p 2相对于点(105)构成映射关系;本发明方法的第二部分计算左眼虚拟相机的像 平面上的像素与右眼虚拟相机的像平面上的像素的映射关系,具体步骤如下:

步骤S201:创建一个像素位置映射结构类型的二维矩阵R′,其包括M×N个元素,M为 右眼虚拟相机的像平面上的像素行数,N为右眼虚拟相机的像平面上的像素列数,二维矩阵 R′中的元素与右眼虚拟相机的像平面上的像素一一对应;将二维矩阵R′的每个元素的标识成 员变量tag初始化为0;

步骤S202:建立x-y-z坐标系,其原点位于右眼虚拟相机的像平面的中心,z轴正方向与 右眼虚拟相机的前向方向向量F相同,y轴正方向与右眼虚拟相机的向上方向向量U相同,x 轴正方向与向量F×U相同;根据右眼虚拟相机的水平方向视场角α和垂直方向视场角β以及 右眼虚拟相机光心位置到x-y-z坐标系原点的距离确定右眼虚拟相机的像平面上的有效矩形 成像区域A;

步骤S203:对二维矩阵R中的每个元素E R,做如下计算:

连接元素E R的交点位置成员变量P s表示的空间位置和右眼虚拟相机光心位置P c,得到 一条直线段L,计算直线段L与右眼虚拟相机的像平面的交点S 1,判断交点S 1是否在有效矩 形成像区域A之内,如果交点S 1在有效矩形成像区域A内,则:

根据右眼虚拟相机的图像分辨率和有效矩形成像区域A的几何尺寸,计算右眼虚拟相机 的像平面的像素的水平方向几何尺寸s x和垂直方向几何尺寸s y;创建一个像素位置映射结构 类型的变量V,变量V的标识成员变量tag设置为1,变量V的左眼图像像素行号成员变量 L i设置为元素E R的行号,变量V的左眼图像像素列号成员变量L j设置为元素E R的列号,变 量V的右眼图像像素行号成员变量R i设置为 变量V的右眼图像像素列号成员变 量R j设置为 其中x S1、y S1分别为交点S 1在x-y平面内的横、纵坐标,变量V的 交点处的面片索引号成员变量id设置为元素E R的交点处的面片索引号成员变量Id;将变量V 赋值给二维矩阵R′中行号为变量V的右眼图像像素行号成员变量R i表示的行号、列号为变量 V的右眼图像像素列号成员变量R j表示的列号的元素;

本发明方法的第三部分在本发明方法的第一部分和第二部分的计算结果的基础上,绘制 右眼虚拟相机的图像画面,具体步骤如下:

步骤S301:从右眼虚拟相机光心位置向右眼虚拟相机的像平面上的每个像素Pix发射主 光线(301),并测试主光线(301)与三维虚拟场景的面片是否相交;如果不相交,则将主光 线(301)对应的像素的颜值设置为背景,否则计算交点位置P i′,记录交点处的面片索 引号ID′;

步骤S302:将像素Pix对应的二维矩阵R′的元素赋值给变量V′;如果变量V′的标识成员 变量tag为1且ID′等于V′的交点处的面片索引号成员变量id的值,则转步骤S303,否则转 步骤S304;

步骤S303:将二维矩阵R中的元素E R′赋值给变量W,其中元素E R′的行号为V′的左眼 图像像素行号成员变量L i表示的行号,元素E R′的列号为V′的左眼图像像素列号成员变量L j 表示的列号;判断交点位置P i′所在面片的镜面反射系数k s是否为0,若不为0,则按照蒙特 卡洛方法计算源自光源的镜面反射光照值I 3′,同时生成镜面反射二次光线,并递归地跟踪计 算源自镜面反射二次光线的光照值I 4′,否则源自光源的镜面反射光照值I 3′设置为0,源自镜 面反射二次光线的光照值I 4′设置为0;求变量W的源自光源的漫反射光照值成员变量I s、变 量W的源自环境光的漫反射光照值成员变量I e、光照值I 3′、光照值I 4′等四个量的和,将其作 为主光线(301)对应的像素的颜值;转步骤S305;

步骤S304:判断交点位置P i′在面片的光源漫反射系数k d是否为0,若不为0,则利用 蒙特卡洛方法计算交点处的源自光源的漫反射光照值I 1′,否则源自光源的漫反射光照值I 1′ 设置为0;判断交点位置P i′所在面片的环境光漫反射系数k e是否为0,若不为0,则利用环 境遮蔽体算法计算源自环境光的漫反射光照值I 2′,否则源自环境光的漫反射光照值I 2′设置为 0;判断交点位置P i′所在面片的镜面反射系数k s是否为0,若不为0,则按照蒙特卡洛方法计 算源自光源的镜面反射光照值I 3′,同时生成镜面反射二次光线,并递归地跟踪计算源自镜面 反射二次光线的光照值I 4′,否则源自光源的镜面反射光照值I 3′设置为0,源自镜面反射二次 光线的光照值I 4′设置为0;将I 1′+I 2′+I 3′+I 4′作为主光线(301)对应的像素的颜值;

步骤S305:计算结束。

说明书
技术领域

本发明属于真实感三维虚拟场景绘制技术领域,涉及一种三维虚拟场景立体画面的绘 制方法。

三维动画电影作为近年来新兴的计算机艺术,发展势头非常迅猛,已经在许多行业得 到了广泛的应用。为了产生更强的视觉冲击力,目前很多三维动画电影都具有立体视觉效 果。立体视觉效果的基本原理是,观众在观看动画电影时,左右眼能分别互不干扰地看到 左右眼虚拟相机拍摄的图像画面,再通过人脑的合成,最终产生画面的入屏或者出屏效果。

为了提高三维动画电影画面的真实感,往往要求在绘制的图像中加入全局光照、柔和 阴影等效果。使用标准的光线跟踪方法可以比较容易地绘制出全局光照效果。绘制柔和阴 影效果往往需要计算绘制点处的面光源可见性,这一过程通常非常耗时。当照射三维虚拟 场景的光源为面光源时,可以利用蒙特卡洛方法对面光源进行采样,以计算面光源可见性, 进而绘制出柔和阴影效果。此外,如果动画电影三维虚拟场景的环境光照随空间位置变化 比较明显,则需要进一步计算不同绘制点处的环境光照值;环境光照值可利用环境遮蔽体 算法来计算(见2010年欧洲图形学学会出版的High Performance Graphics会议论文集中的 论文《Ambient Occlusion Volumes》,作者M.McGuire)。

传统的三维虚拟场景立体画面绘制方法采用分别独立绘制左右眼虚拟相机的图像画 面的方式来实现立体画面的绘制。值得注意的是,如果漫反射表面上的某点对左右眼同时 可见,则根据漫反射的特点可知,经该点反射进入左右眼的实际光照值基本上相等。因此, 如果已经绘制出左眼虚拟相机的图像画面,则在绘制右眼虚拟相机的图像画面时,可以利 用左眼虚拟相机的图像画面的绘制结果来避免重复计算。利用这一特点,可以大大提高三 维虚拟场景立体画面的绘制速度。

本发明的目的在于提供一种三维虚拟场景立体画面的绘制方法,首先绘制左眼虚拟相 机的图像画面,并记录从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的像素发射的 所有主光线与三维虚拟场景的面片的相交信息以及相应的源自光源的漫反射光照值和源 自环境光的漫反射光照值;在绘制右眼虚拟相机的图像画面时,利用绘制左眼虚拟相机的 图像画面时记录的源自光源的漫反射光照值和源自环境光的漫反射光照值,来避免大量的 重复光照计算,从而提高三维虚拟场景立体画面的绘制速度。

本发明方法提供一种光照数据记录结构,其包括源自光源的漫反射光照值成员变量Is、 源自环境光的漫反射光照值成员变量Ie、交点位置成员变量Ps和交点处的面片索引号成员 变量Id。

本发明方法提供一种像素位置映射结构,其包括标识成员变量tag、左眼图像像素行号 成员变量Li、左眼图像像素列号成员变量Lj、右眼图像像素行号成员变量Ri、右眼图像像 素列号成员变量Rj、交点处的面片索引号成员变量id。

本发明方法的第一部分绘制三维虚拟场景的左眼虚拟相机的图像画面,同时记录所有 从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的像素发射的主光线与三维虚拟场 景中的面片的交点位置及相应的源自光源的漫反射光照值和源自环境光的漫反射光照值, 具体步骤如下:

步骤S101:创建一个光照数据记录结构类型的二维矩阵R,其包括M×N个元素,M 为左眼虚拟相机的像平面上的像素行数,N为左眼虚拟相机的像平面上的像素列数,二维 矩阵R中的元素与左眼虚拟相机的像平面上的像素一一对应;将二维矩阵R的每个元素的 源自光源的漫反射光照值成员变量Is和源自环境光的漫反射光照值成员变量Ie初始化为0;

步骤S102:从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的每个像素发射主光 线(A01),并测试主光线(A01)与三维虚拟场景的面片是否相交;如果不相交,则将主 光线(A01)对应的像素的颜值设置为背景,否则计算交点位置Pi,记录交点处的面 片索引号ID;判断交点位置Pi所在面片的光源漫反射系数kd是否为0,若不为0,则利用 蒙特卡洛方法计算交点处的源自光源的漫反射光照值I1,否则源自光源的漫反射光照值I1 设置为0;判断交点位置Pi所在面片的环境光漫反射系数ke是否为0,若不为0,则利用 环境遮蔽体算法计算源自环境光的漫反射光照值I2,否则源自环境光的漫反射光照值I2设 置为0;将I1、I2、Pi和ID分别赋值给二维矩阵R中与主光线(A01)相对应的元素的源 自光源的漫反射光照值成员变量Is、源自环境光的漫反射光照值成员变量Ie、交点位置成 员变量Ps和交点处的面片索引号成员变量Id;判断交点位置Pi所在面片的镜面反射系数 ks是否为0,若不为0,则利用蒙特卡洛方法计算源自光源的镜面反射光照值I3,同时生成 镜面反射二次光线,并递归地跟踪计算源自镜面反射二次光线的光照值I4,否则源自光源 的镜面反射光照值I3设置为0,源自镜面反射二次光线的光照值I4设置为0;将I1+I2+I3 +I4作为主光线(A01)对应的像素的颜值。

如图1所示,三维虚拟场景中的某点(105)在左眼虚拟相机(101)的像平面(102) 上的成像点位于像素p1上,在右眼虚拟相机(102)的像平面(104)上的成像点位于像素 p2上,像素p1和像素p2相对于点(105)构成映射关系;本发明方法的第二部分计算左眼 虚拟相机的像平面上的像素与右眼虚拟相机的像平面上的像素的映射关系,具体步骤如 下:

步骤S201:创建一个像素位置映射结构类型的二维矩阵R′,其包括M×N个元素,M 为右眼虚拟相机的像平面上的像素行数,N为右眼虚拟相机的像平面上的像素列数,二维 矩阵R′中的元素与右眼虚拟相机的像平面上的像素一一对应;将二维矩阵R′的每个元素的 标识成员变量tag初始化为0;

步骤S202:建立x-y-z坐标系,其原点位于右眼虚拟相机的像平面的中心,z轴正方 向与右眼虚拟相机的前向方向向量F相同,y轴正方向与右眼虚拟相机的向上方向向量U 相同,x轴正方向与向量F×U相同;根据右眼虚拟相机的水平方向视场角α和垂直方向视 场角β以及右眼虚拟相机光心位置到x-y-z坐标系原点的距离确定右眼虚拟相机的像平面 上的有效矩形成像区域A;

步骤S203:对二维矩阵R中的每个元素ER,做如下计算:

连接元素ER的交点位置成员变量Ps表示的空间位置和右眼虚拟相机光心位置Pc,得 到一条直线段L,计算直线段L与右眼虚拟相机的像平面的交点S1,判断交点S1是否在有 效矩形成像区域A之内,如果交点S1在有效矩形成像区域A内,则:

根据右眼虚拟相机的图像分辨率和有效矩形成像区域A的几何尺寸,计算右眼虚拟相
机的像平面的像素的水平方向几何尺寸sx和垂直方向几何尺寸sy;创建一个像素位置映射
结构类型的变量V,变量V的标识成员变量tag设置为1,变量V的左眼图像像素行号成
员变量Li设置为元素ER的行号,变量V的左眼图像像素列号成员变量Lj设置为元素ER
的列号,变量V的右眼图像像素行号成员变量Ri设置为变量V的右眼图像
像素列号成员变量Rj设置为其中xS1、yS1分别为交点S1在x-y平面内的横、
纵坐标,变量V的交点处的面片索引号成员变量id设置为元素ER的交点处的面片索引号
成员变量Id;将变量V赋值给二维矩阵R′中行号为变量V的右眼图像像素行号成员变量
Ri表示的行号、列号为变量V的右眼图像像素列号成员变量Rj表示的列号的元素。

本发明方法的第三部分在本发明方法的第一部分和第二部分的计算结果的基础上,绘 制右眼虚拟相机的图像画面,具体步骤如下:

步骤S301:从右眼虚拟相机光心位置向右眼虚拟相机的像平面上的每个像素Pix发射 主光线(301),并测试主光线(301)与三维虚拟场景的面片是否相交;如果不相交,则 将主光线(301)对应的像素的颜值设置为背景,否则计算交点位置Pi′,记录交点处 的面片索引号ID′;

步骤S302:将像素Pix对应的二维矩阵R′的元素赋值给变量V′;如果变量V′的标识 成员变量tag为1且ID′等于V′的交点处的面片索引号成员变量id的值,则转步骤S303, 否则转步骤S304;

步骤S303:将二维矩阵R中的元素ER′赋值给变量W,其中元素ER′的行号为V′的左 眼图像像素行号成员变量Li表示的行号,元素ER′的列号为V′的左眼图像像素列号成员变 量Lj表示的列号;判断交点位置Pi′所在面片的镜面反射系数ks是否为0,若不为0,则按 照蒙特卡洛方法计算源自光源的镜面反射光照值I3′,同时生成镜面反射二次光线,并递归 地跟踪计算源自镜面反射二次光线的光照值I4′,否则源自光源的镜面反射光照值I3′设置为 0,源自镜面反射二次光线的光照值I4′设置为0;求变量W的源自光源的漫反射光照值成 员变量Is、变量W的源自环境光的漫反射光照值成员变量Ie、光照值I3′、光照值I4′等四个 量的和,将其作为主光线(301)对应的像素的颜值;转步骤S305;

步骤S304:判断交点位置Pi′所在面片的光源漫反射系数kd是否为0,若不为0,则利 用蒙特卡洛方法计算交点处的源自光源的漫反射光照值I1′,否则源自光源的漫反射光照值 I1′设置为0;判断交点位置Pi′所在面片的环境光漫反射系数ke是否为0,若不为0,则利 用环境遮蔽体算法计算源自环境光的漫反射光照值I2′,否则源自环境光的漫反射光照值I2′ 设置为0;判断交点位置Pi′所在面片的镜面反射系数ks是否为0,若不为0,则按照蒙特 卡洛方法计算源自光源的镜面反射光照值I3′,同时生成镜面反射二次光线,并递归地跟踪 计算源自镜面反射二次光线的光照值I4′,否则源自光源的镜面反射光照值I3′设置为0,源 自镜面反射二次光线的光照值I4′设置为0;将I1′+I2′+I3′+I4′作为主光线(301)对应的像 素的颜值;

步骤S305:计算结束。

有益效果

本发明提供了一种三维虚拟场景立体画面的绘制方法。由于在绘制右眼虚拟相机的图 像画面时利用了左眼虚拟相机的图像画面绘制结果,因此减少了绘制三维虚拟场景立体画 面的总时间。利用本发明方法绘制三维虚拟场景立体画面比传统方法快15%~30%。

图1是左右眼虚拟相机的像平面上的像素映射关系示意图。

为了使本发明的特征和优点更加清楚明白,下面结合具体实施例对本发明作进一步的 描述。

在本实施例中,利用GPU加速三维虚拟场景的源自光源的漫反射光照值和源自环境 光的漫反射光照值计算。本发明的目的在于提供一种三维虚拟场景立体画面的绘制方法, 首先绘制左眼虚拟相机的图像画面,并记录从左眼虚拟相机光心位置向左眼虚拟相机的像 平面上的像素发射的所有主光线与三维虚拟场景的面片的相交信息以及相应的源自光源 的漫反射光照值和源自环境光的漫反射光照值;在绘制右眼虚拟相机的图像画面时,利用 绘制左眼虚拟相机的图像画面时记录的源自光源的漫反射光照值和源自环境光的漫反射 光照值,来避免大量的重复光照计算,从而提高三维虚拟场景立体画面的绘制速度。

本发明方法提供一种光照数据记录结构,其包括源自光源的漫反射光照值成员变量Is、 源自环境光的漫反射光照值成员变量Ie、交点位置成员变量Ps和交点处的面片索引号成员 变量Id。

本发明方法提供一种像素位置映射结构,其包括标识成员变量tag、左眼图像像素行号 成员变量Li、左眼图像像素列号成员变量Lj、右眼图像像素行号成员变量Ri、右眼图像像 素列号成员变量Rj、交点处的面片索引号成员变量id。

本发明方法的第一部分绘制三维虚拟场景的左眼虚拟相机的图像画面,同时记录所有 从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的像素发射的主光线与三维虚拟场 景中的面片的交点位置及相应的源自光源的漫反射光照值和源自环境光的漫反射光照值, 具体步骤如下:

步骤S101:创建一个光照数据记录结构类型的二维矩阵R,其包括M×N个元素,M 为左眼虚拟相机的像平面上的像素行数,N为左眼虚拟相机的像平面上的像素列数,二维 矩阵R中的元素与左眼虚拟相机的像平面上的像素一一对应;将二维矩阵R的每个元素的 源自光源的漫反射光照值成员变量Is和源自环境光的漫反射光照值成员变量Ie初始化为0;

步骤S102:从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的每个像素发射主光 线(A01),并测试主光线(A01)与三维虚拟场景的面片是否相交;如果不相交,则将主 光线(A01)对应的像素的颜值设置为背景,否则计算交点位置Pi,记录交点处的面 片索引号ID;判断交点位置Pi所在面片的光源漫反射系数kd是否为0,若不为0,则利用 蒙特卡洛方法计算交点处的源自光源的漫反射光照值I1,否则源自光源的漫反射光照值I1 设置为0;判断交点位置Pi所在面片的环境光漫反射系数ke是否为0,若不为0,则利用 环境遮蔽体算法计算源自环境光的漫反射光照值I2,否则源自环境光的漫反射光照值I2设 置为0;将I1、I2、Pi和ID分别赋值给二维矩阵R中与主光线(A01)相对应的元素的源 自光源的漫反射光照值成员变量Is、源自环境光的漫反射光照值成员变量Ie、交点位置成 员变量Ps和交点处的面片索引号成员变量Id;判断交点位置Pi所在面片的镜面反射系数 ks是否为0,若不为0,则利用蒙特卡洛方法计算源自光源的镜面反射光照值I3,同时生成 镜面反射二次光线,并递归地跟踪计算源自镜面反射二次光线的光照值I4,否则源自光源 的镜面反射光照值I3设置为0,源自镜面反射二次光线的光照值I4设置为0;将I1+I2+I3 +I4作为主光线(A01)对应的像素的颜值。

如图1所示,三维虚拟场景中的某点(105)在左眼虚拟相机(101)的像平面(102) 上的成像点位于像素p1上,在右眼虚拟相机(102)的像平面(104)上的成像点位于像素 p2上,像素p1和像素p2相对于点(105)构成映射关系;本发明方法的第二部分计算左眼 虚拟相机的像平面上的像素与右眼虚拟相机的像平面上的像素的映射关系,具体步骤如 下:

步骤S201:创建一个像素位置映射结构类型的二维矩阵R′,其包括M×N个元素,M 为右眼虚拟相机的像平面上的像素行数,N为右眼虚拟相机的像平面上的像素列数,二维 矩阵R′中的元素与右眼虚拟相机的像平面上的像素一一对应;将二维矩阵R′的每个元素的 标识成员变量tag初始化为0;

步骤S202:建立x-y-z坐标系,其原点位于右眼虚拟相机的像平面的中心,z轴正方 向与右眼虚拟相机的前向方向向量F相同,y轴正方向与右眼虚拟相机的向上方向向量U 相同,x轴正方向与向量F×U相同;根据右眼虚拟相机的水平方向视场角α和垂直方向视 场角β以及右眼虚拟相机光心位置到x-y-z坐标系原点的距离确定右眼虚拟相机的像平面 上的有效矩形成像区域A;

步骤S203:对二维矩阵R中的每个元素ER,做如下计算:

连接元素ER的交点位置成员变量Ps表示的空间位置和右眼虚拟相机光心位置Pc,得 到一条直线段L,计算直线段L与右眼虚拟相机的像平面的交点S1,判断交点S1是否在有 效矩形成像区域A之内,如果交点S1在有效矩形成像区域A内,则:

根据右眼虚拟相机的图像分辨率和有效矩形成像区域A的几何尺寸,计算右眼虚拟相
机的像平面的像素的水平方向几何尺寸sx和垂直方向几何尺寸sy;创建一个像素位置映射
结构类型的变量V,变量V的标识成员变量tag设置为1,变量V的左眼图像像素行号成
员变量Li设置为元素ER的行号,变量V的左眼图像像素列号成员变量Lj设置为元素ER
的列号,变量V的右眼图像像素行号成员变量Ri设置为变量V的右眼图像
像素列号成员变量Rj设置为其中xS1、yS1分别为交点S1在x-y平面内的横、
纵坐标,变量V的交点处的面片索引号成员变量id设置为元素ER的交点处的面片索引号
成员变量Id;将变量V赋值给二维矩阵R′中行号为变量V的右眼图像像素行号成员变量
Ri表示的行号、列号为变量V的右眼图像像素列号成员变量Rj表示的列号的元素。

本发明方法的第三部分在本发明方法的第一部分和第二部分的计算结果的基础上,绘 制右眼虚拟相机的图像画面,具体步骤如下:

步骤S301:从右眼虚拟相机光心位置向右眼虚拟相机的像平面上的每个像素Pix发射 主光线(301),并测试主光线(301)与三维虚拟场景的面片是否相交;如果不相交,则 将主光线(301)对应的像素的颜值设置为背景,否则计算交点位置Pi′,记录交点处 的面片索引号ID′;

步骤S302:将像素Pix对应的二维矩阵R′的元素赋值给变量V′;如果变量V′的标识 成员变量tag为1且ID′等于V′的交点处的面片索引号成员变量id的值,则转步骤S303, 否则转步骤S304;

步骤S303:将二维矩阵R中的元素ER′赋值给变量W,其中元素ER′的行号为V′的左 眼图像像素行号成员变量Li表示的行号,元素ER′的列号为V′的左眼图像像素列号成员变 量Lj表示的列号;判断交点位置Pi′所在面片的镜面反射系数ks是否为0,若不为0,则按 照蒙特卡洛方法计算源自光源的镜面反射光照值I3′,同时生成镜面反射二次光线,并递归 地跟踪计算源自镜面反射二次光线的光照值I4′,否则源自光源的镜面反射光照值I3′设置为 0,源自镜面反射二次光线的光照值I4′设置为0;求变量W的源自光源的漫反射光照值成 员变量Is、变量W的源自环境光的漫反射光照值成员变量Ie、光照值I3′、光照值I4′等四个 量的和,将其作为主光线(301)对应的像素的颜值;转步骤S305;

步骤S304:判断交点位置Pi′所在面片的光源漫反射系数kd是否为0,若不为0,则利 用蒙特卡洛方法计算交点处的源自光源的漫反射光照值I1′,否则源自光源的漫反射光照值 I1′设置为0;判断交点位置Pi′所在面片的环境光漫反射系数ke是否为0,若不为0,则利 用环境遮蔽体算法计算源自环境光的漫反射光照值I2′,否则源自环境光的漫反射光照值I2′ 设置为0;判断交点位置Pi′所在面片的镜面反射系数ks是否为0,若不为0,则按照蒙特 卡洛方法计算源自光源的镜面反射光照值I3′,同时生成镜面反射二次光线,并递归地跟踪 计算源自镜面反射二次光线的光照值I4′,否则源自光源的镜面反射光照值I3′设置为0,源 自镜面反射二次光线的光照值I4′设置为0;将I1′+I2′+I3′+I4′作为主光线(301)对应的像 素的颜值;

步骤S305:计算结束。

本文发布于:2024-09-24 06:28:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/72988.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议