《三维场景中实现中文标注的方法及装置.pdf》由会员分享,可在线阅读,更多相关《三维场景中实现中文标注的方法及装置.pdf(8页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102867322 A (43)申请公布日 2013.01.09 CN 102867322 A *CN102867322A* (21)申请号 201210308949.9 (22)申请日 2012.08.27 G06T 11/60(2006.01) G06T 19/20(2011.01) (71)申请人 广东威创视讯科技股份有限公司 地址 510663 广东省广州市广州高新技术产 业开发区彩频路 6 号 (72)发明人 李金凤 康晓林 (74)专利代理机构 广州华进联合专利商标代理 有限公司 44224 代理人 王茹 曾旻辉 (54) 发明名称 三维场景中实现中文标注。
2、的方法及装置 (57) 摘要 本发明提供一种三维场景中实现中文标注的 方法及装置, 该方法包括以下步骤 : 针对每一种 字体创建相应的字体文件, 该字体文件中预先设 置有各属性的参数 ; 根据用户选择的字体格式找 到目标字体文件, 并对用户输入的中文字符进行 Unicode码转换以得到对应的Unicode码集合, 然 后根据所述 Unicode 码集合修改所述目标字体文 件中的参数 ; 对修改参数后的目标字体文件进行 加载, 并生成相应的字体纹理 ; 获取所述字体纹 理的 UV 坐标 ; 根据所述字体纹理的 UV 坐标进行 矩形创建和纹理映射 ; 对纹理映射后的字体纹理 进行颜色和大小设置, 。
3、然后进行 3d 渲染。本发明 的方法及装置具有效率高、 可实时标注以及支持 多字体的优点。 (51)Int.Cl. 权利要求书 1 页 说明书 5 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 5 页 附图 1 页 1/1 页 2 1. 一种三维场景中实现中文标注的方法, 其特征在于, 包括以下步骤 : 针对每一种字体创建相应的字体文件, 该字体文件中预先设置有各属性的参数 ; 根据用户选择的字体格式找到对应的目标字体文件, 并对用户输入的中文字符进行 Unicode码转换以得到对应的Unicode码集合, 然后根据所述Unicode。
4、码集合修改所述目标 字体文件中对应属性的参数 ; 加载修改参数后的目标字体文件, 并据此生成相应的字体纹理 ; 获取所述字体纹理的 UV 坐标 ; 根据所述字体纹理的 UV 坐标进行矩形创建和纹理映射, 然后进行 3d 渲染。 2. 根据权利要求 1 所述的三维场景中实现中文标注的方法, 其特征在于, 在所述进行 纹理映射之后、 进行 3d 渲染之前, 还包括步骤 : 对纹理映射后的字体纹理进行颜色和大小 设置。 3. 根据权利要求 1 所述的三维场景中实现中文标注的方法, 其特征在于, 所述创建的 字体文件为 fontdef 格式的文件。 4.根据权利要求1或2或3所述的三维场景中实现中文标。
5、注的方法, 其特征在于, 所述 字体文件中各属性的参数设置为如下 : Type 属性设置为 TrueType 字体 ; source 属性设置 为代表中文字体的 ttf 文件 ; size 属性设置为 16 ; resolution 属性设置为 96 ; 以及 code_ points 属性设置为 33-166。 5. 一种三维场景中实现中文标注的装置, 其特征在于, 包括 : 初始化模块, 用于针对每一种字体创建相应的字体文件, 该字体文件中预先设置有各 属性的参数 ; 处理模块, 用于根据用户选择的字体格式找到对应的目标字体文件, 并对用户输入的 中文字符进行 Unicode 码转换以得到。
6、对应的 Unicode 码集合, 然后根据所述 Unicode 码集 合修改所述目标字体文件中对应属性的参数 ; 字体纹理生成模块, 用于加载修改参数后的目标字体文件, 并据此生成相应的字体纹 理 ; 坐标获取模块, 用于获取所述字体纹理的 UV 坐标 ; 渲染模块, 用于根据所述字体纹理的UV坐标进行矩形创建和纹理映射, 然后进行3d渲 染。 6. 根据权利要求 5 所述的三维场景中实现中文标注的装置, 其特征在于, 所述初始化 模块中创建的字体文件为 fontdef 格式的文件。 7. 根据权利要求 5 所述的三维场景中实现中文标注的装置, 其特征在于, 所述渲染模 块包括设置模块, 用于。
7、在进行纹理映射之后、 进行 3d 渲染之前, 对纹理映射后的字体纹理 进行颜色和大小设置。 权 利 要 求 书 CN 102867322 A 2 1/5 页 3 三维场景中实现中文标注的方法及装置 技术领域 0001 本发明涉及 3D 技术, 尤其涉及一种三维场景中实现中文标注的方法以及一种三 维场景中实现中文标注的装置。 背景技术 0002 随着计算机技术的不断发展, 三维场景应用越来越多的从概念变为现实, 如 3D 游 戏、 虚拟导航、 虚拟仿真系统等等。 三维场景一般都是借助于第三方提供的三维设计引擎实 现的, 在众多三维图形引擎中, OGRE (Object-Oriented Grap。
8、hics Rendering Engine, 面向 对象图形渲染引擎) 作为开源的三维图形渲染引擎, 充分利用了面向对象技术, 使3D软件的 实现更加方便, 从而得到了广泛应用。目前, OGRE 已成功的应用于多个三维模拟项目中, 包 括在线游戏和一些商业三维仿真项目, 如虚拟数字城市、 立体道路系统等。 0003 然而, OGRE 三维引擎的开发商不使用中文作为他们的第一语言, 因此 OGRE 三维引 擎并不直接支持中文, 只是留出了一定的程序接口。在国内, 所有基于 OGRE 所构建的虚拟 场景都会遇到如何在3D场景中高效且逼真的实现中文标注的问题, 因此, 如何在OGRE的3D 场景下实。
9、现中文标注并且能够保证运行效率, 变得至关重要。 0004 传统的三维场景中实现中文标注的方法主要有如下几种方案 : 0005 方案一、 利用 2D 的渲染方法, 把文字渲染到 3D 层之上的 2D 层上, 通常利用 CEGUI (Crazy Eddie s GUI) 库, 一种通用的 UI(User Interface, 用户界面) 库, 与 OGRE 所提供 的 2D 接口层相结合, 因此可以在 3D 场景的层上面再多渲染一个 2D 的层以用来显示文字, 这种方案简单易行, 且能方便的利用 2D 已有技术来处理汉字并显示, 但是这样会使文字固 定在 2D 层上, 不能随着镜头的移动而有远小。
10、近大的变化, 因而存在一定的应用局限性 ; 0006 方案二、 通过贴图来显示中文 (OGRE 本身文字输出也是用的这种方法) , 即准备 一张很大的图片, 图片上画满汉字, 放在资源文件中加载, 加载时需要修改 Ogre:Font、 Ogre:FontManager、 Ogre:TextAreaGuiElement 三个类, 以定位到图片中的汉字位置, 此 方法可以解决方案一中的应用局限性, 使文字显示更逼真。 然而该方案需要消耗大量显存, 且文字大小相对于位图大小比例相差太大, 导致字形单一, 不适合放大缩小, 放大缩小时会 看到阴影以及马赛克 ; 0007 方案三、 利用 TTF(Tru。
11、eTypeFont) 矢量字库, 把所有汉字的 unicode 编码加载到 OGRE 的配置文件中, 由于此方法利用矢量字库 (即用点和线来描述文字) , 因此在文字尺寸 需要放大缩小时, 只需要把所有这个文字的点和线放大相应的倍数即可, 不会出现马赛克 等现象, 正好解决了方案二中的字形缺陷。然而, 采用该方案也存在一定缺陷, 因为该方案 在输入文字信息之前, 需要创建后台进程进行字体库的初始化, 而常用汉字有两万多个, 再 加上常用中文字体有数十种, 故该方案在启动时的初始化过程效率十分低下, 这显然不能 满足实际应用。 发明内容 说 明 书 CN 102867322 A 3 2/5 页 。
12、4 0008 基于此, 有必要针对上述方案三中效率低下的问题, 提供一种三维场景中实现中 文标注的方法及装置。 0009 为实现上述目的, 本发明采用如下的技术方案 : 0010 一种三维场景中即时显示中文字符的方法, 包括以下步骤 : 0011 针对每一种字体创建相应的字体文件, 该字体文件中预先设置有各属性的参数 ; 0012 根据用户选择的字体格式找到目标字体文件, 并对用户输入的中文字符进行 Unicode码转换以得到对应的Unicode码集合, 然后根据所述Unicode码集合修改所述目标 字体文件中对应属性的参数 ; 0013 对修改参数后的目标字体文件进行加载, 并生成相应的字体。
13、纹理 ; 0014 获取所述字体纹理的 UV 坐标 ; 0015 根据所述字体纹理的 UV 坐标进行矩形创建和纹理映射 ; 0016 对纹理映射后的字体纹理进行颜色和大小设置, 然后进行 3d 渲染。 0017 一种三维场景中实现中文标注的装置, 包括 : 0018 初始化模块, 用于针对每一种字体创建相应的字体文件, 该字体文件中预先设置 有各属性的参数 ; 0019 处理模块, 用于根据用户选择的字体格式找到对应的目标字体文件, 并对用户输 入的中文字符进行 Unicode 码转换以得到对应的 Unicode 码集合, 然后根据所述 Unicode 码集合修改所述目标字体文件中对应属性的参。
14、数 ; 0020 字体纹理生成模块, 用于加载修改参数后的目标字体文件, 并据此生成相应的字 体纹理 ; 0021 坐标获取模块, 用于获取所述字体纹理的 UV 坐标 ; 0022 渲染模块, 用于根据所述字体纹理的 UV 坐标进行矩形创建和纹理映射, 然后进行 3d 渲染。 0023 与传统的三维场景中实现中文标注的方法相比, 本发明的三维场景中实现中文标 注的方法及装置具有如下优点 : 0024 一、 效率高 : 在输入文字信息之前, 无须创建后台进程进行字体库的初始化, 只需 要创建所需字体的字体文件即可。 这在所需要支持的字体很多的情况下将极大的减少初始 化过程的工作量, 从而提高了三。
15、维场景中实现中文标注的效率。 0025 二、 可实时标注 : 本发明可根据用户选择的字体格式找到对应的目标字体文件以 及根据用户输入的文字内容得到对应的 Unicode 码集合, 进而实时生成对应的字体纹理, 该过程为毫秒级。 0026 三、 支持多字体 : 每一种字体对应一个字体文件, 可以直接定位, 无须搜索。 附图说明 0027 图 1 为本发明一种三维场景中实现中文标注的方法流程示意图 ; 0028 图 2 为本发明一种三维场景中实现中文标注的装置结构示意图。 具体实施方式 0029 在 OGRE 三维引擎中, 字体格式以材质对象存在, 集合了字符纹理及其坐标信息。 说 明 书 CN 。
16、102867322 A 4 3/5 页 5 这些字体信息保存在 .fontdef 格式的文件中, 该文件在系统启动时即被解析, 其基本格式 如下 : 0030 0031 其中, type 属性 : TrueType 字体, 告诉 OGRE 生成纹理字体 ; 0032 source 属性 : 代表中文字体的 ttf 文件载入, 如 simkai.ttf 文件载入 ; 0033 size 属性 : 字体点的大小, 这里的点是传统计量字大小的单位, 1p 0.35mm ; 0034 resolution 属性 : 显示器分辨率 / 每英寸点数, 这是用来结合点的大小, 以确定该 字体在目标显示器上对。
17、应的最终大小 ; 0035 code points 属性 : 该属性允许用户指定哪些 Unicode 代码点需要获取字形纹理, 即文字标注中的字符集合。 0036 本发明在对 OGRE 三维引擎中字体显示模块研究的基础上, 通过分析 OGRE 的文字 使用原理, 提出如下的三维场景中实现中文标注的方法, 参见图 1 所示, 该方法包括以下步 骤 : 0037 步骤 S101, 针对每一种字体创建相应的字体文件以供 ORGE 加载, 然后进入步骤 S102。需要说明的是 : 所述创建的字体文件中预先设置有各属性的参数。 0038 作为一个较好的实施例, 所述字体文件中各属性的参数可以设置为如下 。
18、: Type 属 性设置为 TrueType 字体 ; source 属性设置为代表中文字体的 ttf 文件, , 如 simkai.ttf 楷 体, simsun.ttf 宋体, simhei.ttf 黑体等 ; size 属性和 resolution 属性设置为默认情况 下, 即分别设置为 16、 96 ; 另外 code_points 属性设置为 33-166, 即对应全部拉丁字符。 0039 另外, 作为一个较好的实施例, 上述创建的字体文件可以为 fontdef 格式的文件。 0040 步骤 S102, 对要标注的中文字符进行处理。具体过程包括 : 首先根据用户选择的 字体格式找到对。
19、应的目标字体文件, 并对用户输入的中文字符进行 Unicode 码转换以得到 对应的 Unicode 码集合, 然后根据所述 Unicode 码集合修改所述目标字体文件中对应属性 (即 code_points 属性) 的参数, 修改完之后进入步骤 S103。 0041 事实上在步骤 S102 之前还可以包括如下步骤 : 3D 软件在启动时加载步骤 S101 中 创建的字体文件, 并生成相应的字体名称与字体文件的表格。 0042 步骤 S103, 加载修改参数后的目标字体文件, 并据此生成相应的字体纹理, 然后进 入步骤 S104。3D 软件调用 ORGE 引擎提供的相关接口函数即可实现对步骤 。
20、S102 中修改了 说 明 书 CN 102867322 A 5 4/5 页 6 code_points 参数的字体文件进行加载, 并生成相应的字体纹理。 0043 步骤 S104, 获取所述字体纹理的 UV 坐标, 然后进入步骤 S105。作为一个较好的实 施例, 上述获取 UV 坐标的过程具体可以包括如下步骤 : 3D 软件调用 OGRE 引擎提供的相关 接口对目标字体文件中的 code_points 属性对应的字符串进行遍历, 对每一个字符生成其 相应的 UV 坐标, 然后计算出整个字符串对应的 UV 坐标。 0044 步骤S105, 根据所述字体纹理的UV坐标进行矩形创建和纹理映射, 。
21、然后进行3d渲 染。3D 软件可根据步骤 S104 中生成的字符串对应的 UV 坐标来创建矩形, 然后将步骤 S103 中生成的纹理填入该矩形即可实现纹理映射。另外进行 3d 渲染的过程属于公知技术, 本发 明不予赘述。 0045 作为一个较好的实施例, 所述步骤 S105 中在进行纹理映射之后、 进行 3d 渲染之 前, 还可以包括步骤 : 根据用户的需求, 对纹理映射后的字体纹理进行颜色和大小设置。如 可调用 OGRE 引擎提供的相关接口将字体颜色设置成用户所选择的字体颜色。 0046 另外, 与上述一种三维场景中实现中文标注的方法相对应的, 本发明还一种三维 场景中实现中文标注的装置, 。
22、如图 2 所示, 包括 : 0047 初始化模块 101, 用于针对每一种字体创建相应的字体文件, 该字体文件中预先 设置有各属性的参数。所述字体文件中各属性的参数可以设置为如下 : Type 属性设置 为 TrueType 字体 ; source 属性设置为代表中文字体的 ttf 文件, , 如 simkai.ttf 楷体, simsun.ttf 宋体, simhei.ttf 黑体等 ; size 属性和 resolution 属性设置为默认情况下, 即 分别设置为 16、 96 ; 另外 code_points 属性设置为 33-166, 即对应全部拉丁字符 ; 0048 处理模块 102。
23、, 用于根据用户选择的字体格式找到对应的目标字体文件, 并对用户 输入的中文字符进行Unicode码转换以得到对应的Unicode码集合, 然后根据所述Unicode 码集合修改所述目标字体文件中对应属性 ; 0049 字体纹理生成模块 103, 用于加载修改参数后的目标字体文件, 并据此生成相应的 字体纹理 ; 0050 坐标获取模块 104, 用于获取所述字体纹理的 UV 坐标 ; 0051 渲染模块 105, 用于根据所述字体纹理的 UV 坐标进行矩形创建和纹理映射, 然后 进行 3d 渲染。 0052 作这一个较好的实施例, 所述初始化模块 101 中创建的字体文件可以为 fontde。
24、f 格式的文件。 0053 作这一个较好的实施例, 所述渲染模块 105 可以包括设置模块, 用于在进行纹理 映射之后、 进行 3d 渲染之前, 对纹理映射后的字体纹理进行颜色和大小设置。 0054 本发明的三维场景中实现中文标注的装置的其它技术特征与上述一种三维场景 中实现中文标注的方法相同, 此处不予赘述。 0055 与传统的三维场景中实现中文标注的方法相比, 本发明的三维场景中实现中文标 注的方法及装置具有如下优点 : 0056 一、 效率高 : 在输入文字信息之前, 无须创建后台进程进行字体库的初始化, 只需 要创建所需字体的字体文件即可。 这在所需要支持的字体很多的情况下将极大的减少。
25、初始 化过程的工作量, 从而提高三维场景中实现中文标注的效率。 0057 二、 可实时标注 : 本发明可根据用户选择的字体格式找到对应的目标字体文件以 说 明 书 CN 102867322 A 6 5/5 页 7 及根据用户输入的文字内容得到对应的 Unicode 码集合, 进而实时生成对应的字体纹理, 该过程为毫秒级。 0058 三、 支持多字体 : 每一种字体对应一个字体文件, 可以直接定位, 无须搜索。 0059 以上所述实施例仅表达了本发明的几种实施方式, 其描述较为具体和详细, 但并 不能因此而理解为对本发明专利范围的限制。应当指出的是, 对于本领域的普通技术人员 来说, 在不脱离本发明构思的前提下, 还可以做出若干变形和改进, 这些都属于本发明的保 护范围。因此, 本发明专利的保护范围应以所附权利要求为准。 说 明 书 CN 102867322 A 7 1/1 页 8 图 1 图 2 说 明 书 附 图 CN 102867322 A 8 。