一种基于轮廓树结构适用移动端生成立体文字模型的方法技术

技术编号:24938974 阅读:29 留言:0更新日期:2020-07-17 21:08
本发明专利技术公开了一种基于轮廓树结构适用移动端生成立体文字模型的方法。它具体包括如下步骤:(1)基于文本字体提取字形排布数据和轮廓数据;(2)基于所述轮廓数据转化成离散的多边形,调整至顺时针并计算法向量;(3)基于离散轮廓点构建和文字奇偶填充关系构建的外控‑内孔的轮廓树;(4)对于每个树节点,使用带孔三角剖分方法构建正反面,根据法向量数据构建光滑或有棱角的侧面。本发明专利技术的有益效果是:利用字形轮廓数据中的相关包含关系,构建包含关系树,得到与文字填充区域相对应的拓扑关系,从而能够正确处理复杂字体的模型结构。

【技术实现步骤摘要】
一种基于轮廓树结构适用移动端生成立体文字模型的方法
本专利技术涉及拓扑模型生成相关
,尤其是指一种基于轮廓树结构适用移动端生成立体文字模型的方法。
技术介绍
文字模型生成技术是将用户的使用字体的文本内容转化为精确的顶点模型,是文字立体动画渲染基础载体。文字立体渲染在影视作品中经常被使用在海报片头的关键标题中,其效果醒目,能够加深观众对影视作品的艺术印象。但目前文字的立体渲染的剪辑工作大多在PC操作系统上完成,在移动端上尚未存在成熟知名的产品能够满足大众手机剪辑需求,较大的痛点来源于文字模型生成问题。移动市场上存在一些渲染立体文字的应用,但部分应用只支持内置的英文字母模型,另有一部分应用确实是时时生成模型,但对一些孔洞结构显示不正确,达不到绝大部分的用户的基本需求。从现有状态来看,立体文字的剪辑无法在移动端达到规模化使用的程度。故针对现有技术的缺陷,如何在移动端实现准确无误且跨平台兼容性强的文字模型构造过程,且在性能上达到在用户即时修改时生成模型并即时响应显示的生成算法是目前本领域亟待解决的问题。
技术实现思路
本专利技术是为了克服现有技术中存在上述的不足,提供了一种能够正确处理复杂字体模型结构的基于轮廓树结构适用移动端生成立体文字模型的方法。为了实现上述目的,本专利技术采用以下技术方案:一种基于轮廓树结构适用移动端生成立体文字模型的方法,具体包括如下步骤:(1)基于文本字体提取字形排布数据和轮廓数据:用户输入的数据带有字体样式的字符串内容,通过相应的系统文字组件计算文字的排布数据,计算整个绘制区域大小和具体每个字形的偏移,提取字形中所有路径指令到轮廓数据集合中;(2)基于所述轮廓数据转化成离散的多边形,调整至顺时针并计算法向量;(3)基于离散轮廓点构建和文字奇偶填充关系构建的外控-内孔的轮廓树;(4)对于每个树节点,使用带孔三角剖分方法构建正反面,根据法向量数据构建光滑或有棱角的侧面。本专利技术利用字形轮廓数据中的相关包含关系,构建包含关系树,得到与文字填充区域相对应的拓扑关系,从而能够正确处理复杂字体的模型结构。本专利技术对字形轮廓曲线数据离散处理后,用于渲染时能够依赖顶点间的法向量插值达到渲染光滑曲面的效果,在用户视觉上比较难感受到离散数据带来的视觉瑕疵,其次处理结果保留了轮廓树结构适用于字形内部逐轮廓拼接动画的渲染效果。作为优选,在步骤(1)中,具体操作方法为:(11)计算字形排版:对于每个字体都有确定的行属性,包括行上沉量Ascent、行下沉量Descent、行间距Leading,行高可确定为:LineHeight=Ascent+Descent+Leading以第一行顶部为区域零点,当前行字形的垂直偏移为Ascent,每增加一行累加LineHeight,将用户输入文本分离为多行,将每行内容分离成若干个字形,也是绘制文字的基本单位,每个字形的宽度也就是两个字形原点相邻宽度被定义成Advancement,第一个字形为零,后续字形水平偏移累计前一字形宽度,从而确定整个区域大小和每个字形原点偏移;(12)提取字形路径:字形路径包含N个子路径,对于每一个字形路径包含若干字形曲线绘制命令,遍历所有字形曲线绘制命令构建子路径结构来提取字形路径。作为优选,在步骤(12)中,字形曲线绘制命令,由(a)移动到点、(b)绘制线到点、(c)绘制二次贝塞尔曲线到点、(d)绘制三次贝塞尔到点、(e)关闭子路径五大指令组成,遍历所有指令构建子路径结构:遍历到指令(a)时新建子路径并设置起始点,设置其成当前路径;遍历到指令(b)(c)(d)将相应指令类型和控制点存储到当前路径中;遍历到指令(e)当前路径标记关闭状态,加入子路径集合中。作为优选,在步骤(2)中,具体操作方法为:(21)轮廓数据转化为多个离散点表示的多边形:对于每个子轮廓,遍历路径指令将轮廓转化为多个离散点构成的多边形拟合具体轮廓形状;对于直线指令直接将控制点加入到集合中;对于贝塞尔曲线逼近则使用曲线的t参数均长采样;在计算采样点时,计算采样点的法矢信息,若当前点为指令的起始点或终止点则要考虑前后指令在当前点造成的拐点问题,若前后指令衔接切线不一致则记录当前点为拐点,记录前后切线数据;(22)计算轮廓朝外的法矢数据:构建闭环的多边形后确定结果数据的顺时针方向,路径数据点坐标系以Y轴向上为例,若判定逆时针则对处理结果反序,所有切线方向置反,调整到顺时针后,计算normal=(-tan.y,tan.x),其中tan为调整方向后的切线数据,保证了法矢方向垂直于切线且指向切线左边,至此一个轮廓中所有平滑点或拐点指向外的法矢信息均可计算出。作为优选,在步骤(3)中,具体操作方法为:(31)计算轮廓之间的包含关系:记M为轮廓数据个数,创建关系图:M*M的矩阵,矩阵i行j列的布尔值表示第i个轮廓是否包含第j个轮廓,对于第i行第i列的值初始化为假,判断轮廓A包含轮廓B视作轮廓A是否包含B中的一两个点;(32)构建轮廓树:初始化一个空的根节点S,深度为0,由字形数据对应生成轮廓子节点集合M,引用步骤(31)构造的包含关系图,遍历M,将每个子节点Mn与根节点S作如下考量,(i)遍历根节点S的子节点Sn,若存在子节点Sn包含Mn,则将Sn视为根节点与Mn考量,再次执行步骤(32);(ii)将Mn加入到根节点S的子节点Sn集合中,将Mn的子节点清空;(iii)遍历根节点S中其他子节点Sn,判断Mn是否包含任意一个其他子节点Sn,如果存在则将Sn从根节点S移除,加入到Mn的子节点中;(33)完成以上步骤后一个完整的轮廓树就已经完成,根据文字的奇偶填充法则,所有深度为奇数的轮廓为主轮廓,其所有子节点为内孔;动态遍历根节点S将所有深度为3的轮廓数据从深度2的父节点移出并追加到S子节点集合中,经过一次遍历就可以将所有奇数深度的轮廓添加到总集合中,并且每个节点的深度最多为2,完成了外控-内孔的轮廓单元的构建。作为优选,在步骤(4)中,具体操作方法为:(41)根据步骤(3)的处理结果对每个轮廓单元的正面使用DavidEberly提出的earcut三角剖分算法,适用于带孔多边形数据剖分,将主轮廓顶点和孔轮廓顶点加入输入集合中,使用earcut算法进行处理;(42)对轮廓单元的每个轮廓构建柱面,与柱面相关的主要数据是法矢,如果轮廓是内孔则需要将法矢置反指向轮廓内部,使得孔内能够形成正确的光照效果,同时要判断当前点是否为拐点,若是则需要构造相同顶点不同法矢的两顶点分别构造前后柱面片,形成棱角的光照效果;不是拐点时则使用曲面切线,利用GPU渲染时顶点之间的插值形成与曲面形状相符的渐变光影效果。本专利技术的有益效果是:利用字形轮廓数据中的相关包含关系,构建包含关系树,得到与文字填充区域相对应的拓扑关系,从而能够正确处理复杂字体的模型结构。附图说明图1是本专利技术的方法流程图;图2是字形排版的结构示本文档来自技高网...

【技术保护点】
1.一种基于轮廓树结构适用移动端生成立体文字模型的方法,其特征是,具体包括如下步骤:/n(1)基于文本字体提取字形排布数据和轮廓数据:用户输入的数据带有字体样式的字符串内容,通过相应的系统文字组件计算文字的排布数据,计算整个绘制区域大小和具体每个字形的偏移,提取字形中所有路径指令到轮廓数据集合中;/n(2)基于所述轮廓数据转化成离散的多边形,调整至顺时针并计算法向量;/n(3)基于离散轮廓点构建和文字奇偶填充关系构建的外控-内孔的轮廓树;/n(4)对于每个树节点,使用带孔三角剖分方法构建正反面,根据法向量数据构建光滑或有棱角的侧面。/n

【技术特征摘要】
1.一种基于轮廓树结构适用移动端生成立体文字模型的方法,其特征是,具体包括如下步骤:
(1)基于文本字体提取字形排布数据和轮廓数据:用户输入的数据带有字体样式的字符串内容,通过相应的系统文字组件计算文字的排布数据,计算整个绘制区域大小和具体每个字形的偏移,提取字形中所有路径指令到轮廓数据集合中;
(2)基于所述轮廓数据转化成离散的多边形,调整至顺时针并计算法向量;
(3)基于离散轮廓点构建和文字奇偶填充关系构建的外控-内孔的轮廓树;
(4)对于每个树节点,使用带孔三角剖分方法构建正反面,根据法向量数据构建光滑或有棱角的侧面。


2.根据权利要求1所述的一种基于轮廓树结构适用移动端生成立体文字模型的方法,其特征是,在步骤(1)中,具体操作方法为:
(11)计算字形排版:对于每个字体都有确定的行属性,包括行上沉量Ascent、行下沉量Descent、行间距Leading,行高可确定为:
LineHeight=Ascent+Descent+Leading
以第一行顶部为区域零点,当前行字形的垂直偏移为Ascent,每增加一行累加LineHeight,将用户输入文本分离为多行,将每行内容分离成若干个字形,也是绘制文字的基本单位,每个字形的宽度也就是两个字形原点相邻宽度被定义成Advancement,第一个字形为零,后续字形水平偏移累计前一字形宽度,从而确定整个区域大小和每个字形原点偏移;
(12)提取字形路径:字形路径包含N个子路径,对于每一个字形路径包含若干字形曲线绘制命令,遍历所有字形曲线绘制命令构建子路径结构来提取字形路径。


3.根据权利要求2所述的一种基于轮廓树结构适用移动端生成立体文字模型的方法,其特征是,在步骤(12)中,字形曲线绘制命令,由(a)移动到点、(b)绘制线到点、(c)绘制二次贝塞尔曲线到点、(d)绘制三次贝塞尔到点、(e)关闭子路径五大指令组成,遍历所有指令构建子路径结构:
遍历到指令(a)时新建子路径并设置起始点,设置其成当前路径;
遍历到指令(b)(c)(d)将相应指令类型和控制点存储到当前路径中;
遍历到指令(e)当前路径标记关闭状态,加入子路径集合中。


4.根据权利要求1所述的一种基于轮廓树结构适用移动端生成立体文字模型的方法,其特征是,在步骤(2)中,具体操作方法为:
(21)轮廓数据转化为多个离散点表示的多边形:对于每个子轮廓,遍历路径指令将轮廓转化为多个离散点构成的多边形拟合具体轮廓形状;对于直线指令直接将控制点加入到集合中;对于贝塞尔曲线逼近则使用曲线的t参数均长采样;在计算采样点时,计算采样点的法矢信息,若当前点为指令的起始点或终止点则要考虑前...

【专利技术属性】
技术研发人员:樊伟富张金矿熊永春胡国柱
申请(专利权)人:杭州趣维科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1