图形学理解

  1. 推导投影矩阵([图形学笔记]推导投影矩阵 - 知乎一、前提使用列向量,所以变换为矩阵左乘列向量。 原课程 https://www.bilibili.com/video/BV1X7411F744?p=4 @闫令琪 大佬的课,以下均为自己的理解,自己推导做个笔记加深记忆。 二、正交投影矩阵正交投影矩阵的…https://zhuanlan.zhihu.com/p/122411512

     

    1. 正交投影矩阵
      1. 计算长方体中心点,将中心点移动到原点
      2. 缩放到[-1,1]空间中
      3. 正交投影矩阵为移动矩阵*缩放矩阵
    2. 透视投影矩阵
      1. 先把远平面缩放到【-1,1空间中】根据斜率
      2. 然后再重复正交投影矩阵的操作
  2. 欧拉角、矩阵、四元数表示旋转的区别和优缺点
    1. 欧拉角:定义了绕着三个坐标轴的旋转角,来确定刚体的旋转位置的方式,包括俯仰角pitch,偏航角yaw和滚动角roll;它的优点是比较直观,而且单个维度上的角度也比较容易插值;缺点是它不能进行任意方向的插值,而且会导致万向节死锁的问题,旋转的次序对结果也有影响。
    2. 矩阵:优点是不受万向节死锁的影响,可以独一无二的表达任意旋转,并且可以通过矩阵乘法来对点或矢量进行旋转变换;现在多数CPU以及所有GPU都有内置的硬件加速点积和矩阵乘法;缺点是不太直观,而且需要比较大的存储空间,也不太容易进行插值计算
    3. 四元数:四元数的好处是能够串接旋转;能把旋转直接作用于点或者矢量;而且能够进行旋转插值;另外它所占用的存储空间也比矩阵小;四元数可以解决万向节死锁的问题。
  3. 如何判断一个点是否在三角形(举行、扇形)内
    1. 面积法:点花费的三个小三角形面积是否大于大三角形
    2. 叉乘发,沿逆时针方向,三角形两两顶点构成三个向量,比如AB,BC,CA,分别用这三个向量与起点和P的交点构成的向量求叉乘,如AB*AP,BC*BP,CA*CP,由右手定则,如果三个结果都是正的,说明这点个都在向量的左侧;可以推导得出这个点在三角形内,否则只要有一个负数,就说明在右手边,在三角形外了
  4. 如何判断一条管线是否与一个三角形相交
    1. 先判断光线是否和三角形所在的面相交,在判断这个交点是都在三角形内
    2. 用MT算法,

      (光线的方程是:ray = origin + direction * t) 原理是如果一个点在三角形内,就能用重心坐标系去表示这个点;重心坐标公式,阿发别他伽马,α = 1 – β - λ;带入方程,有3个未知数(β,λ,t),由因为都是三维变量,可以得到三个等式;利用克拉默法则,线性代数的知识,就可以求解出这三个未知数;解出来,判定t是否合理,t > 0,然后α、β和λ三个系数都是非负的,就是有解,在三角形内。

  5. 如何判断两个三角形是否相交
    1. 如果两个三角形相交,必定至少其中一个三角形的一条边穿过了另一个三角形的内部;把边当作光线去跟另一个三角形求交,如果三条边只要有一条边跟三角形有交点,即可判断两三角形相交,当然关键是要判断出来的t是都合理,是都位于边长范围之内
  6. 什么是齐次坐标,齐次坐标有什么作用?

    1. 所谓齐次坐标就是为矢量或者矩阵增加一个维度,2D平面使用3维向量和三位矩阵,3D空间使用4维向量和4维矩阵;额外的坐标值是任意的,可以看作缩放或者权重

    2. 三位子矩阵可以表示旋转和缩放,他们相乘的结果是正确的,但是平移变化不能加到三维矩阵中的相乘去表达,只能将矩阵相乘的结果加一个三维向量;引入齐次坐标之后会增加一个维度,变为四维矩阵,多出来的一维向量用来表示平移,那么就可以在一个矩阵中统一所有的操作:平移、旋转、缩放

  7. 纹理技术的基本原理

    1. 简单的理解就是将一张二维图像,按照一定的映射关系,将每个像素贴合到物体表面的对应位置。纹理技术可以增加物体表面的细节

  8. mipmap的概念,如何实现

    1. 提出背景:在一个场景内有很多物体,有的远有的近。远处的物体只占很少的片段(假设每个物体都有各自的纹理,且分辨率都很高的话),此时如果要从高分辨率的纹理中采样,会比较困难,因为一个很小的物体,一个像素映射到纹理上会占据很大一块,包含了很多个纹理像素,不好采样,因此引出了多级渐远纹理(mipmap)技术

    2. 原理:将纹理划分为不同大小分辨率的纹理图集,每次缩小1/2划分,根据物体的大小,来对不同级别的纹理进行采样,对远处的物体,采用低分辨率的纹理,对于近处的物体,采用高分辨的纹理

  9. 纹理、贴图、材质

    1. 纹理即“纹路”,每个物体表面上不同的样子,譬如说木头的木纹状。
    2. 贴图是图,最简单的形式是ps之类的软件做出来的一张图,这些图在3D中用来贴到物体的表面,用来表现物体的“纹理”。
    3. 材质主要是用来表现物体对光的交互(反射、折射等)性质的。譬如金属对光的反射和毛毯对光的反射性质完全不一样,那么对3D程序来说,这样的差别就通过材质这个属性来计算出不同的颜色。

上面是最简单的说法。对于2来说,在实际的3D程序中,贴图经过历史的演化,出现了很多的其他用作不同场合的种类,譬如有凹凸贴图用作计算物体表面的凹凸感,这个就不是严格意义上的纹理作用。对于3来说,程序员往往让“材质”这个东西包含贴图在内,也就是在程序里,材质就是(a)各种贴图和(b)物体对光的交互性质的集合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值