Skip to main content
 首页 » 编程设计

python之Python 中不同深度的多个 3D 对象的透视投影

2025年05月04日6rubylouvre

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

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

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

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

  4. 渲染场景(只有一张图片,不会有任何动画,所以不需要实时渲染)。

对于第 1、2 和 4 点,我想我已经找到了使用 PyGame 来完成此操作的方法,如下所述: http://codentronix.com/2011/04/21/rotating-3d-wireframe-cube-with-python/

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

我真的需要确切地知道物体的哪些部分是可见的,哪些部分是不可见的,因此我的最终目标是拥有一个屏幕图像矩阵,其中每个物体的投影区域都被明确定义。

例如,如果矩阵包含我的屏幕图像的所有像素,并且我们有 10 个对象,则在没有对象的地方我们会得到 0,在我们可以看到对象 n1 的地方得到 1,在对象 n2 可见的地方得到 2,等等。 .

我必须补充一点,我是一名熟练使用 Python 和许多其他语言的开发人员,但我之前从未进行过任何与游戏相关的开发或渲染开发。

有人可以帮助我走上正确的轨道吗?

PS:附带问题:如果您还可以指出比 PyGame 更好的透视投影和渲染优化实现,我会非常感兴趣!

请您参考如下方法:

我建议使用 OpenGL 来完成此类任务。学习基本的 OpenGL(这看起来非常基础)并不需要太多努力。看看here (众所周知的教程)和 here (使用 Python、Qt 和 OpenGL 的基本示例)。我认为这可能需要您一天的时间才能开始。