Blender 渲染使用 Python Pillow libraqm 渲染的复杂字体

Blender render complex fonts as rendered with Python Pillow libraqm

我正在尝试在搅拌机中正确渲染孟加拉字体,但渲染不正确。我在尝试使用 [=54= 在图像上绘制孟加拉文本时遇到了同样的问题].我发现 pillow 可以做到这一点,但它不像英文文本那样直截了当。我能够通过以下这两个链接使其正常工作,

How do I install 'libraqm' library in Google Colab?

How to install pre-built Pillow wheel with libraqm DLLs on Windows?

这些是 without and with libraqm,

的结果

不正确

正确

这是基本代码,

from PIL import ImageFont, ImageDraw, Image
import numpy as np
import matplotlib.pyplot as plt

image = np.zeros((200, 600, 3), np.uint8)
image = Image.fromarray(np.uint8(image * 255))

draw = ImageDraw.Draw(image)

# use a truetype font
font = ImageFont.truetype("/content/BalooDa2-Medium.ttf", 24)

draw.text((20, 25), "আমাদের দেশের ক্রিকেটাররা এখন টেস্ট খেলায় জিততে জানে", font=font)
draw.text((20, 50), "গরমে সুস্থ থাকুন", font=font)

plt.figure(figsize = (20,20))
plt.imshow(image)

完整脚本在这里,https://github.com/quickgrid/CodeLab/blob/master/colab/Pillow_Render_Bangla_Font_Text_to_Image_libraqm.ipynb

在搅拌机中使用自定义孟加拉字体会产生这样的错误结果

我想知道如何在带有文本的搅拌机中实现与 libraqm 相同的功能。有什么方法可以安装带枕头的 libraqm 以在搅拌机或任何其他方式中正确渲染字体?

编辑:

原来 Blender 2.92 已经包含了路径追踪。在视口中拖放图像,然后 Object > Trace Image to Grease Pencil 在选定的对象上可以跟踪可以拉伸到任何高度要求以生成 3D 文本的路径。

尽管输出跟踪中存在一些明显的问题,如下所示。

来源,https://www.youtube.com/watch?v=m5QdBZ5sDG0


黑白图像可以用位图描摹器描摹以转换为svg path。 Inkscape 能够做到这一点并且它可以被导出到 blender。我找到了解决此问题的临时方法。

我仍然更喜欢删除黑色像素(或反转)并沿 Z 轴将白色像素拉伸到给定高度 以使用 python 创建网格的答案没有像 Inkscape 这样的东西。为此,我目前的想法是使用 python 获取轮廓,以某种方式将它们保存为矢量路径,另存为 svg,最后加载到搅拌机中。

找到这篇关于位图跟踪的非 ML 论文,http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.159.5801&rep=rep1&type=pdf

我发现了另外两种使用高度渲染字体的方法,但这不是我的首选方法。一个使用 bump,另一个使用 displacement + bump。使用凹凸不提供适当的高度,但从远处看起来不错并且能够获得正确的阴影。

要使用 displacement + bump 或仅 displacement 需要将平面细分很多以获得适当的高度,并使用搅拌机循环获得较好的效果。应该使用黑白掩模图像作为图像纹理并进行三次插值以改善结果。