198.Shader Graph 旗帜飘扬

官方教程链接:https://learn.unity.com/project/make-a-flag-move-with-shadergraph
本节课程文档:https://gitee.com/chutianshu1981/AwesomeUnityTutorial/blob/main/%E5%9B%BE%E5%BD%A2-%E6%8A%80%E6%9C%AF%E7%BE%8E%E5%B7%A5%E7%9B%B8%E5%85%B3/08-ShaderGraph%E5%88%9B%E5%BB%BA%E5%8A%A8%E7%94%BB%E6%9D%90%E8%B4%A8.md
198.1 Position节点
获取Mesh顶点的位置信息.

192. Split 节点
Mesh 中的顶点分为 X , Y , Z 三个轴向 , 三个轴的处理方式肯定是不一样的 , 所以应该利用 Split 节点把三个轴的数据分开 , Split 的 输出值虽然写的是 R G B A , 但是顶点的类型为 Vector3 , 所以我们至于要用到前三个 , 即 R G B 分别代表 Mesh 中的 X , Y , Z 顶点向量的值.
 
 
198.3 Time 节点

- Time : 随着时间增大的线性函数
- Sine : 正弦函数
- Cosine : 余弦函数
198.4 Add 节点
求和

198.5 Time & Add
解释 : Mesh 中的 X 坐标 , 会随着时间以正弦函数周期性发生变化,振幅变化为[-1,1]闭区间

198.6 Combie 节点
我们上面对 Mesh 中的 X 坐标进行了操作 , 一直到 Add 节点 输出的只是 X 的值 , 但我们最终想要得到的效果是 X 随着正弦函数在 [-1 , 1]区间内变化 , Y & Z 轴不变的 Vector3 的矢量.

如图 , R(代表X)一直处于正弦曲线的变化中 , 而 Y 和 Z 轴并没有发生任何变化 , 进行了 Combine
198.7 坐标参考

如图 按照原来的理论 做出来的效果是不对的 即 现在旗帜是上下飘动,而不是前后飘动.
因此 需要把 Position 节点的 Space 模式改为 Object (Local) 变动的值应该为Y轴.

198.8 飘动而非移动
现在的效果是 Plan Mesh 的 Y 轴本地坐标在移动 , 但我们想要的的效果是类似于波纹的效果!
直接上图.

 
198.9 控制振幅
现在旗帜摆动的幅度太大了,需要缩小,现在 Y 轴的震动幅度为绝对的[-1 , 1 ](米)要想将幅度变小,可以对Sine输出的值乘以一个比1小的浮点数来缩小振幅.
198.9.1 创建变量 Amplitude

 198.9.2 设置变量 Amplitude
 
 
198.10 控制波动


效果如图

可以看到 , 方向反了 , 这时我们需要对 UV Mask 的 Y 轴坐标进行去反操作.

 
美滋滋
198.11 贴图
198.11.1创建 Texture2D类型变量


198.11.2 Rotate 节点
见名知意
- Unit : Degrees : 度数(另一个概念是弧度)

198.12 UV
198.12.1 概念
UV(三维建模)_百度百科 (baidu.com)
这里是我的理解啊,可能就是二维贴图(坐标)向三维模型(坐标)升维的数学模型.
198.12.2 应用
这里是为了更好解释 UV 节点. 如图所示 :
这里是U轴的渐变过程 , 可以看到是从0-1的从左到右的渐变过程.

这里是V轴的渐变过程 , 从 0 - 1 从下到上的渐变过程 .

UV 轴的变化与 正常二维坐标的变化方向都是相同的.

这样就能很好的解释UV节点的作用了 , 之所以用了 V 轴来作为变换的基准 , 是因为模型进行了旋转90度的操作.
197 Shader Graph 渐变溶解

197.1 噪声
197.1.1 梯度噪声

197.1.2 普通噪声

197.1.3 相乘

噪声图的每一个像素点都有一个从[0,1]的值,0代表黑色,1代表白色.相乘的意思是每个点的色度值互相乘积得到新的噪声图 , 因为 0 * X = 0 , 比如 : 纯黑色部分的色度值为0相乘后还是为0,所以一直是黑色,从图中也可以看到这种趋势.
197.2 Remap 节点
这个节点解释起来很复杂 - - ! 涉及到部分数学知识.

197.2.1 计算公式
Out(1) = ( In(1) - In.x ) * (Out.y - Out.x) / (In.y - In.x) + Out.x
根据上面的 值来化简这个表达式可以得到
Out(1) = 0.9 * In(1) - 0.2 , In(1) 为 正弦函数 sin(x) , 所以最终结果为 Out(1) = 0.9 * Sin(x) - 0.2
这里直接上函数图像就会变得很明显,

这里上面的函数图形为 sinx , 下面的函数图像为 0.9 * sinx - 0.2 , 用现象来描述就是 , Remap之后的函数更晚从黑转为白色 , 更早从白转成黑色 , 这意味着白色的持续时间更短了.
197.3 SinX 正弦函数作用于图像

经过测试 , Sinx 的自变量与因变量作用于图像对比度的结论.

- 从 0 - π/2 : 处于一直变量的状态.
- 从 π/2 - π : 处于逐渐变暗的状态
- 从 π - 2π : 纯黑 
  - 也就是说只有0-π会出现对比度周期变化的效果.
 
197.4 Step 节点
if( In(1) > Edge(1) ){
    Out(1) = 1; //白
}else{
    Out(1) = 0; //黑
}
举个例子 , 比如一个噪声图 有 9 个像素点 如图.
| 0.1 | 0.2 | 0.3 | 
| 0.4 | 0.5 | 0.6 | 
| 0.7 | 0.8 | 0.9 | 
经过 Step (Edge = 0.5) 映射后为. 0 - 黑 , 1 - 白.
| 0 | 0 | 0 | 
| 0 | 1 | 1 | 
| 1 | 1 | 1 | 
197.5 Subtract 节点
Out(1) = A(1) - B(1) , 不解释

重点说一下 , 像素点的相减.

可以见到 , 被减数的白色部分比减数大 , 所以相当于在被减数白色内部掏去减数白色的部分为黑色.
197.6 Color

 
这里不做过多解释.
196 - Shader Graph 流动

196.1 Tiling And Offset
 
-  Tiiling(2)  
  -  可以理解为单位密度  
 
-  
-  Offset -  位移 
 
-  
183 - 网格系统
Unity 中查看网格系统.

185 - Material材质基本操作
185.1 创建 material

 
185.2 附着
让模型附着材质

187 - Material材质属性设置
187.1 Metallic - 金属光泽

187.2 Specular - 漫反射

189 - 纹理贴图
官方教程链接:Map materials with textures - Unity Learn
本节课程文档: 图形-技术美工相关/06-Map&Texture贴图和纹理.md · chutianshu/AwesomeUnityTutorial - Gitee.com
厕纸素材链接:迅雷云盘 提取码:xjbh

189.1 导入材料

189.2 创建材质

189.3 将材质放到 Materials 上

189.4 调整材质

189.5 切换法线贴图类型
切换法线贴图类型为NormalMap.

191-半透明&Alpha剪裁
191.1 半透明玻璃瓶

 
 
191.2 Alpha剪裁
制作出叶子贴图.
191.2.1 全部添加
多选叶子到全部根茎 , 添加同一种 Material.

191.2.2 添加Texture

效果如图,需要将白色的部分去掉

如图 , 透明的部分需要被剪裁掉!
191.2.3 剪裁

- Threshold

192-法线贴图和高贴图
192.1 创建 Cube

192.2 添加材质

192.2.1 基础贴图

192.2.2 添加了法线的贴图

 
193 - 阴影&发光效贴图
193.1 飞行模式
- 点击 鼠标右键 进入飞行模式
- Shift + 鼠标右键 + 鼠标滚轮可以调整飞行模式速度
193.2 阴影
Occlusion Map

 
193.3 细节

 
193.4 发光贴图

 
 
193.4.1 改变强度
- 负二 级别

- 正二 级别




















