如果你对"游戏是怎么把 3D 画面画到屏幕上"这件事好奇过,又不想一上来就啃厚重的图形学教材,这门课值得看一眼。它讲的是射线投射(raycasting),一种比完整 3D 渲染轻得多、但能做出真实 3D 观感的技术。上世纪九十年代的《德军总部 3D》《毁灭战士》用的就是这套思路。课程用 JavaScript 从头把它实现一遍,重点不在炫技,而在让你亲手把算法和它背后的数学跑通。
它解决的是什么问题
很多人学图形学卡在两个地方:一是数学太抽象,向量、矩阵、三角函数看完不知道用在哪儿;二是引擎太黑盒,调个参数能出效果,但说不清为什么。射线投射正好卡在中间——它足够简单,几十行代码就能让画面动起来;又足够真实,涉及角度计算、距离投影、纹理映射这些硬核内容。学完之后,你对"屏幕上的一个像素对应世界里的什么"会有一手的理解。
学完你能独立做出什么
- 一个能在浏览器里跑起来的第一人称视角场景,用键盘控制前后移动和左右转向;
- 一张俯视的 2D 地图,上面实时显示玩家位置和朝向,方便你观察算法每一步的结果;
- 把 2D 地图投影成 3D 墙面的完整逻辑,包括不同距离下墙体的高度变化;
- 给墙面贴上纹理,让画面从色块变成有材质感的场景;
- 加入精灵(比如场景里的物件或敌人),并处理它们与墙体的前后遮挡关系;
- 一些性能上的优化手段,让你明白为什么早期的游戏能在很弱的硬件上跑出流畅画面。
这些不是孤立的练习,而是串成一个能玩的成品。做完之后你手里会有一个可展示的小项目,而不是一堆散落的代码片段。
数学基础怎么处理
课程声称无先修要求,这点需要客观看待。它会随着进度补讲所需的数学——角度与弧度、正弦余弦、向量投影、简单的几何关系。如果你高中数学还有印象,跟上不会吃力;如果完全忘光了,前期需要多花点时间在推导上,但不需要额外去补一门数学课。真正的门槛其实是耐心:射线投射的代码里,一个角度单位搞错,画面就会整个歪掉,调试过程需要你愿意一行行看数值。
这门课适合谁,不适合谁
适合你,如果:你想弄懂 2D 到 3D 的转换到底发生了什么;你写过一点 JavaScript,想找个有画面反馈的项目练手;你打算往游戏开发或图形方向走,想先建立一个能亲手验证的直觉。
可能不适合你,如果:你只想调用现成引擎快速做出游戏,不想碰底层计算;或者你期待的是现代 GPU 渲染管线、着色器编程那套内容——射线投射是另一条技术路线,它教你原理,但不直接对应今天主流的渲染工作流。
资料怎么用
建议按课程的推进顺序走,不要跳着看。射线投射的知识是层层叠加的:没有 2D 地图的坐标逻辑,后面 3D 投影就会变成照抄代码。每完成一个阶段,先让它在浏览器里跑起来,改改参数看画面怎么变,再进下一节。遇到卡住的地方,回到数学那一节把公式重新推一遍,通常比反复调试代码更快。整套资料的价值在于过程,跟着敲一遍,你得到的会比只看一遍多得多。
课程目录
课程目录23 集
- 01 剖析光线投射算法.mp4
- 02 光线投射 vs 光线追踪:核心区别解析.mp4
- 03 光线投射引擎的实现限制.mp4
- 04 角度的两种单位:度与弧度解析.mp4
- 05 基础三角函数回顾:为光线投射引擎做准备.mp4
- 06 光线投射引擎:2D地图表示与项目结构.mp4
- 07 绘制地图.mp4
- 08 光线投射引擎:玩家类实现与键盘控制.mp4
- 09 玩家旋转.mp4
- 10 玩家移动.mp4
- 11 墙壁碰撞.mp4
- 12 光线投射引擎:视野与光线发射算法.mp4
- 13 射线算法.mp4
- 14 光线投射算法核心讲解.mp4
- 15 光线投射算法:水平交叉点检测.mp4
- 16 光线投射算法:垂直交叉点与完整总结.mp4
- 17 XY截取.mp4
- 18 水平方向检测.mp4
- 19 垂直方向检测.mp4
- 20 光线投射投影原理:从距离到高度.mp4
- 21 3D透视投影的数学原理.mp4
- 22 绘制墙壁.mp4
- 23 修复3D投影中的鱼眼效应.mp4






