Unity Shader Graph 3D 实例 - 一个简单的红外线扫描全身效果


目录

[创建一个Shader Graph文件](#创建一个Shader Graph文件)

[构造Shader Graph节点](#构造Shader Graph节点)

基础渲染贴图节点

拆分Z轴坐标节点

增加基于时间的循环

制作扫描的条形效果

增加条形效果的颜色

叠加条形效果到原模型上

最终展示效果


前言

在Unity Shader Graph中,实现红外线扫描效果可以为游戏增添独特的视觉效果,模拟类似红外探测器扫描物体的效果。通过结合物体坐标和Shader Graph的强大功能,我们可以创建一个动态的扫描条,从模型的某一位置扫描至另一位置,模拟红外线的扫描过程。本篇博客将介绍如何利用Shader Graph实现这一效果,教你如何通过节点系统控制扫描线的移动及其与物体位置的关系,帮助你打造炫酷的红外扫描效果。


创建一个Shader Graph文件

在Project视图里点击鼠标右键,选择Shader Graph/URP/Lit Shader Graph,创建第一个Shader Graph文件,命名为Scan。

创建两个对应的材质球命名为M_Scan和M_ScanEye,使用Scan的Shader Graph文件。


构造Shader Graph节点

基础渲染贴图节点

声明一个Texture2D的贴图变量命名为MainTex,将其数据进行采样(Sample Texture 2D)处理转化为在Shader Graph中可以操作的数据。

拆分Z轴坐标节点

扫描效果我们希望是从前往后的,所以它的坐标轴会用到的是Z轴,因此我们可以用Position节点进行拆分,获取它的Z值(对应B的值),当然还是基于游戏物体的空间坐标系。

增加基于时间的循环

创建一个Time时间节点,并将其乘以一个Float类型的变量命名为ScanSpeed,用来控制扫描的速度。然后在其乘法的结果进行一个Fraction处理,获得小数点后的值,即该结果会一直循环从0到1,这样我们就能看到扫描一直进行的效果。

将Fraction之后的数据结果用Remap节点重新对应下,即将输入的值按照输入的最小最大值对应映射到输出的最大最小值,原因还是因为坐标轴存在正负,这样才能从前往后的去做扫描效果。

将Remap之后的值加到Z轴的值上,这样Z的值就会随着时间开始从模型最前到最后往复循环。

制作扫描的条形效果

当有了基于模型Z轴从前往后往复循环的数据之后,我们只需要将输出的值做一个Step节点的筛选(类似漏斗效果,当In输入的值比Edge小则为1显示为白色,大于Edge则为黑色),分别连接两个,一个的In值保持为0,另一个In值用一个Float型的变量命名为ScanWidth控制条形的宽度。那么增加了宽度的就会获得更多的白色部分,多的白色部分即为条形的宽度,减去另一个Step节点的值就可以获得一个宽度为ScanWidth的条形效果。

增加条形效果的颜色

将获得的条形效果数据与一个Color型变量命名为ScanColor相乘,即可获得带颜色的条形效果,将颜色设置为HDR。

叠加条形效果到原模型上

最后使用Add节点,将条形效果叠加到原始的贴图采样数据上,就可以获得条形扫描效果了。

然后在材质球上调整一下参数,如下。


最终展示效果

多角度展示红外线扫描效果。
45度角
侧面

正面

相关推荐
AI视觉网奇10 小时前
虚幻引擎 metahuman
游戏引擎·虚幻
Avicli14 小时前
Gemini3 生成的基于手势控制3D粒子圣诞树
前端·javascript·3d
二狗哈14 小时前
Cesium快速入门15:图元Primitive创建图像物体
开发语言·javascript·3d·webgl·cesium·地图可视化
技术探讨者15 小时前
Unity 框架:从核心构成到实践应用的全面解析
unity·游戏引擎
zl_vslam15 小时前
SLAM中的非线性优-3D图优化之相对位姿Between Factor右扰动(八)
人工智能·算法·计算机视觉·3d
牛掰是怎么形成的15 小时前
Unity Legacy动画与骨骼动画的本质区别
unity·游戏引擎
weixin_4583609115 小时前
Unity使用Cursor Editor
unity
萘柰奈15 小时前
Unity学习--2D动画--[序列帧动画]2D序列帧动画
学习·unity·游戏引擎
EQ-雪梨蛋花汤15 小时前
【Unity笔记】Unity 模型渲染优化:从 Batching 到 GI 设置的完整指南
笔记·unity·游戏引擎