1.一种虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法,其特征在于:在渲染阶段,首先在虚拟全景相机的成像球面上生成包含N个点的斐波那契网格点阵A001,计算斐波那契网格点阵A001的各个网格点在局部坐标系x‑y‑z中的坐标;根据世界坐标系X‑Y‑Z中的虚拟全景相机视点位置和虚拟全景相机拍摄时的向上方向构建从局部坐标系x‑y‑z到世界坐标系X‑Y‑Z的变换矩阵,据此计算斐波那契网格点阵A001的各个网格点在世界坐标系X‑Y‑Z中的坐标;根据世界坐标系X‑Y‑Z中的虚拟全景相机视点位置和世界坐标系X‑Y‑Z中的斐波那契网格点阵A001的各个网格点的坐标,确定斐波那契网格点阵A001的各个网格点对应的成像球面像素点对应的光线,并利用光线跟踪技术求解像素颜色;用一维数组PANORAMA存储斐波那契网格点阵A001的各个网格点对应的成像球面像素点的颜色,即数组PANORAMA的第n个元素存储斐波那契网格点阵A001的第n个网格点对应成像球面像素点的颜色,n=1,2,…,N;最后,把数组PANORAMA保存到磁盘文件PAIMAGE中,完成全景画面的渲染;在显示阶段,首先把磁盘文件PAIMAGE中的数组PANORAMA加载到计算机内存中,然后把虚拟透视投影相机A004的视点设置成局部坐标系x‑y‑z的原点,再用虚拟透视投影相机A004拍摄成像球面以便得到需要显示的全景画面局部区域;根据数组PANORAMA存储的数据插值计算虚拟透视投影相机A004的像素平面上的各个像素的颜色值,从而得到矩形画面A005,并把矩形画面A005显示到显示器上;
在渲染阶段,本方法的具体实现步骤如下:
步骤Step101:在虚拟全景相机的成像球面上生成包含N个点的斐波那契网格点阵A001,计算斐波那契网格点阵A001的各个网格点在局部坐标系x‑y‑z中的坐标;斐波那契网
2 1/2
格点阵A001的第n个网格点的坐标为(xn,yn,zn),其中zn=(2n‑1)/N‑1,xn=(1‑zn) cos(2
2 1/2
πnφ),yn=(1‑zn) sin(2πnφ), n=1,2,…,N;在计算机的内存中创建包含N个元素的一维数组PANORAMA,数组PANORAMA的每个元素保存虚拟全景相机成像球面上的一个像素的颜色值;
步骤Step102:计算从局部坐标系x‑y‑z到世界坐标系X‑Y‑Z的变换矩阵Mxyz2XYZ:其中px表示虚拟全景相机视点在世界
坐标系X‑Y‑Z中的X坐标,py表示虚拟全景相机视点在世界坐标系X‑Y‑Z中的Y坐标,pz表示虚T拟全景相机视点在世界坐标系X‑Y‑Z中的Z坐标,向量W=[wx,wy,wz] 表示虚拟全景相机拍T摄时的向上方向在世界坐标系X‑Y‑Z中对应的单位向量,向量U=[ux,uy,uz] ,向量V=[vx,Tvy,vz] ;向量V按如下方式计算:令 如果 则 否则V
T
=[0,0,1];向量U按如下方式计算:
步骤Step103:对于n=1,2,…,N,针对斐波那契网格点阵A001的第n个网格点,做如下操作:步骤Step103‑1:令向量 令
其中ppix,x表示向量Ppix的第一
个分量,ppix,y表示向量Ppix的第二个分量,ppix,z表示向量Ppix的第三个分量,ppix,w表示向量Ppix的第四个分量;
步骤Step103‑2:从世界坐标系X‑Y‑Z中的虚拟全景相机视点位置出发,发射一条穿过世界坐标系X‑Y‑Z中的点 的光线B001,利用光线跟踪技术跟踪光线B001在虚拟三维场景中的传播,从而计算得到斐波那契网格点阵A001的第n个网格点对应的虚拟全景相机成像球面像素的颜色B002;把数组PANORAMA的第n个元素赋值为颜色B002;
步骤Step103‑3:针对斐波那契网格点阵A001的第n个网格点的操作结束;
步骤Step104:把数组PANORAMA保存到磁盘文件PAIMAGE中;
在显示阶段,本方法的具体实现步骤如下:
步骤Step201:把磁盘文件PAIMAGE中的数组PANORAMA加载到计算机的内存中;在计算机内存中创建包含NRow行、NCol列元素的二维数组IMSH,NRow表示虚拟透视投影相机A004的像素平面上的像素行数,NCol表示虚拟透视投影相机A004的像素平面上的像素列数,数组IMSH的元素用于保存虚拟透视投影相机A004的像素平面上的像素的颜色值,数组IMSH的元素和虚拟透视投影相机A004的像素平面上的像素一一对应;
步骤Step202:对于i=1,2,…,NRow,j=1,2,…,NCol,针对虚拟透视投影相机A004的像素平面上的第i行、第j列像素,做如下操作:步骤Step202‑1:令 Wpp=2tan(β)、Hpp=2tan(α),W1表示虚拟透视投影相机A004的观察方向对应的单位向量,U1表示虚拟透视投影相机A004拍摄时的向上方向对应的单位向量,α表示虚拟透视投影相机A004的垂直视场半角,β表示虚拟透视投影相机A004的水平视场半角;点A的坐标为 其中E表示虚拟透视投影相机A004的视点位置;虚拟透视投影相机A004的视点设置在局部坐标系x‑y‑z的原点,因此虚拟透视投影相机A004的像素平面上的第i行、第j列像素的中心点Pij为:
步骤Step202‑2:计算中心点Pij在球坐标系中对应的坐标 rij表示中心点Pij与坐标系原点o的距离,θij表示天顶角, 表示方位角,0≤θij≤π,步骤Step202‑3:令 round(x)表示对x进行四舍五入取
整;在计算机的内存中创建包含NUM个元素的一维数组WT,在计算机的内存中创建包含NUM个元素的一维数组CO;令计数器Counter=0;令偏移δ=1;
步骤Step202‑3‑1:如果 或者 则转步骤Step202‑3‑2,否则执行如下操作:令其中 表示对x向下取整;令如果αdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第 个元素保存的颜色值,并且使Counter=Counter+1;αth为角度差异阈值;σ=αth/2;
步骤Step202‑3‑2:如果 则转步骤Step202‑3‑3,否则执行如下操作:令如果βdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第 个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202‑3‑3:如果 则转步骤Step202‑3‑4,否则执行如下操作:令
如果θdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第 个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202‑3‑4:如果Counter≥NUM,则转步骤Step202‑4,否则令δ=δ+1,并进一步判断是否 大于N且 小于1,如果是,则转步骤Step202‑4,否则转步骤Step202‑3‑2;
步骤Step202‑4:计算数组WT从第1个到第Counter个元素的值的累加和SUM;对于J=1,
2,…,Counter,把数组WT的第J个元素赋值为数组WT的第J个元素的值除以SUM之商;
步骤Step202‑5:把数组WT的第1个至第Counter个元素的值当作对数组CO的第1个至第Counter个元素的值进行加权求和时使用的权重系数,计算数组CO的从第1个至第Counter个元素的值的加权求和结果C001;数组WT的第1个元素的值为数组CO的第1个元素的权重系数,数组WT的第2个元素的值为数组CO的第2个元素的权重系数,以此类推;把数组IMSH的第i行、第j列的元素赋值为加权求和结果C001;
步骤Step202‑6:针对虚拟透视投影相机A004的像素平面上的第i行、第j列像素的操作结束;
步骤Step203:把保存在数组IMSH中的矩形画面A005显示到显示设备上。