0%

阴影(Shadows)

在开始下一部分之前,先回头解决光栅化中的一个问题,那就是如何在光栅化渲染过程中绘制阴影。之前在纹理映射部分讲到了环境光遮蔽的基本原理,就是利用了贴图提前计算环境光遮蔽,那么绘制阴影同样如此,这一节就来简单介绍阴影贴图或者叫阴影映射(Shadow mapping)。

阅读全文 »

几何(Geometry)

图形学中几何是最最重要的部分之一,但同时也是极其复杂的一个课题,这一节只是对计算机图形学中几何的一些最基本的概念、算法做介绍,更加深入的图形学几何知识我们之后再去涉及。这部分内容主要包括几何的表示方式、贝塞尔曲线、分段贝塞尔曲线、B样条、贝塞尔曲面、曲面细分的几种算法和曲面简化的基本原理。

阅读全文 »

双串问题

线性动态规划的另一大类问题就是双串问题,双串问题有两个输入串,长度分别为 m, n,此时子问题需要用 i, j 两个变量表示,分别代表第一个串和第二个串考虑的位置, $dp[i][j]$ 表示第一串考虑 [0..i] ,第二串考虑 [0..j] 时原问题的解。双串问题相比于单串问题难度更大,虽然状态的定义大同小异,但是状态转移需要考虑的情况往往更加复杂。

阅读全文 »

图形管线(Graphics Pipeline)

这一节将对前面的所有内容做一个总结,因为图形管线就是由前面的所有内容组成的一个图形渲染流水线,空间中的点经过图形管线就被渲染到屏幕上成为图形。本节以概述形式介绍图形管线,随着学习的深入,会对图形管线有更深入的理解,到时候会对图形渲染管线进行全面详尽的总结。

阅读全文 »

纹理映射(Texture Mapping)

上一节介绍了着色模型和着色频率,回忆漫反射的计算,漫反射系数 $k_d$ 通常就是物体本身的颜色,但很多时候物体本身的颜色并没有那么简单,大多数情况下,物体上每一个部分的颜色都不同,物体表面具有一定的纹理,比如木质的地板,此时我们在渲染的时候也需要把这样的纹理渲染出来,这就是纹理映射。

image-20220310165904624

阅读全文 »

带维度单串问题

上一篇中的单串问题,子问题仅与位置 i 有关,也就是 dp[i] 的问题。在此基础上,如果子问题还与某种指标 k 有关,k 的物理意义比较常见的有长度,个数,次数,颜色等,则是另一大类问题,状态通常写成 $dp[i][k]$。其中 k 上可能有二分,贪心等算法。这类问题相比于普通单串问题要更复杂,需要多见多积累。

阅读全文 »

着色(Shading)

前几节我们介绍了三维中的各种变换,三维到二维的映射,以及如何在屏幕空间中渲染三维空间中我们所看到的物体,也就是光栅化。光栅化的过程实际上就是判断像素是否在三角形内,如果在就填上对应的颜色的过程。那么从这一节开始,我们将讨论“填上对应的颜色”这里的颜色从何而来。

阅读全文 »

深度缓冲(Z-Buffer)

到上一篇文章为止,我们基本完成了把三维物体画在二维屏幕上的过程,但在这个过程中,还有一个非常重要的问题没有讨论,那就是在光栅化的时候我们之前的推导都没有考虑Z轴,也就是没有考虑三维物体离我们的远近,但是现实生活中我们看一个三维物体或者场景,由于物体离我们眼睛的距离不同,自然会产生遮挡现象。

阅读全文 »

线性动态规划的主要特点是状态的推导是按照问题规模 i 从小到大依次推过去的,较大规模的问题的解依赖较小规模的问题的解。这里问题规模为 i 的含义是考虑前 i 个元素 [0..i] 时问题的解。

大规模问题的状态只与较小规模的问题有关,而问题规模完全用一个变量 i 表示,i 的大小表示了问题规模的大小,因此从小到大推 i 直至推到 n,就得到了大规模问题的解,这就是线性动态规划的过程。

按照问题的输入格式,线性动态规划解决的问题主要是单串,双串,矩阵上的问题,因为在单串,双串,矩阵上问题规模可以完全用位置表示,并且位置的大小就是问题规模的大小,因此从前往后推位置就相当于从小到大推问题规模。

阅读全文 »