【问题标题】:Draw extruded 3d text with pyopengl?用 pyopengl 绘制突出的 3d 文本?
【发布时间】:2015-10-16 12:17:49
【问题描述】:

使用 pyopengl 绘制 3d 文本的最佳方法是什么,最好使用现代 opengl?

似乎有很多例子,但大多是老式的opengl而不是python

【问题讨论】:

标签: python 3d freetype pyopengl truetype


【解决方案1】:
  1. 首先您需要一个需要字体的文本轮廓。 在 Windows 上,您可以使用 WinGDI fonts by creating a dummy contextselectingcreated font 以及每个字符的 getting outlines。对于Truetypeload glyphs 进入脸部,只需access 他们的轮廓。
  2. 对于 3D 文本的正面和背面,您需要将轮廓/轮廓转换为三角形。要么使用旧的GLU tesselator、OpenGL 4 的相对较新的tesselation shader,要么使用像CGAL 这样的几何库。然后简单地为前面画三角形,然后再为后面画一些额外的深度。
  3. 对于边,您只需在轮廓线段/线后面跨越矩形,height 等于您希望的文本深度 - 这些是您的文本边。您可以简单地使用深度向量,然后对所有内容进行变换,或者使用 2 段计算正交向量。

你注意到这一切都可能很昂贵,所以不要犹豫,尽可能多地缓存。

我参考了 C 源代码,因为我更熟悉这些,但我敢打赌,有 python 等价物可以移植我的解释。

【讨论】:

  • 为详细的答案干杯,我需要回到这个并实际实现它.... GetGlyphOutline 提示很好,看起来在 cairo 有一个跨平台等效项 cairo_glyph_path() ,freetype 看起来也是轮廓的明智选择。
猜你喜欢
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2021-01-12
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
相关资源
最近更新 更多