CN112002003B - 虚拟3d场景的球面全景立体画面生成与交互式显示方法 - Google Patents

虚拟3d场景的球面全景立体画面生成与交互式显示方法 Download PDF

Info

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
Application number
CN202010841798.8A
Other languages
English (en)
Other versions
CN112002003A (zh
Inventor
陈纯毅
杨华民
蒋振刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changchun University of Science and Technology
Original Assignee
Changchun University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Changchun University of Science and Technology filed Critical Changchun University of Science and Technology
Priority to CN202010841798.8A priority Critical patent/CN112002003B/zh
Publication of CN112002003A publication Critical patent/CN112002003A/zh
Application granted granted Critical
Publication of CN112002003B publication Critical patent/CN112002003B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/55Radiosity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination 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场景的球面全景立体画面生成与交互式显示方法
技术领域
本发明涉及一种虚拟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
如图1所示,虚拟成像球面上的点a1的坐标既可以用直角坐标表示,也可以用球坐标表示。球坐标可以写成
Figure BDA0002650186160000021
的形式,其中r表示点a1到坐标系原点o的距离,θ为有向线段oa1与w轴正向的夹角(称为极角),
Figure BDA0002650186160000022
为从正w轴来看自u轴按逆时针方向转到与线段om重合所转过的角(称为方位角),这里点m为点a1在u-o-v平面上的投影点;u-o-v平面就是过u-v-w坐标系的原点且平行于u轴和v轴的平面。
发明内容
本发明的目的在于,提供一种虚拟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)对应的球坐标的极角θ和方位角
Figure BDA0002650186160000041
两个坐标分量值;
步骤Step103-3:如图3所示,计算球面全景立体相机的观影圆的穿过点Q的两条切线对应的切点cL和切点cR的坐标,其中点Q的u坐标分量
Figure BDA0002650186160000042
点Q的v坐标分量
Figure BDA0002650186160000043
点Q的w坐标分量qw=0;切点cL为像素A001对应的虚拟成像球面上的像素采样点对应的左眼视点,切点cR为像素A001对应的虚拟成像球面上的像素采样点对应的右眼视点;切点cL和切点cR在u-v-w坐标系中的坐标计算公式为:cL=Q-bL,cR=Q-bR,向量bL的计算公式为
Figure BDA0002650186160000044
向量bR的计算公式为
Figure BDA0002650186160000045
l表示点Q到u-v-w坐标系的原点的距离,向量v表示从u-v-w坐标系的原点指向点Q的长度为l的向量,旋转变换矩阵
Figure BDA0002650186160000046
旋转角
Figure BDA0002650186160000047
步骤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-2:计算向量
Figure BDA0002650186160000061
其中单位向量
Figure BDA0002650186160000062
向量vF=[Fx,Fy,Fz]T
Figure BDA0002650186160000063
等于
Figure BDA0002650186160000064
和Tper的夹角的余弦值;
步骤Step203-3-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角
Figure BDA0002650186160000065
两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量
Figure BDA0002650186160000066
点Q′的y坐标分量
Figure BDA0002650186160000067
点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的计算公式为
Figure BDA0002650186160000068
l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
Figure BDA0002650186160000069
步骤Step203-3-4:令线段SEGL表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′L为端点的线段;计算线段SEGL与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelL,计算交点PixelL的球坐标的极角θL和方位角
Figure BDA00026501861600000610
两个坐标分量值;把计算机存储器中的左眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标
Figure BDA00026501861600000611
对应的颜色值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-2:计算向量
Figure BDA00026501861600000612
其中单位向量
Figure BDA00026501861600000613
向量vF=[Fx,Fy,Fz]T
Figure BDA0002650186160000071
等于
Figure BDA0002650186160000072
和Tper的夹角的余弦值;
步骤Step203-4-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角
Figure BDA0002650186160000073
两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量
Figure BDA0002650186160000074
点Q′的y坐标分量
Figure BDA0002650186160000075
点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的计算公式为
Figure BDA0002650186160000076
l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
Figure BDA0002650186160000077
步骤Step203-4-4:令线段SEGR表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′R为端点的线段;计算线段SEGR与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelR,计算交点PixelR的球坐标的极角θR和方位角
Figure BDA0002650186160000078
两个坐标分量值,把计算机存储器中的右眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标
Figure BDA0002650186160000079
对应的颜色值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)对应的球坐标的极角θ和方位角
Figure BDA0002650186160000091
两个坐标分量值;
步骤Step103-3:如图3所示,计算球面全景立体相机的观影圆的穿过点Q的两条切线对应的切点cL和切点cR的坐标,其中点Q的u坐标分量
Figure BDA0002650186160000092
点Q的v坐标分量
Figure BDA0002650186160000093
点Q的w坐标分量qw=0;切点cL为像素A001对应的虚拟成像球面上的像素采样点对应的左眼视点,切点cR为像素A001对应的虚拟成像球面上的像素采样点对应的右眼视点;切点cL和切点cR在u-v-w坐标系中的坐标计算公式为:cL=Q-bL,cR=Q-bR,向量bL的计算公式为
Figure BDA0002650186160000094
向量bR的计算公式为
Figure BDA0002650186160000095
l表示点Q到u-v-w坐标系的原点的距离,向量v表示从u-v-w坐标系的原点指向点Q的长度为l的向量,旋转变换矩阵
Figure BDA0002650186160000101
旋转角
Figure BDA0002650186160000102
步骤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-2:计算向量
Figure BDA0002650186160000111
其中单位向量
Figure BDA0002650186160000112
向量vF=[Fx,Fy,Fz]T
Figure BDA0002650186160000113
等于
Figure BDA0002650186160000114
和Tper的夹角的余弦值;
步骤Step203-3-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角
Figure BDA0002650186160000115
两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量
Figure BDA0002650186160000121
点Q′的y坐标分量
Figure BDA00026501861600001214
点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的计算公式为
Figure BDA0002650186160000122
l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
Figure BDA0002650186160000123
步骤Step203-3-4:令线段SEGL表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′L为端点的线段;计算线段SEGL与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelL,计算交点PixelL的球坐标的极角θL和方位角
Figure BDA0002650186160000124
两个坐标分量值;把计算机存储器中的左眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标
Figure BDA0002650186160000125
对应的颜色值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-2:计算向量
Figure BDA0002650186160000126
其中单位向量
Figure BDA0002650186160000127
向量vF=[Fx,Fy,Fz]T
Figure BDA0002650186160000128
等于
Figure BDA0002650186160000129
和Tper的夹角的余弦值;
步骤Step203-4-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角
Figure BDA00026501861600001210
两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量
Figure BDA00026501861600001211
点Q′的y坐标分量
Figure BDA00026501861600001212
点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的计算公式为
Figure BDA00026501861600001213
l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
Figure BDA0002650186160000131
步骤Step203-4-4:令线段SEGR表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′R为端点的线段;计算线段SEGR与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelR,计算交点PixelR的球坐标的极角θR和方位角
Figure BDA0002650186160000132
两个坐标分量值,把计算机存储器中的右眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标
Figure BDA0002650186160000133
对应的颜色值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)对应的球坐标的极角θ和方位角
Figure FDA0002650186150000011
两个坐标分量值;
步骤Step103-3:计算球面全景立体相机的观影圆的穿过点Q的两条切线对应的切点cL和切点cR的坐标,其中点Q的u坐标分量
Figure FDA0002650186150000012
点Q的v坐标分量
Figure FDA0002650186150000013
点Q的w坐标分量qw=0;切点cL为像素A001对应的虚拟成像球面上的像素采样点对应的左眼视点,切点cR为像素A001对应的虚拟成像球面上的像素采样点对应的右眼视点;切点cL和切点cR在u-v-w坐标系中的坐标计算公式为:cL=Q-bL,cR=Q-bR,向量bL的计算公式为
Figure FDA0002650186150000021
向量bR的计算公式为
Figure FDA0002650186150000022
l表示点Q到u-v-w坐标系的原点的距离,向量v表示从u-v-w坐标系的原点指向点Q的长度为l的向量,旋转变换矩阵
Figure FDA0002650186150000023
旋转角
Figure FDA0002650186150000024
步骤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-2:计算向量
Figure FDA0002650186150000041
其中单位向量
Figure FDA0002650186150000042
向量vF=[Fx,Fy,Fz]T
Figure FDA0002650186150000043
等于
Figure FDA0002650186150000044
和Tper的夹角的余弦值;
步骤Step203-3-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角
Figure FDA0002650186150000045
两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量
Figure FDA0002650186150000046
点Q′的y坐标分量
Figure FDA0002650186150000047
点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的计算公式为
Figure FDA0002650186150000048
l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
Figure FDA0002650186150000049
步骤Step203-3-4:令线段SEGL表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′L为端点的线段;计算线段SEGL与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelL,计算交点PixelL的球坐标的极角θL和方位角
Figure FDA00026501861500000410
两个坐标分量值;把计算机存储器中的左眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标
Figure FDA00026501861500000411
对应的颜色值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-2:计算向量
Figure FDA00026501861500000412
其中单位向量
Figure FDA00026501861500000413
向量vF=[Fx,Fy,Fz]T
Figure FDA00026501861500000414
等于
Figure FDA00026501861500000415
和Tper的夹角的余弦值;
步骤Step203-4-3:令pFx表示向量pF的x分量,令pFy表示向量pF的y分量,令pFz表示向量pF的z分量;计算直角坐标(pFx,pFy,pFz)对应的球坐标的极角θF和方位角
Figure FDA0002650186150000051
两个坐标分量值;令Q′表示x-y-z世界坐标系的x-o-y平面上的一点,其中点Q′的x坐标分量
Figure FDA0002650186150000052
点Q′的y坐标分量
Figure FDA0002650186150000053
点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的计算公式为
Figure FDA0002650186150000054
l′表示点Q′到x-y-z世界坐标系的原点的距离,向量v′表示从x-y-z世界坐标系的原点指向点Q′的长度为l′的向量,旋转角
Figure FDA0002650186150000055
步骤Step203-4-4:令线段SEGR表示以直角坐标(Fx,Fy,Fz)表示的点和切点c′R为端点的线段;计算线段SEGR与以x-y-z世界坐标系的原点为球心、以R为半径的球面的交点PixelR,计算交点PixelR的球坐标的极角θR和方位角
Figure FDA0002650186150000056
两个坐标分量值,把计算机存储器中的右眼对应的等距柱面投影全景图像当作纹理,据此插值计算纹理坐标
Figure FDA0002650186150000057
对应的颜色值ColorR;输出颜色值ColorR作为片段B002的颜色;
步骤Step203-4-5:针对片段B002的操作结束;
步骤Step203-5:把离屏帧缓冲区FBufL和离屏帧缓冲区FBufR中保存的左视口和右视口对应的三维球面模型SphereM的画面分别显示到头戴式显示器的左眼屏幕区域和右眼屏幕区域上;
步骤Step204:检查图形绘制程序是否收到终止运行消息,如果没有收到终止运行消息,则转步骤Step203,否则转步骤Step205;
步骤Step205:结束球面全景立体画面的交互式显示。
CN202010841798.8A 2020-08-26 2020-08-26 虚拟3d场景的球面全景立体画面生成与交互式显示方法 Active CN112002003B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社理光 全景图像的处理方法、装置及电子设备

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