三维空间内的线性文本布局方法、电子装置及存储介质与流程

文档序号:27437141发布日期:2021-11-17 23:03阅读:212来源:国知局
三维空间内的线性文本布局方法、电子装置及存储介质与流程

1.本技术涉及计算机技术领域,特别是涉及三维空间内的线性文本布局方法、电子装置及存储介质。


背景技术:

2.在计算机、移动电话等终端中,图像渲染技术有着广泛使用。通过图像渲染技术将文本、图像显示在终端对应的显示空间上。随着应用于终端的应用越来越追求生动、怡人的可视效果,文本、图像渲染的流畅度及文本渲染的可读性就尤为显得重要。
3.应用于终端的常规场景的文本、图像的显示,于终端角度而言,文本图像的显示满足对应场景的渲染显示需求,但现有的文本显示,在复杂3d场景、可交互的场景、实时场景等情形下,现有的文本图像的渲染方法已然不满足渲染流畅度和文本可读性好的要求,造成在复杂3d场景、可交互场景和实时场景下的文本布局时,随着场景旋转平移,观察视角变化,文本的文字大小、文字朝向随之变化,造成三维空间线性文本完成布局后,可读性及显示效果差。
4.目前针对相关技术中三维空间线性文本完成布局后,可读性及显示效果差的问题,尚未提出有效的解决方案。


技术实现要素:

5.本技术实施例提供了一种三维空间内的线性文本布局方法、电子装置及存储介质,以至少解决相关技术中三维空间线性文本完成布局后,可读性及显示效果差的问题。
6.第一方面,本技术实施例提供了一种三维空间内的线性文本布局方法,包括:获取待显示的线性文本的文本数据,并根据所述文本数据生成所述线性文本在预设图形库中的坐标参数,其中,所述坐标参数包括第一坐标数据和预设的文本中心;利用gpu对所述坐标参数进行运算,确定所述线性文本在所述gpu的第一着色器中的旋转平移参数,以及通过所述gpu获取所述文本中心投影在显示所述线性文本的屏幕空间中的投影变换信息,其中,所述投影变换信息包括第一投影深度信息;在利用所述第一投影深度信息对所述第一坐标数据进行处理,生成所述线性文本在所述屏幕空间中的第二坐标数据之后,利用所述旋转平移参数对所述第二坐标数据进行处理,生成第三坐标数据;根据所述第三坐标数据,确定所述线性文本在所述第一着色器中的显示位置,并基于所述显示位置对所述线性进行渲染显示。
7.在其中一些实施例中,利用所述第一投影深度信息对所述第一坐标数据进行处理,生成所述线性文本在所述屏幕空间中的第二坐标数据包括:读取所述文本数据的第一文字,并从所述第一坐标数据中读取所述第一文字所对应的第一初始坐标数据,其中,所述文本数据包括多个所述第一文字;根据所述第一投影深度信息和所述第一文字所对应的预设显示尺寸,对所述第一初始坐标数据进行坐标换算,生成所述第一文字在所述屏幕空间中对应的临时坐标数据,其中,所述第二坐标数据包括多个所述临时坐标数据,所述预设显
示尺寸根据所述第一初始坐标数据和预设的第二投影深度信息确定。
8.在其中一些实施例中,利用所述旋转平移参数对所述第二坐标数据进行处理,生成第三坐标数据包括:读取所述旋转平移参数和所述第二坐标数据;基于所述旋转平移参数对所述第二坐标数据进行伸缩运算,得到所述第三坐标数据,其中,所述伸缩运算包括平移运算,和/或,旋转运算。
9.在其中一些实施例中,根据所述第三坐标数据,确定所述线性文本在所述第一着色器中的显示位置包括:读取所述第三坐标数据,并将所述第三坐标数据转换为所述线性文本对应的对象空间坐标系下的第四坐标数据;通过所述第一着色器对所述第四坐标数据进行渲染运算,得到所述文本数据在所述gpu的所述第一着色器中的显示位置坐标数据,其中,所述渲染运算包括模型变换、视图变换和投影变换。
10.在其中一些实施例中,所述坐标参数还包括第一文本方向向量和中心坐标数据,利用gpu对所述坐标参数进行运算,确定所述线性文本在所述gpu的第一着色器中的旋转平移参数包括:通过所述gpu对所述第一文本方向向量进行矩阵运算,得到第二文本方向向量,其中,所述矩阵运算至少包括模型变换和视图变换,所述第二文本方向向量为所述第一文本方向向量在预设投影世界坐标系内的方向向量;检测所述第二文本方向向量在所述预设投影世界坐标系内的区间值,并根据所述区间值确定所述文本数据的空间运算参数,其中,所述空间运算参数包括所述文本数据的平移参数和/或旋转角度参数;基于所述空间运算参数、所述第一坐标数据和所述中心坐标数据进行位置修正运算,得到所述线性文本所对应的所述旋转平移参数,其中,所述位置修正运算至少包括以下其中一种:平移运算、旋转运算。
11.在其中一些实施例中,检测所述第二文本方向向量在所述预设投影世界坐标系内的区间值,并根据所述区间值确定所述文本数据的空间运算参数包括:确定所述第二文本方向向量在所述预设投影世界坐标系内的所述区间值;在第一空间运算参数表中查询与所述区间值对应的所述空间运算参数,其中,第一空间参数表包括所述区间值与所述空间运算参数的映射关系。
12.在其中一些实施例中,基于所述空间运算参数、所述第一坐标数据和所述中心坐标数据进行位置修正运算包括:读取所述文本数据的第二文字,并分别从所述第一坐标数据和所述中心坐标数据中读取与所述第二文字对应的第二初始坐标数据和第二中心坐标数据,其中,所述文本数据包括多个所述第二文字;计算所述第二初始坐标数据与所述第二中心坐标数据的差值,并利用所述空间运算参数中的所述平移参数对所述差值进行平移计算,得到所述第二文字平移后的位置坐标数据,确定所述旋转平移参数包括所述第二文字平移后的位置坐标数据;和/或,利用所述空间运算参数中的所述旋转角度参数对所述第二初始坐标数据进行旋转运算,得到所述第二文字旋转后的位置坐标数据,确定所述旋转平移参数包括所述第二文字旋转后的位置坐标数据。
13.在其中一些实施例中,所述第一坐标数据包括所述文本数据所对应的第三初始坐标数据,基于所述空间运算参数、所述第一坐标数据和所述中心坐标数据进行位置修正运算包括:读取所述第一文本方向向量,并对所述第一文本方向向量进行标准化处理,得到所述第一文本方向向量的单位向量;基于所述单位向量生成与所述第一文本向量对应的旋转矩阵,并根据所述旋转矩阵对所述第三初始坐标数据进行矩阵运算,得到所述文本数据旋
转后的位置坐标数据,确定所述旋转平移参数包括所述文本数据旋转后的位置坐标数据。
14.在其中一些实施例中,通过所述gpu获取所述文本中心投影在显示所述线性文本的屏幕空间中的投影变换信息包括:读取所述文本中心对应的模型坐标数据,并通过所述gpu对模型坐标数据依次进行模型变换运算、世界变换运算及投影变换运算,生成所述文本中心在所述预设图形库的投影空间中的第五坐标数据;将所述第五坐标数据映射转换至所述屏幕空间所对应的坐标系,生成所述文本中心在所述屏幕空间中的第六坐标数据,其中,所述第六坐标数据为所述文本中心在所述屏幕空间中的二维坐标所对应的齐次坐标;从所述第六坐标数据中提取第一投影深度参数,其中,所述第一投影深度参数用于表征所述第六坐标数据所对应的齐次坐标的齐次分量,所述线性文本对应的所述第一投影深度信息包括所述第一投影深度参数。
15.在其中一些实施例中,根据所述文本数据生成所述线性文本在预设图形库中的坐标参数包括:提取所述文本数据的第三文字,并生成第三文本方向向量,其中,所述第三文本方向向量至少用于描述所述第三文字在所述预设图形库的世界坐标系内的朝向;在所述预设图形库的世界坐标系中,生成与每一个所述第三文字对应的矩形面,并分别确定所述矩形面的顶点和中心点在所述预设图形库的世界坐标系内的对应的坐标数据;确定所述文本数据在预设图像库中的坐标参数至少包括所述第三文本方向向量、所述矩形面的顶点和中心点在所述预设图形库的世界坐标系内的对应的坐标数据。
16.第三方面,本技术实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行第一方面所述的三维空间内的线性文本布局方法。
17.第四方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现第一方面所述的三维空间内的线性文本布局方法的步骤。
18.相比于相关技术,本技术实施例提供的一种三维空间内的线性文本布局方法、电子装置及存储介质,通过获取待显示的线性文本的文本数据,并根据文本数据生成线性文本在预设图形库中的坐标参数,其中,坐标参数包括第一坐标数据和预设的文本中心;利用gpu对坐标参数进行运算,确定线性文本在gpu的第一着色器中的旋转平移参数,以及通过gpu获取文本中心投影在显示线性文本的屏幕空间中的投影变换信息,其中,投影变换信息包括第一投影深度信息;在利用第一投影深度信息对第一坐标数据进行处理,生成线性文本在屏幕空间中的第二坐标数据之后,利用旋转平移参数对第二坐标数据进行处理,生成第三坐标数据;根据第三坐标数据,确定线性文本在第一着色器中的显示位置,并基于显示位置对线性进行渲染显示,解决了相关技术中三维空间线性文本完成布局后,可读性及显示效果差的问题,实现了线性文本保持朝向观察视角展示,提高线性文本的可读性及显示效果的有益效果。
19.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
20.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本申
请的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
21.图1是本发明实施例的三维空间内的线性文本布局方法的终端的硬件结构框图;
22.图2是根据本技术实施例的三维空间内的线性文本布局方法的流程图;
23.图3是根据本技术优选实施例的三维空间内的线性文本布局方法的流程图;
24.图4是根据本技术实施例的基于gpu的文本实时布局装置的结构框图。
具体实施方式
25.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
26.显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
27.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
28.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
29.本技术中描述的各种技术可用于3d场景、可交互场景中的文本渲染、布局显示。
30.在对本技术的实施例进行描述和说明之前,先对本技术中使用的相关技术进行说明如下:
31.图形库(graphics library,gl),用于在显示器上渲染计算机图形的程序库,它通常提供一组经过优化的函数来执行常见的渲染任务,这些渲染任务通常可以完全在软件层
面上解决,使用cpu进行计算,常见于嵌入式系统,或者,由一枚gpu进行硬件加速,常见于家用计算机。
32.图形处理器(graphics processing unit,gpu),又称显示核心、视觉处理器、显示芯片,是一种专门在电脑、工作站、游戏机和移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器;gpu的使用,使的显卡减少了对cpu的依赖,并能进行部分原本cpu的工作,尤其是在3d图形处理;gpu所采用的核心技术有硬件t&l(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。
33.着色器(shader),用于实现图像渲染的,用来替代固定渲染管线的可编辑程序。着色器在本领域中是公知的,典型的包括顶点着色器和片元着色器,其中,
34.顶点着色器,用于处理构成文本的三角形(两个三角形构成一个矩形面)的每个顶点的计算,确定三角形顶点在屏幕上显示的位置,其中计算过程可以描述为投影矩阵(projectionmatrix)*视图矩阵(viewmatrix)*模型矩阵(modelmatrix)*顶点坐标(position)。
35.片元着色器,用于将图像像素化即确定图像数据在屏幕上显示的像素值。
36.模型空间,也称对象空间或者局部空间,每个模型都有自己独立的坐标空间,当它移动或者旋转时,模型空间也跟着它移动和旋转。模型变换及模型矩阵,模型变换指的是将物体坐标系下的物体变换到世界坐标系下,模型变换通过乘以模型矩阵来实现;模型矩阵包括平移,旋转,缩放的信息,模型矩阵也可以称作基本总变换矩阵。
37.世界空间,世界空间是最大的,最外层的坐标空间,有固定的原点和坐标轴。
38.摄像机空间,摄像机决定渲染游戏所使用的视角,在摄像机空间中摄像机在原点,+x指向右方,+y指向上方,而+z指向摄像机的后方,与模型空间和世界空间不同,因为u3d在摄像机空间使用的是右手坐标系,符合opengl传统,所以摄像机的正前方是

z方向。
39.视变化及视图矩阵,视变化,是将世界坐标系下的坐标变化到摄像机坐标系,视变换是通过乘以视图矩阵实现的;视图矩阵将世界坐标系的坐标变换到摄像机坐标系下。
40.裁剪空间,也称齐次裁剪空间,所需的矩阵为裁剪矩阵,也称投影矩阵,裁剪空间中是用视锥体对图元进行裁剪,视锥体由六个平面包围而成,这些平面为裁剪平面。视锥体有两种类型,正交和透视,这里暂时只记录透视投影。
41.投影变换及投影矩阵,投影变换是将摄像机坐标系下的物体变换到剪裁坐标系,投影变换是通过乘以投影矩阵实现;投影方式有两种:正交投影和透视投影,其中,
42.正交投影:投影到近平面上相同尺寸大小的图形大小相同,不会有真实世界那种近大远小的感觉。
43.齐次坐标:就是用n+1维来代表n维坐标,也就是可以在一个2d笛卡尔坐标末尾加上一个额外的变量w来形成2d齐次坐标,因此,一个点(x,y)在齐次坐标里面变成了(x,y,w),并且有
44.x=x/w
45.y=y/w
46.例如:笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0,
2/0)=(∞,∞),我们可以不用”∞"来表示一个无穷远处的点。
47.透视投影:同样尺寸的物体,近处的物体投影出来大,远处的物体投影出小,会产生与真实世界一样近大远小的感觉。在乘以投影矩阵后,任何一个点的2d齐次坐标[x,y,z,w]中的下x,y,z的分量将在

w~w内。屏幕空间,是一个二维空间,是把顶点从裁剪空间投影到屏幕空间,来得出对应的二维坐标。
[0048]
本实施例提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。以运行在终端上为例,图1是本发明实施例的三维空间内的线性文本布局方法运行终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限定。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
[0049]
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的三维空间内的线性文本布局方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0050]
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
[0051]
本实施例提供了一种三维空间内的线性文本布局方法,本实施例的布局方法是基于gpu实现的,图2是根据本技术实施例的三维空间内的线性文本布局方法的流程图,如图2所示,该流程包括如下步骤:
[0052]
步骤s201,获取待显示的线性文本的文本数据,并根据文本数据生成线性文本在预设图形库中的坐标参数,其中,坐标参数包括第一坐标数据和预设的文本中心。
[0053]
在本实施例中,接收的待显示的线性文本的文本数据包括线性文本的文本、位置数据及图像数据,该文本用来描述需要显示的文字,该位置数据是指线性文本的位置坐标,图像数据包括多像素点组成的光栅或像素化图像的集合,通过对位置数据进行数据处理,即执行本实施例的布局方法,从而确定需要显示的线性文本在可交互、实时场景中的屏幕空间的渲染位置。
[0054]
需要说明的是,在本技术实施例中,一个图像数据可以表示一个文字,每个文字是由一个矩形面(在图形库中为两个三角形)和对应的图像数据构成。
[0055]
在本实施例中,在获取对应的文本数据后,根据文本数据中的位置数据(对应为物体坐标系下的坐标数据)依次进行模型变换和视图变换,从而将位置数据依次变换为世界
坐标系下的坐标数据和预设图像库对应的世界坐标系的坐标数据;在生成坐标参数的过程中,还生成有描述线性文本在预设图像库的世界坐标系内的朝向,以及标注出的整个线性文本的文本中心的坐标数据,在本实施例中,线性文本的文本中心是通过标注对应的信息点而生成的坐标数据,亦可作为预设的坐标数据。本实施例中,文本数据处理后的坐标参数中的的第一坐标数据主要包括构成文本在预设图像库中的矩形面的顶点的坐标数据。
[0056]
步骤s202,利用gpu对坐标参数进行运算,确定线性文本在gpu的第一着色器中的旋转平移参数,以及通过gpu获取文本中心投影在显示线性文本的屏幕空间中的投影变换信息,其中,投影变换信息包括第一投影深度信息。
[0057]
在本实施例中,采用gpu对坐标参数进行运算,也就是计算出将坐标参数转换为可交互、实时场景中的屏幕空间对应的位置坐标需要进行的平移方向、旋转角度的量,例如:在文本的原始物体空间内,文本时从左到右显示,并朝向为由西向东,当转换到将文本转换到可交互、实时场景中的屏幕空间内中,需要进行从右到左的平移、单个文字绕其中心点的旋转以及整个文本实行朝向为由北到南旋转为朝向由西向东,其中,文本的平移的坐标数据、单个文字和文本的旋转角度数据为本实施例中的旋转平移参数。
[0058]
在本实施例中,采用gpu获取文本中心投影在显示线性文本的屏幕空间中的投影变换信息,就是通过将文本中心作为一个顶点数据进行空间转换处理和屏幕坐标转换,从而获取文本中心投影至屏幕空间上后的坐标位置,根据该坐标位置中的投影深度属性确定线性文本的文字投影至屏幕空间中的投影深度信息,籍以通过该投影深度信息处理第一坐标数据,从而使的无论场景如何旋转平移,线性文本的文字显示尺寸不变,且保持面向观察视角(对应于面朝相机)。
[0059]
在本实施例中,投影变换信息包括文本中心所对应的坐标数据对应的模型矩阵信息、视图矩阵信息、投影矩阵信息以及屏幕坐标系转换过程的转换信息,还包括将文本中心转换为屏幕空间中的坐标后,根据该坐标确定的投影距离。
[0060]
步骤s203,在利用第一投影深度信息对第一坐标数据进行处理,生成线性文本在屏幕空间中的第二坐标数据之后,利用旋转平移参数对第二坐标数据进行处理,生成第三坐标数据。
[0061]
在本实施例中,第一坐标数据为对应于预设图形库坐标系下的三维坐标;同时,该三维坐标在经过投影变换(如透视投影)后,会生成三维坐标中的各个点位在投影场景内的深度,基于三维坐标和该深度,能确定线性文本对应的文字的显示尺寸;在本实施例中,在获取到第一投影深度信息后,将线性文本于预设图形库中的第一坐标数据进行处理,也就是利用第一投影深度信息,在满足保持线性文本的文字的显示尺寸不变的条件下,将第一坐标数据进行去除投影深度分量处理,然后再进行去除投影深度的坐标到屏幕空间内的坐标的换算,从而生成二维的第二坐标数据。
[0062]
在本实施例中,在生成二维的第二坐标数据后,从已获取的旋转平移参数中提取平移的坐标数据、旋转的旋转角度数据,然后,对第二坐标数据进行伸缩运算,得到对于的文字的顶点坐标数据。
[0063]
步骤s204,根据第三坐标数据,确定线性文本在第一着色器中的显示位置,并基于显示位置对线性进行渲染显示。
[0064]
在本实施例中,获取第三坐标数据后,需要通过gpu将二维的第三坐标数据还原成
三维空间(线性文本所对应的对象空间)的坐标数据,然后,由gpu基于还原的坐标数据进行空间换算处理,换算处理生成的坐标数据作为线性文本在第一着色器进行渲染显示的坐标位置。
[0065]
需要说明的是,在本实施例中,第一坐标数据、第二坐标数据以及第三坐标数据均采用齐次坐标表征,例如:当坐标数据对应的某一个点的坐标为三维坐标时,其对应的齐次坐标为加入齐次分量而生成的四位坐标;同时,在本实施例中,三维坐标、二维坐标均还可以统一为最大维度(四维)的形式表示,当用最大维度表示低维度的坐标时,其对应的某个维度的分量为零,例如:二维坐标,其对应的z向维度的分量为0。
[0066]
还需要说明的是,在本技术的实施例中,第一着色器包括但不限于顶点着色器。本技术的实施例中,是通过基于顶点着色器计算过程对文本数据的相关参数进行处理,实现文字布局。
[0067]
通过上述步骤s201至步骤s204,获取待显示的线性文本的文本数据,并根据文本数据生成线性文本在预设图形库中的坐标参数,其中,坐标参数包括第一坐标数据和预设的文本中心;利用gpu对坐标参数进行运算,确定线性文本在gpu的第一着色器中的旋转平移参数,以及通过gpu获取文本中心投影在显示线性文本的屏幕空间中的投影变换信息,其中,投影变换信息包括第一投影深度信息;在利用第一投影深度信息对第一坐标数据进行处理,生成线性文本在屏幕空间中的第二坐标数据之后,利用旋转平移参数对第二坐标数据进行处理,生成第三坐标数据;根据第三坐标数据,确定线性文本在第一着色器中的显示位置,并基于显示位置对线性进行渲染显示,解决了相关技术中三维空间线性文本完成布局后,可读性及显示效果差的问题,实现了线性文本保持朝向观察视角展示,提高线性文本的可读性及显示效果的有益效果。
[0068]
在其中一些实施例中,利用第一投影深度信息对第一坐标数据进行处理,生成线性文本在屏幕空间中的第二坐标数据通过如下步骤实现:
[0069]
步骤1、读取文本数据的第一文字,并从第一坐标数据中读取第一文字所对应的第一初始坐标数据,其中,文本数据包括多个第一文字。
[0070]
在本实施例中,第一文字是构成线性文本的所有文字;第一坐标数据至少包括多个第一文字的第一初始坐标数据的坐标数据集合。
[0071]
步骤2、根据第一投影深度信息和第一文字所对应的预设显示尺寸,对第一初始坐标数据进行坐标换算,生成第一文字在屏幕空间中对应的临时坐标数据,其中,第二坐标数据包括多个临时坐标数据,预设显示尺寸根据第一初始坐标数据和预设的第二投影深度信息确定。
[0072]
在本实施例中,第一初始坐标数据为对应于预设图形库坐标系下的三维坐标;同时,第一初始坐标数据在经过投影变换后,会生成第一初始坐标数据中的各个点位在投影场景内的深度,基于第一初始坐标数据和对应的深度,能确定第一文字对应的显示尺寸,也就是预设显示尺寸;在本实施例中,在获取到第一投影深度信息后,对第一初始坐标数据进行处理,也就是利用第一投影深度信息,在满足保持第一文字的显示尺寸不变的条件下,将第一坐标数据进行去除投影深度分量处理,然后再进行去除投影深度的坐标到屏幕空间内的坐标的换算,从而生成二维的临时坐标数据;在本实施例中,临时坐标数据作为进行基于旋转平移参数进行伸缩运算的坐标数据。
[0073]
通过上述步骤中的读取文本数据的第一文字,并从第一坐标数据中读取第一文字所对应的第一初始坐标数据;根据第一投影深度信息和第一文字所对应的预设显示尺寸,对第一初始坐标数据进行坐标换算,生成第一文字在屏幕空间中对应的临时坐标数据,实现了基于投影深度信息对坐标数据进行换算,三维空间投影到二维屏幕空间后坐标不会变形,使得在屏幕空间内显示的线性文本保持预设的显示尺寸所对应的大小,且维持面向观察视角(透视相机)。
[0074]
在其中一些实施例中,坐标参数还包括第一文本方向向量和中心坐标数据,利用gpu对坐标参数进行运算,确定线性文本在gpu的第一着色器中的旋转平移参数通过如下步骤实现:
[0075]
步骤1,通过gpu对第一文本方向向量进行矩阵运算,得到第二文本方向向量,其中,矩阵运算至少包括模型变换和视图变换,第二文本方向向量为第一文本方向向量在预设投影世界坐标系内的方向向量。
[0076]
在本实施例中,对第一文本方向向量进行的运算是通过gpu的第一着色器进行的,同时,第一文本方向向量为用于指示文本数据在原始物体空间的世界坐标系中的朝向的,例如:竖向朝向,该第一文本方向向量是生成与坐标参数中的固定的常量,生成的第二文本方向向量为对第一文本方向向量进行矩阵变化后得到的在预设投影世界坐标系内对文本数据进行朝向指示的方向向量,第二文本方向向量也为固定的常量。
[0077]
需要说明的是,第一文本方向向量为文本数据的原始朝向,第二文本方向向量是通过不同位置相机投影后,在相机投影世界的朝向,例如:设定第一文本方向向量的原始物体空间为地面,且第一文本方向向量指示的文本数据的朝向为朝上,而预设投影世界为相机投影世界,并将相机摆放于地面上的某个位置,则相对相机而言,文本数据的朝向为朝下,此时,该朝下的朝向为第二文本方向向量。
[0078]
步骤2,检测第二文本方向向量在预设投影世界坐标系内的区间值,并根据区间值确定文本数据的空间运算参数,其中,空间运算参数包括文本数据的平移参数和/或旋转角度参数。
[0079]
在本实施例中,任意的投影世界坐标系内的区间值包括:第一区间、第二区间、第三区间和第四区间,需要说明的是,其它的世界坐标系中,区间值也包括上述的区间。
[0080]
在其中一些可选实施例中,第二文本方向向量对应的区间值与空间运算参数的关系如下表格:
[0081]
lineworldvec位于第一区间order=1charrotation=0
°
lineworldvec位于第二区间order=

1charrotation=90
°
lineworldvec位于第三区间order=

1charrotation=0
°
lineworldvec位于第四区间order=1charrotation=90
°
[0082]
其中,lineworldvec表示第二文本方向向量;
[0083]
order表示平移参数,order的参数值并非限定平移参数值的大小,而是表示文本数据是否进行平移,其中,1表示不平移,

1表示平移;
[0084]
charrotation表示旋转角度参数,charrotation的参数值即表示文本数据是否旋转,又表示文本数据旋转角度,其中,charrotation=0
°
表示不旋转,charrotation=90
°
表示旋转90
°

[0085]
需要说明的是,区间值与空间运算参数的关系包括但不限于上述表格中对应的关系,例如,还可以通过检查第二文本方向向量在预设投影世界坐标系内的区间/象限内来确定是正平移还是负平移。
[0086]
步骤3,基于空间运算参数、第一坐标数据和中心坐标数据进行位置修正运算,得到文本数据的旋转平移参数,其中,位置修正运算至少包括以下其中一种:平移运算、旋转运算。
[0087]
在本实施例,第一坐标数据包括线性文本的文本数据所对应的初始坐标数据,也就是文本数据中所有文字的初始坐标数据的集合。
[0088]
在本实施例中,旋转平移参数可以是单一的平移参数,还可以是单一的旋转角度参数,也可以是平移参数与旋转角度参数。
[0089]
通过上述步骤中的通过gpu对第一文本方向向量进行矩阵运算,得到第二文本方向向量;检测第二文本方向向量在预设投影世界坐标系内的区间值,并根据区间值确定文本数据的空间运算参数;基于空间运算参数、第一坐标数据和中心坐标数据进行位置修正运算,得到文本数据的旋转平移参数,实现了通过gpu的并行运算能力,加速文本布局运算中旋转平移参数的获得,提高文本布局的效率,减轻终端的cpu运行压力。
[0090]
在其中一些实施例中,检测第二文本方向向量在预设投影世界坐标系内的区间值,并根据区间值确定文本数据的空间运算参数通过如下步骤实现:
[0091]
步骤1、确定第二文本方向向量在预设投影世界坐标系内的区间值。
[0092]
步骤2、在第一空间运算参数表中查询与区间值对应的空间运算参数,其中,第一空间参数表包括区间值与空间运算参数的映射关系。
[0093]
在本实施例中,通过查表获取空间运算参数,加速文本布局运算的效率,避免过多的消耗终端的计算资源。本实施例中的第一空间参数表包括但不限于上述的第二文本方向向量对应的区间值与空间运算参数的关系表格。
[0094]
在其中一些实施例中,基于空间运算参数、第一坐标数据和中心坐标数据进行位置修正运算通过如下步骤实现:
[0095]
步骤1、读取文本数据的第二文字,并分别从第一坐标数据和中心坐标数据中读取与第二文字对应的第二初始坐标数据和第二中心坐标数据,其中,文本数据包括多个第二文字。
[0096]
在本实施例中,第二文字是构成文本的所有文字。
[0097]
步骤2、计算第二初始坐标数据与第二中心坐标数据的差值,并利用空间运算参数中的平移参数对差值进行平移计算,得到第二文字平移后的位置坐标数据,确定旋转平移参数包括第二文字平移后的位置坐标数据。
[0098]
在本实施例中,按如下公式计算第二文字平移后的位置坐标数据:
[0099]
translateposition
i
=order*(position
i

charcenter
i
)
[0100]
其中,translateposition
i
表示第i个第二文字的平移后坐标,order表示平移参数,position
i
表示第i个第二文字的初始坐标数据,charcenter
i
表示第i个第二文字的中心坐标数据。
[0101]
需要说明的是,在其中一些实施例中,对文本布局的计算过程是对文本的部分第二文字进行处理,该部分第二文字对应的旋转平移参数仅为第二文字平移后的位置坐标数
据,也就是该第二文字仅仅进行平移。
[0102]
通过上述步骤中的读取文本数据的第二文字,并分别从第一坐标数据和中心坐标数据中读取与第二文字对应的第二初始坐标数据和第二中心坐标数据;计算第二初始坐标数据与第二中心坐标数据的差值,并利用空间运算参数中的平移参数对差值进行平移计算,得到第二文字平移后的位置坐标数据,确定旋转平移参数包括第二文字平移后的位置坐标数据,实现了对需要进行平移的第二文字的旋转平移参数的计算,而通过gpu对多个文字的平移位置参数进行运算,解决了大数据量占用cpu计算资源造成的终端卡顿的问题。
[0103]
在其中一些可选实施例中,对于文本数据的一部分第二文字而言,其对应的旋转平移仅为对该部分的第二文字进行旋转。
[0104]
对于该部分的第二文字而言,基于空间运算参数、第一坐标数据和中心坐标数据进行位置修正运算包括如下步骤:
[0105]
步骤1、读取文本数据的第二文字对应的第二初始坐标数据和第二中心坐标数据,其中,文本数据包括多个第二文字。
[0106]
步骤2、利用空间运算参数中的旋转角度参数对第二初始坐标数据进行旋转运算,得到第二文字旋转后的位置坐标数据,确定旋转平移参数包括第二文字旋转后的位置坐标数据。
[0107]
通过上述的读取文本数据的第二文字对应的第二初始坐标数据和第二中心坐标数据;利用空间运算参数中的旋转角度参数对第二初始坐标数据进行旋转运算,得到第二文字旋转后的位置坐标数据,确定旋转平移参数包括第二文字旋转后的位置坐标数据,实现了对需要进行旋转的第二文字的旋转平移参数的计算,而通过gpu对多个文字的旋转的角度值进行运算,解决了大数据量占用cpu计算资源造成的终端卡顿的问题。
[0108]
在其中一些实施例中,对第二文字进行旋转运算的旋转角度参数可以为旋转角度,还可以为基于旋转角度的旋转矩阵。
[0109]
上述基于旋转角度的旋转矩阵可以采用如下公式计算得到:
[0110][0111]
其中,charrotation为旋转角度,charrotationmatrix为旋转角度的旋转矩阵。
[0112]
在其中一些实施例中,第一坐标数据包括文本数据所对应的第三初始坐标数据,基于空间运算参数、第一坐标数据和中心坐标数据进行位置修正运算通过如下步骤实现:
[0113]
步骤1、读取第一文本方向向量,并对第一文本方向向量进行标准化处理,得到第一文本方向向量的单位向量。
[0114]
步骤2、基于单位向量生成与第一文本向量对应的旋转矩阵,并根据旋转矩阵对第三初始坐标数据进行矩阵运算,得到文本数据旋转后的位置坐标数据,确定旋转平移参数包括文本数据旋转后的位置坐标数据。
[0115]
在本实施例中,是对整个线性文本的旋转角度参数进行计算,也就是对于整个线性文本而言,该旋转平移参数包括文本数据旋转后的位置坐标数据。
[0116]
通过上述步骤中的读取第一文本方向向量,并对第一文本方向向量进行标准化处理,得到第一文本方向向量的单位向量;基于单位向量生成与第一文本向量对应的旋转矩阵,并根据旋转矩阵对第三初始坐标数据进行矩阵运算,得到文本数据旋转后的位置坐标
数据,确定旋转平移参数包括文本数据旋转后的位置坐标数据,实现了对文本的旋转角度参数的计算,而采用gpu进行运算,加速对旋转平移参数的计算,提高文本布局的效率。
[0117]
在其中一些可选实施例中,对第一文本向量采用如下公式进行标准化处理并计算得到第一文本方向向量的单位向量及旋转矩阵:
[0118]
lineunitvec=normalize(linevec)
[0119][0120]
其中,linevec表示第一文本向量,lineunitvec表示linevec对应的单位向量,normalize表示标准化函数,linerotationmatrix表示单位向量lineunitvec的旋转矩阵,lineunitvec.x表示lineunitvec在x方向上的大小,lineunitvec.y lineunitvec在y方向上的大小。
[0121]
在本实施例中,当计算得到linerotationmatrix后,文本可以基于该旋转矩阵进行旋转。
[0122]
需要说明的是,在具体实施例中,对于文本的旋转而言,单个文字是先进行个体的旋转,也就是基于上述计算出的charrotationmatrix进行旋转,而在完成单个文字的旋转后,文本整体还基于上述计算出的linerotationmatrix进行再次旋转。
[0123]
在其中一些可选实施例中,对于文本的单个文字而言,以下以上述中的第二文字进行说明,第二文字需要不仅进行平移,还需要进行旋转,因而该第二文字对应的旋转平移参数包括第二文字平移后的位置坐标数据和第二文字旋转后的位置坐标数据,同时,对于该第二文字而言,还需要考虑整个文本进行旋转时对第二文字的位置坐标数据的影响。
[0124]
在其中一些实施例中,利用旋转平移参数对第二坐标数据进行处理,生成第三坐标数据通过如下步骤实现:
[0125]
步骤1、读取旋转平移参数和第二坐标数据。
[0126]
步骤2、基于旋转平移参数对第二坐标数据进行伸缩运算,得到第三坐标数据,其中,伸缩运算包括平移运算,和/或,旋转运算。
[0127]
通过上述步骤中的读取旋转平移参数和第二坐标数据;基于旋转平移参数对第二坐标数据进行伸缩运算,得到第三坐标数据,实现了进行转换为二维坐标数据的第二坐标数据的平移和/旋转运算。
[0128]
在具体实施例中,线性文本的文本数据所对应的文字在平移和旋转后所对应的第三坐标数据可以通过如下公式进行计算:
[0129]
rotationposition
i
=(translateposition
i
*charrotationmatrix+charcenter
i
*order)*linerotetematrix
[0130]
其中,rotationposition
i
表示文本中的第i个文字平移旋转后的位置坐标数据,translateposition
i
表示文本中第i个文字平移后位置坐标数据,charrotationmatrix为旋转角度的旋转矩阵,charcenter
i
表示文本中第i个文字中心坐标数据,order表示文本中第i个文字的平移参数,linerotationmatrix表示第一文本向量的单位向量lineunitvec的旋转矩阵。
[0131]
在其中一些实施中,根据第三坐标数据,确定线性文本在第一着色器中的显示位置通过如下步骤实现:
[0132]
步骤1、读取第三坐标数据,并将第三坐标数据转换为线性文本对应的对象空间坐标系下的第四坐标数据。
[0133]
在本实施例中,第三坐标数据为二维坐标数据,也就是对应与屏幕空间内的坐标数据,在渲染之前,通过将第三坐标数据还原为对应的三维坐标数据(对应的顶点坐标数据),然后,使用着色器进行渲染运算,从而完成线性文本的布局。
[0134]
步骤2、通过第一着色器对第四坐标数据进行渲染运算,得到文本数据在gpu的第一着色器中的显示位置坐标数据,其中,渲染运算包括模型变换、视图变换和投影变换。
[0135]
通过上述步骤中的读取第三坐标数据,并将第三坐标数据转换为线性文本对应的对象空间坐标系下的第四坐标数据;通过第一着色器对第四坐标数据进行渲染运算,得到文本数据在gpu的第一着色器中的显示位置坐标数据,实现了屏幕空间到世界空间或观察空间内的坐标转换,同时,通过坐标还原,保证渲染系统将顶点渲染到屏幕空间的坐标不会变形。
[0136]
在本实施例中,对显示位置的计算可以按如下公式进行计算:
[0137]
gl_position=projectionmatrix*viewmatrix*modelmatrix*rotationposition
[0138]
其中,gl_position表示文本的显示位置,且该gl_position为第一着色器的默认变量,projectionmatrix表示投影矩阵,viewmatrix表示视图矩阵,modelmatrix表示模型矩阵,rotationposition表示文本所对应的第四坐标数据。
[0139]
在其中一些实施例中,通过gpu获取文本中心投影在显示线性文本的屏幕空间中的投影变换信息通过如下步骤实现:
[0140]
步骤1、读取文本中心对应的模型坐标数据,并通过gpu对模型坐标数据依次进行模型变换运算、世界变换运算及投影变换运算,生成文本中心在预设图形库的投影空间中的第五坐标数据。
[0141]
在本实施例中,对第五坐标数据的计算可以按如下公式进行计算:
[0142]
gl_position=projectionmatrix*viewmatrix*modelmatrix*vec4(position,1.0)
[0143]
其中,gl_position表示第五坐标数据,projectionmatrix表示投影矩阵,viewmatrix表示视图矩阵,modelmatrix表示模型矩阵,vec4(position,1.0)表示文本中心在对象空间的模型坐标数据。
[0144]
步骤2、将第五坐标数据映射转换至屏幕空间所对应的坐标系,生成文本中心在屏幕空间中的第六坐标数据,其中,第六坐标数据为文本中心在屏幕空间中的二维坐标所对应的齐次坐标。
[0145]
在本实施例中,对第六坐标数据的计算可以按如下公式进行计算:
[0146]
projtoscreentextcenter=
[0147]
((gl_position.x+1.)/2.*u_resolution.x,(gl_position.y+1.)/2.*u_resolution.y)
[0148]
projtoscreentextcenter表示文本中心在屏幕空间中的第六坐标数据,gl_position.x表示文本中心对应的第五坐标数据中x方向上的分量,gl_position.y表示文本中心对应的第五坐标数据中y方向上的分量,u_resolution.x代表屏幕横向分辨率,u_resolution.y代表屏幕纵向分辨率;同时,在计算出projtoscreentextcenter之后,会将
projtoscreentextcenter转换为齐次坐标,也就是加入齐次分量w,并且具有以下换算关系:
[0149]
x
i
=x
i
/w
[0150]
y
i
=y
i
/w
[0151]
其中,(x
i
,y
i
)表示projtoscreentextcenter所对应的坐标,且,x
i
为projtoscreentextcenter在x方向上的分量,y
i
为projtoscreentextcenter在y方向上的分量,(x
i
,y
i
,w)为(x
i
,y
i
)的2d齐次坐标。
[0152]
步骤3、从第六坐标数据中提取第一投影深度参数,其中,第一投影深度参数用于表征第六坐标数据所对应的齐次坐标的齐次分量,线性文本对应的第一投影深度信息包括第一投影深度参数。
[0153]
通过上述步骤中的读取文本中心对应的模型坐标数据,并通过gpu对模型坐标数据依次进行模型变换运算、世界变换运算及投影变换运算,生成文本中心在预设图形库的投影空间中的第五坐标数据;将第五坐标数据映射转换至屏幕空间所对应的坐标系,生成文本中心在屏幕空间中的第六坐标数据;从第六坐标数据中提取第一投影深度参数,实现了获取与第一投影深度信息所对应的齐次分量的运算,使的利用齐次分量进行的坐标换算的坐标,在从三维空间投影到二维屏幕空间后坐标不会变形。
[0154]
在其中一些实施例中,根据文本数据生成线性文本在预设图形库中的坐标参数通过如下步骤实现:
[0155]
步骤1、提取文本数据的第三文字,并生成第三文本方向向量,其中,第三文本方向向量至少用于描述第三文字在预设图形库的世界坐标系内的朝向。
[0156]
在本实施例中,第三文字是文本数据的单个文字,其与上述的第一文字、第二文字均为文本数据的单个文字,第一、第二、第三仅仅用于在不同实施例中用于不同的代号予以区别,第一文字、第二文字和第三文字并不表示文本数据包括两种不同类型的文字。
[0157]
在本实施例中,第三文本方向向量与上述中的第一文本方向向量均为文本数据在原始物体空间中的朝向的向量。
[0158]
步骤2、在预设图形库的世界坐标系中,生成与每一个第三文字对应的矩形面,并分别确定矩形面的顶点和中心点在预设图形库的世界坐标系内的对应的坐标数据。
[0159]
步骤3、确定文本数据在预设图像库中的坐标参数至少包括第三文本方向向量、矩形面的顶点和中心点在预设图形库的世界坐标系内的对应的坐标数据。
[0160]
在本实施例中,预设图形库包括但不限于以下其中一种:opengl图形库、webgl图形库。
[0161]
下面通过优选实施例对本技术实施例进行描述和说明。
[0162]
图3是根据本技术优选实施例的三维空间内的线性文本布局方法的流程图。如图3所示,该三维空间内的线性文本布局方法包括如下步骤:
[0163]
步骤s301,获取待显示的文本数据。
[0164]
步骤s302,生成初始坐标数据和每个文本数据的中心坐标数据。
[0165]
步骤s303,计算文本数据的第二文本方向向量。
[0166]
步骤s304,判断第二文本方向向量位于预设投影世界坐标系内的第几区间。
[0167]
步骤s305,计算旋转平移参数。
[0168]
步骤s306,预计算三维空间中文本中心在投影到二维屏幕空间中的坐标,及其对应的齐次分量。
[0169]
步骤s307,基于齐次分量,将每个文字的顶点进行坐标换算,并对换算后的坐标基于旋转平移参数进行伸缩运算。
[0170]
步骤s308,将伸缩运算后的顶点坐标还原为顶点世界坐标,并根据顶点世界坐标进行文本布局显示。
[0171]
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0172]
本实施例还提供了一种三维空间内的线性文本布局装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0173]
图4是根据本技术实施例的三维空间内的线性文本布局装置的结构框图,如图4所示,该装置包括:
[0174]
获取模块41,用于获取待显示的线性文本的文本数据,并根据文本数据生成线性文本在预设图形库中的坐标参数,其中,坐标参数包括第一坐标数据和预设的文本中心。
[0175]
预处理模块42,与获取模块41耦合连接,用于利用gpu对坐标参数进行运算,确定线性文本在gpu的第一着色器中的旋转平移参数,以及通过gpu获取文本中心投影在显示线性文本的屏幕空间中的投影变换信息,其中,投影变换信息包括第一投影深度信息。
[0176]
运算模块43,与预处理模块42耦合连接,用于在利用第一投影深度信息对第一坐标数据进行处理,生成线性文本在屏幕空间中的第二坐标数据之后,利用旋转平移参数对第二坐标数据进行处理,生成第三坐标数据。
[0177]
处理模块44,与运算模块43耦合连接,用于根据第三坐标数据,确定线性文本在第一着色器中的显示位置,并基于显示位置对线性进行渲染显示。
[0178]
在其中一些实施例中,预处理模块42用于读取文本数据的第一文字,并从第一坐标数据中读取第一文字所对应的第一初始坐标数据,其中,文本数据包括多个第一文字;根据第一投影深度信息和第一文字所对应的预设显示尺寸,对第一初始坐标数据进行坐标换算,生成第一文字在屏幕空间中对应的临时坐标数据,其中,第二坐标数据包括多个临时坐标数据,预设显示尺寸根据第一初始坐标数据和预设的第二投影深度信息确定。
[0179]
在其中一些实施例中,预处理模块42用于读取旋转平移参数和第二坐标数据;基于旋转平移参数对第二坐标数据进行伸缩运算,得到第三坐标数据,其中,伸缩运算包括平移运算,和/或,旋转运算。
[0180]
在其中一些实施例中,处理模块44用于读取第三坐标数据,并将第三坐标数据转换为线性文本对应的对象空间坐标系下的第四坐标数据;通过第一着色器对第四坐标数据进行渲染运算,得到文本数据在gpu的第一着色器中的显示位置坐标数据,其中,渲染运算包括模型变换、视图变换和投影变换。
[0181]
在其中一些实施例中,坐标参数还包括第一文本方向向量和中心坐标数据,预处理模块42用于通过gpu对第一文本方向向量进行矩阵运算,得到第二文本方向向量,其中,
矩阵运算至少包括模型变换和视图变换,第二文本方向向量为第一文本方向向量在预设投影世界坐标系内的方向向量;检测第二文本方向向量在预设投影世界坐标系内的区间值,并根据区间值确定文本数据的空间运算参数,其中,空间运算参数包括文本数据的平移参数和/或旋转角度参数;基于空间运算参数、第一坐标数据和中心坐标数据进行位置修正运算,得到线性文本所对应的旋转平移参数,其中,位置修正运算至少包括以下其中一种:平移运算、旋转运算。
[0182]
在其中一些实施例中,预处理模块42用于确定第二文本方向向量在预设投影世界坐标系内的区间值;在第一空间运算参数表中查询与区间值对应的空间运算参数,其中,第一空间参数表包括区间值与空间运算参数的映射关系。
[0183]
在其中一些实施例中,预处理模块42用于读取文本数据的第二文字,并分别从第一坐标数据和中心坐标数据中读取与第二文字对应的第二初始坐标数据和第二中心坐标数据,其中,文本数据包括多个第二文字;计算第二初始坐标数据与第二中心坐标数据的差值,并利用空间运算参数中的平移参数对差值进行平移计算,得到第二文字平移后的位置坐标数据,确定旋转平移参数包括第二文字平移后的位置坐标数据;和/或,利用空间运算参数中的旋转角度参数对第二初始坐标数据进行旋转运算,得到第二文字旋转后的位置坐标数据,确定旋转平移参数包括第二文字旋转后的位置坐标数据。
[0184]
在其中一些实施例中,第一坐标数据包括文本数据所对应的第三初始坐标数据,预处理模块42用于读取第一文本方向向量,并对第一文本方向向量进行标准化处理,得到第一文本方向向量的单位向量;基于单位向量生成与第一文本向量对应的旋转矩阵,并根据旋转矩阵对第三初始坐标数据进行矩阵运算,得到文本数据旋转后的位置坐标数据,确定旋转平移参数包括文本数据旋转后的位置坐标数据。
[0185]
在其中一些实施例中,预处理模块42用于读取文本中心对应的模型坐标数据,并通过gpu对模型坐标数据依次进行模型变换运算、世界变换运算及投影变换运算,生成文本中心在预设图形库的投影空间中的第五坐标数据;将第五坐标数据映射转换至屏幕空间所对应的坐标系,生成文本中心在屏幕空间中的第六坐标数据,第六坐标数据为文本中心在屏幕空间中的二维坐标所对应的齐次坐标;从第六坐标数据中提取第一投影深度参数,其中,第一投影深度参数用于表征第六坐标数据所对应的齐次坐标的齐次分量,线性文本对应的第一投影深度信息包括第一投影深度参数。
[0186]
在其中一些实施例中,获取模块41用于提取文本数据的第三文字,并生成第三文本方向向量,其中,第三文本方向向量至少用于描述第三文字在预设图形库的世界坐标系内的朝向;在预设图形库的世界坐标系中,生成与每一个第三文字对应的矩形面,并分别确定矩形面的顶点和中心点在预设图形库的世界坐标系内的对应的坐标数据;确定文本数据在预设图像库中的坐标参数至少包括第三文本方向向量、矩形面的顶点和中心点在预设图形库的世界坐标系内的对应的坐标数据。
[0187]
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
[0188]
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算
机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0189]
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0190]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0191]
s1,获取待显示的线性文本的文本数据,并根据文本数据生成线性文本在预设图形库中的坐标参数,其中,坐标参数包括第一坐标数据和预设的文本中心。
[0192]
s2,利用gpu对坐标参数进行运算,确定线性文本在gpu的第一着色器中的旋转平移参数,以及通过gpu获取文本中心投影在显示线性文本的屏幕空间中的投影变换信息,其中,投影变换信息包括第一投影深度信息。
[0193]
s3,在利用第一投影深度信息对第一坐标数据进行处理,生成线性文本在屏幕空间中的第二坐标数据之后,利用旋转平移参数对第二坐标数据进行处理,生成第三坐标数据。
[0194]
s4,根据第三坐标数据,确定线性文本在第一着色器中的显示位置,并基于显示位置对线性进行渲染显示。
[0195]
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0196]
另外,结合上述实施例中的三维空间内的线性文本布局方法,本技术实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种三维空间内的线性文本布局方法。
[0197]
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0198]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1