目录

计算机图形学——学习笔记


计算机图形学——学习笔记

前言

:::info

终于迈出学习计算机图形学的第一步了……

:::

++喜欢上计算机图形学的起因大概是听了传奇程序员==约翰·卡马克==的故事,这位推动了3D发展的大佬给我留下了无比深刻的印象。++{.dot}

https://tva4.sinaimg.cn/large/008ieO5lly8gqmb5tqfs4j30go093wfi.jpg
约翰·卡马克

再加上我对渲染、光追、VR、AR等等也都很感兴趣,就想去了解更多,于是也就有了这篇记录博客。{.danger}

计划第一步——GAMES101-现代计算机图形学入门

++计划先观看闫令琪大佬的视屏:GAMES101-现代计算机图形学入门++{.wavy}

{% links %}

编辑器当然还是用我最喜欢的VIM !!虽然视屏里闫令琪老师极其不推荐,但我用了挺多插件,真的顺手…….!!

开发环境我决定使用实体机,因为不喜欢用虚拟机,尤其是其他发行版的Linux……{.danger}

视屏里的作业首先需要下载编译器和两个库,ArchLinux可以直接执行以下命令安装:

1
sudo pacman -S gcc make cmake eigen opencv vtk hdf5 glew

Eigen是矩阵库,OpenCV是视觉和机器学习软件库(实测最新的版本4.x也可以)

gcc是编译器,CMake是一个跨平台的安装(编译)工具

其他部分是依赖

:::success

从入门到放弃的{.danger} 进度

:::

视屏进度

;;;id1 P1——P5

  • P1 图形学概述

  • P2 线性代数回顾:点乘(方向角度)、叉乘(判断左右、内外)、矩阵(基础概念)

  • P3 2D仿射变换:(线性变换)旋转、平移(水温逐渐升高)

  • P4 3D变换、观测(视图、投影)、正交、透视投影(青蛙煮熟了)

  • P5 三角形光栅化(采样)、缩放、平移、旋转

;;;

;;;id1 P6——P10

  • P6 光栅化(反走样、深度缓冲)、Artifacts、先做模糊(滤波)再采样、时域的卷积=频域的乘积、MSAA(多重采样抗锯齿,同一像素增加了采样点)、FXAA(快速近似抗锯齿,不是采样,先模糊,再替换边界锯齿)、TAA(时间近似抗锯齿,复用上一帧)、Super resolution(超分辨率)、DLSS !!深度学习==猜,淦!!

  • P7 可见性遮挡(深度缓存)、着色、画家算法、Z-Buffer(例如深度一样游戏会闪就是)、shading(着色不同材质)、漫反射(和观测方向无关)

  • P8 Blinn-Phong着色模型、高光(半程向量和法向量是否足够接近,余弦的指数一般用100——200)、环境光(大胆假设:常数)、着色频率(每个面片、顶点、像素)、实时渲染(图形)管线、shader(着色器)、纹理映射

  • P9 纹理的应用、重心坐标插值(为得到顶点间平滑的过度)、纹理贴图(纹理低分辨率时Bilinear双线性插值)、双向三阶插值(Bicubic)、纹理太大会丢失细节(又是走样!)、Mipmap(范围查询、只能近似方形)、log2 L、三线性插值(纹理内部双线性插值,Mipmap层之间插值)得到连续的图、Overblur(Mipmap用了近似)、各向异性过滤(矩形区域)

  • P10 环境光照(环境光纹理)、cubemap、凹凸贴图、位移贴图、几何???

;;;

;;;id1 P11——P15

  • P11

  • P12

  • P13

  • P14

  • P15

;;;

;;;id1 P16——P20

  • P16

  • P17

  • P18

  • P19

  • P20

;;;

;;;id1 P21——P23

  • P21

  • P22

  • P23

;;;

作业进度

  • 作业0 还行,能做

  • 作业1 人类迷惑行为?代公式,懂了

  • 作业2 怀疑智商…MSAA的黑线好难改

  • 作业3

  • 作业4

  • 作业5

  • 作业6

  • 作业7

!!不能放弃,坚持!!!

笔记大纲

  • Transformation 变换
    • Model 模型变换
    • View 视图变换
    • Projection 投影
  • Rasterization 光栅化
    • Viewport 视口变换
    • Sample 采样
    • Antialisaing 反走样
    • Z-Buffering 深度缓冲
  • Shading 着色
    • Illumination 光照(Blinn-Phong着色模型)

      • Diffuse 漫反射
      • Specular 高光
      • Ambient 环境光
    • shading frequencies 着色频率

      • Flat shading 逐面着色
      • Gouraud shading 逐顶点着色
      • Phong shading 逐像素着色
    • pipline 管线

      • 实时渲染管线流程
      • shader 着色器

第二步——Fundamentals of Computer Graphics

!!英文也太难啃了,看一眼就头大了!!{.bulr}

学习更新记录

  • !!2021-05-24!!

  • !!2021-05-30!!

没啥好的记笔记方法,等一波小米的平板出了再继续学习。。。

  • 2021-06-26 重装系统忘记备份作业代码了。。。更新鸽了
  • 2021-09-18 买了平板!可以在pdf课件上记笔记啦,方便多了!重启学习计划!
  • 2021-09-19 完成P3, Hw0
  • 2021-09-23 完成P4-5, Hw1
  • 2021-09-26 完成P6-7, Hw2 MSAA黑线问题:先渲染绿色三角形后,边界为绿色和黑色的混合。再渲染蓝色三角形时,因为只维护了像素点的深度信息,判定蓝色三角形这条边上的像素比绿色远,不进行渲染,无法覆盖绿黑边像素。解决方法:增加深度buffer大小,将所有采样点的深度信息都进行维护,这样绿色边界只有三个采样点较近,还有一个为黑色无穷远,这一个采样点被下方的蓝色同一采样点的深度信息替换。这样,两三角形的交界处的一个像素内有三个绿色采样点,一个蓝色采样点。颜色为他们的混合,3/4绿色 + 1/4蓝色。