我正在用 Python 编写自己的小型 3D 引擎。我使用了一种技术,您可以从相机拍摄大量光线像素并测量到三角形的距离。但是,即使经过 numpy、优化和 numba 并行化等等,即使在 400 + 400 像素的分辨率下,1000 个三角形的正常对象也会渲染 4-7 分钟,这已经很多了。
有一个新算法的想法 - 你看看相机中从拍摄点到三角形点的片段落在哪个像素上,找到三个像素并使用 pygame 在它们之间制作一个三角形。
但是在互联网上,我没有找到关于如何计算至少一个线段和一个矩形在空间中的交点的明确解释。请帮忙,因为我什至没有完成学业自己想出一个垫子。解决方案。
CPU 和 Windows 的理想解决方案
我没有等待答案,所以我解决了几个小时的方程式,一切都解决了。这是此功能的代码。也许你可以在之前以某种方式优化 numpy
剩下的我就不给你看了。图片用 470,000 个多边形渲染半秒。triangles - 三角形数组 rect - 矩形 size_x - 窗口宽度 size_y - 窗口高度 x、y、z - 相机位置