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 改变强度
- 负二 级别
- 正二 级别