跳至主要內容
相机坐标系总结

在用各种渲染软件或者模型的时候,各自的坐标系都不统一,经常搞混淆,所以在这里总结一下。

Fig. 1: 常见的相机坐标系
Fig. 1: 常见的相机坐标系

上图 4 种都是右手坐标系,几个我遇到过的软件或者模型所对应的坐标系见下表:

相机坐标系 软件或模型
RDF (Right Down Forward) OpenCV、Colmap
DRB (Down Right Backward) LLFF
RUB (Right Up Backward) OpenGL、NeRF、MeshLab
LUF (Left Up Forward) Pytorch3D
BUL (Backward Up Left) SMPL (不确定)

计算机图形学CoordinateRender
几何(基本表示方法)

几何(基本表示方法)

几何分为隐式几何(Implicit Geometry)和显式几何(Explicit Geometry))

1 隐式几何

隐式几何不告诉你每个点的具体坐标,而是描述每个点所满足的关系(即几何的函数表达式)


计算机图形学CGGAMES101
几何(曲线与曲面)

几何(曲线与曲面)

1 贝塞尔曲线

p0,p1,p2,p3p_0,p_1,p_2,p_3控制点,蓝色曲线就是贝塞尔曲线,曲线会与初始与终止端点相切,并且经过起点与终点


计算机图形学CGGAMES101
回顾线性代数

回顾线性代数

1 向量的点乘

应用

  • 判断两个向量在方向上多么接近:向量的点积与它们夹角的余弦成正比,因此在聚光灯的效果计算中,可以根据点积来得到光照效果,如果点积越大,说明夹角越小,则物体离光照的轴线越近,光照越强。
  • 分解一个向量
  • 判断向量的方向性:
    • 点乘为 0 表示两个向量垂直
    • 点乘为正数表示两个向量方向基本一致
    • 点乘为负数表示两个向量方向基本相反

计算机图形学CGGAMES101线性代数
光栅化(三角形的离散化)

光栅化(三角形的离散化)

[1,1]3[-1, 1]^3 的标准立方体中的内容经过一系列变换最终转换为像素从而呈现在屏幕上的过程就称为光栅化。


计算机图形学CGGAMES101
光栅化(抗锯齿与深度测试)

光栅化(抗锯齿与深度测试)

1 采样产生的问题

Sampling Artifacts in CG:(这里的 Artifacts 是指一切看上去不太对的东西,可以翻译为瑕疵)

  • 锯齿(阶梯形状)
  • 摩尔纹
  • 车轮效应
  • ...

产生 Artifacts 的原因:信号变化的太快了(频率太高),但是采样速率太慢

2 走样

对两个不同的函数进行采样,采样的结果完全相同,这就被称为走样(Aliases)


计算机图形学CGGAMES101
光线追踪(基本原理)

光线追踪(基本原理)

Whitted-Style 光线追踪(Ray Tracing)

光线的定义:

  • 直线传播
  • 光线之间不会碰撞
  • 光线从光源发出,进入场景不断碰撞,最终到达眼睛

1 光线投射(Ray Casting)

对每一个 pixel,从眼睛/相机发出一根光线,最终打到某一点,如果该点与物体相交,则表示能看到物体上的这个点。再让该点与光源作连线,如果没有遮挡则形成一条有效光路,否则为阴影。(这比 shadow mapping 更方便)


计算机图形学CGGAMES101
光线追踪(加速结构)

光线追踪(加速结构)

判断光线与物体相交需要去遍历所有的三角形,开销过大,因此需要考虑一些加速的方法。

1 轴对齐包围盒(Axis-Aligned Bounding Box,AABB)

包围盒完全包围物体,如果光线没有打到包围盒,那么光线一定和物体没有交集。所以先测试包围盒,再测试物体。


计算机图形学CGGAMES101
2