一种3d字体的实现方法及终端

文档序号:1141739 发布日期:2020-09-11 浏览:19次 >En<

阅读说明:本技术 一种3d字体的实现方法及终端 (3D font realization method and terminal ) 是由 刘德建 李上杰 薛香铄 方振华 姚隽楠 郭玉湖 陈宏� 于 2020-04-17 设计创作,主要内容包括:本发明公开一种3D字体的实现方法及终端,读取2D字体文件,根据所述2D字体文件获取所述2D字体的轮廓线点集;根据所述轮廓线点集生成3D文本模型数据,根据所述3D文本模型数据生成字体数据文件,根据所述字体数据文件生成3D字体文件;读取所述3D字体文件,获取所述3D字体文件中的3D文本模型数据;根据所述3D文本模型数据渲染3D文本模型以生成3D字体;通过2D字体的轮廓线点集的整合以生成用于3D文本模型渲染的3D文本模型数据,3D文本模型数据能够方便用于对3D字体的各种设置,提高了3D字体实现上的灵活度,丰富了3D显示效果。(The invention discloses a method and a terminal for realizing a 3D font, wherein a 2D font file is read, and a contour line point set of the 2D font is obtained according to the 2D font file; generating 3D text model data according to the contour line point set, generating a font data file according to the 3D text model data, and generating a 3D font file according to the font data file; reading the 3D font file, and acquiring 3D text model data in the 3D font file; rendering a 3D text model according to the 3D text model data to generate a 3D font; integration through the contour line point set of 2D typeface is in order to generate the 3D text model data that is used for 3D text model to render, and 3D text model data can conveniently be used for the various settings to the 3D typeface, has improved the flexibility ratio on the 3D typeface realizes, has richened 3D display effect.)

一种3D字体的实现方法及终端

技术领域

本发明涉及3D技术领域,尤其涉及一种3D字体的实现方法及终端。

背景技术

近年来,随着计算机技术的快速发展,3D技术的研发与应用也从前期摸索阶段走向不断的成熟化、完善化。经过多年的快速发展与广泛应用,3D技术在人们的工作生活中也越来越普及,有面向影视动画、动漫、游戏等视觉表现类的文化艺术类产品的开发与制作,有面向汽车、飞机、家电、家具等实物物质产品的设计和生成,也有面向人与环境交互的虚拟现实的仿真和模拟等。具体的,包括3D软件行业、3D硬件行业、数字娱乐行业、制造业、建筑业、虚拟现实、地理信息GIS、3D互联网等等。

其中,随着现代计算机的CPU、内存和显卡等硬件性能的显著提升,其计算能力、渲染能力和存储能力都得到大幅度的发展,从而为传统应用跨越到3D应用奠定了基础,为了提高用户日常办公体验,在用户使用办公软件的过程中,也出现了3D的身影,比如艺术字,可以认为是一种3D字体,或者是通过PS技术实现字体的立体化,均实现了从“传统”到“3D”的演进,但是,现有的3D字体实现上灵活度不高,3D效果也比较单一。

发明内容

本发明所要解决的技术问题是:提供一种3D字体的实现方法及终端,提高3D字体实现上的灵活度,丰富3D显示效果。

为了解决上述技术问题,本发明采用的一种技术方案为:

一种3D字体的实现方法,包括步骤:

S1、读取2D字体文件,根据所述2D字体文件获取所述2D字体的轮廓线点集;

S2、根据所述轮廓线点集生成3D文本模型数据,根据所述3D文本模型数据生成字体数据文件,根据所述字体数据文件生成3D字体文件;

S3、读取所述3D字体文件,获取所述3D字体文件中的3D文本模型数据;

S4、根据所述3D文本模型数据渲染3D文本模型以生成3D字体。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种3D字体的实现终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

S1、读取2D字体文件,根据所述2D字体文件获取所述2D字体的轮廓线点集;

S2、根据所述轮廓线点集生成3D文本模型数据,根据所述3D文本模型数据生成字体数据文件,根据所述字体数据文件生成3D字体文件;

S3、读取所述3D字体文件,获取所述3D字体文件中的3D文本模型数据;

S4、根据所述3D文本模型数据渲染3D文本模型以生成3D字体。

本发明的有益效果在于:通过获取2D字体的轮廓线点集,根据轮廓线点集生成3D文本模型数据,根据3D文本模型数据生成3D字体文件,在生成3D字体时,直接读取3D字体文件,获取其中的3D文本模型数据进行3D文本模型的渲染以生成3D字体,通过2D字体的轮廓线点集的整合以生成用于3D文本模型渲染的3D文本模型数据,3D文本模型数据能够方便用于对3D字体的各种设置,提高了3D字体实现上的灵活度,丰富了3D显示效果。

附图说明

图1为本发明实施例的一种3D字体的实现方法的步骤流程图;

图2为本发明实施例的一种3D字体的实现终端的结构示意图;

图3为本发明实施例的对字体的点集进行贝塞尔曲线算法优化的示意图一;

图4为本发明实施例的对字体的点集进行贝塞尔曲线算法优化的示意图二;

图5为本发明实施例的利用三角剖分算法根据轮廓线点集生成闭合的几何区域的示意图;

图6为本发明实施例的实现关键帧动画设置的示意图;

图7为本发明实施例的根据3D字体文件生成3D字体的步骤流程图;

标号说明:

1、一种3D字体的实现终端;2、存储器;3、处理器。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

请参照图1,一种3D字体的实现方法,包括步骤:

S1、读取2D字体文件,根据所述2D字体文件获取所述2D字体的轮廓线点集;

S2、根据所述轮廓线点集生成3D文本模型数据,根据所述3D文本模型数据生成字体数据文件,根据所述字体数据文件生成3D字体文件;

S3、读取所述3D字体文件,获取所述3D字体文件中的3D文本模型数据;

S4、根据所述3D文本模型数据渲染3D文本模型以生成3D字体。

由上述描述可知,本发明的有益效果在于:通过获取2D字体的轮廓线点集,根据轮廓线点集生成3D文本模型数据,根据3D文本模型数据生成3D字体文件,在生成3D字体时,直接读取3D字体文件,获取其中的3D文本模型数据进行3D文本模型的渲染以生成3D字体,通过2D字体的轮廓线点集的整合以生成用于3D文本模型渲染的3D文本模型数据,3D文本模型数据能够方便用于对3D字体的各种设置,提高了3D字体实现上的灵活度,丰富了3D显示效果。

进一步的,所述根据所述2D字体文件获取所述2D字体的轮廓线点集包括:

根据所述2D字体文件获取所述2D字体的字型图像信息;

从所述字型图像信息获取2D字体的轮廓线,根据所述轮廓线确定所述轮廓线的点集;

利用贝塞尔曲线算法优化所述点集。

由上述描述可知,基于2D字体的字型图像信息获取轮廓线,并根据轮廓线确定点集,同时通过贝塞尔曲线算法对点集进行优化以形成最终的2D字体的轮廓线点集,能够优化点集的精细程度,进一步改善3D字体的呈现效果。

进一步的,所述根据所述轮廓线点集生成3D文本模型数据包括:

利用三角剖分算法根据所述轮廓线点集生成闭合的几何区域;

根据所述闭合的几何区域生成3D文本正面模型、背面模型和侧面模型;

根据所述3D文本正面模型、背面模型和侧面模型生成3D文本模型数据。

由上述描述可知,基于轮廓线点集先生成闭合的几何区域,然后基于闭合的几何区域生成3D文本的正面模型、背面模型和侧面模型,再将3D文本的正面模型、背面模型和侧面模型进行组合以形成3D文本模型数据,保证了所生成的3D字体的立体性,3D效果更好。

进一步的,所述步骤S2还包括:

接收对所述3D字体的皮肤设置,所述皮肤设置包括材质设置、纹理设置、颜色设置和/或渲染器设置;

根据皮肤设置生成字体皮肤文件;

所述根据所述字体数据文件生成3D字体文件包括:

根据所述字体数据文件和字体皮肤文件生成3D字体文件;

所述步骤S3之后还包括:

读取所述3D字体文件,获取所述3D字体文件中的对所述3D字体的皮肤设置;

所述步骤S4还包括:

根据所述对所述3D字体的皮肤设置对所述3D文本模型进行皮肤设置以生成3D字体。

由上述描述可知,通过皮肤设置能够对生成的3D字体进行材质、纹理、颜色和/或渲染方式等方面的设置,进一步丰富了3D字体的显示效果。

进一步的,所述步骤S2还包括:

接收对所述3D字体的动画设置,所述动画设置包括关键帧动画、顶点动画和/或UV动画;

根据所述动画设置生成字体动画文件;

所述根据所述字体数据文件生成3D字体文件包括:

根据所述字体数据文件和字体动画文件生成3D字体文件;

所述步骤S3之后还包括:

读取所述3D字体文件,获取所述3D字体文件中的对所述3D字体的动画设置;

所述步骤S4还包括:

根据所述对所述3D字体的动画设置对所述3D文本模型进行动画设置以生成3D字体。

由上述描述可知,通过动画设置能够对生成的3D字体进行关键帧动画、顶点动画和/或UV动画等方面的设置,使得3D字体具有动态显示效果,进一步丰富3D字体的显示效果。

请参照图2,一种3D字体的实现终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

S1、读取2D字体文件,根据所述2D字体文件获取所述2D字体的轮廓线点集;

S2、根据所述轮廓线点集生成3D文本模型数据,根据所述3D文本模型数据生成字体数据文件,根据所述字体数据文件生成3D字体文件;

S3、读取所述3D字体文件,获取所述3D字体文件中的3D文本模型数据;

S4、根据所述3D文本模型数据渲染3D文本模型以生成3D字体。

由上述描述可知,本发明的有益效果在于:通过获取2D字体的轮廓线点集,根据轮廓线点集生成3D文本模型数据,根据3D文本模型数据生成3D字体文件,在生成3D字体时,直接读取3D字体文件,获取其中的3D文本模型数据进行3D文本模型的渲染以生成3D字体,通过2D字体的轮廓线点集的整合以生成用于3D文本模型渲染的3D文本模型数据,3D文本模型数据能够方便用于对3D字体的各种设置,提高了3D字体实现上的灵活度,丰富了3D显示效果。

进一步的,所述根据所述2D字体文件获取所述2D字体的轮廓线点集包括:

根据所述2D字体文件获取所述2D字体的字型图像信息;

从所述字型图像信息获取2D字体的轮廓线,根据所述轮廓线确定所述轮廓线的点集;

利用贝塞尔曲线算法优化所述点集。

由上述描述可知,基于2D字体的字型图像信息获取轮廓线,并根据轮廓线确定点集,同时通过贝塞尔曲线算法对点集进行优化以形成最终的2D字体的轮廓线点集,能够优化点集的精细程度,进一步改善3D字体的呈现效果。

进一步的,所述根据所述轮廓线点集生成3D文本模型数据包括:

利用三角剖分算法根据所述轮廓线点集生成闭合的几何区域;

根据所述闭合的几何区域生成3D文本正面模型、背面模型和侧面模型;

根据所述3D文本正面模型、背面模型和侧面模型生成3D文本模型数据。

由上述描述可知,基于轮廓线点集先生成闭合的几何区域,然后基于闭合的几何区域生成3D文本的正面模型、背面模型和侧面模型,再将3D文本的正面模型、背面模型和侧面模型进行组合以形成3D文本模型数据,保证了所生成的3D字体的立体性,3D效果更好。

进一步的,所述步骤S2还包括:

接收对所述3D字体的皮肤设置,所述皮肤设置包括材质设置、纹理设置、颜色设置和/或渲染器设置;

根据皮肤设置生成字体皮肤文件;

所述根据所述字体数据文件生成3D字体文件包括:

根据所述字体数据文件和字体皮肤文件生成3D字体文件;

所述步骤S3之后还包括:

读取所述3D字体文件,获取所述3D字体文件中的对所述3D字体的皮肤设置;

所述步骤S4还包括:

根据所述对所述3D字体的皮肤设置对所述3D文本模型进行皮肤设置以生成3D字体。

由上述描述可知,通过皮肤设置能够对生成的3D字体进行材质、纹理、颜色和/或渲染方式等方面的设置,进一步丰富了3D字体的显示效果。

进一步的,所述步骤S2还包括:

接收对所述3D字体的动画设置,所述动画设置包括关键帧动画、顶点动画和/或UV动画;

根据所述动画设置生成字体动画文件;

所述根据所述字体数据文件生成3D字体文件包括:

根据所述字体数据文件和字体动画文件生成3D字体文件;

所述步骤S3之后还包括:

读取所述3D字体文件,获取所述3D字体文件中的对所述3D字体的动画设置;

所述步骤S4还包括:

根据所述对所述3D字体的动画设置对所述3D文本模型进行动画设置以生成3D字体。

由上述描述可知,通过动画设置能够对生成的3D字体进行关键帧动画、顶点动画和/或UV动画等方面的设置,使得3D字体具有动态显示效果,进一步丰富3D字体的显示效果。

实施例一

请参照图1,一种3D字体的实现方法,包括步骤:

S1、读取2D字体文件,根据所述2D字体文件获取所述2D字体的轮廓线点集;

具体的,根据所述2D字体文件获取所述2D字体的字型图像信息;

从所述字型图像信息获取2D字体的轮廓线,根据所述轮廓线确定所述轮廓线的点集;

利用贝塞尔曲线算法优化所述点集;

其中,Bezier贝塞尔曲线算法通过增加2D字体的特征点和调整2D字体的特征点来优化点集的精细程度;

如图3所示的字体“O”的点集形成过程,在图3(a)中,圆圈圈出来的点偏离了正确位置,通过贝塞尔曲线算法优化后,在图3(b)中,偏离位置的点被调整到了正确的位置,在图3(c)中,优化后的点集连接而成的即为正确的字体“O”;

如图4所示的字体“永”的点集形成过程,在图4(a)中,圆圈圈出来的点偏离了正确位置,并且“永”上面的一点的特征点数不够多,通过贝塞尔曲线算法优化后,在图4(b)中,不仅将偏离了正确位置的点调整到正确位置,并且也增加了“永”上面的一点的特征点数,在图4(c)中,优化后的点集连接而成的即为正确的字体“永”;

S2、根据所述轮廓线点集生成3D文本模型数据,根据所述3D文本模型数据生成字体数据文件,根据所述字体数据文件生成3D字体文件;

其中,所述根据所述轮廓线点集生成3D文本模型数据包括:

利用三角剖分算法根据所述轮廓线点集生成闭合的几何区域;

根据所述闭合的几何区域生成3D文本正面模型、背面模型和侧面模型;

根据所述3D文本正面模型、背面模型和侧面模型生成3D文本模型数据;

如图5所示为对于字体“品”通过三角剖分算法生成闭合的几何区域的示意图,利用OpenGL的TessVertex方法生成由多个三角面拼接而来的几何形状,如图5(a)-(f)所示,为通过三角剖分确定出的“品”字的六个闭合区域,图5(g)为成品;

在使用三角剖分算法生成2D字体对应的几何面片后,几何面片通过顶点位置数据和顶点索引信息表示,如图5(a)中,该区域由8个顶点构成,则进行存储时,确定出这8个顶点对应的位置信息和索引信息,位置信息与对应的索引信息进行绑定,则通过索引信息即可获得8个顶点对应的位置信息,从而确定其组成的区域;

在另一个可选的实施方式中,顶点信息还可以进一步包括法线信息和切线信息以使得根据顶点确定出的区域更加准确;

使用三角剖分算法生成的几何面片合并成3D文本的正面模型,将合成后的3D文本的正面模型进行拷贝作为3D文本的背面模型,再根据3D文本的正面模型和背面模型生成3D文本的侧面模型,最后将正面模型、背面模型和侧面模型合并后即生成3D文本模型数据;

在另一个可选的实施方式中,可以进一步对生成的3D文本模型进行加粗、斜体、倒角等设置;

S3、读取所述3D字体文件,获取所述3D字体文件中的3D文本模型数据;

S4、根据所述3D文本模型数据渲染3D文本模型以生成3D字体;

生成模型过程中利用Unity 3D的Mesh、MeshRenderer和MeshFilter组件进行模型合并和模型渲染,Unity 3D在渲染之前会根据顶点位置信息重新计算默认法线信息,然后将顶点位置数据映射到[0,1]空间内,从而生成顶点uv信息;

在另一个可选的实施方式中,在生成3D文本模型数据后,采用lz4算法对其进行压缩生成字体数据文件,在读取所述3D字体文件时,先对其包含的字体数据文件进行解压以得到3D文本模型数据。

实施例二

本实施与实施例一不同在于,所述步骤S2还包括:

接收对所述3D字体的皮肤设置,所述皮肤设置包括材质设置、纹理设置、颜色设置和/或渲染器设置;

比如,可以进行透明度设置、加材质、加透光、镂空设置等等,使得从不同角度看3D字体可以呈现不同的字效果;

根据皮肤设置生成字体皮肤文件;

所述根据所述字体数据文件生成3D字体文件包括:

根据所述字体数据文件和字体皮肤文件生成3D字体文件;

所述步骤S3之后还包括:

读取所述3D字体文件,获取所述3D字体文件中的对所述3D字体的皮肤设置;

所述步骤S4还包括:

根据所述对所述3D字体的皮肤设置对所述3D文本模型进行皮肤设置以生成3D字体;

具体的,可以利用Unity 3D的Material组件给3D文本模型添加纹理、材质、颜色等属性;

通过对3D字体进行皮肤设置可以使得3D字体被赋予各种皮肤效果,比如粒子效果、积雪效果、破碎效果等等;

在生成3D字体文件时,先生成皮肤的描述文件,然后导出材质资源文件、纹理资源文件、颜色设置文件以及渲染器设置文件,将上述各个文件打包并通过lz4算法压缩以生成字体皮肤文件;读取所述3D字体文件时,先对其包含的字体皮肤文件进行解压以得到3D字体的皮肤设置。

实施例三

本实施例与实施例的不同在于,所述步骤S2还包括:

接收对所述3D字体的动画设置,所述动画设置包括关键帧动画、顶点动画和/或UV动画;

其中,关键帧动画包括位移动画、旋转动画、缩放动画、路径动画等等;

根据所述动画设置生成字体动画文件;

所述根据所述字体数据文件生成3D字体文件包括:

根据所述字体数据文件和字体动画文件生成3D字体文件;

所述步骤S3之后还包括:

读取所述3D字体文件,获取所述3D字体文件中的对所述3D字体的动画设置;

所述步骤S4还包括:

根据所述对所述3D字体的动画设置对所述3D文本模型进行动画设置以生成3D字体;

在生成3D字体文件时,先生成动画的描述文件(动画名称描述、动画文件索引等),然后导出动画资源文件,将上述各个文件打包并通过lz4算法压缩以生成字体动画文件;读取所述3D字体文件时,先对其包含的字体动画文件进行解压以得到3D字体的动画设置;

Unity 3D引擎,提供了很多动画技术,例如关键帧动画、顶点动画和UV动画等,将其与3D文本模型结合可以产生很多酷炫的动态表现;

如图6所示,通过设置不同帧的字体表现形态可以实现关键帧动画效果;

UV动画则是利用Unity 3D材质脚本,给3D文本模型添加动画效果;

在另一个可选的实施方式中,如图7所示,3D字体文件包括字体数据文件、字体皮肤文件和字体动画文件,进行3D字体生成时,依次读出字体数据文件、字体皮肤文件和字体动画文件;先根据字体数据文件渲染出3D文本模型,接着依次根据字体皮肤文件给3D文本模型添加皮肤效果,根据字体动画文件给3D文本模型添加动画效果,最终渲染出带有皮肤效果和动画效果的3D字体;

其中,3D字体文件是一个zip包,其中包含必须部分和可选部分,必须部分是字体数据文件,将顶点位置信息和顶点索引信息通过文本编号(ADCII码)和文本一一对应,最终存储在二进制文件中,字体数据文件可以通过文件名对其进行索引,其包括文本序号、头部信息(包含字体作者、生成时间和字体皮肤文件和字体动画文件的记录(如果包含字体皮肤文件和字体动画文件的话))和数据部分(包含3D文本模型的顶点位置和顶点索引数据);可选部分包括字体皮肤文件和字体动画文件,字体皮肤文件将3D文本模型的材质数据、纹理数据、颜色数据和对应渲染器(Shader文件)存储在二进制文件中形成皮肤,包括头部信息(包含皮肤的作者、生成皮肤的时间)、数据部分(包括材质属性数据)和资源部分(包括纹理资源和渲染脚本);字体动画文件将Unity 3D提供的动画数据存储在二进制文件中形成动画文件,包括头部信息(包含动画文件的作者、生成动画的时间)和数据部分(包含动画数据);最终将三部分打包成压缩文件,形成3D字体文件;

在另一个可选的实施方式中,可以把对3D字体的上述设置方式应用于文本框中,实现立体文本框,将文本框变成立体,可以投影,并且有厚度,并且可以设置材质,材质可以设置成透明色,由于是立体的,可以用任何的3D图像做背景;

在有3D字体和立体文本框的基础上,可以设置立体文本框与立体文本框内的3D字体呈空间摆放方式,具有立体感,文本框里面是透明的,里面的3D字体有对应的大小、颜色和位置设置,由于是立体的,可以在其中一个面还原要显示的字,在其他面看,则可以看到字和文本框是不在一起的,分离的;

3D文本框和3D字体可以赋予各种动画效果,在3D文本框和3D字体应用到PPT文档中时,可以结合PPT文档的动画,设置进入动画和退出动画。

实施例四

请参照图2,一种3D字体的实现终端1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一至三中任一个所述的步骤。

综上所述,本发明提供的一种3D字体的实现方法及终端,通过获取2D字体的轮廓线点集,根据轮廓线点集生成3D文本模型数据,根据3D文本模型数据生成字体数据文件,根据对3D字体的皮肤设置生成字体皮肤文件,根据对3D字体文件的动画设置生成字体动画文件,将字体数据文件、字体皮肤文件和字体动画文件打包生成3D字体文件,在生成3D字体时,直接读取3D字体文件,获取其中的3D文本模型数据进行3D文本模型的渲染,读取其中的字体皮肤文件对渲染而成的3D文本模型进行皮肤设置,读取其中的字体动画文件对渲染而成的3D文件模型进行动画设置,通过2D字体的轮廓线点集的整合以生成用于3D文本模型渲染的3D文本模型数据,3D文本模型数据能够方便用于对3D字体的各种设置,包括皮肤设置和动画设置,提高了3D字体实现上的灵活度,丰富了3D显示效果。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种从合同简体迁移到繁体的光学字符联合训练及识别方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!