答案 0 :(得分:33)
有很多方法。我会亲自使用ImageDraw的draw.text在Python Imaging Library中创建图像,转换为NumPy数组(usint NumPy的asarray),然后使用Matplotlib进行渲染。 (需要Matplotlib maintenance package)。
完整代码(2.5):
import numpy, pylab
from PIL import Image, ImageDraw, ImageFont
import matplotlib.axes3d as axes3d
sz = (50,30)
img = Image.new('L', sz, 255)
drw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 20)
drw.text((5,3), 'text', font=font)
img.save('c:/test.png')
X , Y = numpy.meshgrid(range(sz[0]),range(sz[1]))
Z = 1-numpy.asarray(img)/255
fig = pylab.figure()
ax = axes3d.Axes3D(fig)
ax.plot_wireframe(X, -Y, Z, rstride=1, cstride=1)
ax.set_zlim((0,50))
fig.savefig('c:/test2.png')
显然,还有一些工作要做,消除轴,改变视角等。
答案 1 :(得分:4)
使用opengl进行渲染时要考虑的另一个绑定是pyglet。它的最大特点是它只需一次下载。我认为它包含了实现Anurag拼出的所有内容。
我会提醒您,您尝试做的事情并不是3D图形中的简单第一个项目。如果这是您第一次接触OpenGL,请考虑NeHe Tutorials等一系列教程以及OpenGL website的其他帮助。
答案 2 :(得分:2)
我不确定我是否会为完整的3D库而烦恼。只需生成一个3D点矩阵,用PIL之类的东西生成文本,扫描它以找到网格上的哪些点被提升,选择随机摄像机角度然后将点投影到2D图像中并用PIL绘制它们到最终形象。
话虽如此......如果你不想自己做3D数学,你可以使用VPython。
答案 3 :(得分:1)
对OpenGL使用Python绑定http://pyopengl.sourceforge.net/。
使用PIL在黑色表面上创建白色文本的2D图像。 从这里制作一个3D网格,增加颜色为白色的点的z, 也许设置z =颜色值,所以通过模糊图像,你可以得到z方向的真实曲线。
从这些点创建一个OpenGL三角形,在渲染时使用线框模式。
将OpenGL缓冲区抓取到图像中,例如, http://python-opengl-examples.blogspot.com/2009/04/render-to-texture.html