Rays, a Simple Camera, and Background

Rays, a Simple Camera, and Background:从像素中心构造射线并用方向插值背景,以公式、章专属交互和可重放故障证据独立重写。

学习目标

  • 能说明Rays, a Simple Camera, and Background中的“从像素中心构造射线并用方向插值背景”,并指出公式中每个量的空间、单位或概率含义
  • 能比较正常基线与“把图像y轴与世界y轴方向混用,或用理想宽高比替代实际像素比”反例,定位四角射线方向、首末像素位置和背景颜色单调性中的首个差异
  • 能操作三个章专属实验,让射线、视口、背景渐变同时具备解释、视觉和练习证据
  • 能修改最小实现、固定输入重放,并判断“Rays, a Simple Camera, and Background的输入、公式中间量、输出与恢复结果可用同一基线复算”是否重新成立

从一个会失败的图像实验开始

Rays, a Simple Camera, and Background要回答的不是“这个名词是什么”,而是:在固定输入下,如何验证“从像素中心构造射线并用方向插值背景”,并让一个反例可重复地推翻错误实现?先写下预期像素、几何或估计量,再运行基线;只要四角射线方向、首末像素位置和背景颜色单调性无法指出差异来自哪一步,图像看起来正确也不能通过。

本页的不变量是:Rays, a Simple Camera, and Background的输入、公式中间量、输出与恢复结果可用同一基线复算。反例“把图像y轴与世界y轴方向混用,或用理想宽高比替代实际像素比”只改变一个条件,因而正常、故障与恢复三次运行应能用同一输入直接比较。

原版、版次与事实来源

Rays, a Simple Camera, and Background以官方4.0.2全文核对实现顺序、公式与调试边界,并以官方源码仓库交叉检查可编译接口。课程示例为独立教学重写;固定版本后不把Vulkan、GPU管线或其他书的模板倒灌进这个纯C++路径追踪器。

六个检查词

。这些词共同约束从像素中心构造射线并用方向插值背景,每个词都必须落到公式、交互状态或可重放输出,不能只出现在术语表。

原书单元与独立机制解释

Rays, a Simple Camera, and Background

射线用 P(t)=Q+td 表示从相机中心出发的半直线;视口把整数像素索引转换成三维采样位置;背景渐变只依赖单位方向的y分量,用来先验证相机坐标和扫描顺序。

本单元的正式坐标是射线、视口、背景渐变。验证Rays, a Simple Camera, and Background时,先制造“把图像y轴与世界y轴方向混用,或用理想宽高比替代实际像素比”,再检查四角射线方向、首末像素位置和背景颜色单调性能否把错误定位到从像素中心构造射线并用方向插值背景的首个分叉。

P(t)=Q+td,C=(1a)C0+aC1P(t)=Q+t\,d,\qquad C=(1-a)C_0+aC_1

先预测,再操作三个章专属实验

分步1 / 3

1. 概念与因果路径

在Rays, a Simple Camera, and Background中选择任一正式坐标,沿机制链查看它的输入、状态变化和可推翻探针。

射线、交点与章节机制

Rays, a Simple Camera, and Background

沿一条可见射线检查从像素中心构造射线并用方向插值背景,改变t时只移动采样点,不偷偷改变原点或方向。

正式概念坐标

射线参数 t
Q 原点P(1)P(t)=Q+td

Rays, a Simple Camera, and Background / 射线

射线用 P(t)=Q+td 表示从相机中心出发的半直线;视口把整数像素索引转换成三维采样位置;背景渐变只依赖单位方向的y分量,用来先验证相机坐标和扫描顺序。

可推翻探针:四角射线方向、首末像素位置和背景颜色单调性

版本坐标:Peter Shirley、Trevor David Black、Steve Hollasch《Ray Tracing in One Weekend》4.0.2。实验状态只解释本章因果合同,不替代官方C++源码。

最小可重现实验

point3 pixel = pixel00 + i*delta_u + j*delta_v;
ray primary(camera_center, pixel - camera_center);
vec3 d = unit_vector(primary.direction());
double a = 0.5 * (d.y() + 1.0);
color sky = (1-a)*color(1,1,1) + a*color(0.5,0.7,1);

运行Rays, a Simple Camera, and Background时固定随机种子、输入几何、坐标约定和数值精度;记录编译命令或算法版本、输出摘要与失败条件。实验输出若依赖隐藏全局状态,必须先消除该依赖再比较。

练习与答案

练习

问题 1:公式与边界。 怎样用一个数值样本证明 P(t)=Q+td,C=(1a)C0+aC1P(t)=Q+t\,d,\qquad C=(1-a)C_0+aC_1 中的量没有混用空间、单位或概率密度?

问题 2:正式坐标。 射线、视口、背景渐变如何进入可操作验证?

问题 3:故障恢复。 如何证明“把图像y轴与世界y轴方向混用,或用理想宽高比替代实际像素比”已经真正修复?

本章回顾

掌握Rays, a Simple Camera, and Background意味着能将“从像素中心构造射线并用方向插值背景”写成明确公式或算法,能操作正式坐标,能制造“把图像y轴与世界y轴方向混用,或用理想宽高比替代实际像素比”,还能凭四角射线方向、首末像素位置和背景颜色单调性恢复同输入结果,而不是把一段Vulkan生命周期模板换上本章标题。

名词解释

本章出现的专业名词,用大白话再讲一遍。

射线

射线在Rays, a Simple Camera, and Background中用于从像素中心构造射线并用方向插值背景;应由四角射线方向、首末像素位置和背景颜色单调性确认,而不是只凭术语出现。

视口

视口在Rays, a Simple Camera, and Background中用于从像素中心构造射线并用方向插值背景;应由四角射线方向、首末像素位置和背景颜色单调性确认,而不是只凭术语出现。

背景渐变

背景渐变在Rays, a Simple Camera, and Background中用于从像素中心构造射线并用方向插值背景;应由四角射线方向、首末像素位置和背景颜色单调性确认,而不是只凭术语出现。

ray parameter

ray parameter:射线参数决定半直线上采样点与前后顺序。

hit interval

hit interval:命中区间排除相机背后、过近或更远的候选根。

sample estimator

sample estimator:样本估计器用明确PDF和权重近似目标积分。

阅读导航

← The vec3 Class · Adding a Sphere →

讨论

评论区加载中…