Unity Shader Graph 3D 实例 - 一个简单的3D打印效果


目录

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

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

[设置Surface Type为透明](#设置Surface Type为透明)

基础渲染贴图节点

拆解Y轴坐标节点

增加基于时间的循环

创建带打印边的节点

给打印边带加颜色

叠加打印条效果到原模型

最终效果展示


前言

在Unity Shader Graph中,创建一个3D打印效果可以模拟物体从底部逐渐构建的过程,通过利用物体的坐标和Shader Graph中的各种节点,如Step节点,我们可以实现层层叠加的打印效果。本篇博客将介绍如何使用Shader Graph实现这一效果,结合物体的局部坐标和动态控制,打造一个模拟3D打印的视觉效果,帮助开发者掌握在Shader中处理动态层次和位置的技巧。


创建一个Shader Graph文件

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

创建两个对应的材质球命名为M_Print和M_PrintEye,使用Print的Shader Graph文件。


构造Shader Graph节点

设置Surface Type为透明

打印效果是一个由无到有的过程,因此需要用到Alpha透明通道,所以需要将渲染的模式设置为Transparent。

基础渲染贴图节点

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

拆解Y轴坐标节点

打印是基于Y轴的,从下往上,因此需要用到游戏物体的Y轴值,用Position节点并设置其空间坐标为Object即游戏物体本身,然后用Split节点拆分X、Y、Z的值,获取Y轴的值。

增加基于时间的循环

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

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

创建带打印边的节点

将Y轴的值作为Edge输入到Step节点里,然后将Remap后的值给到In,这样就会基于Y轴去做遮罩渲染,并将这个输出连接到Fragment节点的Alpha值上。同时将Remap的值减去一个Float类型的PrintHeight变量,用来制作打印的边条效果。减去后的值再连接到另一个Step节点的In值,并将Y轴的值连接到这个Step的Edge获取到减去边条宽度的数据。

将基础的Step输出值用Subtract节点减去(减法节点)减去宽度的Step输出值,就获得了该宽度的值。

给打印边带加颜色

用减去之后的边带数据乘以一个颜色变量命名为PrintColor,设置为HDR,用来增加科技感。

叠加打印条效果到原模型

将有颜色的边带使用Add节点叠加到原模型贴图的采样数据上,最后连接到Base Color节点。


最终效果展示

将两个材质球分别给到模型的身体和眼睛,然后可以在场景里看到最终的效果,如下所示。
蓝色打印
橘色打印
绿色打印,慢速,打印边带调宽

相关推荐
探求虚无15 小时前
用 AI 在 Unity 里做一款 RTS:最难的不是生成代码,而是证明它真的能玩
人工智能·unity·游戏引擎
时间的情敌18 小时前
Cesium 建筑单体化、3DTiles 分类、楼层显隐、分户高亮(BIM + 倾斜孪生高频)
前端·3d·cesium
17岁的勇气2 天前
Unity Shader unity文档学习笔记(二十二):shader变体
笔记·学习·unity
加搜科技观察2 天前
哪个品牌 3D 相机好用?工业 3D 相机品牌选型评估指南
数码相机·3d
寂寞的船3 天前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
Martina_03213 天前
AI生成3D场景的霓虹灯一开就糊成光团?用6步检查Emissive、Bloom与曝光
人工智能·3d·ai·自然语言处理·游戏引擎·材质·贴图
Martina_03214 天前
AI生成3D场景从白模换成精模后镜头全偏了?用6步检查单位、枢轴与层级替换
图像处理·人工智能·3d·ai·自然语言处理·材质·1024程序员节
寂寞的船5 天前
【Unity知识速递】第8期 IL2CPP 托管堆内存碎片与原生堆交互机制深度解析
unity·游戏引擎·交互
时间的情敌5 天前
Cesium 加载 3D Tiles 倾斜摄影、压平、样式设置(Vue3 实战)
vue.js·3d·cesium
寂寞的船5 天前
【Unity知识速递】第5期 Unity 6.2 深度解析:AI Assistant 登场,World Space UI 与 Sentis 全面升级
人工智能·ui·unity