三维场景中实现中文标注的方法及装置制造方法及图纸

技术编号:8191284 阅读:195 留言:0更新日期:2013-01-10 02:12
本发明专利技术提供一种三维场景中实现中文标注的方法及装置,该方法包括以下步骤:针对每一种字体创建相应的字体文件,该字体文件中预先设置有各属性的参数;根据用户选择的字体格式找到目标字体文件,并对用户输入的中文字符进行Unicode码转换以得到对应的Unicode码集合,然后根据所述Unicode码集合修改所述目标字体文件中的参数;对修改参数后的目标字体文件进行加载,并生成相应的字体纹理;获取所述字体纹理的UV坐标;根据所述字体纹理的UV坐标进行矩形创建和纹理映射;对纹理映射后的字体纹理进行颜色和大小设置,然后进行3d渲染。本发明专利技术的方法及装置具有效率高、可实时标注以及支持多字体的优点。

【技术实现步骤摘要】

本 专利技术涉及3D技木,尤其涉及一种三维场景中实现中文标注的方法以及ー种三维场景中实现中文标注的装置。
技术介绍
随着计算机技术的不断发展,三维场景应用越来越多的从概念变为现实,如3D游戏、虚拟导航、虚拟仿真系统等等。三维场景一般都是借助于第三方提供的三维设计引擎实现的,在众多三维图形引擎中,OGRE (Object-Oriented Graphics Rendering Engine,面向对象图形渲染引擎)作为开源的三维图形渲染引擎,充分利用了面向对象技术,使3D软件的实现更加方便,从而得到了广泛应用。目前,OGRE已成功的应用于多个三维模拟项目中,包括在线游戏和ー些商业三维仿真项目,如虚拟数字城市、立体道路系统等。然而,OGRE三维引擎的开发商不使用中文作为他们的第一语言,因此OGRE三维引擎并不直接支持中文,只是留出了一定的程序接ロ。在国内,所有基于OGRE所构建的虚拟场景都会遇到如何在3D场景中高效且逼真的实现中文标注的问题,因此,如何在OGRE的3D场景下实现中文标注并且能够保证运行效率,变得至关重要。传统的三维场景中实现中文标注的方法主要有如下几种方案方案一、利用2D的渲染方法,把文字渲染到3D层之上的2D层上,通常利用CE⑶I(Crazy Eddie’s GUI)库,一种通用的UI (User Interface,用户界面)库,与OGRE所提供的2D接ロ层相结合,因此可以在3D场景的层上面再多渲染ー个2D的层以用来显示文字,这种方案简单易行,且能方便的利用2D已有技术来处理汉字并显示,但是这样会使文字固定在2D层上,不能随着镜头的移动而有远小近大的变化,因而存在一定的应用局限性;方案ニ、通过贴图来显示中文(0GRE本身文字输出也是用的这种方法),即准备一张很大的图片,图片上画满汉字,放在资源文件中加载,加载时需要修改Ogre: :Font、Ogre: :FontManager> Ogre: : TextAreaGuiElement三个类,以定位到图片中的汉字位置,此方法可以解决方案一中的应用局限性,使文字显示更逼真。然而该方案需要消耗大量显存,且文字大小相对于位图大小比例相差太大,导致字形单一,不适合放大缩小,放大缩小时会看到阴影以及马赛克;方案三、利用TTF (TrueTypeFont)矢量字库,把所有汉字的Unicode编码加载到OGRE的配置文件中,由于此方法利用矢量字库(即用点和线来描述文字),因此在文字尺寸需要放大缩小时,只需要把所有这个文字的点和线放大相应的倍数即可,不会出现马赛克等现象,正好解决了方案ニ中的字形缺陷。然而,采用该方案也存在一定缺陷,因为该方案在输入文字信息之前,需要创建后台进程进行字体库的初始化,而常用汉字有两万多个,再加上常用中文字体有数十种,故该方案在启动时的初始化过程效率十分低下,这显然不能满足实际应用
技术实现思路
基于此,有必要针对上述方案三中效率低下的问题,提供一种三维场景中实现中文标注的方法及装置。为实现上述目的,本专利技术采用如下的技术方案一种三维场景中即时显示中文字符的方法,包括以下步骤针对每ー种字体创建相应的字体文件,该字体文件中预先设置有各属性的參数;根据用户选择的字体格式找到目标字体文件,并对用户输入的中文字符进行Unicode码转换以得到对应的Unicode码集合,然后根据所述Unicode码集合修改所述目标字体文件中对应属性的參数;对修改參数后的目标字体文件进行加载,并生成相应的字体纹理;获取所述字体纹理的UV坐标;根据所述字体纹理的UV坐标进行矩形创建和纹理映射;对纹理映射后的字体纹理进行顔色和大小设置,然后进行3d渲染。 一种三维场景中实现中文标注的装置,包括初始化模块,用于针对每ー种字体创建相应的字体文件,该字体文件中预先设置有各属性的參数;处理模块,用于根据用户选择的字体格式找到对应的目标字体文件,并对用户输入的中文字符进行Unicode码转换以得到对应的Unicode码集合,然后根据所述Unicode码集合修改所述目标字体文件中对应属性的參数;字体纹理生成模块,用于加载修改參数后的目标字体文件,并据此生成相应的字体纹理;坐标获取模块,用于获取所述字体纹理的UV坐标;渲染模块,用于根据所述字体纹理的UV坐标进行矩形创建和纹理映射,然后进行3d渲染。与传统的三维场景中实现中文标注的方法相比,本专利技术的三维场景中实现中文标注的方法及装置具有如下优点一、效率高在输入文字信息之前,无须创建后台进程进行字体库的初始化,只需要创建所需字体的字体文件即可。这在所需要支持的字体很多的情况下将极大的減少初始化过程的工作量,从而提高了三维场景中实现中文标注的效率。ニ、可实时标注本专利技术可根据用户选择的字体格式找到对应的目标字体文件以及根据用户输入的文字内容得到对应的Unicode码集合,进而实时生成对应的字体纹理,该过程为毫秒级。三、支持多字体每ー种字体对应ー个字体文件,可以直接定位,无须搜索。附图说明图I为本专利技术一种三维场景中实现中文标注的方法流程示意图;图2为本专利技术一种三维场景中实现中文标注的装置结构示意图。具体实施例方式在OGRE三维引擎中,字体格式以材质对象存在,集合了字符纹理及其坐标信息。这些字体信息保存在.fontdef格式的文件中,该文件在系统启动时即被解析,其基本格式如下 <font name> {Typetmetvpe Sourcesimkai Uf Size16 Resolution % Code_points .. }其中,type属性TrueType字体,告诉OGRE生成纹理字体;source属性代表中文字体的ttf文件载入,如simkai. ttf文件载入;size属性字体点的大小,这里的点是传统计量字大小的单位,Ipた0. 35mm ;resolution属性显示器分辨率/姆英寸点数,这是用来结合点的大小,以确定该字体在目标显不器上对应的最终大小;code points属性该属性允许用户指定哪些Unicode代码点需要获取字形纹理,即文字标注中的字符集合。本专利技术在对OGRE三维引擎中字体显示模块研究的基础上,通过分析OGRE的文字使用原理,提出如下的三维场景中实现中文标注的方法,參见图I所示,该方法包括以下步骤步骤S101,针对每ー种字体创建相应的字体文件以供ORGE加载,然后进入步骤S102。需要说明的是所述创建的字体文件中预先设置有各属性的參数。作为ー个较好的实施例,所述字体文件中各属性的參数可以设置为如下=Type属性设置为TrueType字体;source属性设置为代表中文字体的ttf文件,,如simkai. ttf偕体,simsun. ttf宋体,simhei. ttf黑体等;size属性和resolution属性设置为默认情况下,即分别设置为16、96 ;另外code_points属性设置为33-166,即对应全部拉丁字符。另外,作为ー个较好的实施例,上述创建的字体文件可以为fontdef格式的文件。步骤S102,对要标注的中文字符进行处理。具体过程包括首先根据用户选择的字体格式找到对应的目标字体文件,并对用户输入的中文字符进行Unicode码转换以得到对应的Unicode本文档来自技高网
...

【技术保护点】
一种三维场景中实现中文标注的方法,其特征在于,包括以下步骤:针对每一种字体创建相应的字体文件,该字体文件中预先设置有各属性的参数;根据用户选择的字体格式找到对应的目标字体文件,并对用户输入的中文字符进行Unicode码转换以得到对应的Unicode码集合,然后根据所述Unicode码集合修改所述目标字体文件中对应属性的参数;加载修改参数后的目标字体文件,并据此生成相应的字体纹理;获取所述字体纹理的UV坐标;根据所述字体纹理的UV坐标进行矩形创建和纹理映射,然后进行3d渲染。

【技术特征摘要】

【专利技术属性】
技术研发人员:李金凤康晓林
申请(专利权)人:广东威创视讯科技股份有限公司
类型:发明
国别省市:

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

1