CN103247072B - 基于安卓系统实现三维旋转界面的方法及装置 - Google Patents
基于安卓系统实现三维旋转界面的方法及装置 Download PDFInfo
- Publication number
- CN103247072B CN103247072B CN201310130456.5A CN201310130456A CN103247072B CN 103247072 B CN103247072 B CN 103247072B CN 201310130456 A CN201310130456 A CN 201310130456A CN 103247072 B CN103247072 B CN 103247072B
- Authority
- CN
- China
- Prior art keywords
- mathematical model
- dimensional
- target object
- interface
- coordinate information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000013178 mathematical model Methods 0.000 claims abstract description 162
- 238000013507 mapping Methods 0.000 claims abstract description 48
- 230000008569 process Effects 0.000 claims abstract description 10
- 238000012545 processing Methods 0.000 claims description 39
- 230000009466 transformation Effects 0.000 claims description 24
- 238000010276 construction Methods 0.000 claims description 6
- 230000000007 visual effect Effects 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 33
- 238000006243 chemical reaction Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 10
- 238000009877 rendering Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000000265 homogenisation Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Landscapes
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种基于安卓系统实现三维旋转界面的方法及装置。该方法包括:提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的数学模型;将目标对象加载到数学模型;对进行纹理映射处理的数学模型进行坐标变换,获取与待实现的三维界面特征相匹配的倾斜数学模型;触发倾斜数学模型旋转,得到旋转数学模型,对旋转数学模型按照预先设置的视点进行透视投影,得到旋转数学模型对应的视平面坐标信息;将视平面坐标信息转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。应用本发明,可以提高界面显示效果、降低实现三维旋转界面的运算成本。
Description
技术领域
本发明涉及三维视频处理技术,尤其涉及一种基于安卓(Android)系统实现三维(3D)旋转界面的方法及装置。
背景技术
由于Android系统采用开源技术,开放代码,多数的应用程序都能移植至基于Android系统的平台,兼容性好;而且,基于Android系统的应用程序,可以通过Android系统的标准应用程序接口进行访问,并可以通过并行方式运行,有效地提升了Android系统的处理能力,使得基于Android系统开发的智能终端得到了广泛的应用和普及。
目前,随着基于Android系统的智能终端的普及,为了提升应用程序在智能终端的界面显示效果,基于Android系统的应用程序的三维界面展示技术开发成为了研究热点。但是,现有的三维界面展示技术,主要通过二维显示芯片模拟三维界面的方式,使智能终端的界面呈现虚拟的三维效果。具体来说,通过Android软件开发工具包(SDK,SoftwareDevelopmentKit)提供的Camera类,基于目标对象的二维坐标平面,即(x,y)坐标平面,将目标对象在二维坐标平面内进行投影,获取目标对象在各坐标平面的投影坐标信息,然后,通过CPU对目标对象投影在二维坐标平面内的坐标信息进行处理,即根据二维坐标信息构建目标对象的三维模型,再按照提供的Camera类对三维模型进行渲染,从而将二维目标对象渲染为三维目标对象。由于CPU需要完成坐标信息处理、坐标渲染所需的全部数据运算,因而,需要较高主频的CPU,以能够快速完成数据运算,从而极大地增加了实现三维界面的运算成本;进一步地,通过二维显示芯片模拟三维界面,一般只能呈现基于三维的静态界面效果,并且界面的同质化比较严重,界面流畅性及显示效果较差,使得用户对三维界面的体验较差;而且,如果需要实现动态的三维旋转界面,需要构建目标对象在不同时刻的图像帧,使得CPU执行的数据运算量更大。
发明内容
本发明的实施例提供一种基于安卓系统实现三维旋转界面的方法,提高界面显示效果、降低实现三维旋转界面的运算成本。
本发明的实施例还提供一种基于安卓系统实现三维旋转界面的装置,提高界面显示效果、降低实现三维旋转界面的运算成本。
为达到上述目的,本发明实施例提供的一种基于安卓系统实现三维旋转界面的方法,该方法包括:
提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的数学模型;
将目标对象加载到数学模型;
对进行纹理映射处理的数学模型进行坐标变换,获取与待实现的三维界面特征相匹配的倾斜数学模型;
触发倾斜数学模型旋转,得到旋转数学模型,对旋转数学模型按照预先设置的视点进行透视投影,得到旋转数学模型对应的视平面坐标信息;
将视平面坐标信息转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。
其中,在将目标对象加载到数学模型后,该方法进一步包括:进行纹理映射处理,所述进行纹理映射处理包括:
定义待映射的纹理对象;
生成纹理对象数组;
调用glBindTexture函数选择定义的纹理对象;
在加载目标对象的数学模型中,通过glBindTexture函数,为目标对象加载选择的纹理对象;
在三维界面显示结束后,调用glDeleteTextures函数,删除加载的纹理对象。
其中,在所述将目标对象加载到数学模型后,在进行纹理映射处理之前或之后,所述方法进一步包括:
B11,查询预先设置的图片缓冲区是否有存储空间,如果有,执行步骤B12,如果没有,删除图片缓冲区中未使用时间最长的图片,执行步骤B12;
B12,将目标对象对应的图片存储至图片缓冲区。
其中,所述将目标对象加载到数学模型包括:
选取数学模型旋转面的参考线;
选取目标对象的参考线;
将目标对象的参考线映射至数学模型旋转面的参考线;
获取目标对象的像素点对应的平面坐标信息,映射至数学模型旋转面上。
其中,所述三维坐标系为柱面坐标系,所述数学模型表达式为:
式中,
x、y、z分别为数学模型在柱面坐标系中的三维坐标信息;
r为数学模型距离y轴的距离;
a、b为数学模型在y轴上的高度。
其中,所述对进行纹理映射处理的数学模型进行坐标变换的公式为:
式中,
(x′,y′,z′)为数学模型上的点(x,y,z)进行坐标变换后的坐标信息;
α为倾斜角度。
其中,所述透视投影的坐标变换公式为:
zp=n;
式中,
Xp(xp,yp,zp)为点X(x′,y′,z′)在视平面的视平面坐标信息;
n为透视点距离Z轴的距离。
其中,所述将视平面坐标信息转换为屏幕平面坐标信息的变换公式为:
式中,
(xs,ys)为视平面坐标信息(xp,yp)转换得到的屏幕平面坐标信息;
Wp为视平面的宽度;
Hp为视平面的高度;
Ws为屏幕的宽度;
Hs为屏幕的高度。
一种基于安卓系统实现三维旋转界面的装置,该装置包括:数学模型构建模块、加载模块、数学模型匹配模块、透视投影模块以及展示模块,其中,
数学模型构建模块,用于提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的数学模型;
加载模块,用于将目标对象加载到数学模型;
数学模型匹配模块,用于对进行纹理映射处理的数学模型进行坐标变换,获取与待实现的三维界面特征相匹配的倾斜数学模型;
透视投影模块,用于触发倾斜数学模型旋转,得到旋转数学模型,对旋转数学模型按照预先设置的视点进行透视投影,得到旋转数学模型对应的视平面坐标信息;
展示模块,用于将视平面坐标信息转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。
较佳地,加载模块进一步用于进行纹理映射处理,该装置进一步包括:
图片处理模块,用于监测到加载模块进行纹理映射处理后,查询预先设置的图片缓冲区是否有存储空间,如果有,将目标对象对应的图片存储至图片缓冲区,如果没有,删除图片缓冲区中未使用时间最长的图片,将目标对象对应的图片存储至图片缓冲区。
由上述技术方案可见,本发明实施例提供的一种基于安卓系统实现三维旋转界面的方法及装置,提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的数学模型;将目标对象加载到数学模型;对进行纹理映射处理的数学模型进行坐标变换,获取与待实现的三维界面特征相匹配的倾斜数学模型;触发倾斜数学模型旋转,得到旋转数学模型,对旋转数学模型按照预先设置的视点进行透视投影,得到旋转数学模型对应的视平面坐标信息;将视平面坐标信息转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。这样,由于通过构建的数学模型加载目标对象,可以有效减少数据运算量,降低了实现三维旋转界面的运算成本;进一步地,采用透视投影,能够使动态呈现的三维旋转界面更清晰,渲染速度更快,界面显示效果及流畅性好。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,以下将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,以下描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,还可以根据这些附图所示实施例得到其它的实施例及其附图。
图1为本发明实施例基于安卓系统实现三维旋转界面的方法流程示意图。
图2为本发明实施例的透视投影模型结构示意图。
图3为本发明实施例的视平面坐标系示意图。
图4本发明实施例的屏幕坐标系示意图。
图5为本发明实施例基于安卓系统实现三维旋转界面的方法具体流程示意图。
图6为本发明实施例基于安卓系统实现三维旋转界面的装置结构示意图。
具体实施方式
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
现有基于Android系统实现三维旋转界面的方法,通过二维显示芯片模拟,对目标对象的二维坐标信息进行处理和渲染,从而实现静态的三维界面效果,需要CPU完成坐标信息处理、坐标渲染所需的全部数据运算;进一步地,在实现动态的三维旋转界面时,需要构建目标对象在不同时刻的图像帧,使得CPU执行的数据运算量更大,要求CPU具有较高的主频,运算成本高。因而,如果基于现有CPU进行数据运算,将使得界面流畅度以及显示效果较差。
图片处理器(GPU,GraphicProcessingUnit)是三维显示芯片的一种,通过编程生成图片处理函数,将三维图像和特效处理功能集中在与硬件无关、可移植性好的开放图片库(OpenGL,OpenGraphicsLibrary)中,通过相应的图片处理函数调用,可以对图片执行相应的图片处理,从而能够执行CPU的部分数据运算,可以减少对CPU的依赖。
因而,本发明实施例中,提出基于Android系统实现旋转三维旋转界面的方法,通过建立承载目标对象的三维数学模型,并利用OpenGL中的三维图片库OpenGLES2.0,选取三维图片库中相应的图片处理函数,将目标对象加载到建立的数学模型中,从而实现三维旋转界面。由于通过构建的数学模型加载目标对象,运算成本低,能够使呈现的三维旋转界面更清晰,渲染速度更快,流畅性好,并能与二维界面实现无缝切换。
图1为本发明实施例基于安卓系统实现三维旋转界面的方法流程示意图。参见图1,该流程包括:
步骤101,提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的数学模型;
本步骤中,预先获取目标对象在三维界面所需呈现的三维效果信息,即目标对象待实现的三维界面特征信息,例如,对目标对象进行旋转形成的三维旋转界面特征信息。在待呈现的三维效果界面中,提取三维界面特征信息,以根据提取的三维界面特征信息选取相应的三维坐标系,构建映射三维界面特征信息的数学模型,使之在进行后续处理后,能够呈现用户所需的三维效果。
本发明实施例中,数学模型用于依据最终实现的三维旋转界面中呈现的包含各种形状、大小、颜色、旋转特性的三维界面特征信息,在确定的三维坐标系中,构建能够反映三维旋转界面的三维模型。即根据三维效果界面中呈现的各种形状、大小、颜色、旋转特性,通过三维坐标系建立数学模型,使数学模型逼真三维旋转界面中呈现的目标对象。
其中,三维界面特征信息的特性如下:当目标对象由远处向近处旋转时,目标对象具有逐渐变大的效果,并在预先设置的可见范围内,目标对象的侧面逐渐旋转为目标对象的正面;而当目标对象由近处向远处旋转时,具有逐渐缩小的效果,并在预先设置的可见范围内,目标对象的正面逐渐旋转为目标对象的侧面。
构建的数学模型基于三维界面特征信息的特性。本发明实施例中,采用柱面坐标系构建基于三维旋转界面的数学方程,用以实现三维旋转效果,即将柱面坐标系方程作为三维界面特征信息的特性构建的数学模型。当然,实际应用中,也可以采用球坐标系,或者X、Y、Z坐标系等。例如,如果需要实现目标对象绕Y轴旋转的三维效果,则可以采用柱面坐标系,构建的数学模型为一圆柱体,在柱面坐标系中,数学模型表达式为:
式中,
x、y、z分别为数学模型(圆柱体)在柱面坐标系中的三维坐标信息;
r为数学模型距离y轴的距离;
a、b为数学模型在y轴上的高度。
步骤102,将目标对象加载到数学模型,进行纹理映射处理;
本步骤中,在构建了三维旋转界面的数学模型轮廓部分后,需要将目标对象(二维图片)加载到构建的数学模型中。例如,在构建圆柱体后,需要将广告语图片加载到圆柱体的柱面上,以使广告语图片能够随着柱面的旋转而旋转,从而呈现三维界面效果。
将目标对象加载到数学模型包括:
A11,选取数学模型旋转面的参考线;
A12,选取目标对象的参考线;
本步骤中,选取参考线可根据实际需要确定,例如,从确定的数学模型旋转面开始旋转的初始位置处选取参考线,该初始位置对应目标对象的正面,沿与数学模型旋转面平行的目标对象方向,作一垂线,作为目标对象的参考线。
A13,将目标对象的参考线映射至数学模型旋转面的参考线;
本步骤中,在将目标对象加载至数学模型时,选取的目标对象的参考线与数学模型旋转面的参考线相重合。
A14,获取目标对象的像素点对应的平面坐标信息,映射至数学模型旋转面上。
本步骤中,目标对象所对应的平面可能与数学模型旋转面不一致,为了使目标对象所对应的平面与数学模型旋转面相重合,从而使得目标对象能够加载到数学模型上,需要将目标对象的像素点对应的平面坐标信息进行坐标变换处理,使之满足数学模型旋转面的要求。例如,对于平面的目标对象,如果需要将该平面映射到柱面上,则在将目标对象的参考线映射至数学模型旋转面的参考线后,按照柱面的约束方程,将目标对象对应的平面进行相应的约束处理,使得进行约束处理后的平面与柱面相重合。
如何将目标对象的平面坐标信息映射至数学模型旋转面上为已知技术,在此略去详述。
在将目标对象加载到数学模型后,为了能够使加载目标对象的数学模型能够呈现用户所需的三维界面效果,还需要根据数学模型的尺寸,调整目标对象在数学模型中的尺寸及覆盖范围,本发明实施例中,为了减少调整所需的运算量,可以采用纹理映射的方法,对加载到数学模型的目标对象进行调整。即在三维旋转界面中,考虑目标对象真实的纹理、光照等因素,以更完美的呈现三维效果。
纹理映射是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。在三维图片中,纹理映射的方法运用较为广泛。纹理映射能够保证在变换多边形时,多边形上的纹理也会随之变化。
本发明实施例中,在对目标对象图片进行处理时,利用OpenGLES中的纹理映射(TextureMapping),从而保证目标对象图片在加载时,不会发生缩放变形而影响实际展示效果。实际应用中,纹理对象可以通过一个单独的数字来标识。这样,OpenGLES硬件能够在内存中保存多个纹理对象,无需在每次使用时再加载纹理对象,从而减少了运算量,提高了运算速度。
进行纹理映射处理包括:
A21,定义待映射的纹理对象;
本步骤中,定义纹理对象的程序代码段如下:
constintTexNumber4;
GLuintmes_Texture[TexNumber];//定义纹理对象数组
A22,生成纹理对象数组;
本步骤中,生成纹理对象数组的程序代码段如下:
glGenTextures(TexNumber,m_Texture);
A23,调用glBindTexture函数选择定义的纹理对象;
本步骤中,通过使用glBindTexture函数选择纹理对象,来完成被选择纹理对象的定义。其中,
glBindTexture函数是OpenGL核心函数库中的一个函数,用于允许建立一个绑定到目标纹理的有名称的纹理。例如,将一幅具有真实感的图像或者照片作为纹理贴到一个矩形上,可以在定义纹理对象生成纹理对象数组后,通过使用glBindTexture函数选择纹理对象,来完成该纹理对象的定义。
调用glBindTexture函数选择纹理对象的程序代码段如下:
glBindTexture(GL_TEXTURE二维,m_Texture[0]);
glTexImage二维(GL_TEXTURE_二维,0,3,mes_Texmapl.GetWidthU,mee_Texmapl.GetHeight(),0,GL_BGR_EXT,GL_UNSIGNED_BYTE,mse_Texmapl.GetDibBitsl'trQ);
A24,在加载目标对象的数学模型中,通过glBindTexture函数,为目标对象加载选择的纹理对象;
本步骤中,在将目标对象加载到数学模型后,调用glBindTexture函数,为该目标对象加载相应的纹理对象。
加载选择的纹理对象的程序代码段如下:
glBindTexture(GLes_TEXTURE_二维,mse_Texture[0]);
A25,在三维界面显示结束后,调用glDeleteTextures函数,删除加载的纹理对象。
本步骤中,在程序结束之前,通过调用glDeleteTextures函数,可以删除纹理对象。
删除纹理对象的程序代码段如下:
glDeleteTextures(TexNumber,mee_Texture);
上述步骤中,定义纹理对象的程序代码段、生成纹理对象数组的程序代码段、调用glBindTexture函数选择纹理对象的程序代码段、加载纹理对象的程序代码段以及删除纹理对象的程序代码段为已知技术,在此略去详述。
在嵌入式设备中,内存资源是比较稀缺的,而目标对行对应的图片资源是占用内存比较大的文件,并且在三维旋转界面旋转中,需要在每帧中,不断加载新的图片,释放旧的图片。为了能够很好地提高流畅性,本发明实施例中,在将目标对象加载到数学模型后,在进行纹理映射处理之前或之后,该方法可以进一步包括:
B11,查询预先设置的图片缓冲区是否有存储空间,如果有,执行步骤B12,如果没有,删除图片缓冲区中未使用时间最长的图片,执行步骤B12;
B12,将目标对象对应的图片存储至图片缓冲区。
本步骤中,通过在内存中建立图片缓冲区,这样,在数学模型旋转时,可以从图片缓冲区中读取图片数据,有效减少输入输出(I/O,Input/Output)的调用次数,从而提高三维旋转界面的流畅性。
当然,实际应用中,也可以使用预取机制,在三维旋转界面旋转时,根据当前旋转方向,预判断下一次旋转的方向,通过异步加载来提前加载图片资源。这样,可以完成图片的加载和相应的内存资源调配,提升了三维旋转界面显示的流畅性。
步骤103,对进行纹理映射处理的数学模型进行坐标变换,获取与待实现的三维界面特征相匹配的倾斜数学模型;
本步骤中,根据需要实现的三维界面效果,对柱面坐标方程在Z轴上进行预定距离的平移,使得呈现的柱面在可见范围之内,大小能够合适;同时,在X轴上,对柱面按照预先设置的角度进行倾斜处理。
在三维旋转界面中,由于采用了三维坐标描述对象,每一个目标对象呈现在计算机屏幕上的像素点坐标位置为三维坐标数组(x,y,z)。因而,在三维旋转界面的旋转过程中,需要根据旋转角度、速度、时间等因素,重新计算每一个目标对象中像素点在计算机屏幕上的坐标位置。这样,才能实时对由像素点组成的图像进行渲染,从而呈现真实的三维效果。
本发明实施例中,对数学模型倾斜角度α后,对应的柱面的点(x,y,z)在倾斜一定角度后,倾斜到新的位置(x′,y′,z′),具有如下对应关系:
式中,
α为倾斜角度。
步骤104,触发倾斜数学模型旋转,得到旋转数学模型,对旋转数学模型按照预先设置的视点进行透视投影,得到旋转数学模型对应的视平面坐标信息;
本步骤中,倾斜数学模型旋转后,旋转数学模型上一点(x,z)满足关系式:
其中,ω为旋转角速度,t为旋转时间。
为了避免现有技术中进行平面投影导致的三维旋转界面不具有近大远小的特点,可以根据透视投影(PerspectiveProjection)原理,通过坐标变换方程,得到旋转数学模型对应的视平面坐标信息。从而使三维旋转界面中,目标对象具有近大远小的特点,使得立体感更强。
下面分别对透视投影以及坐标变换进行说明。
透视投影是为了获得接近真实三维对象的视觉效果而在二维平面上绘图或者渲染的一种方法,也称为透视图。透视投影具有消失感、距离感以及相同大小的对象呈现出有规律的变化等一系列的透视特性,能逼真地反映目标对象的空间轮廓。
透视投影模型由视点E和视平面P两部分构成,其中,视点E不在视平面P上。视点用于模拟观察者的位置,即观察三维旋转界面的角度;视平面为渲染三维对象透视图的二维平面。
图2为本发明实施例的透视投影模型结构示意图。参见图2,包括:视点E、视平面P,对于透视投影模型中的任一点X,构造一条起点为E并经过点X的射线R,射线R与视平面P的交点Xp即为点X的透视投影点。
由于在三维旋转界面中,目标对象可以看作是由点集合{Xi}构成的,这样,依次构造起点为E,并经过点Xi的射线Ri,射线Ri与视平面P的交点集合即为旋转数学模型在当前视点的透视投影点集合。
下面对数学模型上点的坐标信息经过透视投影得到视平面坐标信息进行说明。
设位于数学模型内的任意一点X(x,y,z)在视平面的透视投影为Xp(xp,yp,zp),从点X和Xp做z轴的垂线,并分别在X-Z平面和Y-Z平面投影。
根据三角形相似原理,可得:
解上式得:
zp=n
该式为透视投影的变换公式,式中,
X(x,y,z)为数学模型内的点在柱面坐标系中的坐标信息;
Xp(xp,yp,zp)为点X(x,y,z)在视平面的视平面坐标信息;
n为透视点距离Z轴的距离。
需要说明的是,由于透视点始终位于视平面,zp恒等于n。因而,实际计算时,可以不考虑zp。
本发明实施例中,在获取倾斜数学模型中某一点的坐标信息后,根据旋转角速度以及倾斜数学模型的约束方程,可以计算出经过时间t后的透视投影点。如何计算透视投影点为已知技术,在此略去详述。
步骤105,将视平面坐标信息转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。
本步骤中,需要将透视投影点进行相应处理,以便显示在计算机屏幕上。这样,需要对透视投影点进行坐标变换,将其从视平面坐标系转换到屏幕坐标系。
图3为本发明实施例的视平面坐标系示意图。参见图3,视平面坐标系中,水平方向为x轴,竖直方向为y轴,原点(0,0)位于视平面中心。
图4本发明实施例的屏幕坐标系示意图。参见图4,屏幕坐标系的原点位于屏幕的坐上角,y轴正向垂直向下,x轴正向水平向右。
本发明实施例中,设视平面的宽度为Wp,高度为Hp,屏幕的宽度为Ws,高度为Hs,设将视平面坐标系中的点(xp,yp)变换为屏幕坐标系中的点(xs,ys)的变换方程如下:
xs=a′*xp+b′
ys=c′*yp+d′
其中,
a′、b′、c′、d′分别为在坐标系中,将视平面坐标系中的点(xp,yp)变换为屏幕坐标系中的点(xs,ys)的横斜率、横截距、纵斜率以及纵截距。
由于屏幕坐标系是离散坐标系,所有屏幕右下点的坐标为(Ws-1,Hs-1),而非(Ws,Hs)。由图3和图4可知,视平面坐标系中的原点(0,0)对应于屏幕坐标系中的中心点(0.5Ws-0.5,0.5Hs-0.5);而视平面坐标系中的左上角点(-0.5Wp,0.5Wp)对应于屏幕坐标系中的原点(0,0)。
将上述原点以及左上角点代入变换方程,可以得出具体的坐标变换方程:
其中,
这样,通过坐标变换方程,可以将视平面坐标信息转换为屏幕坐标信息,根据目标对象的屏幕坐标信息,可以将目标对象描绘在屏幕上,从而使展示在屏幕上的目标对象呈现三维效果。
图5为本发明实施例基于安卓系统实现三维旋转界面的方法具体流程示意图。参见图5,以实现跑马灯广告的显示效果为例,该流程包括:
步骤501,根据三维旋转界面构建跑马灯的数学模型;
本步骤中,建立数学模型时,首先需要参考实现的三维显示效果(跑马灯)。根据需要实现的跑马灯效果,首先选定使用柱面坐标系方程来进行建模。其中,柱面的约束方程为:
x2+z2=r2
a≤y≤b
式中,柱面轴线为Y轴,r为数学模型距离y轴的距离,大小根据实现显示的效果来确定。
a、b为跑马灯对应的数学模型在y轴上的高度。
x、y、z分别为跑马灯对应的数学模型在柱面坐标系中的三维坐标信息。
步骤502,根据跑马灯广告在屏幕上的显示位置,加载跑马灯广告,确定开始旋转的跑马灯广告起始点;
本步骤中,广告图片通过程序加载,可以通过实际的显示效果,来不断修改,最后确定广告图片的大小。这样,广告图片会通过程序绘制在圆柱体上,相当于有背景显示的圆柱体。
步骤503,根据预定的跑马灯广告的三维界面效果,初始化圆柱体在Z轴的倾斜角度;
本步骤中,根据跑马灯广告起始点、倾斜角度α以及原始的柱面坐标系方程,可以建立一个符合实现三维界面效果要求的约束方程的数学模型,,即跑马灯对应的数学模型在柱面坐标系中的三维坐标信息(x、y、z)经过角度α倾斜后,对应倾斜的三维坐标信息(x′、y′、z′),且满足:
并对数学模型进行初始化。
步骤504,旋转圆柱体,根据旋转速度和约束方程计算出旋转圆柱体的坐标信息,进行透视投影,得到旋转圆柱体对应的视平面坐标信息,并将视平面坐标信息转换为屏幕平面坐标信息;
本步骤中,圆柱体初始化状态建立后,还需要处理三维圆柱体的旋转情况。由于跑马灯在旋转时,圆柱体的轴线是固定不变的,所以圆柱体上的各个点在旋转时满足圆柱体约束方程。同时,圆柱体在旋转时,旋转速度可以根据实际显示效果来确定,为一常值,因而,最初的P点(x,z)在旋转后,可以根据旋转速度和约束方程计算出新的P1点(r*cosωt,r*cosα*sinωt)。然后通过OpenGLES函数库,进行坐标变换处理,即将P1点进行透视投影,得到视平面坐标信息,再将视平面坐标信息转换为屏幕平面坐标信息,从而可以根据屏幕平面坐标信息,将P1点绘制在屏幕上。这样,圆柱体上所有的点在旋转时都可以重新进行绘制。
步骤505,根据屏幕平面坐标信息进行广告图片的显示。
本步骤中,由于广告图片已通过程序绘制在圆柱体上,当进行旋转时,广告图片就会同步进行旋转。
由上述可见,本发明实施例基于安卓系统实现三维旋转界面的方法,通过提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的数学模型;将目标对象加载到数学模型,进行纹理映射处理;并在数学模型进行旋转时,进行透视投影,得到旋转数学模型对应的视平面坐标信息并转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。这样,由于通过构建的数学模型加载目标对象,可以有效减少数据运算量,降低了实现三维旋转界面的运算成本;进一步地,通过GPU中相应的图片处理函数调用,可以进行坐标转换处理,从而能够执行CPU的部分数据运算,减少对CPU的依赖;而且,采用透视投影,能够使动态呈现的三维旋转界面更清晰,渲染速度更快,流畅性好,提高了用户对三维界面的体验。
图6为本发明实施例基于安卓系统实现三维旋转界面的装置结构示意图。参见图6,该装置包括:数学模型构建模块、加载模块、数学模型匹配模块、透视投影模块以及展示模块,其中,
数学模型构建模块,用于提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的数学模型;
加载模块,用于将目标对象加载到数学模型,进行纹理映射处理;
数学模型匹配模块,用于对进行纹理映射处理的数学模型进行坐标变换,获取与待实现的三维界面特征相匹配的倾斜数学模型;
透视投影模块,用于触发倾斜数学模型旋转,得到旋转数学模型,对旋转数学模型按照预先设置的视点进行透视投影,得到旋转数学模型对应的视平面坐标信息;
展示模块,用于将视平面坐标信息转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。
较佳地,该装置还可以进一步包括:
图片处理模块,用于监测到加载模块进行纹理映射处理后,查询预先设置的图片缓冲区是否有存储空间,如果有,将目标对象对应的图片存储至图片缓冲区,如果没有,删除图片缓冲区中未使用时间最长的图片,将目标对象对应的图片存储至图片缓冲区。
显然,本领域技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也包含这些改动和变型在内。
Claims (10)
1.一种基于安卓系统实现三维旋转界面的方法,其特征在于,该方法包括:
提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的三维数学模型;三维界面特征信息包括形状、大小、颜色、旋转特性信息;
将目标对象加载到三维数学模型;
对进行纹理映射处理的三维数学模型进行坐标变换,获取与待实现的三维界面特征相匹配的倾斜数学模型;
触发倾斜数学模型旋转,得到旋转数学模型,对旋转数学模型按照预先设置的视点进行透视投影,得到旋转数学模型对应的视平面坐标信息;
将视平面坐标信息转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。
2.根据权利要求1所述的方法,其中,在将目标对象加载到数学模型后,该方法进一步包括:进行纹理映射处理,所述进行纹理映射处理包括:
定义待映射的纹理对象;
生成纹理对象数组;
调用glBindTexture函数选择定义的纹理对象;
在加载目标对象的数学模型中,通过glBindTexture函数,为目标对象加载选择的纹理对象;
在三维界面显示结束后,调用glDeleteTextures函数,删除加载的纹理对象。
3.根据权利要求2所述的方法,其中,在所述将目标对象加载到数学模型后,在进行纹理映射处理之前或之后,所述方法进一步包括:
B11,查询预先设置的图片缓冲区是否有存储空间,如果有,执行步骤B12,如果没有,删除图片缓冲区中未使用时间最长的图片,执行步骤B12;
B12,将目标对象对应的图片存储至图片缓冲区。
4.根据权利要求1所述的方法,其中,所述将目标对象加载到数学模型包括:
选取数学模型旋转面的参考线;
选取目标对象的参考线;
将目标对象的参考线映射至数学模型旋转面的参考线;
获取目标对象的像素点对应的平面坐标信息,映射至数学模型旋转面上。
5.根据权利要求1至4任一项所述的方法,其中,所述三维坐标系为柱面坐标系,所述数学模型表达式为:
式中,
x、y、z分别为数学模型在柱面坐标系中的三维坐标信息;
r为数学模型距离y轴的距离;
a、b为数学模型在y轴上的高度。
6.根据权利要求5所述的方法,其中,所述对进行纹理映射处理的数学模型进行坐标变换的公式为:
式中,
(x′,y′,z′)为数学模型上的点(x,y,z)进行坐标变换后的坐标信息;
α为倾斜角度。
7.根据权利要求6所述的方法,其中,所述透视投影的坐标变换公式为:
zp=n;
式中,
Xp(xp,yp,zp)为点X(x′,y′,z′)在视平面的视平面坐标信息;
n为透视点距离Z轴的距离。
8.根据权利要求7所述的方法,其中,所述将视平面坐标信息转换为屏幕平面坐标信息的变换公式为:
式中,
(xs,ys)为视平面坐标信息(xp,yp)转换得到的屏幕平面坐标信息;
Wp为视平面的宽度;
Hp为视平面的高度;
Ws为屏幕的宽度;
Hs为屏幕的高度。
9.一种基于安卓系统实现三维旋转界面的装置,其特征在于,该装置包括:数学模型构建模块、加载模块、数学模型匹配模块、透视投影模块以及展示模块,其中,
数学模型构建模块,用于提取目标对象待实现的三维界面特征信息,根据提取的三维界面特征信息选取三维坐标系,构建映射三维界面特征信息的三维数学模型;三维界面特征信息包括形状、大小、颜色、旋转特性信息;
加载模块,用于将目标对象加载到三维数学模型;
数学模型匹配模块,用于对进行纹理映射处理的三维数学模型进行坐标变换,获取与待实现的三维界面特征相匹配的倾斜数学模型;
透视投影模块,用于触发倾斜数学模型旋转,得到旋转数学模型,对旋转数学模型按照预先设置的视点进行透视投影,得到旋转数学模型对应的视平面坐标信息;
展示模块,用于将视平面坐标信息转换为屏幕平面坐标信息,根据转换的屏幕平面坐标信息呈现三维旋转界面。
10.根据权利要求9所述的装置,其特征在于,加载模块进一步用于进行纹理映射处理,该装置进一步包括:
图片处理模块,用于监测到加载模块进行纹理映射处理后,查询预先设置的图片缓冲区是否有存储空间,如果有,将目标对象对应的图片存储至图片缓冲区,如果没有,删除图片缓冲区中未使用时间最长的图片,将目标对象对应的图片存储至图片缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310130456.5A CN103247072B (zh) | 2013-04-15 | 2013-04-15 | 基于安卓系统实现三维旋转界面的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310130456.5A CN103247072B (zh) | 2013-04-15 | 2013-04-15 | 基于安卓系统实现三维旋转界面的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103247072A CN103247072A (zh) | 2013-08-14 |
CN103247072B true CN103247072B (zh) | 2016-08-03 |
Family
ID=48926577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310130456.5A Active CN103247072B (zh) | 2013-04-15 | 2013-04-15 | 基于安卓系统实现三维旋转界面的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103247072B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744601B (zh) * | 2014-01-27 | 2017-05-17 | 华勤通讯技术有限公司 | 移动终端及显示内容偏转方法 |
CN105306999A (zh) * | 2014-07-25 | 2016-02-03 | 中兴通讯股份有限公司 | 3d控件图片显示处理方法及装置 |
CN106332398B (zh) * | 2015-07-03 | 2019-06-21 | 青岛海尔智能技术研发有限公司 | 一种led灯带显示效果控制方法 |
CN105915885A (zh) * | 2016-03-02 | 2016-08-31 | 优势拓展(北京)科技有限公司 | 鱼眼图像的3d交互显示方法和系统 |
US11151804B2 (en) * | 2016-09-14 | 2021-10-19 | Sony Corporation | Information processing device, information processing method, and program |
CN107230243A (zh) * | 2017-05-23 | 2017-10-03 | 烟台南山学院 | 一种基于二维动画的时空一致的变速内插方法 |
CN111163303B (zh) * | 2018-11-08 | 2021-08-31 | 中移(苏州)软件技术有限公司 | 一种图像显示方法、装置、终端及存储介质 |
CN109544702B (zh) * | 2018-11-21 | 2023-05-02 | 北京像素软件科技股份有限公司 | 三维变换处理方法、装置、电子设备及存储介质 |
CN109947339B (zh) * | 2019-03-28 | 2020-10-23 | 武汉轻工大学 | 抛物柱面的绘制方法、装置、设备及存储介质 |
CN112734628B (zh) * | 2020-12-30 | 2023-06-09 | 威创集团股份有限公司 | 一种经三维转换后的跟踪点的投影位置计算方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008003693A (ja) * | 2006-06-20 | 2008-01-10 | Canon Inc | 情報処理装置及び文書データ表示方法 |
EP1890267A2 (en) * | 1998-07-16 | 2008-02-20 | The Research Foundation of the State University of New York | Apparatus and method for real-time volume processing and universal 3D rendering |
CN101990026A (zh) * | 2009-08-06 | 2011-03-23 | 龙旗科技(上海)有限公司 | 一种移动终端支持3d视觉效果的显示方式 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE602008001414D1 (de) * | 2007-09-05 | 2010-07-15 | Vidiom Sa | Verfahren zum Drehen von Bildern |
-
2013
- 2013-04-15 CN CN201310130456.5A patent/CN103247072B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1890267A2 (en) * | 1998-07-16 | 2008-02-20 | The Research Foundation of the State University of New York | Apparatus and method for real-time volume processing and universal 3D rendering |
JP2008003693A (ja) * | 2006-06-20 | 2008-01-10 | Canon Inc | 情報処理装置及び文書データ表示方法 |
CN101990026A (zh) * | 2009-08-06 | 2011-03-23 | 龙旗科技(上海)有限公司 | 一种移动终端支持3d视觉效果的显示方式 |
Also Published As
Publication number | Publication date |
---|---|
CN103247072A (zh) | 2013-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103247072B (zh) | 基于安卓系统实现三维旋转界面的方法及装置 | |
JP7337104B2 (ja) | 拡張現実によるモデル動画多平面インタラクション方法、装置、デバイス及び記憶媒体 | |
WO2017113731A1 (zh) | 360度全景显示方法、显示模块及移动终端 | |
US20170186219A1 (en) | Method for 360-degree panoramic display, display module and mobile terminal | |
KR101145260B1 (ko) | 3d 객체 모델에 텍스쳐를 매핑하는 방법 및 장치 | |
US20170038942A1 (en) | Playback initialization tool for panoramic videos | |
US7843463B1 (en) | System and method for bump mapping setup | |
CN110378947B (zh) | 3d模型重建方法、装置及电子设备 | |
US11120591B2 (en) | Variable rasterization rate | |
CN109979013B (zh) | 三维人脸贴图方法及终端设备 | |
RU2680355C1 (ru) | Способ и система удаления невидимых поверхностей трёхмерной сцены | |
WO2017113729A1 (zh) | 360度图像加载方法、加载模块及移动终端 | |
CN110599564A (zh) | 图像展示方法、装置、计算机设备和存储介质 | |
US20230072701A1 (en) | Ambient light based mixed reality object rendering | |
CN114419226A (zh) | 全景渲染方法、装置、计算机设备和存储介质 | |
CN114663632A (zh) | 基于空间位置的光照显示虚拟物体的方法及设备 | |
CN114820980A (zh) | 三维重建方法、装置、电子设备和可读存储介质 | |
US20230260218A1 (en) | Method and apparatus for presenting object annotation information, electronic device, and storage medium | |
US10832493B2 (en) | Programmatic hairstyle opacity compositing for 3D rendering | |
CN110335335A (zh) | 用于球面投影的均匀密度立方体贴图渲染 | |
KR101227155B1 (ko) | 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법 | |
CN111862338B (zh) | 模拟眼镜佩戴图像的显示方法及装置 | |
CN114913277A (zh) | 一种物体立体交互展示方法、装置、设备及介质 | |
CN114020390A (zh) | Bim模型显示方法、装置、计算机设备和存储介质 | |
CN116993877B (zh) | 物体飘落特效模拟方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |