CN112002003B - 虚拟3d场景的球面全景立体画面生成与交互式显示方法 - Google Patents
虚拟3d场景的球面全景立体画面生成与交互式显示方法 Download PDFInfo
- Publication number
- CN112002003B CN112002003B CN202010841798.8A CN202010841798A CN112002003B CN 112002003 B CN112002003 B CN 112002003B CN 202010841798 A CN202010841798 A CN 202010841798A CN 112002003 B CN112002003 B CN 112002003B
- Authority
- CN
- China
- Prior art keywords
- point
- spherical
- coordinate system
- picture
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/55—Radiosity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开一种虚拟3D场景的球面全景立体画面生成与交互式显示方法。本方法提供一种球面全景立体相机,其由一个虚拟成像球面和一个观影圆定义,在此基础上利用光线跟踪技术根据虚拟3D场景模型生成球面全景立体画面。球面全景立体画面的左眼全景图像和右眼全景图像都覆盖水平360度+竖直180度的视场范围。本方法能够在头戴式显示器上根据观看者的头部姿态,正确地显示观看者左右眼看到的球面全景立体画面的局部视口区域,使观看者获得正确的立体视觉体验。
Description
技术领域
本发明涉及一种虚拟3D场景的球面全景立体画面生成与交互式显示方法,属于三维图形绘制与画面显示技术领域。
背景技术
当前,全景图像已经成为一种常见的图像类型。全景图像是定义在球面域的图像。严格地说,全景图像是一种宽视场图像,其视场范围覆盖水平360度+竖直180度的视域球确定的全部观察方向。发表在ELSEVIER期刊《Signal Processing》2018年146卷66~78页的论文“Recent advances in omnidirectional video coding for virtual reality:Projection and evaluation”对全景视频的投影和评估问题进行过讨论。实际上,全景视频可以看成是由一组全景图像画面组成的序列,全景视频处理的基础是对全景图像画面的处理。在数学上,可以把全景图像看作是定义在视域球表面上的球面图像信号,其描述了视域球表面各个位置的颜色信息。目前,人们经常按等距柱面投影(EquirectangularProjection,ERP)方式用二维矩形图像来存储水平360度+竖直180度全景球面图像信号。
发表在《Multimedia Tools and Applications》2010年47卷353~377页的论文“Stereo panorama acquisition and automatic image disparity adjustment forstereoscopic visualization”叙述了全景立体成像方法,其中拍摄相机的视点需根据拍摄光轴方向的不同而在观影圆上移动,观影圆就是该论文图6中的Base Circle,从观影圆中心到视点的连线与拍摄光轴方向的夹角可视为拍摄光轴偏转角(即该论文图6中的Principle Angle)。《Multimedia Tools and Applications》2010年47卷353~377页的论文考虑的是用实际相机拍摄真实场景以捕获全景立体画面。对于根据虚拟3D场景用计算机生成球面全景立体画面的情形,则需要另外设计独特的方法来确定虚拟成像球面上的像素采样点的颜色值。球面全景立体画面非常适合在头戴式显示设备(例如Occulus Rift、索尼PlayStation VR、Samsung Gear VR)上观看。然而,不同于普通的立体投影机或者立体显示器(其把左右眼画面显示在同一空间区域上),头戴式显示设备通常具有两个显示区域,一个区域显示左眼画面供观看者的左眼观看,另一个区域显示右眼画面供观看者的右眼观看。为了能在头戴式显示设备上正确地观看球面全景立体画面,需要设计独特的方法来根据头戴式显示设备的姿态和球面全景立体画面,生成能在头戴式显示设备的显示屏上正常显示的左眼视口图像画面和右眼视口图像画面。
光线跟踪是一种常见的用于绘制虚拟3D场景画面的技术。目前介绍光线跟踪的文献基本上都只考虑使用视场有限的透视投影相机(Perspective Camera)拍摄虚拟3D场景的情形。透视投影相机可以参考Pearson Education公司2014年出版的《ComputerGraphics:Principles and Practice,3rd Edition》的13.3节的介绍。球面全景立体画面实际上由左眼对应的全景图像和右眼对应的全景图像组成,左眼对应的全景图像代表左眼看到的全景画面信息,右眼对应的全景图像代表右眼看到的全景画面信息。本发明提供一种球面全景立体相机(如图1所示,其包括一个虚拟成像球面和一个观影圆),据此利用光线跟踪技术根据虚拟3D场景模型生成球面全景立体画面,给出了球面全景立体相机的虚拟成像球面上的像素采样点对应的光线的生成方法,通过跟踪这些光线在虚拟3D场景中的传播来计算虚拟成像球面上的像素采样点的颜色值。
虚拟成像球面上每个像素采样点都对应特定的左眼视点cL和右眼视点cR,左眼视点cL和右眼视点cR因虚拟成像球面上的像素采样点的不同而在观影圆上移动。如图1所示,虚拟成像球面对应的球心位于u-v-w坐标系的原点,u-v-w坐标系是以球面全景立体相机的观影圆中心为原点的坐标系,点a1和点a2是虚拟成像球面上的两个像素采样点,从左眼视点cL出发穿过点a1的光线与3D场景相交于点p,从右眼视点cR出发穿过点a2的光线与3D场景相交于点p;这里假设由左眼视点cL与点p确定的线段与3D场景之间没有除线段端点外的其他交点,由右眼视点cR与点p确定的线段与3D场景之间没有除线段端点外的其他交点,因此场景点p在左眼对应的球面全景画面中成像在点a1,场景点p在右眼对应的球面全景画面中成像在点a2。
发明内容
本发明的目的在于,提供一种虚拟3D场景的球面全景立体画面生成与交互式显示方法,本方法能够根据虚拟3D场景模型生成球面全景立体画面,并且可以交互式地在头戴式显示设备上显示立体视口画面,让观看者产生身临其境的观看体验。
本方法的技术方案是这样实现的:一种虚拟3D场景的球面全景立体画面生成与交互式显示方法,其特征在于:如图1所示,提供一种球面全景立体相机,球面全景立体相机包括一个虚拟成像球面和一个观影圆,虚拟成像球面对应的球半径为R,观影圆的半径为r,虚拟成像球面对应的球心位于u-v-w坐标系的原点,观影圆在u-v-w坐标系的u-o-v平面上,观影圆的圆心位于u-v-w坐标系的原点;首先按照对方位角和极角的等角度间隔采样方式计算虚拟成像球面上各个像素采样点的坐标;然后针对虚拟成像球面上的每个像素采样点,根据观影圆参数计算其对应的左眼视点位置和右眼视点位置;利用光线跟踪技术从左眼视点位置发射穿过像素采样点的光线并跟踪光线在虚拟3D场景中的传播,从而得到该像素采样点在左眼观看时的颜色;利用光线跟踪技术从右眼视点位置发射穿过像素采样点的光线并跟踪光线在虚拟3D场景中的传播,从而得到该像素采样点在右眼观看时的颜色。使用等距柱面投影全景图像来存储虚拟成像球面上的各个像素采样点的颜色。在生成球面全景立体画面后进行立体视口画面交互式显示时,使用可编程光栅化图形绘制管线技术来绘制图4所示的透视投影相机CAM拍摄到的三维球面模型SphereM的画面PICT,分别把左眼对应的等距柱面投影全景图像和右眼对应的等距柱面投影全景图像作为纹理,根据这两个纹理生成左眼视口对应的画面PICT和右眼视口对应的画面PICT,最后把左眼视口对应的画面PICT和右眼视口对应的画面PICT显示在头戴式显示器上;三维球面模型SphereM对应的球心在x-y-z世界坐标系的原点,三维球面模型SphereM对应的球半径为R;针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,计算片段B002在x-y-z世界坐标系中的坐标,据此计算片段B002对应的左眼纹理坐标和右眼纹理坐标,最后根据左眼对应的等距柱面投影全景图像纹理插值计算左眼纹理坐标处的颜色值ColorL,根据右眼对应的等距柱面投影全景图像纹理插值计算右眼纹理坐标处的颜色值ColorR;把片段B002在左眼视口对应的画面PICT中对应的像素的颜色设置为颜色值ColorL,把片段B002在右眼视口对应的画面PICT中对应的像素的颜色设置为颜色值ColorR。具体实现步骤如下:
1)利用光线跟踪技术,根据球面全景立体相机和虚拟3D场景模型生成球面全景立体画面,具体步骤如下:
步骤Step101:按照对方位角和极角的等角度间隔采样方式计算虚拟成像球面上各个像素采样点的坐标,用等距柱面投影全景图像来存储虚拟成像球面上的这些像素采样点的颜色;如图2所示,等距柱面投影全景图像总共包含N行、2N列像素,N为正整数;等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标为(uij,vij,wij),uij=R×sin(i×π/N+0.5×π/N)×cos(j×π/N+0.5×π/N),vij=R×sin(i×π/N+0.5×π/N)×sin(j×π/N+0.5×π/N),wij=R×cos(i×π/N+0.5×π/N);i=0,1,…,N-1;j=0,1,…,2N-1;
步骤Step102:在计算机的存储器中创建一个包含N行、2N列元素的二维数组IML,二维数组IML的每个元素存储左眼对应的等距柱面投影全景图像的一个像素的颜色值,二维数组IML的元素与等距柱面投影全景图像的像素一一对应;在计算机的存储器中创建一个包含N行、2N列元素的二维数组IMR,二维数组IMR的每个元素存储右眼对应的等距柱面投影全景图像的一个像素的颜色值,二维数组IMR的元素与等距柱面投影全景图像的像素一一对应;
步骤Step103:针对等距柱面投影全景图像的每个像素A001,分别做如下操作:
步骤Step103-1:计算像素A001在等距柱面投影全景图像中的行号i和列号j;
步骤Step103-2:计算等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标(uij,vij,wij);计算直角坐标(uij,vij,wij)对应的球坐标的极角θ和方位角两个坐标分量值;
步骤Step103-3:如图3所示,计算球面全景立体相机的观影圆的穿过点Q的两条切线对应的切点cL和切点cR的坐标,其中点Q的u坐标分量点Q的v坐标分量点Q的w坐标分量qw=0;切点cL为像素A001对应的虚拟成像球面上的像素采样点对应的左眼视点,切点cR为像素A001对应的虚拟成像球面上的像素采样点对应的右眼视点;切点cL和切点cR在u-v-w坐标系中的坐标计算公式为:cL=Q-bL,cR=Q-bR,向量bL的计算公式为向量bR的计算公式为l表示点Q到u-v-w坐标系的原点的距离,向量v表示从u-v-w坐标系的原点指向点Q的长度为l的向量,旋转变换矩阵旋转角
步骤Step103-4:利用坐标变换方法,根据切点cL在u-v-w坐标系中的直角坐标计算切点cL在x-y-z世界坐标系中的直角坐标;利用坐标变换方法,根据等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标(uij,vij,wij)计算等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在x-y-z世界坐标系中的直角坐标;在x-y-z世界坐标系中,以切点cL作为起点发射一条穿过等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点的光线LRay,利用光线跟踪技术跟踪光线LRay在虚拟3D场景中的传播,计算沿光线LRay的反方向到达切点cL的光亮度值LRAD,把光亮度值LRAD转换成全景图像像素颜色值LColor,把颜色值LColor保存在二维数组IML的第i行、第j列元素中;
步骤Step103-5:利用坐标变换方法,根据切点cR在u-v-w坐标系中的直角坐标计算切点cR在x-y-z世界坐标系中的直角坐标;在x-y-z世界坐标系中,以切点cR作为起点发射一条穿过等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点的光线RRay,利用光线跟踪技术跟踪光线RRay在虚拟3D场景中的传播,计算沿光线RRay的反方向到达切点cR的光亮度值RRAD,把光亮度值RRAD转换成全景图像像素颜色值RColor,把颜色值RColor保存在二维数组IMR的第i行、第j列元素中;
步骤Step103-6:针对像素A001的操作结束;
步骤Step104:把二维数组IML保存的像素颜色值作为左眼对应的等距柱面投影全景图像数据保存到计算机磁盘文件PIML中,把二维数组IMR保存的像素颜色值作为右眼对应的等距柱面投影全景图像数据保存到计算机磁盘文件PIMR中。
2)根据球面全景立体画面的观看者的观看参数,获取左眼对应的等距柱面投影全景图像画面和右眼对应的等距柱面投影全景图像画面的相应局部视口区域并显示在头戴式显示设备上,实现球面全景立体画面的交互式显示,具体步骤如下:
步骤Step201:用3D建模软件创建一个半径为R的三维球面模型SphereM,并把三维球面模型SphereM加载到计算机存储器中;把磁盘文件PIML保存的左眼对应的等距柱面投影全景图像数据加载到计算机存储器中,把磁盘文件PIMR保存的右眼对应的等距柱面投影全景图像数据加载到计算机存储器中;
步骤Step202:如图4所示,利用三维模型变换,使三维球面模型SphereM的球心与x-y-z世界坐标系的原点位置重合,使x-y-z世界坐标系的z轴正方向为从x-y-z世界坐标系的原点指向三维球面模型SphereM的北极点的方向;图4中的球面表示三维球面模型SphereM,三维球面模型SphereM的北极点对应的球坐标的极角坐标分量为0;
步骤Step203:获取戴在观看者头部的头戴式显示器在当前时刻的朝向数据B001,并执行以下操作:
步骤Step203-1:使用图4所示的透视投影相机CAM拍摄三维球面模型SphereM,透视投影相机CAM的视点在三维球面模型SphereM对应的球心位置;把透视投影相机CAM的向前观察方向向量Tper设置为朝向数据B001对应的朝向方向在x-y-z世界坐标系中对应的单位向量;如果朝向数据B001对应的朝向方向平行于x-y-z世界坐标系的x-o-y平面,则把透视投影相机CAM的向上方向向量Vper设置为z轴正方向对应的单位向量Vz=[0,0,1]T,否则把透视投影相机CAM的向上方向向量Vper设置为Tper×Uper,其中单位向量Uper=(Vz×Tper)/||Vz×Tper||;把透视投影相机CAM的水平视场半角设置为αh,把透视投影相机CAM的垂直视场半角设置为αv;把透视投影相机CAM的远裁剪平面到视点的距离设置为df,把透视投影相机CAM的近裁剪平面到视点的距离设置为dn,df为大于R的正数,dn为小于0.6R的正数;
步骤Step203-2:在图形绘制程序中使用可编程光栅化图形绘制管线技术来绘制透视投影相机CAM拍摄到的三维球面模型SphereM的画面;在图形绘制程序中创建两个大小相同、水平并排放置的视口,如图5所示,左视口对应左眼看到的透视投影相机CAM拍摄到的三维球面模型SphereM的画面,右视口对应右眼看到的透视投影相机CAM拍摄到的三维球面模型SphereM的画面;
步骤Step203-3:在可编程光栅化图形绘制管线中,使用透视投影相机CAM,绘制左视口对应的三维球面模型SphereM的画面并把画面保存到离屏帧缓冲区FBufL中;在此过程中针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,分别做如下操作:
步骤Step203-3-1:计算片段B002在x-y-z世界坐标系中的直角坐标(Fx,Fy,Fz);
步骤Step203-3-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量点Q′的y坐标分量点Q′的z坐标分量q′z=0;令圆CIR代表x-y-z世界坐标系的x-o-y平面上的以x-y-z世界坐标系的原点为圆心、半径为r的圆;计算圆CIR的穿过点Q′的切线对应的切点c′L=Q′-b′L,向量b′L的计算公式为l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
步骤Step203-3-4:令线段SEGL表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′L为端点的线段;计算线段SEGL与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelL,计算交点PixelL的球坐标的极角θL和方位角两个坐标分量值;把计算机存储器中的左眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标对应的颜色值ColorL;如图6所示,纹理坐标由s和t两个分量构成,纹理坐标表示成(s,t)的形式,0≤s≤1,0≤t≤1;输出颜色值ColorL作为片段B002的颜色;
步骤Step203-3-5:针对片段B002的操作结束;
步骤Step203-4:在可编程光栅化图形绘制管线中,使用透视投影相机CAM,绘制右视口对应的三维球面模型SphereM的画面并把画面保存到离屏帧缓冲区FBufR中;在此过程中针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,分别做如下操作:
步骤Step203-4-1:计算片段B002在x-y-z世界坐标系中的直角坐标(Fx,Fy,Fz);
步骤Step203-4-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量点Q′的y坐标分量点Q′的z坐标分量q′z=0;令圆CIR代表x-y-z世界坐标系的x-o-y平面上的以x-y-z世界坐标系的原点为圆心、半径为r的圆;计算圆CIR的穿过点Q′的切线对应的切点c′R=Q′-b′R,向量b′R的计算公式为l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
步骤Step203-4-4:令线段SEGR表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′R为端点的线段;计算线段SEGR与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelR,计算交点PixelR的球坐标的极角θR和方位角两个坐标分量值,把计算机存储器中的右眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标对应的颜色值ColorR;输出颜色值ColorR作为片段B002的颜色;
步骤Step203-4-5:针对片段B002的操作结束;
步骤Step203-5:把离屏帧缓冲区FBufL和离屏帧缓冲区FBufR中保存的左视口和右视口对应的三维球面模型SphereM的画面分别显示到头戴式显示器的左眼屏幕区域和右眼屏幕区域上;
步骤Step204:检查图形绘制程序是否收到终止运行消息,如果没有收到终止运行消息,则转步骤Step203,否则转步骤Step205;
步骤Step205:结束球面全景立体画面的交互式显示。
本发明的积极效果是:本方法能够利用计算机生成虚拟3D场景的球面全景立体画面,球面全景立体画面的左眼对应的全景图像和右眼对应的全景图像都覆盖水平360度+竖直180度的视场范围;本方法能够在头戴式显示器上根据观看者的头部姿态,正确地显示观看者左右眼看到的球面全景立体画面的局部视口区域,使观看者获得正确的立体视觉体验;本方法能获取观看者通过头部转动改变头戴式显示器朝向后的观看参数,以此作为交互输入数据,达到交互式显示球面全景立体画面的目的。另外,本方法在交互式地显示球面全景立体画面时,能够利用现有的可编程光栅化图形绘制管线技术,降低了编程难度,提高了程序执行效率。
附图说明
图1为球面全景立体相机示意图。
图2为等距柱面投影全景图像示意图。
图3为虚拟成像球面上的像素采样点对应的在观影圆上的左右眼视点示意图。
图4为使用透视投影相机CAM拍摄三维球面模型SphereM的示意图。
图5为左视口和右视口示意图。
图6为等距柱面投影全景图像与纹理坐标系的关系示意图。
具体实施方式
为了使本方法的特征和优点更加清楚明白,下面结合具体实施例对本方法作进一步的描述。本实施例考虑生成房间虚拟3D场景模型的球面全景立体画面,并使用OcculusRift来交互式地显示球面全景立体画面的局部视口区域。在实现球面全景立体画面的交互式显示之前,先把Occulus Rift连接到计算机上,并使Occulus Rift正常工作。
本方法的技术方案是这样实现的:一种虚拟3D场景的球面全景立体画面生成与交互式显示方法,其特征在于:如图1所示,提供一种球面全景立体相机,球面全景立体相机包括一个虚拟成像球面和一个观影圆,虚拟成像球面对应的球半径为R,观影圆的半径为r,虚拟成像球面对应的球心位于u-v-w坐标系的原点,观影圆在u-v-w坐标系的u-o-v平面上,观影圆的圆心位于u-v-w坐标系的原点;首先按照对方位角和极角的等角度间隔采样方式计算虚拟成像球面上各个像素采样点的坐标;然后针对虚拟成像球面上的每个像素采样点,根据观影圆参数计算其对应的左眼视点位置和右眼视点位置;利用光线跟踪技术从左眼视点位置发射穿过像素采样点的光线并跟踪光线在虚拟3D场景中的传播,从而得到该像素采样点在左眼观看时的颜色;利用光线跟踪技术从右眼视点位置发射穿过像素采样点的光线并跟踪光线在虚拟3D场景中的传播,从而得到该像素采样点在右眼观看时的颜色。使用等距柱面投影全景图像来存储虚拟成像球面上的各个像素采样点的颜色。在生成球面全景立体画面后进行立体视口画面交互式显示时,使用可编程光栅化图形绘制管线技术来绘制图4所示的透视投影相机CAM拍摄到的三维球面模型SphereM的画面PICT,分别把左眼对应的等距柱面投影全景图像和右眼对应的等距柱面投影全景图像作为纹理,根据这两个纹理生成左眼视口对应的画面PICT和右眼视口对应的画面PICT,最后把左眼视口对应的画面PICT和右眼视口对应的画面PICT显示在头戴式显示器上;三维球面模型SphereM对应的球心在x-y-z世界坐标系的原点,三维球面模型SphereM对应的球半径为R;针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,计算片段B002在x-y-z世界坐标系中的坐标,据此计算片段B002对应的左眼纹理坐标和右眼纹理坐标,最后根据左眼对应的等距柱面投影全景图像纹理插值计算左眼纹理坐标处的颜色值ColorL,根据右眼对应的等距柱面投影全景图像纹理插值计算右眼纹理坐标处的颜色值ColorR;把片段B002在左眼视口对应的画面PICT中对应的像素的颜色设置为颜色值ColorL,把片段B002在右眼视口对应的画面PICT中对应的像素的颜色设置为颜色值ColorR。具体实现步骤如下:
1)利用光线跟踪技术,根据球面全景立体相机和虚拟3D场景模型生成球面全景立体画面,具体步骤如下:
步骤Step101:按照对方位角和极角的等角度间隔采样方式计算虚拟成像球面上各个像素采样点的坐标,用等距柱面投影全景图像来存储虚拟成像球面上的这些像素采样点的颜色;如图2所示,等距柱面投影全景图像总共包含N行、2N列像素,N为正整数;等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标为(uij,vij,wij),uij=R×sin(i×π/N+0.5×π/N)×cos(j×π/N+0.5×π/N),vij=R×sin(i×π/N+0.5×π/N)×sin(j×π/N+0.5×π/N),wij=R×cos(i×π/N+0.5×π/N);i=0,1,…,N-1;j=0,1,…,2N-1;
步骤Step102:在计算机的存储器中创建一个包含N行、2N列元素的二维数组IML,二维数组IML的每个元素存储左眼对应的等距柱面投影全景图像的一个像素的颜色值,二维数组IML的元素与等距柱面投影全景图像的像素一一对应;在计算机的存储器中创建一个包含N行、2N列元素的二维数组IMR,二维数组IMR的每个元素存储右眼对应的等距柱面投影全景图像的一个像素的颜色值,二维数组IMR的元素与等距柱面投影全景图像的像素一一对应;
步骤Step103:针对等距柱面投影全景图像的每个像素A001,分别做如下操作:
步骤Step103-1:计算像素A001在等距柱面投影全景图像中的行号i和列号j;
步骤Step103-2:计算等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标(uij,vij,wij);计算直角坐标(uij,vij,wij)对应的球坐标的极角θ和方位角两个坐标分量值;
步骤Step103-3:如图3所示,计算球面全景立体相机的观影圆的穿过点Q的两条切线对应的切点cL和切点cR的坐标,其中点Q的u坐标分量点Q的v坐标分量点Q的w坐标分量qw=0;切点cL为像素A001对应的虚拟成像球面上的像素采样点对应的左眼视点,切点cR为像素A001对应的虚拟成像球面上的像素采样点对应的右眼视点;切点cL和切点cR在u-v-w坐标系中的坐标计算公式为:cL=Q-bL,cR=Q-bR,向量bL的计算公式为向量bR的计算公式为l表示点Q到u-v-w坐标系的原点的距离,向量v表示从u-v-w坐标系的原点指向点Q的长度为l的向量,旋转变换矩阵旋转角
步骤Step103-4:利用坐标变换方法,根据切点cL在u-v-w坐标系中的直角坐标计算切点cL在x-y-z世界坐标系中的直角坐标;利用坐标变换方法,根据等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标(uij,vij,wij)计算等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在x-y-z世界坐标系中的直角坐标;在x-y-z世界坐标系中,以切点cL作为起点发射一条穿过等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点的光线LRay,利用光线跟踪技术跟踪光线LRay在虚拟3D场景中的传播,计算沿光线LRay的反方向到达切点cL的光亮度值LRAD,把光亮度值LRAD转换成全景图像像素颜色值LColor,把颜色值LColor保存在二维数组IML的第i行、第j列元素中;
步骤Step103-5:利用坐标变换方法,根据切点cR在u-v-w坐标系中的直角坐标计算切点cR在x-y-z世界坐标系中的直角坐标;在x-y-z世界坐标系中,以切点cR作为起点发射一条穿过等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点的光线RRay,利用光线跟踪技术跟踪光线RRay在虚拟3D场景中的传播,计算沿光线RRay的反方向到达切点cR的光亮度值RRAD,把光亮度值RRAD转换成全景图像像素颜色值RColor,把颜色值RColor保存在二维数组IMR的第i行、第j列元素中;
步骤Step103-6:针对像素A001的操作结束;
步骤Step104:把二维数组IML保存的像素颜色值作为左眼对应的等距柱面投影全景图像数据保存到计算机磁盘文件PIML中,把二维数组IMR保存的像素颜色值作为右眼对应的等距柱面投影全景图像数据保存到计算机磁盘文件PIMR中。
2)根据球面全景立体画面的观看者的观看参数,获取左眼对应的等距柱面投影全景图像画面和右眼对应的等距柱面投影全景图像画面的相应局部视口区域并显示在头戴式显示设备上,实现球面全景立体画面的交互式显示,具体步骤如下:
步骤Step201:用3D建模软件创建一个半径为R的三维球面模型SphereM,并把三维球面模型SphereM加载到计算机存储器中;把磁盘文件PIML保存的左眼对应的等距柱面投影全景图像数据加载到计算机存储器中,把磁盘文件PIMR保存的右眼对应的等距柱面投影全景图像数据加载到计算机存储器中;
步骤Step202:如图4所示,利用三维模型变换,使三维球面模型SphereM的球心与x-y-z世界坐标系的原点位置重合,使x-y-z世界坐标系的z轴正方向为从x-y-z世界坐标系的原点指向三维球面模型SphereM的北极点的方向;图4中的球面表示三维球面模型SphereM,三维球面模型SphereM的北极点对应的球坐标的极角坐标分量为0;
步骤Step203:获取戴在观看者头部的头戴式显示器在当前时刻的朝向数据B001,并执行以下操作:
步骤Step203-1:使用图4所示的透视投影相机CAM拍摄三维球面模型SphereM,透视投影相机CAM的视点在三维球面模型SphereM对应的球心位置;把透视投影相机CAM的向前观察方向向量Tper设置为朝向数据B001对应的朝向方向在x-y-z世界坐标系中对应的单位向量;如果朝向数据B001对应的朝向方向平行于x-y-z世界坐标系的x-o-y平面,则把透视投影相机CAM的向上方向向量Vper设置为z轴正方向对应的单位向量Vz=[0,0,1]T,否则把透视投影相机CAM的向上方向向量Vper设置为Tper×Uper,其中单位向量Uper=(Vz×Tper)/||Vz×Tper||;把透视投影相机CAM的水平视场半角设置为αh,把透视投影相机CAM的垂直视场半角设置为αv;把透视投影相机CAM的远裁剪平面到视点的距离设置为df,把透视投影相机CAM的近裁剪平面到视点的距离设置为dn,df为大于R的正数,dn为小于0.6R的正数;
步骤Step203-2:在图形绘制程序中使用可编程光栅化图形绘制管线技术来绘制透视投影相机CAM拍摄到的三维球面模型SphereM的画面;在图形绘制程序中创建两个大小相同、水平并排放置的视口,如图5所示,左视口对应左眼看到的透视投影相机CAM拍摄到的三维球面模型SphereM的画面,右视口对应右眼看到的透视投影相机CAM拍摄到的三维球面模型SphereM的画面;
步骤Step203-3:在可编程光栅化图形绘制管线中,使用透视投影相机CAM,绘制左视口对应的三维球面模型SphereM的画面并把画面保存到离屏帧缓冲区FBufL中;在此过程中针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,分别做如下操作:
步骤Step203-3-1:计算片段B002在x-y-z世界坐标系中的直角坐标(Fx,Fy,Fz);
步骤Step203-3-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量点Q′的y坐标分量点Q′的z坐标分量q′z=0;令圆CIR代表x-y-z世界坐标系的x-o-y平面上的以x-y-z世界坐标系的原点为圆心、半径为r的圆;计算圆CIR的穿过点Q′的切线对应的切点c′L=Q′-b′L,向量b′L的计算公式为l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
步骤Step203-3-4:令线段SEGL表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′L为端点的线段;计算线段SEGL与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelL,计算交点PixelL的球坐标的极角θL和方位角两个坐标分量值;把计算机存储器中的左眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标对应的颜色值ColorL;如图6所示,纹理坐标由s和t两个分量构成,纹理坐标表示成(s,t)的形式,0≤s≤1,0≤t≤1;输出颜色值ColorL作为片段B002的颜色;
步骤Step203-3-5:针对片段B002的操作结束;
步骤Step203-4:在可编程光栅化图形绘制管线中,使用透视投影相机CAM,绘制右视口对应的三维球面模型SphereM的画面并把画面保存到离屏帧缓冲区FBufR中;在此过程中针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,分别做如下操作:
步骤Step203-4-1:计算片段B002在x-y-z世界坐标系中的直角坐标(Fx,Fy,Fz);
步骤Step203-4-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量点Q′的y坐标分量点Q′的z坐标分量q′z=0;令圆CIR代表x-y-z世界坐标系的x-o-y平面上的以x-y-z世界坐标系的原点为圆心、半径为r的圆;计算圆CIR的穿过点Q′的切线对应的切点c′R=Q′-b′R,向量b′R的计算公式为l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
步骤Step203-4-4:令线段SEGR表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′R为端点的线段;计算线段SEGR与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelR,计算交点PixelR的球坐标的极角θR和方位角两个坐标分量值,把计算机存储器中的右眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标对应的颜色值ColorR;输出颜色值ColorR作为片段B002的颜色;
步骤Step203-4-5:针对片段B002的操作结束;
步骤Step203-5:把离屏帧缓冲区FBufL和离屏帧缓冲区FBufR中保存的左视口和右视口对应的三维球面模型SphereM的画面分别显示到头戴式显示器的左眼屏幕区域和右眼屏幕区域上;
步骤Step204:检查图形绘制程序是否收到终止运行消息,如果没有收到终止运行消息,则转步骤Step203,否则转步骤Step205;
步骤Step205:结束球面全景立体画面的交互式显示。
三维空间中的两个点之差是一个向量,三维空间中的一个点与一个向量相加得到另一个点(本质上是点的平移)。步骤Step103-3的公式cL=Q-bL和cR=Q-bR中的Q表示点Q的三维坐标,-bL和-bR分别表示两个向量。步骤Step203-3-3和步骤Step203-4-3使用了类似的数学公式表达方式。
球面全景立体相机在x-y-z世界坐标系中的朝向和位置通过在x-y-z世界坐标系中指定u-v-w坐标系的原点、u轴方向、v轴方向、w轴方向来确定。球面全景立体相机的向上方向由图1所示的w轴正方向确定。x-y-z世界坐标系指描述虚拟3D场景世界的坐标系。u-v-w坐标系实际上是相机坐标系。x-o-y平面就是过x-y-z世界坐标系的原点且平行于x轴和y轴的平面。u-o-v平面就是过u-v-w坐标系的原点且平行于u轴和v轴的平面。||v||表示求向量v的长度。
图4中的四棱锥表示透视投影相机CAM的视场范围。图4中的四棱锥的锥顶位于x-y-z坐标系的原点,表示透视投影相机CAM的视点位置。三维球面模型SphereM的北极点为正z轴与三维球面模型SphereM的球面的交点。
可以用OpenGL或者DirectX的API在图形绘制程序中创建左视口和右视口。步骤Step203-2的左右视口对应的透视投影相机CAM拍摄到的三维球面模型SphereM的画面实际上是通过为三维球面模型SphereM贴不同纹理得到的,具体的纹理插值计算在步骤Step203-3-4和步骤Step203-4-4中实现。片段着色器程序就是Taylor&Francis Group2012年出版的《Graphics Shaders:Theory and Practice,2nd Edition》中的FragmentShaders。
左眼视口对应的画面PICT就是左视口对应的三维球面模型SphereM的画面。
右眼视口对应的画面PICT就是右视口对应的三维球面模型SphereM的画面。
在本实施例中,拍摄光轴偏转角实际上等于π/2rad。
在本实施例中,N=5000,R=100,r=3.25,αh=2π/9rad,αv=π/6rad,df=1.5R,dn=0.1R;透视投影相机CAM拍摄的画面分辨率为600×800,即透视投影相机CAM拍摄的画面总共包含600行、800列像素,透视投影相机CAM拍摄的画面在水平方向上有800个像素,透视投影相机CAM拍摄的画面在竖直方向上有600个像素。
Claims (2)
1.一种虚拟3D场景的球面全景立体画面的生成方法,其特征在于:提供一种球面全景立体相机,球面全景立体相机包括一个虚拟成像球面和一个观影圆,虚拟成像球面对应的球半径为R,观影圆的半径为r,虚拟成像球面对应的球心位于u-v-w坐标系的原点,观影圆在u-v-w坐标系的u-o-v平面上,观影圆的圆心位于u-v-w坐标系的原点;首先按照对方位角和极角的等角度间隔采样方式计算虚拟成像球面上各个像素采样点的坐标;然后针对虚拟成像球面上的每个像素采样点,根据观影圆参数计算其对应的左眼视点位置和右眼视点位置;利用光线跟踪技术从左眼视点位置发射穿过像素采样点的光线并跟踪光线在虚拟3D场景中的传播,从而得到该像素采样点在左眼观看时的颜色;利用光线跟踪技术从右眼视点位置发射穿过像素采样点的光线并跟踪光线在虚拟3D场景中的传播,从而得到该像素采样点在右眼观看时的颜色;使用等距柱面投影全景图像来存储虚拟成像球面上的各个像素采样点的颜色;利用光线跟踪技术,根据球面全景立体相机和虚拟3D场景模型生成球面全景立体画面,具体步骤如下:
步骤Step101:按照对方位角和极角的等角度间隔采样方式计算虚拟成像球面上各个像素采样点的坐标,用等距柱面投影全景图像来存储虚拟成像球面上的这些像素采样点的颜色;等距柱面投影全景图像总共包含N行、2N列像素,N为正整数;等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标为(uij,vij,wij),uij=R×sin(i×π/N+0.5×π/N)×cos(j×π/N+0.5×π/N),vij=R×sin(i×π/N+0.5×π/N)×sin(j×π/N+0.5×π/N),wij=R×cos(i×π/N+0.5×π/N);i=0,1,…,N-1;j=0,1,…,2N-1;
步骤Step102:在计算机的存储器中创建一个包含N行、2N列元素的二维数组IML,二维数组IML的每个元素存储左眼对应的等距柱面投影全景图像的一个像素的颜色值,二维数组IML的元素与等距柱面投影全景图像的像素一一对应;在计算机的存储器中创建一个包含N行、2N列元素的二维数组IMR,二维数组IMR的每个元素存储右眼对应的等距柱面投影全景图像的一个像素的颜色值,二维数组IMR的元素与等距柱面投影全景图像的像素一一对应;
步骤Step103:针对等距柱面投影全景图像的每个像素A001,分别做如下操作:
步骤Step103-1:计算像素A001在等距柱面投影全景图像中的行号i和列号j;
步骤Step103-2:计算等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标(uij,vij,wij);计算直角坐标(uij,vij,wij)对应的球坐标的极角θ和方位角两个坐标分量值;
步骤Step103-3:计算球面全景立体相机的观影圆的穿过点Q的两条切线对应的切点cL和切点cR的坐标,其中点Q的u坐标分量点Q的v坐标分量点Q的w坐标分量qw=0;切点cL为像素A001对应的虚拟成像球面上的像素采样点对应的左眼视点,切点cR为像素A001对应的虚拟成像球面上的像素采样点对应的右眼视点;切点cL和切点cR在u-v-w坐标系中的坐标计算公式为:cL=Q-bL,cR=Q-bR,向量bL的计算公式为向量bR的计算公式为l表示点Q到u-v-w坐标系的原点的距离,向量v表示从u-v-w坐标系的原点指向点Q的长度为l的向量,旋转变换矩阵旋转角
步骤Step103-4:利用坐标变换方法,根据切点cL在u-v-w坐标系中的直角坐标计算切点cL在x-y-z世界坐标系中的直角坐标;利用坐标变换方法,根据等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在u-v-w坐标系中的直角坐标(uij,vij,wij)计算等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点在x-y-z世界坐标系中的直角坐标;在x-y-z世界坐标系中,以切点cL作为起点发射一条穿过等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点的光线LRay,利用光线跟踪技术跟踪光线LRay在虚拟3D场景中的传播,计算沿光线LRay的反方向到达切点cL的光亮度值LRAD,把光亮度值LRAD转换成全景图像像素颜色值LColor,把颜色值LColor保存在二维数组IML的第i行、第j列元素中;
步骤Step103-5:利用坐标变换方法,根据切点cR在u-v-w坐标系中的直角坐标计算切点cR在x-y-z世界坐标系中的直角坐标;在x-y-z世界坐标系中,以切点cR作为起点发射一条穿过等距柱面投影全景图像的第i行、第j列像素对应的虚拟成像球面上的像素采样点的光线RRay,利用光线跟踪技术跟踪光线RRay在虚拟3D场景中的传播,计算沿光线RRay的反方向到达切点cR的光亮度值RRAD,把光亮度值RRAD转换成全景图像像素颜色值RColor,把颜色值RColor保存在二维数组IMR的第i行、第j列元素中;
步骤Step103-6:针对像素A001的操作结束;
步骤Step104:把二维数组IML保存的像素颜色值作为左眼对应的等距柱面投影全景图像数据保存到计算机磁盘文件PIML中,把二维数组IMR保存的像素颜色值作为右眼对应的等距柱面投影全景图像数据保存到计算机磁盘文件PIMR中。
2.一种虚拟3D场景的球面全景立体画面的交互式显示方法,其特征在于:在观看球面全景立体画面,进行立体视口画面交互式显示时,使用可编程光栅化图形绘制管线技术来绘制透视投影相机CAM拍摄到的三维球面模型SphereM的画面PICT,分别把左眼对应的等距柱面投影全景图像和右眼对应的等距柱面投影全景图像作为纹理,根据这两个纹理生成左眼视口对应的画面PICT和右眼视口对应的画面PICT,最后把左眼视口对应的画面PICT和右眼视口对应的画面PICT显示在头戴式显示器上;三维球面模型SphereM对应的球心在x-y-z世界坐标系的原点,三维球面模型SphereM对应的球半径为R;针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,计算片段B002在x-y-z世界坐标系中的坐标,据此计算片段B002对应的左眼纹理坐标和右眼纹理坐标,最后根据左眼对应的等距柱面投影全景图像纹理插值计算左眼纹理坐标处的颜色值ColorL,根据右眼对应的等距柱面投影全景图像纹理插值计算右眼纹理坐标处的颜色值ColorR;把片段B002在左眼视口对应的画面PICT中对应的像素的颜色设置为颜色值ColorL,把片段B002在右眼视口对应的画面PICT中对应的像素的颜色设置为颜色值ColorR;根据球面全景立体画面的观看者的观看参数,获取左眼对应的等距柱面投影全景图像画面和右眼对应的等距柱面投影全景图像画面的相应局部视口区域并显示在头戴式显示设备上,实现球面全景立体画面的交互式显示,具体步骤如下:
步骤Step201:用3D建模软件创建一个半径为R的三维球面模型SphereM,并把三维球面模型SphereM加载到计算机存储器中;把磁盘文件PIML保存的左眼对应的等距柱面投影全景图像数据加载到计算机存储器中,把磁盘文件PIMR保存的右眼对应的等距柱面投影全景图像数据加载到计算机存储器中;
步骤Step202:利用三维模型变换,使三维球面模型SphereM的球心与x-y-z世界坐标系的原点位置重合,使x-y-z世界坐标系的z轴正方向为从x-y-z世界坐标系的原点指向三维球面模型SphereM的北极点的方向;三维球面模型SphereM的北极点对应的球坐标的极角坐标分量为0;
步骤Step203:获取戴在观看者头部的头戴式显示器在当前时刻的朝向数据B001,并执行以下操作:
步骤Step203-1:使用透视投影相机CAM拍摄三维球面模型SphereM,透视投影相机CAM的视点在三维球面模型SphereM对应的球心位置;把透视投影相机CAM的向前观察方向向量Tper设置为朝向数据B001对应的朝向方向在x-y-z世界坐标系中对应的单位向量;如果朝向数据B001对应的朝向方向平行于x-y-z世界坐标系的x-o-y平面,则把透视投影相机CAM的向上方向向量Vper设置为z轴正方向对应的单位向量Vz=[0,0,1]T,否则把透视投影相机CAM的向上方向向量Vper设置为Tper×Uper,其中单位向量Uper=(Vz×Tper)/||Vz×Tper||;把透视投影相机CAM的水平视场半角设置为αh,把透视投影相机CAM的垂直视场半角设置为αv;把透视投影相机CAM的远裁剪平面到视点的距离设置为df,把透视投影相机CAM的近裁剪平面到视点的距离设置为dn,df为大于R的正数,dn为小于0.6R的正数;
步骤Step203-2:在图形绘制程序中使用可编程光栅化图形绘制管线技术来绘制透视投影相机CAM拍摄到的三维球面模型SphereM的画面;在图形绘制程序中创建两个大小相同、水平并排放置的视口,左视口对应左眼看到的透视投影相机CAM拍摄到的三维球面模型SphereM的画面,右视口对应右眼看到的透视投影相机CAM拍摄到的三维球面模型SphereM的画面;
步骤Step203-3:在可编程光栅化图形绘制管线中,使用透视投影相机CAM,绘制左视口对应的三维球面模型SphereM的画面并把画面保存到离屏帧缓冲区FBufL中;在此过程中针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,分别做如下操作:
步骤Step203-3-1:计算片段B002在x-y-z世界坐标系中的直角坐标(Fx,Fy,Fz);
步骤Step203-3-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量点Q′的y坐标分量点Q′的z坐标分量q′z=0;令圆CIR代表x-y-z世界坐标系的x-o-y平面上的以x-y-z世界坐标系的原点为圆心、半径为r的圆;计算圆CIR的穿过点Q′的切线对应的切点c′L=Q′-b′L,向量b′L的计算公式为l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
步骤Step203-3-4:令线段SEGL表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′L为端点的线段;计算线段SEGL与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelL,计算交点PixelL的球坐标的极角θL和方位角两个坐标分量值;把计算机存储器中的左眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标对应的颜色值ColorL;纹理坐标由s和t两个分量构成,纹理坐标表示成(s,t)的形式,0≤s≤1,0≤t≤1;输出颜色值ColorL作为片段B002的颜色;
步骤Step203-3-5:针对片段B002的操作结束;
步骤Step203-4:在可编程光栅化图形绘制管线中,使用透视投影相机CAM,绘制右视口对应的三维球面模型SphereM的画面并把画面保存到离屏帧缓冲区FBufR中;在此过程中针对可编程光栅化图形绘制管线的片段着色器程序处理的每个片段B002,分别做如下操作:
步骤Step203-4-1:计算片段B002在x-y-z世界坐标系中的直角坐标(Fx,Fy,Fz);
步骤Step203-4-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量点Q′的y坐标分量点Q′的z坐标分量q′z=0;令圆CIR代表x-y-z世界坐标系的x-o-y平面上的以x-y-z世界坐标系的原点为圆心、半径为r的圆;计算圆CIR的穿过点Q′的切线对应的切点c′R=Q′-b′R,向量b′R的计算公式为l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
步骤Step203-4-4:令线段SEGR表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′R为端点的线段;计算线段SEGR与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelR,计算交点PixelR的球坐标的极角θR和方位角两个坐标分量值,把计算机存储器中的右眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标对应的颜色值ColorR;输出颜色值ColorR作为片段B002的颜色;
步骤Step203-4-5:针对片段B002的操作结束;
步骤Step203-5:把离屏帧缓冲区FBufL和离屏帧缓冲区FBufR中保存的左视口和右视口对应的三维球面模型SphereM的画面分别显示到头戴式显示器的左眼屏幕区域和右眼屏幕区域上;
步骤Step204:检查图形绘制程序是否收到终止运行消息,如果没有收到终止运行消息,则转步骤Step203,否则转步骤Step205;
步骤Step205:结束球面全景立体画面的交互式显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010841798.8A CN112002003B (zh) | 2020-08-26 | 2020-08-26 | 虚拟3d场景的球面全景立体画面生成与交互式显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010841798.8A CN112002003B (zh) | 2020-08-26 | 2020-08-26 | 虚拟3d场景的球面全景立体画面生成与交互式显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112002003A CN112002003A (zh) | 2020-11-27 |
CN112002003B true CN112002003B (zh) | 2022-09-06 |
Family
ID=73474128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010841798.8A Active CN112002003B (zh) | 2020-08-26 | 2020-08-26 | 虚拟3d场景的球面全景立体画面生成与交互式显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112002003B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113645462B (zh) * | 2021-08-06 | 2024-01-16 | 深圳臻像科技有限公司 | 一种3d光场的转换方法及装置 |
CN117058342B (zh) * | 2023-10-12 | 2024-01-26 | 天津科汇新创科技有限公司 | 一种基于投影图像的脊柱3d体素模型构建方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102243768B (zh) * | 2011-06-17 | 2013-01-30 | 长春理工大学 | 一种三维虚拟场景立体画面的绘制方法 |
CN102306401B (zh) * | 2011-08-08 | 2013-08-28 | 长春理工大学 | 一种包含模糊反射效果的3d虚拟场景的左右眼立体画面绘制方法 |
KR101878668B1 (ko) * | 2017-02-14 | 2018-07-16 | 상명대학교산학협력단 | 360도 파노라마 이미지 내의 미술저작물 인식 방법 |
CN108537721B (zh) * | 2017-03-02 | 2021-09-07 | 株式会社理光 | 全景图像的处理方法、装置及电子设备 |
-
2020
- 2020-08-26 CN CN202010841798.8A patent/CN112002003B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112002003A (zh) | 2020-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230328220A1 (en) | System and method for creating a navigable, three-dimensional virtual reality environment having ultra-wide field of view | |
US10096157B2 (en) | Generation of three-dimensional imagery from a two-dimensional image using a depth map | |
US10540818B2 (en) | Stereo image generation and interactive playback | |
US10607417B2 (en) | Image generating apparatus and image generating method | |
US10721456B2 (en) | Image generation apparatus and image generation method | |
US5684937A (en) | Method and apparatus for performing perspective transformation on visible stimuli | |
US20170280133A1 (en) | Stereo image recording and playback | |
CN107924556B (zh) | 图像生成装置和图像显示控制装置 | |
US7675513B2 (en) | System and method for displaying stereo images | |
CN112002003B (zh) | 虚拟3d场景的球面全景立体画面生成与交互式显示方法 | |
US20130135310A1 (en) | Method and device for representing synthetic environments | |
CN116485984B (zh) | 全景影像车辆模型全局光照模拟方法、装置、设备及介质 | |
EP3057316B1 (en) | Generation of three-dimensional imagery to supplement existing content | |
US6731284B1 (en) | Method of and apparatus for performing perspective transformation of visible stimuli | |
CN110675482A (zh) | 虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法 | |
US10699372B2 (en) | Image generation apparatus and image display control apparatus | |
KR20120119774A (ko) | 곡면 투사를 이용한 입체 영상 생성 방법, 장치 및 시스템, 이를 위한 기록 매체 | |
CN115841539A (zh) | 一种基于可视外壳的三维光场生成方法和装置 | |
Harish et al. | A view-dependent, polyhedral 3D display | |
WO2022116194A1 (zh) | 一种全景呈现方法及其装置 | |
Thatte et al. | Real-World Virtual Reality With Head-Motion Parallax | |
CN108122283B (zh) | 一种利用坐标变换编辑vr影像的方法 | |
Yang et al. | Towards the light field display | |
CN117314737A (zh) | 全景立体画面渲染的空间投影重用加速方法 | |
CN112465696A (zh) | 一种全景呈现方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |