图形学 · GraphicsNote

相机、采样与重建

Cameras, Sampling & Reconstruction

更新于 2026-10-29 约 2 分钟相机投影采样重建抗锯齿

相机把世界几何映射到屏幕,而采样与重建决定连续信号如何变成有限像素。理解投影、视锥、像素滤波、频谱混叠和时间采样,才能解释远处闪烁、纹理摩尔纹、运动拖影和 TAA 鬼影,而不只是记住某个抗锯齿开关。

相机模型

常见变换链为:

xclip=P V M xlocal\mathbf{x}_{clip}=P\,V\,M\,\mathbf{x}_{local}

其中 MM 为模型变换,VV 为视图变换,PP 为投影变换。透视投影使远处物体缩小,正交投影保持尺寸;深度范围、手性、NDC 约定和矩阵乘法顺序必须与图形 API 对齐。

相机设计还包括 FOV、纵横比、近远裁剪面、抖动、曝光和运动历史。近裁剪面过小会恶化深度精度;FOV、分辨率和动态缩放共同决定屏幕采样密度。

采样与重建

渲染器对连续可见性/辐射信号进行像素区域积分的近似。若信号频率超过采样频率,会发生混叠;抗锯齿可以通过预过滤、随机/分层采样、时域积累或重建滤波降低伪影,但无法凭空恢复未采集的信息。

  • 预过滤:在缩小纹理或几何时先去除高频,Mipmap 是常用近似。
  • 空间采样:每像素多样本、抖动或重要性采样改善空间覆盖。
  • 时间采样:跨帧积累提高样本数,但依赖运动矢量和历史有效性。
  • 重建:利用邻域、历史或先验估计目标分辨率;滤波半径越大越平滑,也越可能丢细节。

应用:从伪影反推根因

flowchart TD
    S["连续场景信号"] --> Q["相机与投影采样"]
    Q --> A["像素/时间样本"]
    A --> F["过滤与历史重投影"]
    F --> R["重建图像"]
    R --> D{"伪影"}
    D -->|"闪烁/摩尔纹"| S1["高频未预过滤"]
    D -->|"鬼影"| S2["历史无效或运动估计错误"]
    D -->|"边缘锯齿"| S3["空间样本不足"]

诊断时先固定相机和分辨率,再分别关闭历史、改变采样模式、检查运动矢量和深度一致性;不要直接把所有问题归因于“采样少”。

取舍与常见坑

  • 增加样本万能论:样本数增加会提高成本,错误的重建仍会放大伪影。
  • 忽略坐标约定:深度范围、Y 翻转、左/右手性不一致会造成系统性错误。
  • 历史缓存污染:瞬移、遮挡、材质变化和曝光突变需要检测并拒绝历史。
  • 滤波过宽:能消除闪烁但会造成糊、拖影和细节丢失;按内容频率选择。
  • 只看静帧:时间采样问题必须在运动、旋转和镜头切换中验收。
  1. pbr-book.org/4ed/Camera_Models
  2. pbr-book.org/4ed/Sampling_and_Reconstruction
  3. learnopengl.com/Getting-started/Camera

相关页面

图形学坐标空间Coordinate Spaces顶点从模型到屏幕要依次经过模型空间、世界空间、观察空间、裁剪空间、标准化设备坐标 (NDC)、窗口坐标。每一步变换都有明确目的,大部分可以用 4×4 矩阵表示并相乘合并。图形学着色器纹理采样Shader Texture SamplingGPU 把图像存成 sampler2D:一张浮点向量的「表」,坐标连续时硬件做插值。片元里用 texture2D(sampler, uv)(现代 GLSL 为 texture)按归一化 UV 取色。BoS 强调:通道是 [0,1] 连续域、可越界重复、可用噪声扭曲 UV——图像变成可拉伸的「数码软垫」,为后处理与光学玩具式特效铺路。图形学抗锯齿Antialiasing渲染本质上是采样,采样频率不足就会混叠(锯齿、闪烁的"萤火虫"、车轮倒转)。屏幕空间抗锯齿在每个像素取多个样本并加权求和:超采样最直接但最贵,MSAA 每像素只着色一次,时间抗锯齿 (TAA) 把样本分散到多帧,形态学方法 (FXAA/SMAA) 作为后处理重建边缘。没有一种方法在所有方面最好。图形学时间重投影Temporal Reprojection重投影是在新的视点和朝向下复用前几帧已计算的样本。目的一是利用时间相干把渲染开销摊到多帧(与时间抗锯齿相关),二是当前帧来不及完成时快速生成近似帧(对 VR 防止晕动尤其重要)。分为反向重投影(从上一帧收集)和正向重投影(把上一帧散布到当前帧)(RTR4 12.2 节)。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原