我能够得到一个.obj格式的3D模型,但我不知道如何在屏幕上绘制它。这是我的密码:
import pyglet
model = pyglet.resource.model('untitled.obj')
window = pyglet.window.Window()
@window.event
def on_draw():
window.clear()
model.draw()
pyglet.app.run()
但它输出了这个错误:
pyglet.gl.lib.GLException: b'\xed\xe5\xe4\xee\xef\xf3\xf1\xf2\xe8\xec\xee\xe5 \xe7\xed\xe0\xf7\xe5\xed\xe8\xe5'
如果您执行以下操作:
model = pyglet.resource.model('untitled.obj')
print(model)
输出:
<pyglet.model.Model object at 0x02E356E8>
我很确定pyglet是为2d设计的。
.draw()
函数逐像素光栅化2d图像,但3d模型甚至一个简单的立方体都需要更复杂的渲染方法。您可能需要为此项目编写更多的代码。一个简单的方法可能是光线投射,就像最初的末日游戏一样,它提供了非常简单的3d图形,可以有纹理。不幸的是,这种方法使复杂的形状变得不可能,您必须在项目中对所有模型进行编码,而不是使用诸如blender之类的外部源。将三维模型压缩为二维图像的方法有很多,但仅仅使用.draw()
函数是不够的。根据您正在制作的游戏/程序的类型,您可能希望使用光线投射或其他方法,但我建议使用其他游戏引擎来创建3d游戏。Unity是一个很好的例子,也是一个不真实的引擎GitHub上的pyglet文档中有一个简单的示例,如下所示:
相关问题 更多 >
编程相关推荐