如何在PyGlet中绘制3D模型?

问题描述 投票:0回答:1

我能够得到一个.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>
python pyglet 3d-model
1个回答
0
投票

我很确定pyglet是为二维的东西而生的。在 .draw() 函数光栅化2d图像的像素,但对于3d模型,甚至一个简单的立方体,需要更复杂的渲染方法。你可能需要为这个项目写更多的代码。一个简单的方法可能是raycast,就像在最初的毁灭战士游戏中一样,它可以提供非常简单的3D图形,可以有纹理。不幸的是,这种方法使得复杂的形状变得不可能,你必须在你的项目中对所有的模型进行编码,而不是使用外部资源,如blender。有许多方法可以将一个3D模型压缩成一个2D图像,但一个 .draw() 根据你正在制作的游戏程序,你可能会想要使用raycasting或其他方法,但我建议使用其他游戏引擎来创建3D游戏。Unity是一个很好的例子,虚幻引擎也是。

© www.soinside.com 2019 - 2024. All rights reserved.