除以深度:3D 图形学的核心秘密

Divide by Depth for Instant 3D

除以深度:3D 图形学的核心秘密

刚开始做游戏时,我依赖现成的 Camera 框架,直到深入底层代码才恍然大悟:3D 投影的核心其实只是简单的数学除法。文章通过 One Formula That Demystifies 3D Graphics 中的经典案例,展示了如何将 3D 坐标 (x, y, z) 通过除以深度 z 投影为 2D。这不仅是简单的技巧,更是理解 Perspective Projection Matrix 的关键。从 World Space 到 View Space,再到 Clip Space 和 NDC,完整的图形管线其实就是一系列变换与除法。掌握这些原理,你就能根据需求灵活构建自己的 Camera,不再被黑盒框架束缚。

如果有一件事值得从这篇写作的收获,那就是 Camera 只是在做几个简单的变换,如果你理解每个变换的用途,你就可以根据自己的需求和约束来选择实现哪些部分。
  1. aappleby

    顺便提一句,如果你从“视锥体是一个 90 度的金字塔,顶点在 z=1 处被截断,末端在无穷远处”这个概念出发,你就能推导出如何通过矩阵和透视除法将其映射到 NDC(标准化设备坐标)。

    我在讲授简短的“图形学入门 101”课程时(当然不是第一节课)就用过这个方法,得出的数学推导比通常那种“这是计算透视矩阵的方法,别问这些数字哪来的”版本要直观得多。

  2. gabrieloc

    你好!我写了一些关于 3D 相机工作原理的笔记,并附带了交互式示例,希望能解答这个我曾经也头疼不已的复杂话题。也许这里有人会觉得有用,就算没用,里面也有有趣的滑块可以随便玩玩!

  3. TN1ck

    这些滑块在手机上的用户体验很棒,对细节的把控令人喜爱。

同日更多故事

2026-09-21