【Unity】ShaderGraph应用(模型膨胀流动)

这篇具有很好参考价值的文章主要介绍了【Unity】ShaderGraph应用(模型膨胀流动)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Unity】ShaderGraph应用(模型膨胀流动)

实现效果

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

ShaderGraph是 unity的图形化 Shader 编程工具。本文介绍使用ShaderGraph实现模型的膨胀流动效果。该效果可以由于模拟流体在管线中的流动等相关功能。

一、实现的方法

1.使用节点介绍

关键节点

UV:获取模型的uv坐标

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

Position:获取模型的顶点坐标

计算用节点

Add:加

Subtract:减

MultiPly:乘

Divide:除

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

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

其他节点

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

Split:分解

2.实现原理

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

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

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

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

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

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

3.实现步骤

  • 拉伸uv的x坐标
  • 截取膨胀范围
  • 转换Cos数值
  • 得到膨胀向量
  • 顶点位移
  • 贴图采样和膨胀高光
(1)拉伸uv的x坐标

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

变量

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

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

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

(2)截取膨胀范围

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

变量

  • Speed(float):Time变化速度

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

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

(3)转换Cos数值

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

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

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

(4)得到膨胀向量

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

变量:

R:控制膨胀的半径

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

(5)顶点位移

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

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

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

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

变量:

  • Textrue:主纹理

  • Color:叠加颜色

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

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

二、案例

1.案例介绍

完整的shaderGraph

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

变量面板

【Unity】ShaderGraph应用(模型膨胀流动),Unity,unity,游戏引擎

Loop:控制膨胀是周期内单个还是多个

2.案例的局限性

要实现完美的膨胀效果,在管线上要尽量布置多的横向节点,在大数量级上会导致顶点过多,影响性能。文章来源地址https://www.toymoban.com/news/detail-648664.html

到了这里,关于【Unity】ShaderGraph应用(模型膨胀流动)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(79)
  • 使用团结引擎开发Unity 3D射击游戏

           本案例是初级案例,意在引导想使用unity的初级开发者能较快的入门,体验unity开发的方便性和简易性能。       本次我们将使用团结引擎进行开发,帮助想体验团结引擎的入门开发者进行较快的环境熟悉。      本游戏是一个俯视角度的射击游戏。主角始终位于屏幕

    2024年01月19日
    浏览(78)
  • Unity、UE、Cocos游戏开发引擎的区别

    Unity、Unreal Engine(UE)和Cocos引擎是三个常用的游戏开发引擎,它们在功能和特性上有一些区别。以下是它们之间的主要区别: 编程语言:Unity使用C#作为主要的编程语言,开发者可以使用C#脚本进行游戏逻辑编写。Unreal Engine主要使用C++作为编程语言,但也支持蓝图系统,允许

    2024年02月22日
    浏览(66)
  • Unity vs Godot :哪个游戏引擎更适合你?

    游戏引擎的选择对开发过程和最终产品质量有着重大影响。近年来,Godot和Unity这两款引擎受到广泛关注。本文将从多个维度对两者进行比较,以期为开发者提供正确的选择建议。 Godot和Unity都有各自的优势,没有绝对的好坏之分。Godot开源免费,上手简单,更适合2D和小型游戏

    2024年01月23日
    浏览(98)
  • 30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长

    2024年02月11日
    浏览(74)
  • Unity Physics2D 2d物理引擎游戏 笔记

    2d 材质 里面可以设置 摩擦力 和 弹力 Simulated:是否在当前的物理环境中模拟,取消勾选该框类似于Disable Rigidbody,但使用这个参数更加高效,因为Disable会销毁内部产生的GameObject,而取消勾选Simulated只是禁用。 Kinematic 动力学刚体 动力学刚体不受重力和力的影响,而受用户的

    2023年04月24日
    浏览(124)
  • Unity和UE4两大游戏引擎,你该如何选择?

    目录 游戏引擎 2 —— 难易区别 编程语言 3 —— 游戏产品 UE4制作的游戏产品  Unity制作的游戏产品  产品类型 5 —— 资源商店 6 —— 人才需求 平均薪资 总结      Unity和UE4都是游戏引擎,所谓游戏引擎就是集成了复杂功能的游戏开发软件,他们帮我们实现了复杂的底层逻

    2023年04月08日
    浏览(73)
  • GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议

    GODOT,是一个免费开源的3D引擎。本文以unity作对比,简述两者区别和选型建议。由于是很久以前写的ppt,技术原因视频和部分章节丢失了。建议当做业务参考。 GODOT目前为止遇到3个比较重大的机遇,第一个是oprea的合作奖,第二个是用支持c#换来的微软的投资,第三个是虚幻

    2024年02月14日
    浏览(88)
  • Unity 开发人员转CGE(castle Game engine)城堡游戏引擎指导手册

    一、简介 2. Unity相当于什么GameObject? 3. 如何设计一个由多种资产、生物等组成的关卡? 4. 在哪里放置特定角色的代码(例如生物、物品)?Unity 中“向 GameObject 添加 MonoBehaviour”相当于什么? 5.Unity子目录相当于什么Assets? 6. 支持哪些模型格式? 7. 支持FBX模型格式吗? 8.

    2024年02月07日
    浏览(79)
  • Unity之ShaderGraph入门

    随着Unity版本的不断升级,URP(可编程渲染管线)也越来越普及了。不管是从效果还是性能,都是吊打老版的build-in-shader。所以无论如何我们都要开始 拥抱URP,升级Unity的时候到了。 我这里选择了Unity 2021.3.23f1版本,大家只要选的是Unity2019-2021之间的版本都可以。 我们可以使

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包