1.一种结合云端全局光照渲染的VR三维场景立体画面生成方法,其特征在于:本方法的具体实现步骤如下:
1)本方法第一部分把VR三维场景模型从用户端VR应用程序加载到远程云端,具体步骤如下:把用户端VR应用程序中的三维场景模型A001通过网络传送到远程云端,从而确保用户端VR应用程序和远程云端各有一份三维场景模型A001的拷贝;
2)本方法第二部分渲染VR三维场景的全局光照效果立体画面,具体步骤如下:
步骤Step201:用户端VR应用程序通过网络把当前观察参数对应的左右眼虚拟相机参数传送给远程云端;
步骤Step202:在用户端VR应用程序和远程云端中分别同时开始执行步骤Step202-1和步骤Step202-2;
步骤Step202-1:在用户端VR应用程序中,根据当前观察参数对应的左眼虚拟相机参数,利用光线投射技术,从左眼虚拟相机对应的视点位置发射穿过左眼虚拟相机的虚拟像素平面上的各个像素中心点的光线A002,计算光线A002与三维场景模型A001的几何对象的离左眼虚拟相机对应的视点最近的交点A003,记录交点A003在世界坐标系中的位置,交点A003是一个可视场景点;可视场景点与虚拟相机的虚拟像素平面上的像素一一对应;
步骤Step202-2:在远程云端中,执行如下操作:
步骤Step202-2-1:接收从用户端VR应用程序发来的当前观察参数对应的左右眼虚拟相机参数,根据左眼虚拟相机参数和三维场景模型A001,利用光线跟踪技术渲染三维场景的全局光照效果立体画面的左眼子图IML;在执行光线跟踪的过程中,记录从左眼虚拟相机对应的视点位置发射的穿过左眼虚拟相机的虚拟像素平面上的各个像素中心点的光线A004与三维场景模型A001的几何对象的离左眼虚拟相机对应的视点最近的交点A005在世界坐标系中的位置,交点A005是一个可视场景点;
步骤Step202-2-2:在远程云端中,创建一个包含MR行、NC列元素的二维数组Tag,MR表示右眼虚拟相机的虚拟像素平面上的像素行数,NC表示右眼虚拟相机的虚拟像素平面上的像素列数,二维数组Tag的元素与右眼虚拟相机的虚拟像素平面上的像素一一对应;把二维数组Tag的每个元素都初始化为0;二维数组Tag的元素的值用于标识右眼虚拟相机的虚拟像素平面上的对应像素的颜色值是否能从左眼子图IML投影获得;针对左眼虚拟相机的虚拟像素平面上的每个像素Pix,做如下操作:①计算像素Pix对应的可视场景点按透视投影方式投影到右眼虚拟相机的虚拟像素平面上的投影点位置A006;
②判断投影点位置A006是否落在右眼虚拟相机的虚拟像素平面上的某个像素矩形区域REG内,如果是,则转③,否则转⑤;
③计算像素矩形区域REG对应的像素在右眼虚拟相机的虚拟像素平面上的行号nRow和列号nCol;判断以像素Pix对应的可视场景点和右眼虚拟相机对应的视点为端点的线段A007与三维场景模型A001的几何对象之间是否无除线段A007的端点外的交点,如果是,则转④,否则转⑤;
④把二维数组Tag的第nRow行、第nCol列元素赋值为1;
⑤针对像素Pix的操作结束;
步骤Step202-2-3:在远程云端中,通过网络把左眼子图IML传送给用户端VR应用程序;
步骤Step202-2-4:在远程云端中,创建一个包含Num个元素的列表A009,列表A009的元素用于保存像素的颜色值,Num等于二维数组Tag的值为0的元素个数;令nR=1,nC=1,Idx=
1;
步骤Step202-2-5:如果二维数组Tag的第nR行、第nC列元素的值为0,则根据右眼虚拟相机参数和三维场景模型A001,利用光线跟踪技术渲染用右眼虚拟相机拍摄三维场景时的虚拟像素平面上的第nR行、第nC列像素对应的颜色值A008,把颜色值A008赋值给列表A009的第Idx个元素;令Idx=Idx+1;
步骤Step202-2-6:令nC=nC+1;如果nC≤NC,则转步骤Step202-2-5,否则转步骤Step202-2-7;
步骤Step202-2-7:令nR=nR+1,nC=1;如果nR≤MR,则转步骤Step202-2-5,否则转步骤Step202-2-8;
步骤Step202-2-8:在远程云端中,通过网络把列表A009传送给用户端VR应用程序;
步骤Step202-3:用户端VR应用程序执行步骤Step202-1结束,远程云端执行步骤Step202-2结束;
步骤Step202-4:用户端VR应用程序接收从远程云端发来的左眼子图IML和列表A009;
步骤Step202-5:在用户端VR应用程序中,创建一个左眼子图IML的拷贝副本作为初始的右眼子图IMR;在用户端VR应用程序中,创建一个包含MR行、NC列元素的二维数组Tag2,二维数组Tag2的元素与右眼虚拟相机的虚拟像素平面上的像素一一对应;把二维数组Tag2的每个元素都初始化为0;
步骤Step202-6:在用户端VR应用程序中,针对左眼虚拟相机的虚拟像素平面上的每个像素Pix,做如下操作:子步骤Ⅰ:计算像素Pix对应的可视场景点按透视投影方式投影到右眼虚拟相机的虚拟像素平面上的投影点位置A006;
子步骤Ⅱ:判断投影点位置A006是否落在右眼虚拟相机的虚拟像素平面上的某个像素矩形区域REG内,如果是,则转子步骤Ⅲ,否则转子步骤Ⅴ;
子步骤Ⅲ:计算像素矩形区域REG对应的像素在右眼虚拟相机的虚拟像素平面上的行号nRow和列号nCol;判断以像素Pix对应的可视场景点和右眼虚拟相机对应的视点为端点的线段A007与三维场景模型A001的几何对象之间是否无除线段A007的端点外的交点,如果是,则转子步骤Ⅳ,否则转子步骤Ⅴ;
子步骤Ⅳ:计算像素Pix在左眼虚拟相机的虚拟像素平面上的行号nr和列号nc;把二维数组Tag2的第nRow行、第nCol列元素赋值为1,把右眼子图IMR的第nRow行、第nCol列像素颜色设置为左眼子图IML的第nr行、第nc列像素的颜色值;
子步骤Ⅴ:针对像素Pix的操作结束;
步骤Step202-7:令IR=1,IC=1,idx=1;
步骤Step202-8:如果二维数组Tag2的第IR行、第IC列元素的值为0,则把列表A009第idx个元素保存的颜色值赋给右眼子图IMR的第IR行、第IC列像素;令idx=idx+1;
步骤Step202-9:令IC=IC+1;如果IC≤NC,则转步骤Step202-8,否则转步骤Step202-10;
步骤Step202-10:令IR=IR+1,IC=1;如果IR≤MR,则转步骤Step202-8,否则转步骤Step203;
步骤Step203:在用户端VR应用程序中,把左眼子图IML和右眼子图IMR显示在VR立体显示设备上;
当改变VR观看位置和方向后,更新观察参数对应的左右眼虚拟相机参数,然后再重新执行步骤Step201至步骤Step203可以实现VR三维场景立体画面的连续生成与显示;左眼虚拟相机的虚拟像素平面上的像素行数和右眼虚拟相机的虚拟像素平面上的像素行数相同;
左眼虚拟相机的虚拟像素平面上的像素列数和右眼虚拟相机的虚拟像素平面上的像素列数相同。