读研究生搬宿舍的时候,发现很多本之前手写的课程笔记。于是笔者挑选了一些比较喜欢的课程,把它们的笔记整理出电子版并且附上必要的源码。对于自己来说是一种纪念,同时希望能造福后面的师弟师妹们吧。
“数媒”这课程的全称叫数字媒体技术,在很多学校也被称为“计算机图形学”,授课老师是一位台湾回来的教授,上课经常一黑板一黑板写板书,于是我们在下面跟着抄笔记。这门课主要介绍了在computer里面的graphics和animation。前半部分的graphics任务是利用coding的方式画出图形,后面的animation任务主要使用了Unity3D这个工具来做一个小demo。从这里开始,先整理graphics部分。
1. 表示方法与概念
**computer graphics:**model -> rendering ->display
**encoding:**how to represent an object in the computer
这一部分我们主要介绍如何在计算机里面去表示或者说去画一个物体,需要用到不少解析几何、立体几何和矩阵变换的知识。
我们都知道,在一个平面里面,所有高级复杂的图形都是由点组成的,在空间里面,所有的几何体也是由各个平面组成,因此,所有的图形都是由各个点表示而成。为了方便编程,我们对以下图形的表示进行统一的规范定义:
1.1 line(线)
x=x1+t(x1−x2)
y=y1+t(y1−y2)
z=z1+t(z1−z2)
0<t<1
1.2 Polygon(多边形)
总是逆时针的顶点顺序表示该多边形
1.3 Tetrahedra(四面体)
- 顶点的数目,面的数目
- 对于每个顶点的表示: (x1,y1,z