大数跨境

美术向unity极简入门 | 三步搞定Shader Graph实战

美术向unity极简入门 | 三步搞定Shader Graph实战 怿星科技
2025-04-03
3

在技术与美术协作的项目中,由于开发团队与美术团队存在审美代沟与技术壁垒,常陷入反复沟通难达预期美术效果的困境。本篇内容将通过unity的shader Graph入门知识分享,使美术人员能具备自主调试材质效果的能力,大大缩短效果还原的工时投入,同时还能提升项目最终的美术效果。


满满干货,欢迎先点赞收藏再阅读哦~~






一、unity安装




1.1

安装unity hub

unity hub是unity官方的一个集中化平台,方便管理和使用多个不同版本的unity。我们可以通过unity hub来下载对应项目的unity版本,在unity hub上可以很方便的切换不同版本的使用。(unity hub下载网址:https://unity.cn/releases)


图1.1.1 unity hub 上安装unity的不同版本


1.2

创建新项目

在项目中需要与开发团队对齐unity的版本。如果是自主创建的话,优先选择URP管线的核心模板,如图1.2.1。需要注意的是,项目命名规范要避免中文路径和特殊符号。


图1.2.1 创建unity项目






二、创建Shader Graph




2.1

配置URP渲染管线

如果对应版本里没有URP的模板,我们可以创建常规的3D模板,然后在工程中将模板升级到URP的模板。

先打开Windows——Package Manager,选中unity仓库,如图2.1.2所示。选中仓库后,搜索universal,将universal RP添加到工程里。


图2.1.1 打开Package Manager


图2.1.2 选中unity仓库


图2.1.3 添加universal RP


我们可以点开Edit—project settings,点击Graphics,可以看到工程里面的渲染管线依旧是None,此时的工程依旧是一个3D的工程。


图2.1.4 打开项目设置


图2.1.5 查看渲染管线


在空白处右键,调出Create—Rendering—URP Asset(with Universal Renderer),然后再将URP的资产拖入设置中,完成URP管线的项目配置,如图2.1.7所示。


图2.1.6 创建URP资产


图2.1.7 导入URP资产


2.2

新建Shader Graph材质

右键新建shader Graph材质:Create—Shader Graph—URP—Lit Shader Graph。


图2.2.1 新建shader Graph


在3D 场景中主要使用的是Lit Shader Graph 和Lit Shader Graph。


Lit Shader Graph带有光照模型,属于常规的PBR流程的模型。可以创建类似真实世界的光照漫反射,镜面反射,金属质感等效果。


Unlit Shader Graph没有光照模型,需要额外编写光照计算流程。一般用来制作不依赖于固定的光照模型,可以根据需要进行更定制化的处理。


右键新建的graph,选择Create——Material,创建出对应的材质,如图2.2.2。我们将创建的材质直接拖入到左侧Hierarchy 列表中的模型中,即可将材质赋予模型。


图2.2.2 创建材质






三、Shader Graph核心节点




3.1

界面认识

双击shader graph,会自动打开对应的shader graph编辑窗口。


图3.1.1 shader graph 界面


①面板:scene是场景面板,game是运行的效果面板,第三个是我们创建的shader graph的面板,Lit shader graph是shader graph 的名字。

②顶部工具栏:Save Asset和Save As是用来保存或另存为当前Shader Graph 文件;Show In Project可以在项目窗口中定位该Shader Graph 文件。

③属性面板:可以通过点击加号增加属性,该属性会释放出参数,可以直接在材质对应的细节面板调节参数,无需进入shader graph的面板。

④shader graph属性:分为Vertex 模块(顶点着色阶段)和Fragment 模块(片元/像素着色阶段)


Vertex 模块


_

Object Space

基于物体自身坐标系的输入数据

Position

顶点位置,可修改顶点位移,如波浪效果

Normal

顶点法线方向,影响光照计算

Tangent

顶点切线方向,常用于法线贴图计算

Fragment 模块


_

Base Color

定义材质基础颜色,可直接输入颜色或连接纹理

Normal

切线空间下的法线输入,需连接法线贴图

Metal

金属度0=非金属,1=金属,影响反射强度

Smoothness

光滑度,0=粗糙,1=镜面般光滑

Ambient Occlusion

环境光遮蔽,控制阴影区域明暗

Smoothness

光滑度,0=粗糙,1=镜面般光滑

Color Specular

定义材质高光颜色,可直接输入颜色或连接纹理


⑤属性面板:Node Settings,用于调整节点的全局参数;Graph Settings,用于调整着色器的全局参数。



⑥材质效果预览:顾名思义,用于预览材质效果。

⑦主要控制界面:用来摆放节点,链接shader graph属性。


3.2

常用工作流

我们使用ShaderGraph来模拟世界之中万物表现状态,但经过经验的堆叠,我们才有了如下的两套工作流程,来更快更优秀的辅助我们模拟万物表现状态。


~工作流的具体使用并无具体绑定局限,而是可以自由探索组合的。

1- Metallic-Roughness:常用工作流(尤其是非透明态/金属材质)


在本工作流中,此效果更加倾向于光线反射状态的表现,所以其表达状态更加倾向于对金属的模拟,而对于金属的模拟在效果制作中可视为模拟万物的“常用模板”。


在使用时,需要将WorkFlow Mode 选择为 Metallic,然后添加color 节点到 base color控制物体表面颜色;添加Float 节点到Metallic 控制物体对光线的反射强度;添加Float 节点到smoothness 控制物体表面的光滑度。以上三个节点均可以使用纹理贴图控制,还可以再添加法线贴图到Normal通道,切记法线贴图需要将Type 修改成Normal 才能进行正确的运算,否则显示效果会“超”预期。


图3.2.1 Metallic-Roughness工作流


2- Specular-Glossiness:特殊性工作流(尤其透明态/玻璃材质)

在本工作流中,此效果更加倾向于光线折射状态的表现,所以其表达状态更加倾向于对玻璃等透明态模拟。


在使用时,需要将WorkFlow Mode 选择为Specular,如果将Surface Type选项修改为Transparent属性,这样在Fragment面板会给予我们提供一个“Alpha属性值”,来让我们修改该材质的透明状态(尤其是制作玻璃效果的时候!),而此时的Specular Color可以使用Color来控制材质表达物体高光反射时的颜色,其他的都与金属材质相同。


图3.2.2 Specular-Glossiness工作流


那么就我们来一起体验一下玻璃材质的制作流程吧!

首先,玻璃代表着透明效果,那么我们将使用到Specular-Glossiness的工作流程

我们将使用到Alpha节点和BaseColor节点


图3.2.3 玻璃制作1


Alpha可以提供给我们想要模拟的玻璃的透明效果,而BaseColor则可以提供给我们想要的玻璃色彩(当然我们也可以通过贴图的接入,使得玻璃的表现更加出众)


~如此以上,就可以完成一个简易的玻璃效果了!


但透明的玻璃也有很多种状态,尤其是高光的反射和折射效果,这些效果从各个视角反过来都是不同表现。那么仅仅依靠这么一个Alpha属性节点肯定是不足以支撑效果实现了。


为简单实现以上预想。那么,我们可以在原有“简易玻璃的”的基础之上,对其光滑度进行控制;介入相机视角和视觉视角,让其发挥作用(点叉乘计算),来模拟还原预期的观察效果。


图3.2.4 玻璃制作2


3.3

贴图应用

贴图导入:我们可以直接将图片拖进去编辑界面中,直接连接其他节点进行效果制作。但法线贴图就需要将Type 修改成Normal 才能进行正确的运算。


图3.3.1 导入贴图


添加tiling 和offset:首先添加UV节点,右键控制界面,选择Create Node即可创建节点。输入UV,调出UV节点。


图3.3.2 创建UV节点


然后在属性面板点击加号,添加Vertor 2 的属性输入,分别命名为tiling 和offset,将tiling 与UV相乘,offset 与UV相加,如图3.3.4所示。


图3.3.3 添加Vertex 2属性


图3.3.4 编辑tiling 和offset


保存即可在场景中直接编辑材质的Tiling 和offset属性。


图3.3.5 在场景中编辑材质的Tiling 和offset属性


3.4

常用数字运算节点

Add:将输入的两个数值相加,输入的数值必须是相同的类型。


图3.4.1 颜色与贴图相加


Multiply:将两个输入值相乘,当输入的是两张贴图的时候,输出结果与PS的正片叠底相同。在项目中经常会将贴图与参数相乘,让参数起到控制贴图亮度/强度的作用。


图3.4.2 multiply节点的运用


Lerp (Linear Interpolate):线性插值,混合两个输入值(如颜色过渡、透明度渐变)。


图3.3.3 Lerp节点的运用


saturate:将输入值钳制在0到1的范围内。这在处理颜色值或其他需要限制在特定范围内的参数时非常有用。


图3.3.4 saturate 节点的运用



了解了基础的材质知识和节点知识以后,已经能够满足大部分基础材质的制作需求了。结合以上的知识点以及开发团队释放的可调参数,美术团队已经能够在项目开发中直接投入到Unity的美术效果调节了。


如果想了解更多关于Unity HMI 3D解决方案的信息,欢迎发送邮件至mkt@eptcom.com联系我们。



更多推荐

1. 小怿学习日记(七) | Unreal引擎灯光架构

2. 小怿学习日记(六) | 虚幻引擎VPA动画制作

3. 小怿学习日记(五)| 虚幻引擎UMG控件学习

【声明】内容源于网络
0
0
怿星科技
让智能汽车研发更高效!
内容 428
粉丝 0
怿星科技 让智能汽车研发更高效!
总阅读795
粉丝0
内容428