我想知道一个简单的 3d 程序使用什么程序来绘制 2d 像素以使它们看起来是 3d 的。出于绘图目的,我对此非常感兴趣,因为如果一个程序可以弄清楚如何使用平面屏幕来生成具有深度的图像,那么也许我可以在我的绘图中使用这些技术。
有没有我可以查看的基本 3d 引擎?没有任何 2d 到 3d 的抽象?
您可能会对两个概念感兴趣:
透视投影,这是一种数学变换,它采用 3D 点(或顶点)和相机的特性(位置、方向、平截头体等),并为您提供所选介质(屏幕)上点的 2D 投影.
Painter 算法(因为您似乎要求与绘图相关的技术),一种渲染方法,它在投影后按深度对场景的所有元素进行排序,并通过降低深度将它们绘制在您的介质上,以确保逼真的输出(“远处的物体隐藏在近处的物体后面” ——模仿画家的方法)。然而,该算法有一些限制(在其基本实现中远非有效,不能轻易处理相互交叉或循环重叠的元素),因此大多数时候使用一种更有效的方法,即Z-buffering,它处理像素到像素的深度冲突。
通过结合这些概念,您实际上可以实现自己的简单 3D 引擎(在我指向的另一个 StackOverflow 线程中,我提供了一个链接,指向我撰写的关于轻松创建这样一个引擎的文章)。
如果您想了解更复杂的引擎和概念,可以查看 Nvidia 的 GPU Gems 3,或者查看有关 OpenGL 的文章。
希望对你有帮助,再见!