Games101阶段性总结④(坑)

一、几何

隐式几何(Implicit)
  1. 每个点满足某种关系
    如f(x,y,z)=0等
    image
  2. 判断点在里还是外简单
    将点直接带进一个函数内,小于则在物体内,大于在物体外
  3. CSG简单几何的并(∪)、交(∩)、差(\)
    image
  4. 距离函数
    空间中任何一个点到你想表述的几何上的任意一点的最小距离,最后将我们想要的几何进行函数混合(等于零时,就是所在面)
    image
  5. 水平集(level set)
    image
  6. fractal(分形)
显式几何
  1. 直接给出点,或者多边形面
  2. 参数映射,直接通过uv映射成空间中的坐标
    image
  3. 但是判断里外难

点云(Point Cloud)——就是由无数的点(x,y,z)形成的图像,耗费大
mesh网格(多边形面)=>一般使我们.obj文件都会包含顶点v、uv坐标vt、法线vn、以及面的形成顺序f

曲线与曲面

如何绘制一个曲面,首先得了解贝塞尔曲线(Bézier curve),它通过一系列的控制点取定义某一个曲线的切线方向

如何求一个贝塞尔曲线,给出3个控制点b0,b1,b2,在b0与b1插值一个t,得到点b01,b1与b2插值一个t,得到点b11,将求得的b01与b11同样插值一个一模一样的t,得到点b02,重复无数次上面的插值操作,得到无数个不同位置的b02,将这些点连接起来,就是一个贝塞尔曲线(设定t是在0到1之间的某数)
image
image

结果一系列的总结推导,得出了博恩斯坦(Bernstein)多项式,那么我们就可以利用这个表达式表示我们的曲线,这也符合显式几何的定义
image
其中n是总控制点的索引,从0开始到末尾控制点(控制点的数量)
j为当前控制点的索引
image
给定一个时间t,他们相加都会等于1,这也符合我们t的取值,方便记忆的是利用我们的多次方展开,
((1-t)+t)总控制点数-1的方,展开,最后往里面添加控制点的位置即可
image
一些曲线好的性质
image
关于第二点的切线向量,是只有4个点才有的性质,这也正好与我们接下里的逐段贝塞尔曲线有一定联系
仿射变换之后,控制点不会发生改变
控制点一定再凸包内(在二维欧几里得空间中,凸包可想象为一条刚好包着所有点的橡皮圈。 [from Wikipedia])

可是当我们的控制点太多时,我们不可能再对每个点与点之间取时间t,来插值,此时我们就得利用逐段贝塞尔曲线来画,约定每4个控制点来画曲线,原理就和上述一样,在PS中钢笔功能就是运用的此方法

当点与点的距离相等,共线时,我们就会称其为光滑的曲线
image

第一段的终止点等于第二段的起点时候,我们就称这种连续叫做C0连续
image

切线距离相等时,就称C1连续
image

可现在我们的曲线是平滑的了,但是有些局部想要调整,就利用spline(样条)曲线
B-Spline(基函数的样条)就是引入的公式来表示样条曲线

那我们知道了曲线,自然就可以得到一个曲面了
image
先在一个面上取纵向同一边的点,提起来,让他们处于随机位置,利用贝塞尔曲线,画出一条曲线,接着
横向同一边的点链接,画出的线组合起来就是一个曲面了
image
只要保持四个角的控制点不变,移动其他控制点,就可以完成动态的曲面了
如何映射uv,将uv中的u当成纵向的t,v当横向的t


Mesh网格

image
细分(改变模型使其更光滑)

Loop细分:

得到新顶点坐标为,
image
而旧顶点坐标则会改变为,其中n为这个点的度,如果这个点连接的边有六个,则度为6,u是跟度有关的一个数值
image

Catmull-Clark Subdivision

这是普遍的细分方法,其中我们将度不等于4的点称为奇异点,而我们要变换其中的非四边形
image
当取网格中点相连时,自然就会细分,且变换后非四边形都会变成奇异点:
image
如何更新:
如果点在面中间与点在边中间的
image
旧顶点更新
image

网格简化,其中的一项技术为边坍塌(edge collapsing),原理是找到设想一个点,这个点在原本连续的各个面平方和的距离最小,理解为对两个顶点进行捏压,这时候对我们原来模型也会造成边的偏移。
image

二、在光栅化阶段产生阴影

利用阴影图(Shadow Mapping),但是这类阴影只能处理点光源
阴影图的关键:我们要的这个点,不在阴影的关键信息在于,能被我们的Camera看到和能被光源Light照到

硬阴影:

  1. 从光源看向任何点,并记录深度图
  2. 从Camera去记录点到光源的距离
  3. 对比距离与深度值,距离大于深度值,则会被遮挡。
  4. 深度图分辨率越小,产生的锯齿越大

软阴影:

  1. 本影
  2. 半影
  3. 影子之外
  4. 点光源没有软阴影,除非有范围的点光源
    image
posted @ 2022-02-12 15:12  Ariaaaaa  阅读(8)  评论(0)    收藏  举报