欢迎光临散文网 会员登陆 & 注册

UE4 积雪效果(VertexNormalWS)

2021-11-18 13:06 作者:紧果呗  | 我要投稿

`VertexNormalWS`输出模型顶点在全局空间的法线向量,可以作为 World Position 中的位置偏移进行使用,也可以用于制作某些特殊贴图。


直接将 VertexNormalWS 输出到材质的 Base Color,可以看到一个立文体向 X/Y/Z 轴正方向的三个面分别显示为 Red/Yellow/Blue 三原色,对应各个面的法线向量 (1,0,0)/(0,1,0)/(0,0,1),另外三个面处于各轴的负向,所以各分量都小于或等于 0,对于颜色输入都等价为 0。如果是 Sphere,那么三个正向面的颜色将会是三原色渐变的效果,根据其各像素在所位置的法线决定。


两个向量的点积是一个标量,几何含义就是一个向量在另一个向量上的投射长度,所以,XY 平面上的两个向量的点积就相当于一个仅表现 Z 轴方向上的高度蒙版。也就是说,假如山体模型的某个部分是平顶的,那么它的法线必定是指向 Z 轴正方向。那么,将顶点向量与向量(0,0,1)做 `DotProduct` 运算,当它们平行时,也就是山体模型平顶部分就会得到最大值 1。而斜面部分,根据坡度不同,输出的数字小于 0 ~ 1 之间。对于那些竖起的断崖部分,几乎与 Z 方向垂直,即 COSθ 输出为 0。明白该原理之后,便可以进行一些特殊效果的制作,例如积雪的材质,根据输出值的强度,再结合 LinearInterpolate 或 HeightLerp 做插值,实现雪花与岩石材质的覆盖。

  • `CrossProduct` 叉积即矢量积,表达式计算两个三通道矢量值,并输出所产生的三通道矢量值。给定空间中的两个矢量,矢量积是与两个输入都垂直的矢量。

  • `DotProduct` 向量点积表示标量积,即一个矢量投射到另一个矢量上的长度。许多技术使用此计算来计算衰减。点积要求两个矢量输入具有相同数目的通道。

点乘(Dot Product)的结果是数量积或标量积(Scalar Product)。从几何角度看,点积是两个向量的长度与它们夹角余弦的积,即 *a﹡b* 表示 *b* 在 *a* 上的投影。


根据余弦定理,向量点积定义如下,注意两竖表示向量的模:

    a·b = |a|×|b|cosθ

判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为:

  • a·b > 0 夹角在 0° ~ 90° 之间;

  •  a·b = 0 正交,相互垂直;

  •  a·b < 0 方向基本相反,夹角在 90° ~ 180° 之间;

叉乘(Cross Product)又称向量积(Vector Product)。几何意义上,在空间中有两个向量叉积运算结果是一个向量,并且与这两个向量都垂直,是这两个向量所在平面的法线向量。使用右手定则确定其方向,食指为 *a* 指向正前方,中指为 *b* 指另一个角度,拇指为 *a×b* 并且与 a 和 *b* 的方向都垂直。计算机图形学中,叉积常用于判断一个物体是否在另外一个物体的左侧或右侧。

如果以向量 *a* 和 *b* 为边构成一个平行四边形,那么这两个向量外积的模长与这个平行四边形的面积相等。

视频观看:https://www.bilibili.com/video/BV1VL411g7RE/

UE4 积雪效果(VertexNormalWS)的评论 (共 条)

分享到微博请遵守国家法律