一种三维模型透视投影方法、系统及相关装置与流程

文档序号:17446029发布日期:2019-04-17 05:37阅读:220来源:国知局
一种三维模型透视投影方法、系统及相关装置与流程

本申请涉及三维场景渲染技术领域,特别涉及一种三维模型透视投影方法、系统、设备及计算机可读存储介质。



背景技术:

为了使三维模型经过模型视图矩阵、透视投影矩阵之后投影到二维屏幕上后,不管相机视点在近处还是远处,投影后的模型的大小保持不变且始终面向屏幕的一种通用方法为广告板技术(billboard),它是计算机图形学领域中进行快速绘制的一种方法,其原理是在xoy平面上建立一个绘图区域(矩形平面),在此区域上渲染一张贴图的一个区域,并且此矩形平面要朝向相机,在渲染时根据相机方向实时旋转这个矩形,使其始终面向相机。

当前通用的广告牌技术主要处理的是朝向不变问题,而当相机为透视投影模式时,为了保证投影后的模型的大小保持不变,该广告牌技术操作复杂需确定多个缩放矩阵,导致技术处理时间过长,降低了工作效率。

因此,如何在保证投影后的模型的大小保持不变的前提下,缩短技术处理时间,进而提高工作效率是本领域技术人员需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种三维模型透视投影方法、系统、设备及计算机可读存储介质,能够在保证投影后的模型的大小保持不变的前提下,缩短技术处理时间,进而提高工作效率。

为解决上述技术问题,本申请提供一种三维模型透视投影方法,包括:

利用相机视点参数信息和三维模型,获取所述三维模型的原始投影图像;

当所述相机视点参数信息发生改变后,利用改变后的相机视点参数信息和所述三维模型,获取所述三维模型的投影图像;

利用所述投影图像和所述三维模型,确定缩放矩阵;

将所述三维模型和所述缩放矩阵进行相乘以调节所述投影图像的大小与所述原始投影图像的大小一致。

优选地,在确定缩放矩阵之后,还包括:

根据所述改变后的相机视点参数信息中的视图矩阵,获取旋转矩阵的逆矩阵;

将所述三维模型、所述缩放矩阵及所述旋转矩阵的逆矩阵进行相乘以调节所述投影图像与所述原始投影图像一致。

优选地,所述当所述相机视点参数信息发生改变后,利用改变后的相机视点参数信息和所述三维模型,获取所述三维模型的投影图像,包括:

当所述相机视点参数信息发生改变后,计算所述三维模型的水平缩放值和垂直缩放值;

利用所述水平缩放值和所述垂直缩放值确定缩放比例参数;

利用所述三维模型、所述缩放比例参数及所述改变后的相机视点参数信息,获取所述三维模型的所述投影图像。

优选地,所述利用所述投影图像和所述三维模型,确定缩放矩阵,包括:

根据所述三维模型的空间位置和所述投影图像的像素,计算出缩放值;

利用所述缩放值构建缩放矩阵。

本申请还提供一种三维模型透视投影系统,包括:

原始投影图像获取模块,用于利用相机视点参数信息和三维模型,获取所述三维模型的原始投影图像;

投影图像获取模块,用于当所述相机视点参数信息发生改变后,利用改变后的相机视点参数信息和所述三维模型,获取所述三维模型的投影图像;

缩放矩阵确定模块,用于利用所述投影图像和所述三维模型,确定缩放矩阵;

图像大小调节模块,用于将所述三维模型和所述缩放矩阵进行相乘以调节所述投影图像的大小与所述原始投影图像的大小一致。

优选地,该三维模型透视投影系统,还包括:

逆矩阵获取模块,用于根据所述改变后的相机视点参数信息中的视图矩阵,获取旋转矩阵的逆矩阵;

图像调节模块,用于将所述三维模型、所述缩放矩阵及所述旋转矩阵的逆矩阵进行相乘以调节所述投影图像与所述原始投影图像一致。

优选地,所述投影图像获取模块,包括:

水平垂直缩放值计算单元,用于当所述相机视点参数信息发生改变后,计算所述三维模型的水平缩放值和垂直缩放值;

缩放比例参数确定单元,用于利用所述水平缩放值和所述垂直缩放值确定缩放比例参数;

投影图像获取单元,用于利用所述三维模型、所述缩放比例参数及所述改变后的相机视点参数信息,获取所述三维模型的所述投影图像。

优选地,所述缩放矩阵确定模块,包括:

缩放值计算单元,用于根据所述三维模型的空间位置和所述投影图像的像素,计算出缩放值;

缩放矩阵构建单元,用于利用所述缩放值构建缩放矩阵。

本申请还提供一种设备,包括:

存储器和处理器;其中,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述所述的三维模型透视投影方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的三维模型透视投影方法的步骤。

本申请所提供的一种三维模型透视投影方法,包括:利用相机视点参数信息和三维模型,获取所述三维模型的原始投影图像;当所述相机视点参数信息发生改变后,利用改变后的相机视点参数信息和所述三维模型,获取所述三维模型的投影图像;利用所述投影图像和所述三维模型,确定缩放矩阵;将所述三维模型和所述缩放矩阵进行相乘以调节所述投影图像的大小与所述原始投影图像的大小一致。

该方法先是利用相机视点参数信息和三维模型,获取所述三维模型的原始投影图像,然后在当所述相机视点参数信息发生改变后,利用改变后的相机视点参数信息和所述三维模型,获取所述三维模型的投影图像,再利用所述投影图像和所述三维模型,确定缩放矩阵,最后将所述三维模型和所述缩放矩阵进行相乘以调节所述投影图像的大小与所述原始投影图像的大小一致。可见,该方法操作简单,只需计算出一个缩放矩阵用于保持投影图像大小保持不变,能够缩短技术处理时间,进而提高工作效率。本申请还提供一种三维模型透视投影系统、设备及计算机可读存储介质,均具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种三维模型透视投影方法的流程图;

图2为本申请实施例所提供的一种三维模型透视投影系统的结构框图。

具体实施方式

本申请的核心是提供一种三维模型透视投影方法,能够在保证投影后的模型的大小保持不变的前提下,缩短技术处理时间,进而提高工作效率。本申请的另一核心是提供一种三维模型透视投影系统、设备及计算机可读存储介质。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了使三维模型经过模型视图矩阵、透视投影矩阵之后投影到二维屏幕上后,不管相机视点在近处还是远处,投影后的模型的大小保持不变且始终面向屏幕的一种通用方法为广告板技术(billboard),它是计算机图形学领域中进行快速绘制的一种方法,其原理是在xoy平面上建立一个绘图区域(矩形平面),在此区域上渲染一张贴图的一个区域,并且此矩形平面要朝向相机,在渲染时根据相机方向实时旋转这个矩形,使其始终面向相机。当前通用的广告牌技术主要处理的是朝向不变问题,而当相机为透视投影模式时,为了保证投影后的模型的大小保持不变,该广告牌技术操作复杂需确定多个缩放矩阵,导致技术处理时间过长,降低了工作效率。本申请实施例能够在保证投影后的模型的大小保持不变的前提下,缩短技术处理时间,进而提高工作效率。具体请参考图1,图1为本申请实施例所提供的一种三维模型透视投影方法的流程图,该三维模型透视投影方法具体包括:

s101、利用相机视点参数信息和三维模型,获取三维模型的原始投影图像;

本申请实施例先是利用相机视点参数信息和三维模型,获取三维模型的原始投影图像,对于相机视点参数信息,在此不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,通常包括模型视图矩阵(viewmatrix)、投影矩阵(projectmatrix)及视口大小(viewport)。在此对三维模型的形状也不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。由于三维模型的形状不作具体限定,故三维模型的原始投影图像的形状也不作具体限定。进一步地,即使三维模型的形状已确定,原始投影图像的形状也不能确定,因为原始投影图像的形状还取决于相机视点的位置、相机视点进行透视投影的角度和方向。

s102、当相机视点参数信息发生改变后,利用改变后的相机视点参数信息和三维模型,获取三维模型的投影图像;

本申请实施例在当相机视点参数信息发生改变后,利用改变后的相机视点参数信息和三维模型,获取三维模型的投影图像。相机视点参数信息发生改变主要是相机视点参数信息中的模型视图矩阵发生改变,即相机视点的位置信息发生了改变。由于相机视点参数信息发生了改变,所以利用改变后的相机视点参数信息和三维模型,获取的三维模型的投影图像相比较于原始投影图像已经发生了改变,改变主要体现在投影图像相比于原始投影图像进行了缩放。

进一步地,当相机视点参数信息发生改变后,利用改变后的相机视点参数信息和三维模型,获取三维模型的投影图像,通常包括:当相机视点参数信息发生改变后,计算三维模型的水平缩放值和垂直缩放值;利用水平缩放值和垂直缩放值确定缩放比例参数;利用三维模型、缩放比例参数及改变后的相机视点参数信息,获取三维模型的投影图像。对于水平缩放值的数值大小和垂直缩放值的数值大小,在此均不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。由于水平缩放值的数值大小和垂直缩放值的数值大小均不作具体限定,故利用水平缩放值和垂直缩放值确定的缩放比例参数的数值大小,也不作具体限定。

计算三维模型的水平缩放值,即计算三维模型沿着水平方向的缩放值,本申请实施例设水平缩放值为scale_00,它是一个三维向量,故需要在x方向、y方向及z方向分别进行缩放计算,具体计算过程如下:

在x方向的缩放计算为:

hsx=viewmatrix[0][0]*p00+viewmatrix[2][0]*p20_00

在y方向的缩放计算为:

hsy=viewmatrix[0][1]*p00+viewmatrix[2][1]*p20_00

在z方向的缩放计算为:

hsz=viewmatrix[0][2]*p00+viewmatrix[2][2]*p20_00

其中,p00,p20_00为沿着水平方向的缩放因子,p00=projectmatrix[0][0],p20_00=projectmatrix[0][2]*width*0.5+projectmatrix[3][2]*width*0.5,width为视口宽度。

同理,计算三维模型的垂直缩放值,即计算三维模型沿着垂直方向的缩放值,本申请实施例设垂直缩放值为scale_10,它也是一个三维向量,故需要在x方向、y方向及z方向分别进行缩放计算,具体计算过程如下:

在x方向的缩放计算为:

vsx=viewmatrix[1][0]*p10+viewmatrix[2][0]*p20_10

在y方向的缩放计算为:

vsy=viewmatrix[1][1]*p10+viewmatrix[2][1]*p20_10

在z方向的缩放计算为:

vsz=viewmatrix[1][2]*p10+viewmatrix[2][2]*p20_10

其中,p10,p20_10为沿着垂直方向的缩放因子,p10=projectmatrix[1][1],p20_10=projectmatrix[1][2]*height*0.5+projectmatrix[3][2]*height*0.5,height为视口高度。

由上文可知,已经得到水平缩放值和垂直缩放值,可以利用水平缩放值和垂直缩放值确定缩放比例参数,即

scaleratio=0.7071067811/(vsx*vsx+vsy*vsy+vsz*vsz+hsx*hsx+hsy*hsy*hsz*hsz)。

计算上述三维模型的每个单位长度中的像素大小pixelsizevector(四维向量),在此对每个单位长度中的像素大小不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,由于像素大小是四维向量,故需要从四个方向进行计算,具体如下:

x方向:px=viewmatrix[2][0]*projectmatrix[3][2]

y方向:py=viewmatrix[2][1]*projectmatrix[3][2]

z方向:pz=viewmatrix[2][2]*projectmatrix[3][2]

w方向:

pw=viewmatrix[2][3]*projectmatrix[3][2]+viewmatrix[3][3]*projectmatrix[3][3]

由上文可知,确定了缩放比例参数和三维模型的每个单位长度中的像素大小,利用缩放比例参数和三维模型的每个单位长度中的像素大小可计算出缩放后的像素大小scaledpixelsizevector(四维向量),由于缩放后的像素大小也是四维向量,故需要从四个方向进行计算,具体如下:

x方向:spx=px*scaleratio

y方向:spy=py*scaleratio

z方向:spz=pz*scaleratio

w方向:spw=pw*scaleratio

s103、利用投影图像和三维模型,确定缩放矩阵;

本申请实施例在获取三维模型的投影图像后,利用投影图像和三维模型,确定缩放矩阵。对于利用投影图像和三维模型,确定缩放矩阵的过程,在此不作具体限定,通常包括:根据三维模型的空间位置和投影图像的像素,计算出缩放值;利用缩放值构建缩放矩阵。在此对缩放值的数值大小不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,进一步地,对于利用缩放值构建的缩放矩阵,也不作具体限定。具体地,根据三维模型的空间位置及缩放后的像素计算缩放值size,即

size=centerx*spx+centery*spy+centerz*spz+spw,其中centerx、centery、centerz分别表示三维模型在x、y、z方向的位置;将上文计算得到的size值构建成x、y、z方向均为size值的缩放矩阵scalematrix。

s104、将三维模型和缩放矩阵进行相乘以调节投影图像的大小与原始投影图像的大小一致。

本申请实施例在确定缩放矩阵后,将三维模型和缩放矩阵进行相乘以调节投影图像的大小与原始投影图像的大小一致。本申请实施例调节投影图像的大小与原始投影图像的大小一致,即保持投影图像的大小始终不变。对于将三维模型和缩放矩阵进行相乘以调节投影图像的大小与原始投影图像的大小一致的过程,在此不作具体限定,通常包括裁剪操作和渲染操作。具体地,进行裁剪操作时,将缩放矩阵和三维模型相乘,得到模型对象;进行渲染操作时,将模型对象乘上变换矩阵,投影到二维屏幕之后,可使投影图像的大小与原始投影图像的大小一致。

进一步地,在确定缩放矩阵后,通常还包括:根据改变后的相机视点参数信息中的视图矩阵,获取旋转矩阵的逆矩阵;将三维模型、缩放矩阵及旋转矩阵的逆矩阵进行相乘以调节投影图像与原始投影图像一致。本申请实施例能够调节投影图像与原始投影图像一致,即不仅仅投影图像的大小与原始投影图像的大小保持一致,还能够使三维模型始终面向相机视点。而现有技术中,billboard需要通过yaw\picth\roll(由于旋转是相对于billboard自身坐标系,所以yaw\picth\roll分别对应y\x\z)三次旋转后达到billboard永远朝向相机,频繁的计算矩阵带来时间开销比较大。故本申请实施例相比于现有技术减少了旋转矩阵的计算次数,节约了cpu的时间消耗。

本申请先是利用相机视点参数信息和三维模型,获取三维模型的原始投影图像,然后在当相机视点参数信息发生改变后,利用改变后的相机视点参数信息和三维模型,获取三维模型的投影图像,再利用投影图像和三维模型,确定缩放矩阵,最后将三维模型和缩放矩阵进行相乘以调节投影图像的大小与原始投影图像的大小一致。可见,该方法操作简单,只需计算出一个缩放矩阵用于保持投影图像大小保持不变,能够缩短技术处理时间,进而提高工作效率。

下面对本申请实施例提供的一种三维模型透视投影系统、设备及计算机可读存储介质进行介绍,下文描述的三维模型透视投影系统、设备及计算机可读存储介质与上文描述的三维模型透视投影方法可相互对应参照。

请参考图2,图2为本申请实施例所提供的一种三维模型透视投影系统的结构框图;该三维模型透视投影系统包括:

原始投影图像获取模块201,用于利用相机视点参数信息和三维模型,获取三维模型的原始投影图像;

投影图像获取模块202,用于当相机视点参数信息发生改变后,利用改变后的相机视点参数信息和三维模型,获取三维模型的投影图像;

缩放矩阵确定模块203,用于利用投影图像和三维模型,确定缩放矩阵;

图像大小调节模块204,用于将三维模型和缩放矩阵进行相乘以调节投影图像的大小与原始投影图像的大小一致。

基于上述实施例,本实施例中三维模型透视投影系统通常还包括:

逆矩阵获取模块,用于根据改变后的相机视点参数信息中的视图矩阵,获取旋转矩阵的逆矩阵;

图像调节模块,用于将三维模型、缩放矩阵及旋转矩阵的逆矩阵进行相乘以调节投影图像与原始投影图像一致。

基于上述实施例,本实施例中投影图像获取模块202,通常包括:

水平垂直缩放值计算单元,用于当相机视点参数信息发生改变后,计算三维模型的水平缩放值和垂直缩放值;

缩放比例参数确定单元,用于利用水平缩放值和垂直缩放值确定缩放比例参数;

投影图像获取单元,用于利用三维模型、缩放比例参数及改变后的相机视点参数信息,获取三维模型的投影图像。

基于上述实施例,本实施例中缩放矩阵确定模块203,通常包括:

缩放值计算单元,用于根据三维模型的空间位置和投影图像的像素,计算出缩放值;

缩放矩阵构建单元,用于利用缩放值构建缩放矩阵。

本申请还提供一种设备,包括:

存储器和处理器;其中,存储器用于存储计算机程序,处理器用于执行计算机程序时实现上述任意实施例的三维模型透视投影方法的步骤。

本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的三维模型透视投影方法的步骤。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种三维模型透视投影方法、系统、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1