
图形学
文章平均质量分 84
白梦刃
The hard part is deciding.
展开
-
曲面细分和细分区别
有两个经常被混淆的概念,曲面细分(Subdivision surfaces)和细分(Tessellation or Subdivision)。我们知道细分是一种增加面的方法,但是它只是增加多边形对象的点数,新增的顶点仍然在原来的平面上。曲面细分使用比如 catmull-clark 算法将将曲面做适当的变形,这个过程会改变所有旧的顶点和新顶点的位置,从而产生平滑的结果。原创 2023-04-17 23:05:41 · 1133 阅读 · 0 评论 -
Gerstner Wave 理解
先看上半部分的sin波,红点代表平衡位置,黑点代表表面的偏移位置。实际上水面波也会在传播方向上运动,我们在日常生活中也经常看到,比如飘在水面的叶子也会在波传播的方向上左右晃动,而非单纯的上下移动。假设是不可压缩流体,表面质点分布均匀的话,我们知道在波峰的位置,由于表面往上移动,必须要有水流来填补下面的空间,这意味着周边质点汇集。可以清晰的看到表面质点的汇集和分散现象,同时这里给出了质点的受力分析:水体表面的质点受到重力(向下)和水的压力(指向表面法线方向),两者结合的合力组成了匀速圆周运动的向心力。原创 2023-04-01 13:27:14 · 640 阅读 · 0 评论 -
法线贴图的旋转
实际上不对,法线下一步是通过TBN矩阵变换到世界空间,而TBN矩阵是基于原始的UV方向的,其实就是Tangent(切线)是沿着uv坐标系的u的方向。这意味着上一步计算得到的切线空间的法线必须是基于原始的uv坐标系计算的。这里的Tangent是ObjectSpace的切线,但是切线变换是在顶点着色器完成的,到片段着色器时只有WorldSpace的切线了,所以这个实现起来比较麻烦,不常用。这次讲法线贴图的旋转。另一种解法是调整法线,既然TBN需要的是旋转前的法线,那么将法线逆旋转回去就可以了。原创 2023-03-30 12:58:03 · 612 阅读 · 0 评论 -
法线贴图的混合
本文考虑多个法线的线性混合,首先需要了解如何正确缩放法线,然后混合要怎么做。同时结合了Unity中的实现。原创 2023-03-29 17:41:39 · 904 阅读 · 0 评论 -
一些基本的图形学函数
有些基本的函数在图形学里使用很多,而且很灵活,这里做一个简单的汇总。原创 2023-03-28 23:43:40 · 1000 阅读 · 0 评论 -
Perlin Noise的本质
Perlin Noise是一种Gradient Noise,是基于网格梯度的噪声。你可能会疑惑,为什么它能得到效果很好的噪声效果,现在来探究一下它的本质。大多数时候我们接触到的是二维的Perlin Noise,也就是下面这种情况:在二维网格中每个节点生成一个梯度向量,然后每个点跟周围的梯度点乘,最后使用平滑函数做插值。原创 2023-03-23 13:35:20 · 606 阅读 · 0 评论 -
Perlin noise的值域
那么为什么很多资料认为值域是正负1呢,实际上是因为梯度向量G,按照Perline Noise的定义,这个G是需要归一化的,但总所周知归一化需要开根号,这个开销是比较大的,特别是需要实时生成大规模向量场的时候,所以在很多实际应用中,只会保证G向量的x和y都介于-1到1之间。我们反推一下,既然P能取极值,那么四个顶点处的G*V都需要取极值,四个顶点处的距离向量我们已经求出来了,那么很显然当梯度G的方向和距离向量V同向时G*V最大,反向时G*V最小。5. 使用4中计算的平滑后的坐标,对3中的结果做双线性插值。原创 2023-03-22 16:47:16 · 219 阅读 · 0 评论 -
像素平滑公式比较
平滑公式用于对原本离散的数值进行插值,得到平缓的过渡效果,在图形学中有广泛的应用。本文列举了常用的几种平滑函数,比如线性平滑,三次多项式平滑(smoothstep),6次多项式平滑,提供了一种更好的平滑方式-导数平滑原创 2023-03-21 21:02:38 · 857 阅读 · 0 评论