Games101

01计算机图形学概述

一、课程主题

1.Rasterization(光栅化):这部分后续还会讲述关于OpenGL和Shader相关的知识。

        光栅化:把三维空间的几何形体显示在屏幕上

        实时:每秒出现30幅画面,即每秒30帧(30fps)。如果不满足,则不称之为实时,称之为离线。

2.Curves and Meshes(曲线和曲面):几何相关的一些知识

        包括:

                曲线

                曲面

                简单曲面——通过细分获得复杂曲面

                形状发生变化时,面如何变化,如何保持原有的拓扑结构

3.Ray Tracing(光线追踪)

        会拓展一些相关知识,如路线追踪、表面建模、光线传播方法

        Trade Off:慢,但是效果好

        又快又好:实时光线追踪

4.Animation/Simulation(动画与模拟)

        for example:物理模拟,如一块布随风摆动

二、计算机图形学和计算机视觉的不同处

模型->图像,是计算机图形学,通过渲染

图像->模型,是计算机视觉

模型->模型,是计算机图形学,(模型和模拟)

图像->图像,是计算机视觉(图片处理)

三、一些其他相关概念与知识

图形学三大方向:仿真、几何、渲染

图形学API:OpenGL、DirectX、Vulcan

视觉信息:合成与操作

好的画面标准->画面是否足够亮->体现渲染中的全局光照

渲染->计算光线传播方式

Graphical User Interfaces(GUI):图形用户接口,如windows的和mac的

02线性代数回顾

一、图形学依赖的知识

1.基础的数学知识:

        线性代数

        微积分

        统计

2.基础的物理知识:

        光学

        力学

3.一些杂乱的知识:

        信号处理

        数值分析

4.一点美学

二、向量(Vectors)

基础概念:

        向量长度        

        单位向量        

        向量加法

           (平行四边形法)     

           (三角形法)        

默认情况下向量写成列向量        

点乘

                

        (投影)

 这其中的知识点:

        1.夹角可以通过此公式反推

        2.当向量a和向量b都是单位向量时,有

在2D中的向量点乘公式:

在3D中的向量点乘公式

点乘的作用有

        1.找夹角

        2.投影

        3.判断向量是否接近(其中的应用有->镜面反射)

        4.用于判断前与后的信息

                若为正数,则方向一致

                若为负数,则方向相反        

                若为0,则垂直

                

叉乘:

 但是上图不完善,因为少了方向

判断方向可以使用:

        1.右手坐标系

        2.右手螺旋定则:

                四个小指握拳的过程时旋转的过程。即从向量a旋转到向量b,其中旋转的角度就是向量之间的夹角

                大拇指指向的方向就是垂于与a向量和b向量的向量的方向

右手系的一些运算:

 

 其中:

(忽略我的画技哈哈哈哈)

叉乘满足分配律和结合律

OpenGL:左手系

Unity:左手系

叉乘的向量表示以及运算:

 

三维向量的拆分:

叉乘的作用:

        1.判断左和右

                向量a叉乘向量b

                        如果结果为正,则向量b在向量a的左边

                        如果结果为负,则向量b在向量a的左边

                        

        2.判定内和外

                

                 

         若不分顺时针和逆时针来走三角形,则全左或全右也可推出p在三角形ABC的内部

        若上述三角形案例中叉乘为0,则称为Corner case(可以自行决定处理)

三、矩阵(Matrices)

基础概念:转置矩阵、对角矩阵、单位矩阵、矩阵的逆

提示:矩阵没有交换律

有用->矩阵乘以列向量

变换操作:旋转、对称等等

点乘用矩阵运算表示:

叉乘用矩阵运算表示:

 其中A*不是伴随,也不是A乘以。是dual matrix(对偶矩阵)

03Transformation(变换)

 主要内容:

        1.旋转、缩放、切边

        2.其次坐标(Homogeneous coordinates)

        3.组合变换->形成新的变换

        4.三维变换

Modeling

Viewing

一、2Dtransformation(二维变换):

缩放变换:

Scale transformation 

对应变换和矩阵形式

反射:

Reflection Matrix 

对应变换和矩阵形式

shear Matrix:切变

 矩阵形式

旋转:

Rotation Matrix

线性变换:

Linear Transformation

对应表示和矩阵形式

二、Homogeneous coordinates(齐次坐标)

 平移变换:

 

平移不是一种线性变换

那么是否有一种方法来表示所有的变换呢?->都变成矩阵乘以向量->引入齐次坐标

齐次坐标的表示:

其次坐标矩阵乘法:

 

 二维点:加1

二维向量:加0,因为向量经过平移还是那个向量,不会改变

其次坐标的加减

向量+向量=向量

点-点=向量

点+向量=点

点+点=两点的中点

w不为1和0时,转换为其次坐标:除以w 

仿射变换(Affine Transformations):

对应变换:

使用其次坐标后转成矩阵乘法形式:

用齐次坐标形式的矩阵相乘

用仿射变化做平移:最后一行永远是001,平移永远写在最后一列的头两个数上。左边是原来的线性变换

(Scale)缩放使用齐次坐标矩阵乘法:

(Rotation)旋转使用齐次坐标矩阵乘法:

(Translation)平移使用齐次坐标矩阵乘法:

使用齐次坐标的代价:引入额外的1。但是效率仍然好。

逆变换(Inverse Transform): 线代上正好是乘以逆矩阵

变换的组合(Composing Transforms)

目的效果:

如果先平移再做旋转:失败了,因为旋转是以坐标轴原点旋转的。如下:

如果先旋转,再平移:成功了。如下:

 因为矩阵的乘法不满足交换律,所以先左乘A和先左乘B得到的效果是不一样的

矩阵没有交换律,但是有结合律。

可以先算右边的:符合逐一变换,好理解

也可以先算左边的

Decomposing Complex Transforms(变换的分解)

如何以特定的点(如c点)进行旋转

先把该点移动到原点,再做旋转,最后再移回去

矩阵写法,从右到左

三、三维变换(3DTransforms)

将w变成1,只要都除以w就可以

仿射变换:先线性变换再平移

三维比二维又多了一个维度

齐次坐标的矩阵乘法形式:

04Transformation Cont

旋转-c塔角度:变成矩阵的逆,但这时候也正好是转置(旋转的逆正好是转置)(也称为正交矩阵)

一、三维变换

齐次坐标

 

欧拉角:把三维旋转写成绕x,绕y,绕z。称为欧拉角

罗德里德斯旋转公式:角度阿尔法和轴n

   

二、Viewing transformation  (观测变换

-View(视图)/Camera transformation

-Projection(投影)transformation

        -Orthgraphic(正交)projection

        -Perspective(透视)projection

-View(视图)/Camera transformation

什么是视图变换?

        1.模型都拼好(model transformation

        2.角度找好,布置相机(view transformation

        3.投影(projection  transfoamation

简称mvb变换

第一步:

e:相机位置

g:相机看的方向

t:相机上面(固定好哪个方向是相机上面,就可以锁住相机 

第二步:

没有相对运动,拍出来的就永远一样 

000是中心,相机永远向上是y,永远向-z看

通过平移和旋转等一系列操作让让摄像机成为上面的样子

数学方法:可以先求逆,更方便 

总结

正交:

把z扔掉了(口头 

(正式的说法:先平移,在缩放,变成 canonical(正则、规范、标准)cube

透视:近大远小

 

 

听不懂了,这一节。QAQ

05Rasterization1(Triangles)

一、Different raster displays

        MVP

                Model transformation(placing objects

                View transformation(placing camera

                Projection transformation

                        -Orthographic projection

                        -Perspective projection

Raster == screen in German

        -Rasterize == drawing onto the screen

        光栅化:把东西画在屏幕上的一个过程

Pixel's indices are from (0,.0) to (width-1, height-1)

Pixel(x,y) is centered at (x+0.5, y+0.5)

The screen covers range (0,0) to (width, height)

Next:Rastering Triangles into Pixels

不同的光栅设备

        Oscilioscope Art

        Flat Panel Displays

        LCD

        LED

        Electrophoretic Display

二、Rasterizing a triangle

通过采样的方式来进行光栅化

判断点在不在三角形内部

会形成一个锯齿

后面要抗锯齿

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值