光线追踪器挑战

The Ray Tracer Challenge

第一个 3D 渲染器的测试驱动指南

准备好迎接有趣的挑战:从头开始构建逼真的 3D 渲染器!这比你想象的要容易。在短短几周内,构建一个光线追踪器,它可以渲染美丽的场景,包括阴影、反射、出色的折射效果,以及由各种图形基元组成的主题:球体、立方体、圆柱体、三角形等。在每一章中,实现另一块拼图并将渲染器向前移动。在您喜欢的任何语言和环境中执行所有这些操作,并且完全先测试,这样您就知道它是正确的。用这个项目在个人探索、实验和发现方面的巨大潜力来为自己充电。

全彩 印刷。


渲染器是一个光线追踪器,这意味着它通过追踪场景周围的光线路径来模拟光的物理特性。每个激动人心的章节都呈现出一小块拼图,以前面的章节为基础,为后面的章节奠定基础。要求与语言无关;您可以使用您喜欢的任何语言将它们翻译成测试和代码。项目完成后,您将回顾并意识到您已经构建了一个完整的系统测试优先!

没有必要的研究——所有必要的公式和算法都在这里展示和说明。从向量和矩阵等基本概念深入研究有趣的主题;模拟光线与球体、平面、立方体、圆柱体和三角形相交的算法;几何图案,如棋盘格和圆环。光照和阴影效果(例如阴影和反射)使您的场景栩栩如生,而构造立体几何 (CSG) 使您能够以简单的方式组合图形基元以生成复杂的形状。

在发现编写光线追踪器的乐趣时进行游戏和实验。接受今天的挑战!

你需要什么

除了计算机、操作系统和编程环境之外,您还需要一种显示 PPM 图像文件的方法。在 Windows 上,像 Photoshop 这样的程序可以运行,或者像 IrfanView 这样的免费程序。在 Mac 上,不需要特殊软件,因为 Preview 可以打开 PPM 文件。

资源

发布:

  • P1.0 2019/02/26
  • B6.0 2019/02/13
  • B5.0 2018/12/11
  • B4.0 2018/11/14

 

内容和摘录

  • 入门
    • 这本书是给谁看的
    • 如何阅读本书
    • 需要注意的事情
  • 元组、点和向量
    • 元组
    • 运营
    • 把它放在一起
  • 在画布上绘图
    • 代表颜色
    • 实现颜色操作
    • 创建画布
    • 保存画布
    • 把它放在一起
  • 矩阵 摘录
    • 创建矩阵
    • 乘法矩阵
    • 身份矩阵
    • 转置矩阵
    • 反转矩阵
    • 把它放在一起
  • 矩阵变换
    • 翻译
    • 缩放
    • 回转
    • 剪切
    • 链接转换
    • 把它放在一起
  • 射线球交点
    • 创建射线
    • 与球体相交的光线
    • 跟踪路口
    • 识别命中
    • 变换光线和球体
    • 把它放在一起
  • 灯光和阴影 
    • 表面法线
    • 反射向量
    • Phong 反射模型
    • 把它放在一起
  • 制作场景
    • 建设世界
    • 定义视图转换
    • 实现相机
    • 把它放在一起
  • 阴影 
    • 阴影中的照明
    • 测试阴影
    • 渲染阴影
    • 把它放在一起
  • 飞机
    • 重构形状
    • 实现平面
    • 把它放在一起
  • 模式
    • 制作条纹图案
    • 转换模式
    • 泛化模式
    • 制作渐变图案
    • 制作环形图案
    • 制作 3D 棋盘格图案
    • 把它放在一起
  • 反射和折射
    • 反射
    • 透明度和折射
    • 菲涅耳效应
    • 把它放在一起
  • 立方体
    • 将射线与立方体相交
    • 在立方体上寻找法线
    • 把它放在一起
  • 气缸
    • 将射线与圆柱相交
    • 在圆柱体上找到法线
    • 截断圆柱体
    • 带盖气缸
    • 锥体
    • 把它放在一起
  • 团体
    • 实施小组
    • 在子对象上找到法线
    • 使用边界框优化大场景
    • 把它放在一起
  • 三角形
    • 三角形
    • 波前 OBJ 文件
    • 平滑三角形
    • OBJ 文件中的平滑三角形
    • 把它放在一起
  • 构造实体几何 (CSG)
    • 实施 CSG
    • 着色 CSG 形状
    • 把它放在一起
  • 下一步
    • 区域光和柔和阴影
    • 聚光灯
    • 焦点模糊
    • 运动模糊
    • 抗锯齿
    • 纹理贴图
    • 正常扰动
    • 圆环原语
    • 把它包起来
  • 渲染封面图片
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。