CN109308734B - 3d文字的生成方法及其装置、设备、存储介质 - Google Patents

3d文字的生成方法及其装置、设备、存储介质 Download PDF

Info

Publication number
CN109308734B
CN109308734B CN201710625582.6A CN201710625582A CN109308734B CN 109308734 B CN109308734 B CN 109308734B CN 201710625582 A CN201710625582 A CN 201710625582A CN 109308734 B CN109308734 B CN 109308734B
Authority
CN
China
Prior art keywords
polygon
vector
polygons
target
vector path
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
CN201710625582.6A
Other languages
English (en)
Other versions
CN109308734A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710625582.6A priority Critical patent/CN109308734B/zh
Publication of CN109308734A publication Critical patent/CN109308734A/zh
Application granted granted Critical
Publication of CN109308734B publication Critical patent/CN109308734B/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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

本发明实施例提供一种3D文字的生成方法及其装置、设备、存储介质,其中,所述方法包括:获取用于表示待显示的目标字的矢量路径数据;根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;根据所述矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。

Description

3D文字的生成方法及其装置、设备、存储介质
技术领域
本发明涉及多媒体技术领域,尤其涉及一种3维(3-Dimensional,3D)文字的生成方法及其装置、设备、存储介质。
背景技术
随着移动通信技术的发展以及平板电脑、智能手机等智能终端的普及,目前智能终端的功能也越来越多,操作越来越简便,且随着使用者需求的增加,所述智能终端所具有的应用程序也越来越多,所述智能终端早已不是单纯用来满足人们的相互联系,更成为人们日常生活中十分重要的移动个人娱乐终端。
当前智能终端里面的应用里面的文字更多是使用2维(2-Dimensional,2D)的方式呈现,而伴随360度全景视频、虚拟现实技术(Virtual Reality,VR)、增强现实技术(Augmented Reality,AR)的逐渐火热,在VR、AR领域,基本上都是3维(3-Dimensional,3D)场景,因此在场景里面使用3D文字会更为炫酷,将来3D文字在该领域的运用很可能会是标配,当然目前来讲3D文字更多的呈现在电影片头、标识(Logo)的展示等,使用3D文字可以给人们强烈的立体视觉效果,例如图1-1和图1-2,3D文字的电影片头和3D文字的Logo可以给人们强烈的立体视觉效果。
然而目前没有一种提供生成3D文字的解决方案,从而如何生成3D文字成为亟需解决的问题。
发明内容
有鉴于此,本发明实施例期望提供一种3D文字的生成方法及其装置、设备、存储介质。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种3D文字的生成方法,所述方法包括:
获取用于表示待显示的目标字的矢量路径数据;
根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;
如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;
根据所述矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
第二方面,本发明实施例提供一种3D文字的生成装置,所述装置包括:
第一获取模块,配置为获取用于表示待显示的目标字的矢量路径数据;
第一确定模块,配置为根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;
第一划分模块,配置为如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;
第二确定模块,配置为根据所述矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
第一输出模块,配置为根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
第三方面,本发明实施例提供一种3D文字的生成设备,所述设备包括:
存储器、通信总线和处理器,其中:
所述存储器,用于存储3D文字的生成程序;
所述通信总线,用于实现处理器和存储器之间的连接通信;
所述处理器,用于执行存储器中存储的3D文字的生成程序,以实现以下步骤:
获取用于表示待显示的目标字的矢量路径数据;
根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;
如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;
根据所述矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有3D文字的生成程序,所述3D文字的生成程序被处理器执行时实现上述的3D文字的生成方法的步骤。
本发明实施例提供一种3D文字的生成方法及其装置、设备、存储介质,其中,首先获取用于表示待显示的目标字的矢量路径数据;再根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;然后根据所述矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;最后根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字,这样,本实施例提供了一种生成3D文字的方法,其中该方法将三角剖分方法和3D文字的建模结合起来,从而能够更加轻巧便捷的生成3D文字,进而提高了生成3D文字的效率。
附图说明
图1-1为电影片头的3D文字的示意图;
图1-2为Logo使用3D文字的示意图;
图2为本发明实施例3D文字的生成方法的实现流程示意图;
图3为本发明实施例3D文字“田鹿懿目”的正面显示示意图;
图4为本发明实施例3D文字“田鹿懿目”的背面显示示意图;
图5-1为本发明实施例3D文字“田鹿懿目”的正侧面显示示意图;
图5-2为本发明实施例3D文字“田鹿懿目”的背侧面显示示意图;
图6为本发明实施例中“0”的矢量路径示意图;
图7为本发明实施例中“田”字的矢量路径示意图;
图8为本发明实施例带单岛多边形的打洞的示意图;
图9为本发明实施例田字带多岛多边形的多边形化的示意图;
图10为本发明实施例对凸五边形完成三角剖分的示意图;
图11为本发明实施例进行三角剖分时凹多边形的示意图;
图12为本发明实施例对凹多边形完成三角剖分的示意图;
图13-1为本发明实施例利用GL_TRIANGLES绘制三角形的示意图;
图13-2为本发明实施例利用GL_TRIANGLE_STRIP绘制三角形的示意图;
图14为本发明实施例3D文字的生成方法的实现流程示意图;
图15为本发明实施例3D文字的生成方法的实现流程示意图;
图16为本发明实施例3D文字的生成装置的组成结构示意图;
图17为本发明实施例3D文字的生成设备的组成结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明实施例提供一种3D文字的生成方法,图2为本发明实施例3D文字的生成方法的实现流程示意图,如图2所示,所述方法包括:
步骤S201、获取用于表示待显示的目标字的矢量路径数据。
需要说明的是,文字作为人机交互界面GUI的主要组成元素与信息承载点,它的显示一般采用矢量或点阵两种字体,矢量字体可进行字体的无级放大、快速变形以及制作动画,放大后的字体平滑圆润,没有锯齿,做成的动画速度很快,感觉不到字型变换带来的滞留感。利用矢量字库进行字型变换,如平移、缩放、旋转、倾斜等,算法简单,速度快,失真小,效果好,可产生高质量的文字输出。而点阵字体大小固定单一,不仅在放大缩小时很困难,效果也不好,速度慢,字体单调,很难达到美观的要求。因此,目前终端系统的文字都使用的矢量字体。
矢量字体的文字都有一个属于自己的矢量路径数据,并且同一个文字不同字体的矢量路径数据也是有区别的。所以获取用以表示待显示的目标字的矢量路径数据之前,首先要先确定待显示的目标字的属性信息,例如目标字的字体,目标字的字号等,再根据待显示的目标字的属性信息获取与目标字的属性信息相对应的矢量路径数据。
步骤S202、根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N。
对于一个3D文字来说,它可以是正面显示的、背面显示的,还可以是侧面显示的。例如,以“田鹿懿目”的3D文字为例进行说明,对于“田鹿懿目”的3D文字的正面显示如图3所示,背面显示如图4所示,侧面显示包括正侧面显示和背侧面显示,正侧面显示如图5-1所示,背侧面显示如图5-2所示。
生成正面显示和背面显示的3D文字的处理过程与生成侧面显示的3D文字的处理过程是不同的。利用本发明实施例中提供的3D文字的生成方法,能够生成正面显示或背面显示的3D文字。
矢量字体中每一个字形是通过用于表示数学曲线的矢量路径数据来描述的,矢量路径数据中包含了每个矢量路径(也就是字形边界)上的关键点,连线的导数信息等,字体的渲染引擎通过读取这些矢量路径数据,然后进行一定的数学运算来进行渲染。
目标字的矢量路径数据可以理解为是一个数组,并且这个表示矢量路径数组中的每个元素也是一个数组,作为表示矢量路径数组元素的数组中包括了矢量路径中的各个关键点、每个关键点的下一个关键点以及每个关键点和下一个关键点的连线的导数信息。通过目标字的矢量路径数据可以确定该目标字对应的矢量路径的个数N,其中N为大于或者等于1的整数。其中,每一条矢量路径都是该目标字某个边缘的描述,可以是外围轮廓,也可以是内口。每个矢量路径都是一个多边形。并且这些矢量路径有一定的排列顺序。
图6为本发明实施例中“0”的矢量路径示意图,如图6所示,对于“0”这个文字,其矢量路径顺序可以是先一个逆时针的外圆路径601紧接着一个顺时针的内圆路径602,当然也可能是内圆路径在前,外圆路径在后,但是外圆路径的方向和内圆路径的方向一定是相反的。
步骤S203、如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据。
这里,比如目标字为宋体的“一”,那么该目标字对应的矢量路径的个数为1,且该矢量路径是一个凹多边形。
为了更便于理解本发明实施例,对多边形、凹多边形、凸多边形的概念进行解释说明。
多边形是指由三条或三条以上(在《几何原本》中定义为四条以上)的线段首尾顺次连接所组成的平面图形,多边形又分为凹多边形和凸多边形。凹多边形指如果把一个多边形的所有边中,有一条边向两方无限延长成为一直线时,其他各边不都在此直线的同旁,那么这个多边形就叫做凹多边形,其内角中至少有一个优角。平面上,不可能存在凹三角形。凸多边形指如果把一个多边形的所有边中,任意一条边向两方无限延长成为一直线时,其他各边都在此直线的同旁,那么这个多边形就叫做凸多边形,其内角应该全不是优角。
对所述矢量路径对应的多边形进行三角剖分也就是将该多边形按照一定的规则划分成若干个三角形,划分得到的三角形的顶点信息即为索引数据。
由于多边形包括凹多边形和凸多边形。所以对多边形进行三角剖分又分为凹多边形的三角剖分和凸多边形的三角剖分。在本发明其他实施例中对凹多边形的三角剖分过程和凸多边形的三角剖分过程进行说明。
步骤S204、根据所述矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组。
这里,由于矢量路径数据中只包含目标字中各个点的横坐标x和纵坐标y,而在三维空间里,还需要第三维坐标z。在正面显示3D文字和背面显示3D文字时,需要对矢量路径数据中的每个点增加一个z值,增加的z值是一个预设值,该预设值可以是由设备生产商设置好的,也可以是由用户根据自身的实际需求进行设置的。
纹理坐标可以由目标字的矢量路径数据中各个点的x坐标和y坐标根据目标字的字号大小缩放到0到1之间的值得到。当然,纹理坐标也可以根据实际需求进行调整设置。
通过步骤S203得到的索引数据,即为正面显示或背面显示时的顶点索引数组。
步骤S205、根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
这里,当确定了待显示的目标字的顶点坐标(三维)、纹理坐标和顶点索引数组后,那么就可以在OpenGL中使用GL_TRIANGLES方式在预设的位置上对目标字进行绘制。
在本发明其他实施例中,如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间不具备包含关系时,例如文字“二”或文字“三”,虽然它们的对应的矢量路径的个数大于或者等于两个,但是各个矢量路径对应的多边形之间是相互独立,不具备包含关系的,那么此时需要分别对所述N个多边形进行三角剖分,得到相应的索引数据;根据所述目标矢量路径对应的矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
在本发明实施例提供的3D文字的生成方法中,首先获取用于表示待显示的目标字的矢量路径数据;再根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;然后根据所述矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;最后根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字,这样,将三角剖分方法和3D文字的建模结合起来,能够更加轻巧便捷的生成3D文字,提高了生成3D文字的效率。
基于前述的实施例,本发明实施例再提供一种3D文字的生成方法,所述方法包括以下步骤:
步骤1、获取用于表示待显示的目标字的矢量路径数据。
步骤2、确定所述目标字对应的矢量路径的个数N。
本实施例中,矢量路径数据可以看做是一个数组,且数组中的每个元素可以用来表示一个矢量路径,因此,确定了这个数组中的元素个数也就确定了目标字对应的矢量路径的个数N。N是大于或者等于1的整数。
例如,对于“1”来说,它的矢量路径的个数为1;对于“0”来说,它的矢量路径的个数为2,对于“田”来说,它的矢量路径的个数为5。
步骤3、如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系,根据所述矢量路径数据确定N个矢量路径对应的N个多边形之间的M个包含关系。
其中,所述M大于或者等于1。
在本发明其他实施例中,在步骤3之前,所述方法还包括:如果所述目标字对应的矢量路径的个数N至少为两个,判断所述N个矢量路径对应的N个多边形之间是否具有包含关系。在实现的过程中,可以通过判断N个矢量路径对应的N个多边形的方向和所述N个多边形的包围盒之间的关系来判断所述N个多边形之间是否具有包含关系。
例如,对于“二”来说,它的矢量路径有两个,但是这两个矢量路径对应的多边形是相互独立的,并不具备包含关系;而对于“口”来说,它的矢量路径也有两个,这两个矢量路径对应的多边形具备包含关系。
在本发明其他实施例中被包含的多边形可以称之为岛、内岛或者内多边形,包含其他多边形的多边形可以称之为外多边形或者外凹多边形。
步骤4、将所述每一包含关系中的多边形对应的矢量路径形成一个目标矢量路径;
本实施例中,每一包含关系中的多边形的个数至少为2,当某一个包含关系中的多边形的个数为两个时,则说明,只有一个内多边形和一个外多边形,此时可以将该外多边形和内多边形称之为带单岛多边形;当某一包含关系中的多边形的个数大于2时,说明有两个以上的内多边形和一个外多边形,此时可以将该外多边形和内多边形称之为带多岛多边形。对于带多岛多边形,需要对外多边形里面的岛进行排序,排序依据为如果靠上则在前,如果在相同高度,则靠左则在前,在实现的过程中,可以依据多边形的包围盒的坐标信息对内岛进行排序。由于多边形的包围盒BOX(maxX,maxY,minX,minY)的值是在确定多边形的方向时已得出。此处使用maxX,maxY这两个值来进行比较排序即可。
将所述每一包含关系中的多边形对应的矢量路径形成一个目标矢量路径的过程也是一个将带岛多边形的多边形化的一个过程。
步骤5、对M个目标矢量路径中对应的每一多边形进行三角剖分,得到对应的索引数据;
本实施例中,对所述矢量路径对应的多边形进行三角剖分也就是将该多边形按照一定的规则划分成若干个三角形,划分得到的三角形的顶点信息即为索引数据。
步骤6、根据所述目标矢量路径对应的矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
步骤7、根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
本实施例中与其它实施例中相同步骤或概念的解释可以参考其它实施例中的描述。
在本发明其他实施例中,所述步骤3如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系,根据所述矢量路径数据确定N个矢量路径对应的N个多边形之间的M个包含关系可以通过以下几个步骤实现:
步骤31、如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系时,根据所述矢量路径数据确定N个矢量路径中的每一矢量路径对应的多边形的方向和所述多边形的包围盒;
步骤32、根据所述N个矢量路径对应的多边形的方向和多边形的包围盒确定N个多边形之间的M个包含关系。
其中,M是大于或者等于1的整数。
在本发明其他实施例中,根据所述矢量路径数据确定N个矢量路径中的每一矢量路径对应的多边形的方向,包括:根据所述矢量路径数据确定第j个矢量路径中的点集,其中,j=1,2,…,N,所述点集包括P个点,P为大于1的整数;依次确定所述点集中按照第i-1个点到第i个点,再从第i个点到第i+1个点,再从第i+1个点到第i-1个点的顺序进行连线生成的三角形的方向,其中,i=2,3,…,P;分别确定方向为逆时针的三角形的个数和方向为顺时针的三角形的个数;如果方向为顺时针的三角形的个数大于方向为逆时针的三角形的个数,将所述矢量路径对应的多边形的方向确定为顺时针;如果方向为顺时针的三角形的个数小于或者等于方向为逆时针的三角形的个数,将所述矢量路径对应的多边形的方向确定为逆时针。
图7为本发明实施例中“田”字的矢量路径示意图,如图7所示,“田”字的矢量路径一共有五个,其中701是外框路径,701对应的多边形是个凹多边形,702、703、704和705为内框路径,且702、703、704和705对应的多边形均是凸多边形。
以矢量路径702为例,矢量路径702对应的多边形包括A、B、C、D四个点,也就是说矢量路径702中的点集为{A,B,C,D}。从第一个点也就是A开始,从A到B,从B到C,再从C到A生成的三角形ABC的方向为顺时针;从B到C,从C到D,再从D到B生成的三角形BCD的方向为顺时针;从C到D,从D到A,再从A到C生成的三角形CDA的方向为顺时针。由于生成的顺时针的三角形的个数为3,逆时针的三角形的个数为0,所以矢量路径702对应的多边形的方向为顺时针。
在本发明实施例中,根据所述矢量路径数据确定N个矢量路径中的每一矢量路径的多边形的包围盒,包括:从第j个矢量路径中的各个点的坐标中确定最小横坐标值、最大横坐标值、最小纵坐标值和最大纵坐标值;根据所述最小横坐标值、最大横坐标值、最小纵坐标值和最大纵坐标值确定第j个矢量路径对应的多边形的包围盒的坐标信息。
以矢量路径701为例,在矢量路径701包括的点集中,E点的横坐标为最大横坐标值,比如E点的横坐标为10,E点的纵坐标为最大纵坐标值,比如E点中的纵坐标为10,F点的纵坐标为最小纵坐标值,比如F的纵坐标为4,G的横坐标为最小横坐标值,比如,G的横坐标值为3,那么,矢量路径701对应的多边形的包围盒的两个对角的坐标为(3,4),(10,10),由这两个对角坐标可以得出包围盒的另外两个顶点的坐标,分别为(3,10),(10,4)。
在本发明其他实施例中,根据所述N个矢量路径对应的多边形的方向和多边形的包围盒确定N个多边形之间的M个包含关系可以是从第一个多边形开始,确定第一个逆时针多边形,从第一个逆时针多边形向前看,也就是判断第一个逆时针多边形左侧第一个多边形的方向,如果第一个逆时针多边形左侧第一个多边形的方向为顺时针,且第一个逆时针多边形左侧第一个多边形的包围盒在第一个逆时针多边形的包围盒内,则认为第一个逆时针多边形左侧第一个多边形包含在第一个逆时针多边形中。否则停止向前,在往后看(也就是判断第一个逆时针多边形右侧第一个多边形是否满足条件),策略也是一样,如果第一个逆时针多边形左侧或右侧的多边形的方向为逆时针或者不在其包围盒内则结束,向前或向后最多判断六个多边形,然后站到下一个逆时针多边形,依次循环。
在本发明其他实施例中,步骤32根据所述N个矢量路径对应的多边形的方向和多边形的包围盒确定N个多边形之间的M个包含关系进一步包括:
步骤321、获取所述N个矢量路径的顺序;
步骤322、按照所述N个矢量路径的顺序,从所述N个矢量路径对应的多边形中确定第k个逆时针的多边形,其中k=1,2,…,M;
步骤323、判断第一左邻多边形的方向是否为顺时针、且所述第一左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内;
本实施例中,所述第一左邻多边形为第k个逆时针的多边形左侧相邻第一个多边形。如果第一左邻多边形的方向为顺时针、且所述第一左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,进入步骤323;如果第一左邻多边形的方向为逆时针、或所述第一左邻多边形的包围盒不在所述第k个逆时针多边形的包围盒内,进入步骤325。
步骤323、如果第一左邻多边形的方向为顺时针、且所述第一左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,确定所述第一左邻多边形包含在所述第k个逆时针的多边形中;
步骤324、判断第二左邻多边形的方向是否为顺时针、且所述第二左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,其中,所述第二左邻多边形为第k个逆时针的多边形左侧相邻第二个多边形。
本实施例中,如果第二左邻多边形的方向为顺时针、且所述第二左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,确定所述第二左邻多边形包含在所述第k个逆时针的多边形中,然后继续判断第三左邻多边形的方向是否为顺时针、且所述第三左邻多边形的包围盒在所述第k个逆时针的多边形的包围盒内,直至达到预设的判断个数。由于通过大量的观察分析,最复杂的汉字的某个部分最多有包含有五个多边形,因此可以将预设的判断个数设置为6。
如果所述第二左邻多边形的方向为逆时针、或所述第二左邻多边形的包围盒不在所述第k个逆时针多边形的包围盒内,进入步骤325。
步骤325、判断第一右邻多边形的方向是否为顺时针、且所述第一右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内;
本实施例中,如果所述第一右邻多边形的方向为顺时针、且所述第一右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,进入步骤326;如果所述第一右邻多边形的方向为逆时针、或所述第一右邻多边形的包围盒不在所述第k个逆时针多边形的包围盒内,则进入步骤322,确定第k+1个逆时针多边形。
步骤326、确定所述第一右邻多边形包含在所述第k个逆时针多边形中;
步骤327、判断第二右邻多边形的方向是否为顺时针、且所述第二右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内。
本实施例中,如果所述第二右邻多边形的方向为顺时针、且所述第二右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,确定所述第二左邻多边形包含在所述第k个逆时针的多边形中,然后继续判断第三右邻多边形的方向是否为顺时针、且所述第三右邻多边形的包围盒在所述第k个逆时针的多边形的包围盒内,直至达到预设的判断个数。如果所述第二右邻多边形的方向为逆时针、或所述第二右邻多边形的包围盒不在所述第k个逆时针多边形的包围盒内,则进入步骤322,即确定第k+1个逆时针多边形。
以“田”字中的矢量路径为例,如图7所示,“田”字具有5个矢量路径701、702、703、704和705,假定这5个矢量路径的顺序为702、705、703、701、704。其中,矢量路径701对应的多边形的方向为逆时针,矢量路径702对应的多边形的方向为顺时针,矢量路径703对应的多边形的方向为顺时针,矢量路径704对应的多边形的方向为顺时针,矢量路径705对应的多边形的方向为顺时针。
首先,确定第一个逆时针的多边形,也即确定出矢量路径701对应的多边形,然后判断第一左邻多边形的是否为顺时针且第一左邻多边形的包围盒是否在矢量路径701对应的多边形的包围盒内。第一左邻多边形即为矢量路径703对应的多边形;由于第一左邻多边形的方向为顺时针且第一左邻多边形的包围盒在矢量路径701对应的多边形的包围盒内,那么,可以确定矢量路径703对应的多边形包含在矢量路径701对应的多边形内。然后依次判断矢量路径705对应的多边形、矢量路径702对应的多边形、矢量路径704对应的多边形是否包含在矢量路径701对应的多边形内。最后可以得出的包含关系为,矢量路径701对应的多边形中包含有矢量路径703对应的多边形、矢量路径705对应的多边形、矢量路径702对应的多边形和矢量路径704对应的多边形。
在本发明其他实施例中,所述步骤4将所述每一包含关系中的多边形对应的矢量路径形成一个目标矢量路径可以通过以下步骤实现:
步骤41、确定所述每一包含关系中多边形的个数Q;
本实施例中,每一包含关系中的多边形的个数Q至少有两个。
步骤42、判断第k个包含关系中多边形的个数Q是否为两个;
本实施例中,k为1到M之间的整数。如果第k个包含关系中的多边形的个数为两个,进入步骤43;如果第k个包含关系中的多边形的个数不是两个,那么第k个包含关系中的多边形的个数肯定是大于两个,则进入步骤45。
步骤43、根据预设条件确定第一目标点和第二目标点。
本实施例中,所述第一目标点为两个多边形中内多边形上的点,第二目标点为两个多边形中外多边形上的点,并且,所述第一目标点为内多边形上最左上的点,第二目标点为所述外多边形上距离所述第一目标点最近的点。
步骤44、将所述第一目标点和所述第二目标点连接,使得所述被包含的多边形对应的矢量路径和外多边形对应的矢量路径形成一个目标矢量路径。
在实际实现的过程中,将所述第一目标点和所述第二目标点连接,也就是将内多边形对应的矢量路径数据中的第一目标点的下一个点设置为第二目标点,并确定第一目标点和第二目标点的连线的导数信息。这样,就使得所述被包含的多边形对应的矢量路径和外多边形对应的矢量路径形成一个目标矢量路径。
在本发明其他实施例中,将所述第一目标点和所述第二目标点连接,使得所述被包含的多边形对应的矢量路径和外多边形对应的矢量路径形成一个目标矢量路径的过程也可以称之为打洞。图8为本发明实施例带单岛多边形的打洞的示意图,如图8所示,对于带单岛的多边形的打洞,首先选择内岛上最左上点801,然后确定和801最近距离的外凹多边形的点802,最后在内岛和外凹多边形上分别基于此两点打洞,链接起来成为一个新的凹多边形即可。
步骤45、如果第k个包含关系中多边形的个数Q为至少三个,对所述第k个包含关系中被包含的多边形进行排序,得到排序结果;
在本发明其他实施例中,步骤45进一步包括:获取第k个包含关系中被包含的多边形的包围盒的坐标信息;根据所述包围盒的坐标信息确定最大纵坐标;按照最大纵坐标从大到小的顺序对第k个包含关系中被包含的多边形进行排序,得到第一排序结果;如果两个多边形的包围盒的最大纵坐标相同,按照最大横坐标从大到小的顺序对第一排序结果进行排序,得到作为排序结果的第二排序结果。
这里,对“田”字在步骤32中得到的矢量路径703对应的多边形、矢量路径705对应的多边形、矢量路径702对应的多边形和矢量路径704对应的多边形进行排序,得到的第一排序结果为:矢量路径703对应的多边形、矢量路径702对应的多边形、矢量路径705对应的多边形和矢量路径704对应的多边形。
再根据最大横坐标对第一排序结果进行排序,得到作为排序结果的第二排序结果:矢量路径702对应的多边形、矢量路径703对应的多边形、矢量路径704对应的多边形和矢量路径705对应的多边形。
步骤46、根据所述排序结果,将所述第k个包含关系中的多边形对应的矢量路径形成一个目标矢量路径。
在本发明其他实施例中,步骤46可以通过以下步骤实现:首先,按照所述排序结果,将每一包含关系中的外多边形对应的矢量路径和第一个内多边形对应的矢量路径形成第一矢量路径;再将所述第一矢量路径和第二个内多边形对应的矢量路径形成第二矢量路径;依此循环,直至第Q-2矢量路径和第Q-1个内多边形对应的矢量路径形成一个目标矢量路径。
按照步骤45得到的“田”字中四个内多边形的顺序,首先将矢量路径701和矢量路径702连接起来,形成第一矢量路径,然后将第一矢量路径和矢量路径703形成第二矢量路径,第二矢量路径和矢量路径704形成第三矢量路径,第三矢量路径和矢量路径705形成目标矢量路径。图9为本发明实施例田字带多岛多边形的多边形化的示意图,如图9所示,将“田”字的带多岛多边形进行多边形化后,组成“田”字的五个矢量路径形成了一个目标矢量路径。
由于凹多边形和凸多边形在进行三角剖分时采用的方法有所不同,下面对凸多边形的三角剖分方法和凹多边形的三角剖分算法分别进行说明。
在进行凸多边形的三角剖分时,可以把任意一点和其他相邻的两点组合成一个三角形,再从这个点遍历完所有顶点即可,在实现过程中,可以按照以下几个步骤进行凸多边形的三角剖分:
步骤51a、从要进行三角剖分的凸多边形中任意选中一个点;
步骤52a、将选中的点、与该选中的点逆时针相邻的第一个点和与该选中的点逆时针相邻的第二个点,组合成三角形;
步骤53a、从该凸多边形的点集中去掉与该选中的点逆时针相邻的第一个点;
步骤54a、将该选中的点逆时针相邻的第二个点确定为该选中的点逆时针相邻的第一个点;
步骤55a、判断与该选中的点逆时针相邻的第二个点是否为该选中的点;
本实施例中,如果与该选中的点逆时针相邻的第二个点是该选中的点,三角剖分流程结束;如果与该选中的点逆时针相邻的第二个点不是该选中的点,进入步骤52a。
图10为本发明实施例对凸五边形完成三角剖分的示意图,如图10所示,将五边形ABCDE从A点开始进行三角剖分,分别得到了三角形ABC、三角形ACD和三角形ADE。
在本发明其他实施例中,如果用OpenGL绘制凸多边形,则剖分过程可以不需要,直接对凸多边形进行绘制,OpenGL中自带图元组装。
对于凹多边形的三角剖分,在实现过程中可以通过以下几个步骤实现:
步骤51b、从凹多边形的点集中确定第一点;
需要说明的是,第一点可以是凹多边形的点集中的任意一个点,如果是对矢量路径对应的凹多边形进行三角剖分时可以将矢量路径中的起点确定为第一点。
步骤52b、判断该凹多边形的点集中的点数是否小于三个;
如果该凹多边形的点集中的点数小于三个,则三角剖分流程结束;如果该凹多边形的点集中的点数不小于三个,进入步骤53b。
步骤53b、确定与第一点距离最近的第二点,以及除第二点之外与第一点距离最近的第三点;
步骤54b、判断第一点到第二点,第二点到第三点,第三点到第一点的顺序生成的三角形的卷绕方向是否为逆时针;
需要说明的是,如果该三角形的卷绕方向为逆时针,进入步骤55b;如果该三角形的卷绕方向为顺时针,进入步骤57b。
步骤55b、判断该三角形中是否包含了该凹多边形点集中的其他点;
需要说明的是,如果该三角形中包含了该凹多边形点集中的其他点,进入步骤57b;如果该三角形中没有包含该凹多边形点集中的其他点,进入步骤56b。
步骤56b、将第一点、第二点和第三点组合成三角形,将第二点从凹多边形的点集中删除,进入步骤52b;
步骤57b、如果该三角形中包含了多边形的其他点,那么第一点、第二点和第三点不能组合成三角形,将第一点的下一个点确定为第一点,进入步骤52b。
图11为本发明实施例进行三角剖分时凹多边形的示意图,按照上述的三角剖分方法对如图11所示的凹多边形进行三角剖分,得到了如图12所示的三角形1、三角形2、三角形3、三角形4和三角形5。
在本发明实施例提供的3D文字的生成方法中,首先获取用于表示待显示的目标字的矢量路径数据,并确定所述目标字对应的矢量路径的个数N,如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系,然后根据所述矢量路径数据确定N个矢量路径对应的N个多边形之间的M个包含关系;再将所述每一包含关系中的多边形对应的矢量路径形成一个目标矢量路径;对M个目标矢量路径中对应的每一多边形进行三角剖分,得到对应的索引数据;继而根据所述目标矢量路径对应的矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;最后根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字,这样,在本发明实施例中将凹多边形的三角剖分方法、基于文字的带岛凹多边形的凹多边形化、基于文字的带多岛凹多边形的打洞方法跟文字的特性进行了巧妙集合,弥补了目前在3D领域3D文字生成可行性的空洞,进而使360度全景、VR、AR等3D世界在文字上有更多的设计空间。
本发明实施例再提供一种3D文字的生成方法,用于生成侧面的3D文字,所述方法包括以下步骤:
步骤1、获取用于表示待显示的目标字的矢量路径数据;
步骤2、根据所述目标字的矢量路径数据和预设值,确定第一顶点坐标和第二顶点坐标;
由于目标字的矢量路径数据中也仅仅包含了绘制目标字的各个点的二维坐标,在生成侧面的3D文字时,同样需要对每个点增加一个第三维坐标值。首先,根据目标字的矢量路径数据,为所述目标字的矢量路径数据中的各个点增加一个第三维坐标值,其中,该第三维坐标z值为一个预设值。此时将包含三维坐标的各个点的坐标确定为第一顶点坐标。对应的,在每个点的后面再次插入对应的底面的值,对应的底面的值即为第二顶点坐标值,其中,第二顶点坐标值使用与第一顶点坐标值同样的x值和y值,z值使用预设值的相反数。
步骤3、根据所述第一顶点坐标和第二顶点坐标在预设的位置上输出所述目标字的3D文字。
由于在进行文字绘制时要求每条矢量路径都是封闭的,因此,在第一顶点坐标和第二顶点坐标形成的矢量路径在末尾会多插入一个点,也就是将第一个点增加到末尾,这样就形成了一个封闭的矢量路径,然后使用OpenGL的GL_TRIANGLE_STRIP方式直接进行绘制即可。
为了更好的理解本发明实施例,下面对OpenGL中绘制三角形的两种方式:GL_TRIANGLES和GL_TRIANGLE_STRIP进行说明。
GL_TRIANGLES是以每三个顶点绘制一个三角形。图13-1为本发明实施例利用GL_TRIANGLES绘制三角形的示意图,如图13-1所示,第一个三角形使用顶点v0、v1和v2。第二个三角形使用v3、v4和v5。以此类推。如果顶点的个数n不是3的倍数,那么最后的1个或者2个顶点会被忽略。
GL_TRIANGLE_STRIP在绘制三角形时则稍微有点复杂,其规律是:
构建当前三角形的顶点的连接顺序依赖于要和前面已经出现过的2个顶点组成三角形的当前顶点的序号的奇偶性(如果从0开始):
如果当前顶点是奇数,那么组成三角形的顶点排列顺序:T=[n-1,n-2,n];
如果当前顶点是偶数,那么组成三角形的顶点排列顺序:T=[n-2,n-1,n]。
图13-2为本发明实施例利用GL_TRIANGLE_STRIP绘制三角形的示意图,如图13-2所示,第一个三角形的顶点v2序号是2,是偶数,则顶点排列顺序是v0,v1,v2。第二个三角形的顶点v3序号是3,是奇数,则顶点排列顺序是v2,v1,v3。第三个三角形的顶点v4序号是4,是偶数,则顶点排列顺序是v2,v3,v4,以此类推。
这个顺序是为了保证所有的三角形都是按照相同的方向绘制的,使这个三角形串能够正确形成表面的一部分。对于某些操作,维持方向是很重要的,比如剔除。
需要说明的是,不管用GL_TRIANGLE_STRIP还是用GL_TRIANGLES进行三角形绘制都要求顶点个数n至少要大于3,否则不能绘制任何三角形。
本发明实施例再提供一种3D文字的生成方法,图14为本发明实施例3D文字的生成方法的实现流程示意图,如图14所示,所述方法包括以下步骤:
步骤S1401、获取文字的矢量路径。
目前系统的文字都使用矢量字体的,不管是android系统还是ios系统,均提供了相应的接口可以获取到文字的矢量路径数据,构成文字的每一条矢量路径均是文字的某个边缘描述,或者外围轮廓,或者内口,每一条路径均是一个多边形。
步骤S1402、多边形顺时针与逆时针判断。
需要说明的是,本发明实施例中的多边形也就是矢量路径对应的多边形。根据获取到的矢量路径可以确定一个矢量路径上包括的点的集合,在本发明实施例中将一个矢量路径(多边形)上包括的点的集合称之为点集,假定某一多边形的点集为{V0,V1,......,Vn},result用于表示方向结果,result的初始值为0。站在V0点上,判断三角形V0V1V2的方向,如果为顺时针则result加1,否则减1,依次循环到Vn-1点上,最终如果result的值大于0,则确定该多边形的方向为顺时针,否则确定该多边形的方向为逆时针,同时将此多边形的包围盒信息提取出来,即各个点的X坐标值中的最大值和最小值,各个点Y坐标值中的最大值和最小值。
步骤S1403、检测包含关系。
由于各个多边形的包含关系不定,需要根据每个多边形的卷绕顺序(顺时针方向或逆时针方法)和包围盒进行包含关系的检测。
在实现的过程中,从第一个多边形开始,站在第一个逆时针多边形上,向前看,如果第一个逆时针多边形前边的多边形为顺时针,且第一个逆时针多边形前边的多边形的包围盒在第一个逆时针多边形的包围盒内,则认为该第一个逆时针多边形前边的多边形包含在第一个逆时针多边形内。否则停止向前,在往后看,策略也是一样,遇到逆时针或者不在其包围盒内则结束,最多向前或向后检测六个多边形,然后站到下一个外逆时针多边形,依次循环。
步骤S1404、多个岛的排序。
确定完了包含关系后,需要对此外凹多边形里面的岛进行排序,排序依据为如果靠上则在前,如果在相同高度,则靠左的在前,多边形的包围盒BOX(maxX,maxY,minX,minY)的值是在凹多边形的方向判断时已得出。此处使用maxX,maxY这两个值来进行比较排序即可。
步骤S1405、带单岛凹多边形的打洞。
选择内岛上最左上点,然后寻找和此点最近距离的外凹多边形的点,最后内、外分别基于此两点打洞,链接起来成为一个新的凹多边形即可。
步骤S1406、带多岛多边形的凹多边形化。
通过观察,最复杂的汉字的某个部分也就最多带五个岛,基于此,在已经排好序的内岛集里面,站在第一个岛上,选择此岛最左上的点和外凹多边形进行单岛打洞策略,组合成的新凹多边形和下一个岛进行单岛打洞策略,一直循环到最后一个岛。
步骤S1407、凹多边形的三角剖分。
在介绍凹多边形的三角剖分算法之前,先介绍一下凸多边形的一个简单剖分算法,凸多边形的三角剖分:
凸多边形不同于凹多边形,凸多边形的三角剖分,有一种简单的剖分算法,我们可以把任意一点和其它相邻的两点组合成一个三角形,从这个点遍历完所有顶点即可。如果使用OpenGL绘制,则剖分过程可以不需要,直接对多边形进行绘制,OpenGL自带图元组装。
在实现过程中,可以通过以下步骤进行凸多边形的三角剖分:
步骤141、选中一个点;
步骤142、逆时针相邻的第一个点和第二个点,组合成三角形;
步骤143、从点集中去掉第一个点;
步骤144、第二个点变成最近的相邻点;
步骤145、如果第二个点是自己,三角剖分完毕,否则重复142、143、144、145步骤。
下面对凹多边形的三角剖分方法进行说明,凹多边形的三角剖分方法包括以下步骤:
步骤151、站在起点上,如果点集中总的点数不到三个,则结束。
步骤152、寻找最近的两个点。
步骤153、判断此三个点组合成的三角形卷绕方向。如果不是逆时针的三角形,跳到步骤156,否则跳到步骤154。
步骤154、判断此三角形内是否包含了点集中的其它点,如果包含了,则跳到步骤156,否则跳到步骤155。
步骤155、将此三个点组合成三角形,起点不变,中间点从点集中移除,跳到步骤1。
步骤156、此三点不能组合成三角形,起点跳到下一个点,跳到步骤151。
步骤S1408、建模(正面建模/侧面建模/底面建模)。
规定:正面和底面距离为gad。
正面建模:以上步骤产生的数据,顶点数据只有x值和y值,所以在3D中需要增加z值,每个点增加一个z值gad/2,纹理坐标由xy坐标根据文字大小缩放到0到1之间的值得到,此纹理效果根据需求可调整,由以上步骤得出的三角面卷绕的index数组,即为正面顶点的索引数组,OpenGL中使用GL_TRIANGLES方式进行绘制。
底面建模:顶点的x和y使用正面相同的值,z值使用-gad/2。纹理坐标和顶点索引数组和正面相同。
侧面建模:使用最初的文字矢量路径的数据,同样每个点需要插入一个z值gad/2,对应的在其后面再次插入对应的底面的值,使用同样的x值和y值,z值使用-gad/2。由于每条矢量都是封闭的,所以需要在末尾会多插入一个点,将第一个点增加到末尾,然后使用OpenGL的GL_TRIANGLE_STRIP方式直接进行绘制即可。
步骤S1409、渲染绘制。
有了此文字模型绘制所需的顶点数据,三角形卷绕信息(顶点索引数组),以及纹理坐标信息后,对其设置位置,加入动画,赋予对应的纹理图片,最后调用渲染模块绘制即可。
图15为本发明实施例3D文字的生成方法的实现流程示意图,如图15所示,首先获取文字的路径,再根据文字的路径进行3D文字的建模,然后对光照、动画效果、材质或其他因素进行设置得到文字的3D模型,最后根据文字的3D模型绘制出3D文字。
在本发明实施例提供的3D文字的生成方法中,首先通过系统接口获取到文字所有的矢量路径,每一条路径即是一个多边形,判断每个多边形的方向并获取每个多边形的包围盒,通过每条多边形的包围盒和方向进行包含关系的检测,确定了多边形的包含关系后,需要对每条外凹多边形里面的岛进行排序,排完序后进行对带多岛多边形的多边形化,再将多边形化后的凹多边形进行三角剖分,最后是建模和渲染绘制,这样,将凹多边形的三角剖分方法、基于文字的带岛凹多边形的凹多边形化方法、基于文字的带多岛凹多边形的打洞方法跟文字的特性巧妙集合,弥补了目前在3D领域3D文字生成可行性算法的空洞。使360度全景、VR、AR等3D世界在文字上有更多的设计空间。
基于前述的实施例,本发明实施例再提供一种3D文字的生成装置,图16为本发明实施例3D文字的生成装置的组成结构示意图,如图16所示,该装置1600包括:第一获取模块1601、第一确定模块1602、第一划分模块1603、第二确定模块1604和第一输出模块1605,其中:
所述第一获取模块1601,配置为获取用于表示待显示的目标字的矢量路径数据;
所述第一确定模块1602,配置为根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;
所述第一划分模块1603,配置为如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;
所述第二确定模块1604,配置为根据所述矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
所述第一输出模块1605,配置为根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
在本发明其他实施例中,所述装置还包括:
第三确定模块,配置为如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系时,根据所述矢量路径数据确定N个矢量路径对应的N个多边形之间的M个包含关系,其中,所述M大于或者等于1;
第一合成模块,配置为将所述每一包含关系中的多边形对应的矢量路径合成一个目标矢量路径;
第二划分模块,配置为对M个目标矢量路径中对应的每一多边形进行三角剖分,得到对应的索引数据;
第四确定模块,配置为根据所述目标矢量路径对应的矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
第二输出模块,配置为根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
在本发明其他实施例中,所述装置还包括:
第三划分模块,配置为如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间不具备包含关系时,分别对所述N个多边形进行三角剖分,得到相应的索引数据;
第五确定模块,配置为根据所述目标矢量路径对应的矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
第三输出模块,配置为根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
在本发明其他实施例中,所述第三确定模块包括:
第一确定子模块,配置为如果所述目标字对应的矢量路径的个数N至少为两个时,根据所述矢量路径数据确定N个矢量路径中的每一矢量路径的多边形的方向和所述多边形的包围盒;
第二确定子模块,配置为根据所述N个矢量路径对应的多边形的方向和多边形的包围盒确定N个多边形之间的M个包含关系。
在本发明其他实施例中,所述第一确定子模块包括:
第一确定单元,配置为根据所述矢量路径数据确定第j个矢量路径中的点集,其中,j=1,2,…,N,所述点集包括P个点,P为大于1的整数;
第二确定单元,配置为依次确定所述点集中按照第i-1个点到第i个点,再从第i个点到第i+1个点,再从第i+1个点到第i-1个点的顺序进行连线生成的三角形的方向,其中,i=2,3,…,P;
第三确定单元,配置为分别确定方向为逆时针的三角形的个数和方向为顺时针的三角形的个数;
第四确定单元,配置为如果方向为顺时针的三角形的个数大于方向为逆时针的三角形的个数,将所述矢量路径对应的多边形的方向确定为顺时针;
第五确定单元,配置为如果方向为顺时针的三角形的个数小于或者等于方向为逆时针的三角形的个数,将所述矢量路径对应的多边形的方向确定为逆时针。
在本发明其他实施例中,所述第一确定子模块还包括:
第六确定单元,配置为从第j个矢量路径中的各个点的坐标中确定最小横坐标值、最大横坐标值、最小纵坐标值和最大纵坐标值;
第七确定单元,配置为根据所述最小横坐标值、最大横坐标值、最小纵坐标值和最大纵坐标值确定第j个矢量路径对应的多边形的包围盒的坐标信息。
在本发明其他实施例中,所述第二确定子模块包括:
第一获取单元,配置为获取所述N个矢量路径的顺序;
第八确定单元,配置为按照所述N个矢量路径的顺序,从所述N个矢量路径对应的多边形中确定第k个逆时针的多边形,其中k=1,2,…,M;
第九确定单元,配置为如果第一左邻多边形的方向为顺时针、且所述第一左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,确定所述第一左邻多边形包含在所述第k个逆时针的多边形中,其中,所述第一左邻多边形为第k个逆时针的多边形左侧相邻第一个多边形;
第一判断单元,配置为判断第二左邻多边形的方向是否为顺时针、且所述第二左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,其中,所述第二左邻多边形为第k个逆时针的多边形左侧相邻第二个多边形。
第二判断单元,配置为如果所述第一左邻多边形的方向为逆时针或所述第一左邻多边形的包围盒不在所述第k个逆时针多边形的包围盒内,判断第一右邻多边形的方向是否为顺时针、且所述第一右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内;
第十确定单元,配置为如果所述第一右邻多边形的方向为顺时针、且所述第一右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,确定所述第一右邻多边形包含在所述第k个逆时针多边形中;
第三判断单元,配置为判断第二右邻多边形的方向是否为顺时针、且所述第二右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内。
在本发明其他实施例中,所述第一合成模块包括:
第三确定子模块,配置为确定所述每一包含关系中多边形的个数Q;
第四确定子模块,配置为如果第k个包含关系中多边形的个数Q为两个,根据预设条件确定第一目标点和第二目标点,其中,所述第一目标点为两个多边形中内多边形上的点,第二目标点为两个多边形中外多边形上的点;
第一合成子模块,配置为将所述第一目标点和所述第二目标点连接,使得所述被包含的多边形对应的矢量路径和外多边形对应的矢量路径形成一个目标矢量路径。
在本发明其他实施例中,所述第一合成模块还包括:
排序子模块,配置为如果第k个包含关系中多边形的个数Q为至少三个,对所述第k个包含关系中被包含的多边形进行排序,得到排序结果;
第二合成子模块,配置为根据所述排序结果,将所述第k个包含关系中的多边形对应的矢量路径形成一个目标矢量路径。
在本发明其他实施例中,所述排序子模块包括:
第二获取单元,配置为获取第k个包含关系中被包含的多边形的包围盒的坐标信息;
第十一确定单元,配置为根据所述包围盒的坐标信息确定最大纵坐标;
第一排序单元,配置为按照最大纵坐标从大到小的顺序对第k个包含关系中被包含的多边形进行排序,得到第一排序结果;
第二排序单元,配置为如果两个多边形的包围盒的最大纵坐标相同,按照最大横坐标从大到小的顺序对第一排序结果进行排序,得到作为排序结果的第二排序结果。
在本发明其他实施例中,所述第二合成子模块包括:
第一合成单元,配置为按照所述排序结果,将每一包含关系中的外多边形对应的矢量路径和第一个内多边形对应的矢量路径形成第一矢量路径;
第二合成单元,配置为将所述第一矢量路径和第二个内多边形对应的矢量路径形成第二矢量路径;依此循环,直至第Q-2矢量路径和第Q-1个内多边形对应的矢量路径形成一个目标矢量路径。
在本发明其他实施例中,所述装置还包括:
第六确定模块,配置为根据所述目标字的矢量路径数据和预设值,确定第一顶点坐标和第二顶点坐标;
第四输出模块,配置为根据所述第一顶点坐标和第二顶点坐标在预设的位置上输出所述目标字的3D文字。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
基于前述的实施例,本发明实施例提供一种3D文字的生成设备,图17为本发明实施例3D文字的生成设备的组成结构示意图,如图17所示,该3D文字的生成设备1700可以包括:至少一个处理器1701、至少一个通信总线1702、用户接口1703、至少一个外部通信接口1704和存储器1705。其中,通信总线1702配置为实现这些组件之间的连接通信。其中,用户接口1703可以包括显示屏,外部通信接口1704可以包括标准的有线接口和无线接口。其中所述处理器1701,配置为:
获取用于表示待显示的目标字的矢量路径数据;
根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;
如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;
根据所述矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
本发明实施例中,如果以软件功能模块的形式实现上述的3D文字的生成方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
本发明实施例提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令用于执行本发明实施例提供的3D文字的生成方法。
以上生成设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明生成设备和存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (14)

1.一种3D文字的生成方法,其特征在于,所述方法包括:
获取用于表示待显示的目标字的矢量路径数据;
根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;
如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;
根据所述矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
如果所述目标字对应的矢量路径的个数N至少为两个且N个矢量路径对应的N个多边形之间具有包含关系时,根据所述矢量路径数据确定N个矢量路径对应的N个多边形之间的M个包含关系,其中,所述M大于或者等于1;
将每一包含关系中的多边形对应的矢量路径形成一个目标矢量路径;
对M个目标矢量路径中对应的每一多边形进行三角剖分,得到对应的索引数据;
根据所述目标矢量路径对应的矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
2.根据权利要求1中所述的方法,其特征在于,所述方法还包括:
如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间不具备包含关系时,分别对所述N个多边形进行三角剖分,得到相应的索引数据;
根据所述目标矢量路径对应的矢量路径数据、所述索引数据和预设值确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
3.根据权利要求1中所述的方法,其特征在于,如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系时,根据所述矢量路径数据确定N个矢量路径对应的N个多边形之间的M个包含关系,包括:
如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系时,根据所述矢量路径数据确定N个矢量路径中的每一矢量路径对应的多边形的方向和所述多边形的包围盒;
根据所述N个矢量路径对应的多边形的方向和多边形的包围盒确定N个多边形之间的M个包含关系。
4.根据权利要求3中所述的方法,其特征在于,如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系时,根据所述矢量路径数据确定N个矢量路径中的每一矢量路径对应的多边形的方向,包括:
根据所述矢量路径数据确定第j个矢量路径中的点集,其中,j=1,2,…,N,所述点集包括P个点,P为大于1的整数;
依次确定所述点集中按照第i-1个点到第i个点,再从第i个点到第i+1个点,再从第i+1个点到第i-1个点的顺序进行连线生成的三角形的方向,其中,i=2,3,…,P;
分别确定方向为逆时针的三角形的个数和方向为顺时针的三角形的个数;
如果方向为顺时针的三角形的个数大于方向为逆时针的三角形的个数,将所述矢量路径对应的多边形的方向确定为顺时针;
如果方向为顺时针的三角形的个数小于或者等于方向为逆时针的三角形的个数,将所述矢量路径对应的多边形的方向确定为逆时针。
5.根据权利要求4所述的方法,其特征在于,如果所述目标字对应的矢量路径的个数N至少为两个且所述N个矢量路径对应的N个多边形之间具有包含关系时,根据所述矢量路径数据确定N个矢量路径中的每一矢量路径对应的所述多边形的包围盒,包括:
从第j个矢量路径中的各个点的坐标中确定最小横坐标值、最大横坐标值、最小纵坐标值和最大纵坐标值;
根据所述最小横坐标值、最大横坐标值、最小纵坐标值和最大纵坐标值确定第j个矢量路径对应的多边形的包围盒的坐标信息。
6.根据权利要求3中所述的方法,其特征在于,所述根据所述N个矢量路径对应的多边形的方向和多边形的包围盒确定N个多边形之间的M个包含关系,包括:
获取所述N个矢量路径的顺序;
按照所述N个矢量路径的顺序,从所述N个矢量路径对应的多边形中确定第k个逆时针的多边形,其中k=1,2,…,M;
如果第一左邻多边形的方向为顺时针、且所述第一左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,确定所述第一左邻多边形包含在所述第k个逆时针的多边形中,其中,所述第一左邻多边形为第k个逆时针的多边形左侧相邻第一个多边形;
判断第二左邻多边形的方向是否为顺时针、且所述第二左邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,其中,所述第二左邻多边形为第k个逆时针的多边形左侧相邻第二个多边形。
7.根据权利要求6中所述的方法,其特征在于,所述根据所述N个矢量路径对应的多边形的方向和多边形的包围盒确定N个多边形之间的M个包含关系,还包括:
如果所述第一左邻多边形的方向为逆时针或所述第一左邻多边形的包围盒不在所述第k个逆时针多边形的包围盒内,判断第一右邻多边形的方向是否为顺时针、且所述第一右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内;
如果所述第一右邻多边形的方向为顺时针、且所述第一右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内,确定所述第一右邻多边形包含在所述第k个逆时针多边形中;
判断第二右邻多边形的方向是否为顺时针、且所述第二右邻多边形的包围盒在所述第k个逆时针多边形的包围盒内。
8.根据权利要求1中所述的方法,其特征在于,所述将每一包含关系中的多边形对应的矢量路径形成一个目标矢量路径,包括:
确定所述每一包含关系中多边形的个数Q;
如果第k个包含关系中多边形的个数Q为两个,根据预设条件确定第一目标点和第二目标点,其中,所述第一目标点为两个多边形中内多边形上的点,第二目标点为两个多边形中外多边形上的点;
将所述第一目标点和所述第二目标点连接,使得被包含的多边形对应的矢量路径和外多边形对应的矢量路径形成一个目标矢量路径。
9.根据权利要求8中所述的方法,其特征在于,所述将每一包含关系中的多边形对应的矢量路径形成一个目标矢量路径,还包括:
如果第k个包含关系中多边形的个数Q为至少三个,对所述第k个包含关系中被包含的多边形进行排序,得到排序结果;
根据所述排序结果,将所述第k个包含关系中的多边形对应的矢量路径形成一个目标矢量路径。
10.根据权利要求9中所述的方法,其特征在于,对所述第k个包含关系中被包含的多边形进行排序,得到排序结果,包括:
获取第k个包含关系中被包含的多边形的包围盒的坐标信息;
根据所述包围盒的坐标信息确定最大纵坐标;
按照最大纵坐标从大到小的顺序对第k个包含关系中被包含的多边形进行排序,得到第一排序结果;
如果两个多边形的包围盒的最大纵坐标相同,按照最大横坐标从大到小的顺序对第一排序结果进行排序,得到作为排序结果的第二排序结果。
11.根据权利要求9中所述的方法,其特征在于,所述根据所述排序结果,将所述第k个包含关系中的多边形对应的矢量路径形成一个目标矢量路径,包括:
按照所述排序结果,将每一包含关系中的外多边形对应的矢量路径和第一个内多边形对应的矢量路径形成第一矢量路径;
将所述第一矢量路径和第二个内多边形对应的矢量路径形成第二矢量路径;依此循环,直至第Q-2矢量路径和第Q-1个内多边形对应的矢量路径形成一个目标矢量路径。
12.一种3D文字的生成装置,其中,所述装置包括:
第一获取模块,配置为获取用于表示待显示的目标字的矢量路径数据;
第一确定模块,配置为根据所述目标字的矢量路径数据确定所述目标字对应的矢量路径的个数N;
第一划分模块,配置为如果所述目标字对应的矢量路径的个数N为一个时,对所述矢量路径对应的多边形进行三角剖分,得到索引数据;
第二确定模块,配置为根据所述矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
第三确定模块,配置为如果所述目标字对应的矢量路径的个数N至少为两个且N个矢量路径对应的N个多边形之间具有包含关系时,根据所述矢量路径数据确定N个矢量路径对应的N个多边形之间的M个包含关系,其中,所述M大于或者等于1;
第一合成模块,配置为将每一包含关系中的多边形对应的矢量路径合成一个目标矢量路径;
第二划分模块,配置为对M个目标矢量路径中对应的每一多边形进行三角剖分,得到对应的索引数据;
第四确定模块,配置为根据所述目标矢量路径对应的矢量路径数据和所述索引数据确定所述目标字的顶点坐标、纹理坐标和顶点索引数组;
第一输出模块,配置为根据所述目标字的顶点坐标、纹理坐标和顶点索引数组在预设的位置上输出目标字的3D文字。
13.一种3D文字的生成设备,其中,所述设备包括:存储器、通信总线和处理器,其中:
所述存储器,用于存储3D文字的生成程序;
所述通信总线,用于实现处理器和存储器之间的连接通信;
所述处理器,用于执行存储器中存储的3D文字的生成程序,以实现如权利要求1至11中任一项所述的3D文字的生成方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有3D文字的生成程序,所述3D文字的生成程序被处理器执行时实现如权利要求1至11中任一项所述的3D文字的生成方法的步骤。
CN201710625582.6A 2017-07-27 2017-07-27 3d文字的生成方法及其装置、设备、存储介质 Active CN109308734B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710625582.6A CN109308734B (zh) 2017-07-27 2017-07-27 3d文字的生成方法及其装置、设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710625582.6A CN109308734B (zh) 2017-07-27 2017-07-27 3d文字的生成方法及其装置、设备、存储介质

Publications (2)

Publication Number Publication Date
CN109308734A CN109308734A (zh) 2019-02-05
CN109308734B true CN109308734B (zh) 2023-01-06

Family

ID=65202325

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710625582.6A Active CN109308734B (zh) 2017-07-27 2017-07-27 3d文字的生成方法及其装置、设备、存储介质

Country Status (1)

Country Link
CN (1) CN109308734B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111444673B (zh) * 2020-03-09 2022-07-19 稿定(厦门)科技有限公司 文字弯曲变形方法、介质、设备及装置
CN111369441B (zh) * 2020-03-09 2022-11-15 稿定(厦门)科技有限公司 文字处理方法、介质、设备及装置
CN111444674B (zh) * 2020-03-09 2022-07-01 稿定(厦门)科技有限公司 文字变形方法、介质及计算机设备
CN112614218B (zh) * 2020-12-25 2022-05-20 广州凡科互联网科技股份有限公司 一种实现二维文字转换三维文字的展示方法
CN113409429A (zh) * 2021-06-24 2021-09-17 广州光锥元信息科技有限公司 一种生成3d文字的方法及装置
CN114596389B (zh) * 2022-05-10 2022-07-08 中国人民解放军海军工程大学 基于OpenGL实例化技术的大批量文字标牌绘制方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4017467B2 (ja) * 2002-07-23 2007-12-05 株式会社リコー 三角形メッシュデータの圧縮方法及びプログラム
CN102194247B (zh) * 2010-03-11 2015-07-15 新奥特(北京)视频技术有限公司 一种矢量字三角片建模过程中图形元素信息的判断方法
CN103606184B (zh) * 2013-11-21 2016-05-25 武大吉奥信息技术有限公司 一种基于二维和三维一体化矢量渲染引擎的装置
CN103617220B (zh) * 2013-11-22 2017-01-18 北京掌阔移动传媒科技有限公司 一种移动终端3d模型实现方法和装置
KR102238651B1 (ko) * 2014-04-23 2021-04-09 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.

Also Published As

Publication number Publication date
CN109308734A (zh) 2019-02-05

Similar Documents

Publication Publication Date Title
CN109308734B (zh) 3d文字的生成方法及其装置、设备、存储介质
CN111243093B (zh) 三维人脸网格的生成方法、装置、设备及存储介质
KR102612808B1 (ko) 조명 추정
CN110163942B (zh) 一种图像数据处理方法和装置
JP5592011B2 (ja) マルチスケール3次元配向
CN107018336A (zh) 图像处理的方法和装置及视频处理的方法和装置
CN109242961A (zh) 一种脸部建模方法、装置、电子设备和计算机可读介质
CN109840881A (zh) 一种3d特效图像生成方法、装置及设备
CN104781852A (zh) 用于渲染三维场景的计算机绘图方法
US20130257856A1 (en) Determining a View of an Object in a Three-Dimensional Image Viewer
CN111583381B (zh) 游戏资源图的渲染方法、装置及电子设备
CN110389703A (zh) 虚拟物品的获取方法、装置、终端和存储介质
Dong et al. Summarization-based image resizing by intelligent object carving
US20190206109A1 (en) Method, apparatus and device for generating live wallpaper and medium
JP2002288687A (ja) 特徴量算出装置および方法
CN109658518A (zh) 一种基于增强现实的三维物件显示方法、存储介质及计算机
KR20060131145A (ko) 이차원 영상을 이용한 삼차원 물체의 렌더링 방법
CN110120087A (zh) 三维虚拟沙盘的标签标注方法、装置及终端设备
CN111583398B (zh) 图像显示的方法、装置、电子设备及计算机可读存储介质
CN109598792B (zh) 三维场景中建筑物注记的自动放置方法
CN112825039A (zh) 一种基于Canvas实现的三维球体内容展示实现方法
Arpa et al. Perceptual 3D rendering based on principles of analytical cubism
CN114693780A (zh) 图像的处理方法、装置、设备、存储介质和程序产品
US9734579B1 (en) Three-dimensional models visual differential
CN115035231A (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