美文网首页
pbrt笔记--第二章 几何与变换

pbrt笔记--第二章 几何与变换

作者: 奔向火星005 | 来源:发表于2019-11-05 10:37 被阅读0次

个人总结:这一章主要是解释图形学的一些基本概念和运算,比较简单,本文只记录一些个人认为比较重要的地方。

2.1 坐标系统

pbrt的工程使用的是左手坐标系

2.2~2.4

主要讲向量的定义以及他们的一些基本操作,都比较简单,在此不提。

2.5 Rays(射线)

个人理解:ray是离线渲染中的除了向量和点外另一个最重要也最基础几何定义了,因为光就是用射线表示的.

定义:一条ray是一个半关闭-无穷(semi-infinite),用一个原点和一个方向定义。如下图:

伪代码如下:

class Ray {
  public:
    // Ray Public Methods
    Ray() : tMax(Infinity), time(0.f), medium(nullptr) {}
    Ray(const Point3f &o, const Vector3f &d, Float tMax = Infinity,
        Float time = 0.f, const Medium *medium = nullptr)
        : o(o), d(d), tMax(tMax), time(time), medium(medium) {}

    //省了...

    // Ray Public Data
    Point3f o;   
    Vector3f d;
    mutable Float tMax;
    Float time;
    const Medium *medium;
};

ray的参数化形式是:
r(t) = o+td 0<t <∞.

可以看到每个ray都会有一个time和它关联,其实每个time会对应着射线上的一个point。

2.5.1 Ray Differentials

可以理解为ray的微分或者ray的偏移,它主要是后面用来做纹理抗锯齿用的,RayDifferential是Ray的子类,它内部有两条辅助射线,分别代表摄像头射线相对于main ray在x方向和y方向上偏移一个采样点的两条射线,现在没用到可以先不管。

2.6 Bounding Boxes(包围盒)

包围盒,说白了就是用一个简单的几何体(例如立方体)把一个可能复杂的几何体包围起来,主要是用来在计算交点中加速用的(后面的章节才会用到),有很多种包围盒,pbrt中使用的是AABBs包围盒(axis- aligned bounding boxes),也就是和坐标轴对齐的包围盒。

一个3D AABB可以用一个向量和三个长度描述,也可以用盒子的两个对角线的点描述,pbrt中使用的是后者。代码简略如下:

template <typename T>
class Bounds3 {
  public:
    // Bounds3 Public Methods
    //略

    // Bounds3 Public Data
    Point3<T> pMin, pMax;
};

如下图:


Bounds3 class的成员函数中定义了包围盒的一些基本运算,如求包围盒的8个角的坐标(Corner),生成一个能包围住一到多个的boxs的新box(Union),求两个box的相交的部分(Intersect),求两个box是否有交集(Intersect),详见书中。

2.7 变换操作

主要讲了一些3D的矩阵变换,如平移,缩放,旋转,还有齐次坐标等,因为太基础了,略过不提。

2.8 变换的应用

点和向量的变换,略过不提,记录一下法线的变换。法线变换不能直接和变换矩阵相乘,因为直接相乘有些情况下变换后的法线和切线不垂直了。如下图:


图中a是一个圆形,图b将a图中的圆在y轴上缩小一半,法线如果简单的在y轴缩小一半,就和椭圆的切线不再垂直,c图是正确的法线变换。

正确的法线变换的推导是,首先我们知道原法线n和表面的切线t垂直,也就是
n · t = nT t = 0.

当我们用矩阵M对表面上的一点变换时,新的切线向量t'等于Mt。假设法线的变换矩阵为S, 转换后的法线为n'等于Sn,我们有如下:
0 = n'T t' = (Sn)TMt = nTSTMt

因此STM = I,也就是单位矩阵。因此有ST = M-1, S = (M-1)T.

2.9 Animating Tansformations

此为选读内容,还没怎么研究,先略过。

相关文章

  • pbrt笔记--第二章 几何与变换

    个人总结:这一章主要是解释图形学的一些基本概念和运算,比较简单,本文只记录一些个人认为比较重要的地方。 2.1 坐...

  • 研修日志——20180110

    一、几何变换 图形与几何板块必须严格的通过几何变换学几何,在几何变换中,保持不变的性质。 图形与几何学习的第一阶段...

  • 几何变换

    几何变换是指将一幅图像映射到另一副图像内的操作,根据映射关系的不同,有缩放、翻转、仿射变换、透视、重映射等。 1....

  • 几何变换

    几何变换详解在三维图形学中,几何变换大致分为三种,平移变换(Translation),缩放变换(Scaling),...

  • 几何变换

    相对于点操作改变了图像的值域范围,几何变换关注于改变图像的定义域。原先采用的方法是全局参数化2D变换,之后...

  • 几何变换

    缩放 在shape属性中,第一个值对应的是行数,第二个值对应的是列数 在dsize参数中,第一个值对应的是列数,第...

  • OpenCV实现图像的几何变换

    图像的几何变换 几何变换主要包括缩放、平移、旋转、仿射变换、透视变换和图像裁剪等。执行这些几何变换的两个关键函数是...

  • OpenCV算法学习笔记之边缘检测(一)

    此系列的其他文章:OpenCV算法学习笔记之初识OpenCVOpenCV算法学习笔记之几何变换OpenCV算法学习...

  • OpenCV算法学习笔记之边缘检测(二)

    此系列的其他文章:OpenCV算法学习笔记之初识OpenCVOpenCV算法学习笔记之几何变换OpenCV算法学习...

  • OpenCV算法学习笔记之平滑算法

    此系列的其他文章:OpenCV算法学习笔记之初识OpenCVOpenCV算法学习笔记之几何变换OpenCV算法学习...

网友评论

      本文标题:pbrt笔记--第二章 几何与变换

      本文链接:https://www.haomeiwen.com/subject/iacsbctx.html