【问题标题】:Converting text to mesh [closed]将文本转换为网格 [关闭]
【发布时间】:2013-08-16 12:53:13
【问题描述】:

我需要将文本(字符串+字体)转换为网格(顶点、索引、三角形等),但我不需要绘制任何东西。我将从一个 API 中获取一个字符串并将其作为顶点和索引推送到另一个 API。这样做的最简单/最简单/最好的方法是什么?字体指标和文本放置当然是可用的,不需要其他转换。

我目前正在使用 VC++。但是,任何类型的开源(C/C++、C#、VB,...)和“非开放但免费”的 COM/.NET 库都会很棒。

我听说过 FreeType。它会回应我的祈祷还是有更好的东西?

编辑:正如 Nico Schertler 评论的那样,DirectX -libs 中似乎有 Mesh.TextFromFont -function 可能起到了作用。谢谢你尼科!当我有时间在实践中测试时,我会更新。

【问题讨论】:

  • 呃,无法回答。至少,您需要提供一些有关您解析的文本格式的文档。
  • 我几乎可以进行任何从 C++ 的基本类型 char* 到 Java 的 StringBuffer 的转换。那不是问题。我需要一个“网格”,它可以使用某些定义的字体从字符/字符串中生成网格。同样,字体对象类型不是问题,转换通常很简单。
  • 我使用 freetype 并且发现它很容易,但没有接触过vector data。有谁知道可以将曲线转换为线段然后用三角形填充形状的库?也许是一个有趣的练习,但自己做很费时间。 编辑我刚找到this,但你说你不想要渲染器位。
  • 托管 DirectX 中有一种方法可以执行此操作:Mesh.TextFromFont。这是你要找的吗?
  • @SimoErkinheimo:啊,你在寻找文本网格,而不是像 3DS 或 VRML 这样的模型数据加载器;我的错。

标签: c++ opengl direct3d freetype glyph


【解决方案1】:

Mesh.TextFromFont 听起来不错,但它并没有节省时间,因为我无法弄清楚如何从网格对象获取实际的点/三角形数据。

但后来我找到了this。在这个项目中,GraphicsPath 用于从字形创建点路径。然后将这些点转换为多边形,然后使用Poly2Tri 将多边形细分为三角形。

快速浏览源代码并进行一些小的修改和代码剥离,我最终得到了一个不错的 .NET -dll,它带有一个简单的静态函数,可以满足我的一切需求。

【讨论】:

  • 你有没有在任何地方分享过这个?
  • @joon 不幸的是,我没有源代码了,但我记得我必须对 Laurent Dupuis 的项目进行的更改非常少。
【解决方案2】:

要将文本转换为网格,您可以使用ttf2mesh 库。该库仅包含一个 C 文件,并允许打开 truetype 字体 (.ttf) 并将字形转换为 2d 或 3d 空间中的网格对象。存储库中有一个examples。 一个有趣的特性是不依赖任何第三方库(如 libfreetype)。在示例中还有一个 ttf2obj 程序,可让您将字体文件转换为 OBJ 文件。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 2013-02-27
  • 2014-02-27
  • 2017-07-04
  • 2017-09-15
  • 2019-01-06
  • 1970-01-01
相关资源
最近更新 更多