在Python中使用不同深度的多个3D对象进行透视投影

时间:2012-10-18 18:34:35

标签: python 3d rendering projection perspective

对于我的个人项目,我需要:

  1. 从3D对象生成透视投影到2D平面(在空间中定义的点,即相机)。

  2. 获取透视投影的确切面积/点坐标

  3. 生成多个3D对象的透视投影,其中某些对象可能落后于其他对象。

  4. 渲染场景(只有一个图像,不会有任何动画,因此不需要实时渲染)。

  5. 对于第1,2和4点,我认为我已经找到了使用PyGame的方法,如下所述: http://codentronix.com/2011/04/21/rotating-3d-wireframe-cube-with-python/

    但是对于第3点我有点卡住,因为即使我可以获得每个对象的透视投影,我怎么能知道哪个对象真正可见以及哪个(完整对象或其中的一部分)不是?

    我真的需要确切地知道对象的哪些部分是可见的以及哪些部分不可见,因此我的最终目标是拥有一个我的屏幕图像矩阵,每个对象的投影区域都清晰定义。

    例如,如果矩阵包含我的屏幕图像的所有像素,并且我们有10个对象,我们将在没有对象的情况下获得0,在其中我们可以看到对象n1,其中对象n2是可见的,等等。

    我必须补充一点,我是Python和许多其他语言的有成就的开发人员,但我之前从未做过任何与游戏相关的渲染开发。

    有人可以帮我找到合适的曲目吗?

    PS:侧面问题:如果你还能指出我比PyGame更好地优化透视投影和渲染的实现,我会非常感兴趣!

1 个答案:

答案 0 :(得分:1)

我建议使用OpenGL执行此类任务。学习基本的OpenGL(这看起来非常基础)并不是那么多努力。看看here(众所周知的教程)和here(使用Python,Qt和OpenGL的基本示例)。我认为通过一些努力,这可能需要一天时间才能开始。