浅谈Unity之ShaderGraph-模型膨胀流动

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: Unity之ShaderGraph-模型膨胀流动

前言:每日记录自己学习unity的心得和体会,小弟才疏学浅,如有错误的地方,欢迎大佬们指正,感谢~

图片.png

一、实现的方法

1.使用节点介绍

关键节点


UV:获取模型的uv坐标


Normal Vector:获取模型的法线坐标


Position:获取模型的顶点坐标


计算用节点


Add:加


Subtract:减


MultiPly:乘


Divide:除


Truncate: 取整(直接取小数点前整数部分)


Cosine:cos(输入值弧度,输出值-1到1)


其他节点


Clamp:输入值截取到最大值和最小值


Split:分解


2.实现原理


可以Cos在弧度0到2 π \piπ上的分布是一个平滑凹型曲线。利用这个特征,可以将uv x轴(或者y轴)0到1的变化拉抻成0到2π \piπ,通过cos函数的变化,得到该uv位置是cos曲线数值。


图片.png


如上图,模型顶点圈对应是数值垂直分布在x轴的某个数值上,通过计算uv X轴上的值,可以计算该圈的变形数值。


图片.png


如上图,是模型的顶点法线图,每个顶点的法线都是指向模型膨胀的方向,uv的Cos数值乘上法线就可以得到顶点的膨胀向量。


3.实现步骤

拉伸uv的x坐标

截取膨胀范围

转换Cos数值

得到膨胀向量

顶点位移

贴图采样和膨胀高光

(1)拉伸uv的x坐标


图片.png

UVxLong(float):UVxLong的长度的倍数,考虑到uv x轴上的分布有可能不是0到1的,如果uv的x轴的长度是2,UVxLong就是2。用于适应不同长度的uv。


Times(float):变化的周期数。


目的:将UV的x轴除去UVxLong标准化uv,x轴乘上2 π 2\pi2π(这里没有找到π \piπ的节点,用6.28代替)


(2)截取膨胀范围

图片.png

Speed(float):Time变化速度

目的:当变化周期大于1时,只让模型上只存在一个膨胀节点。上图使用Clamp截取,截取的范围是0到6.28。


图中Times的作用是给拉伸后的uv累加值,考虑到uv的值会大于周期的最大值,导致无法截取有效范围,故将最大值减当前周期长度,实现循环清零。


(3)转换Cos数值


图片.png

目的:得到一个完整的凸起(凹陷)数值,为法线提供模长做为依据。




(4)得到膨胀向量


图片.png

变量:


R:控制膨胀的半径


目的:将法线乘上膨胀的半径,再乘上cos转换后的数值,这里cos转换后的数值是负值,得到的向量和法线是相反的。


(5)顶点位移



目的:由于膨胀向量是反方向,把顶点坐标减去反方向的向量,负负得正,求出顶点坐标。(注意这里的顶点坐标是自身坐标系)


(6)贴图采样和膨胀高光



变量:


Textrue:主纹理


Color:叠加颜色


目的:这里将2减去cos数值,得到一个正的变化曲线,乘上采样叠加颜色的值,可以使凸起部分的高光。




二、案例

1.案例介绍

完整的shaderGraph



变量面板



相关文章
|
编解码 图形学
浅谈Unity之ShaderGraph学习笔记-03
每日记录自己学习unity的心得和体会
|
图形学
浅谈Unity之ShaderGraph-等高线和高程渐变设色
ShaderGraph实现等高线和高程渐变设色
|
5月前
|
图形学
【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例(下)
【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例
112 0
|
5月前
|
数据可视化 图形学 开发者
【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例(上)
【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例
501 1
|
5月前
|
存储 图形学
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
98 0
|
5月前
|
图形学
初识Unity——基本模型、场景操作、世界坐标系和局部坐标系
初识Unity——基本模型、场景操作、世界坐标系和局部坐标系
146 1
|
关系型数据库 图形学
浅谈Unity之ShaderGraph学习笔记-05
每日记录自己学习unity的心得和体会
|
图形学
浅谈Unity之ShaderGraph学习笔记-04
每日记录自己学习unity的心得和体会
|
图形学
浅谈Unity之ShaderGraph学习笔记-02
每日记录自己学习unity的心得和体会
|
图形学
浅谈Unity之ShaderGraph学习笔记-01
每日记录自己学习unity的心得和体会

热门文章

最新文章