计算机图形学games 101笔记逐步完善

计算机图形学

Transformation

Rotate旋转

R θ = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] R_\theta = \left[ \begin{matrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{matrix} \right] Rθ=[cosθsinθsinθcosθ]

R − θ = [ cos ⁡ θ sin ⁡ θ − sin ⁡ θ cos ⁡ θ ] = R θ T R_{-\theta} = \left[ \begin{matrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{matrix} \right] = R_\theta^T Rθ=[cosθsinθsinθcosθ]=RθT

由定义可知
R − θ = R θ − 1 R_{-\theta} = R_\theta^{-1} Rθ=Rθ1
性质:旋转的逆等于旋转矩阵的转置。

由于平移需要无法用单一的矩阵表示,所以引入了齐次坐标(Homogenous Coordinates)

齐次坐标(Homegenous Coordinates)

定义

2D point =
( x , y , 1 ) T (x, y, 1)^T (x,y,1)T

2D vector =
( x , y , 0 ) T (x, y, 0)^T (x,y,0)T
其中,1表示点,0表示向量。

原本的仿射变换(Affine Transformations)为
A f f i n e m a p = l i n e a r m a p + t r a n s l a t i o n [ x ‘ y ‘ ] = [ a b c d ] [ x y ] + [ t x t y ] Affinemap = linear map + translation\\ \left[\begin{matrix} x^‘ \\ y^‘ \end{matrix}\right] = \left[\begin{matrix} a & b \\ c & d \end{matrix}\right]\left[\begin{matrix} x \\ y \end{matrix}\right] + \left[\begin{matrix} t_x \\ t_y \end{matrix}\right] Affinemap=linearmap+translation[xy]=[acbd][xy]+[txty]
使用齐次坐标之后
[ x ‘ y ‘ w ‘ ] = [ 1 0 t x 0 1 t y 0 0 1 ] [ x y 1 ] = [ x + t x y + t y 1 ] \left[\begin{matrix} x^‘\\ y^‘ \\ w^‘ \end{matrix}\right] = \left[\begin{matrix} 1 & 0 & t_x \\0 & 1 & t_y \\ 0 & 0 & 1\end{matrix} \right]\left[\begin{matrix} x \\ y \\ 1 \end{matrix}\right] = \left[\begin{matrix} x + t_x \\ y + t_y \\ 1 \end{matrix}\right] xyw=100010txty1xy1=x+txy+ty1

由于
[ x y w ] = [ x / w y / w 1 ] \left[\begin{matrix} x \\ y \\ w \end{matrix}\right] = \left[\begin{matrix} x / w \\ y /w \\ 1 \end{matrix}\right] xyw=x/wy/w1
所以point + point 表示两个点的中点,并且point和vector的运算仍满足定义。

并且齐次坐标可以将很多种表示成同样的形式,包括缩放(scale)、旋转(Rotation)、平移(Translation)

组合变换(Composing Transforms)

惯例:先旋转再平移

从矩阵角度来说就是一连串的左乘矩阵

并且一系列复杂的操作都可以转换为,先移动到原点,然后进行变换,再移动回原始位置

3D Transformations三维空间变换类比于2D Transformations二维变换

Shading

Shading

Blinn-Phong reflectance model
Illumination光照
  • 漫反射 Diffuse reflection

    diffuse reflection|Blinn-Phong reflectance model
  • 高光Specular highlights

    高光是由观察方向和镜面反射方向足够接近时观察到的。

    观察到高光时,半程向量和法向量应该是比较接近的。

    image-20220118104236019
  • 使用半程向量的好处:

    1. 相比于知道入射角和法向量,求出射角,使用半程向量的计算量更小。
    2. p的引入,可以减小看见高光的夹角范围,更符合真实情况。
  • 环境光照Ambient lighting

    image-20220118105125636
    1. 假设环境光获得光照强度为一个常数;
    2. 作用:
      • 保证没有地方是黑的,所有光照加起来,提升一个亮度。
  • 效果

    image-20220118105606523
Specular and ambient terms
Shading Frequencies
Shade each triangle(flat shading)
Shade each vertex(Gouraud shading)
  1. 顶点的法向量求法

    相邻三角形法向量的加权平均

Shade each pixel (Phong shading)

利用顶点法向量和重心坐标,插值出像素的法向量

Graphic Pipeline (Real-time rendering)

投影
形成
光栅化
着色
拼接
input:vertics in 3D space
Vertics positioned in screen space
Triangle
Fragments
Shaded fragments
images

但大部分功能都由显卡帮我们做了,所以实时渲染主要工作是编程控制顶点和像素的着色,即可编程渲染管线。

Shadertoy

Texture Mapping(纹理映射)

作用

在着色时,定义具体位置点的基本属性。

知道三角形顶点的纹理之后,需要

Interpolation across triangles:三角形插值

目的

在得到三角形顶点值后,希望内部能做平滑过渡

哪些插值
  1. 颜色
  2. uv
  3. 法线
工具:Barycentric coordinates
介绍
image-20220119114021935

其中,三个系数可以通过内部三角形面积比得到

image-20220119114354376

重心把大三角形均匀分为3分,其3个系数均为1/3

使用
问题

在投影变换下,不能保证重心坐标不变。

所以在三维空间投影插值时,需要先做插值,然后再做投影

纹理查询

纹理的应用

比如在颜色插值后,得到对应的颜色,对于Blinn-Phong模型,颜色就是其中的kd。

纹理放大

用在纹理不够大的场景,但是不想直接四舍五入的方式处理中间像素点,可以使用如下方法

Bilinear interpolation

双线性插值

一个点考虑其周围四个点的颜色,做双线性插值,就可以达到平滑颜色的效果

Bicubic interpolation

使用周围16个像素点来进行插值

也就是说,好的质量一般都会伴随计算的开销,在达到好的质量之后,再考虑如何保持质量,降低计算开销。

纹理缩小

处理纹理太大的场景。

解决方法为放弃采样,直接获取一个区域内的平均值,使用Mipmap

Mipmap

allow (fast,approx,Square) range quary

可以在渲染之前,生成mipmap

三线性插值

Anisotropic Filtering 各项异性过滤

相比于Mipmap,将右上和左下的正方形替换为很多的矩形,用于处理图形中,一个像素覆盖矩形的范围查询。

EWA Filtering

在各项异性过滤的基础上,将很多不规则的图形拆分成为多个不同的椭圆形,就可以处理各种长条形区域。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值