Shader实现瓶内液体效果
话不多说,先上图…
完整原码地址:
https://blog.csdn.net/ww1351646544/article/details/104917031
2022年02月07日补充:
https://download.csdn.net/download/ww1351646544/79578284
继说明和原码说明后仍有部分小伙伴不明白,可以此下载Demo进行参考。
需求:
1.液体效果可变色。
2.液体透明有折射效果。
3.适应各种容器形状。
4.随移动幅度进行抖动。
实现思路:
一、水平面的实现
这个是比较简单的,设定一定的高度,有超过此高度的则进行一个片原舍弃。但片元的高度的本地的坐标,真实对比的高度是世界坐标,因此这里需要有一个坐标的转换的操作。
设定一个值即当前点的裁剪的世界坐标高度,由外面的脚本传进来。
然后每个片元高度转成世界坐标与之对比,决定是否舍弃。
注意:要关掉背面片元裁剪,否则从上往下看时候,背面会不完整。
二、适应种容器
复制一个容器作为液体、把他缩小至比容器本身略小即可,用于放置这个液体Shader。
三、液体的左右抖动
以中心点的X值为基准,用当前点的X减去中心点的X可以得到一个距离(这个距离有正有负),这个距离用于影响问题一中的水平面高度。由外面传进来一个抖动的值(有正有负的)来影响这个抖动的幅度,正负用于控制抖动的方向,从而实现液体抖动的效果。
四、抖动的幅度计算(这部分用C#代码实现)
每次移动会把每帧的位置记录在lastPos中,并在数组中记录每一次的lastPos,再把当前位置赋给lastPos,直到lastPos等于当前位置,并置数组中有位置记录(这说明物体被移动过并移动完闭),这时算得数组中的所有记录平均值,可以得知这次移动的快慢,用于得到抖动的幅度。
浮动的左右摇摆用正弦波实现,幅度逐渐消弱。
核心代码:
//与中心点距离(_LevelOfWaterOffsetScale是有正负值的摆动比例)
float centerDistance = (worldPos.x -_LevelOfWaterX)*_LevelOfWaterOffsetScale;//波动值影响裁剪高度
float heightOffset = _LevelOfWaterY +centerDistance;//高于指定高度则裁剪
if(worldPos.y>heightOffset)clip(-1);
欢迎大家交流指正:QQ:262319244
希望能有更好的实现方式与我交流,同时征集液体水的实现思路,如下图:
Shader实现瓶内液体效果相关推荐
- Shader实现瓶内液体效果(原码)
继上一篇:Shader实现瓶内液体效果 https://blog.csdn.net/ww1351646544/article/details/98632525 私聊我同朋友还是不少,为了能和大家一起学 ...
- Unity Shader学习:Dissolve消融效果
Unity Shader学习:Dissolve消融效果 消融效果在游戏里非常常用,这里简单的实现下,代码里用到了if分支在shader里可能会费一点,如果想直接用puppet_master大佬版本的话 ...
- CSS如何实现内凹角效果 By 大漠
记得@Lea Verou的<CSS Secrets>一书和前几天@Chris Coyier刚发的帖子都介绍了CSS怎么实现元素斜切口的效果.我也尝试着借助Vue的能力,把这种效果构建成一个 ...
- Unity Shader 之 简单 护盾Shield 效果的实现
Unity Shader 之 简单 护盾Shield 效果的实现 目录 Unity Shader 之 简单 护盾Shield 效果的实现 一.简单介绍 二.实现原理
- Ae 内置效果控件(合集)
有关 Ae 内置效果控件的说明,Adobe 官网提供了较详细的文档.但,MediaTea 仍然对所有内置效果的说明进行了重新编撰,主要目的是: 1.更便于查询,尤其便于使用手机进行快速查询. 2.关键 ...
- CSS如何实现内凹角效果
特别声明:此篇文章内容来源于@ANA TUDOR翻译的<Scooped Corners in 2018>一文. 记得@Lea Verou的<CSS Secrets>一书和前几天 ...
- 网站关键词优化在短期内见到效果的方法
网站关键词优化可以让更多的用户快速查到网站关键词,进入网站从而达成交易,那么如何让网站关键词优化在短期内见到效果呢? 1.对网站进行调整 当我们接手一个缺乏优化网站时,首先要对网站进行一个检测,比如要 ...
- 液体效果,制作喷溅的液态裙子教程
牛奶裙子在很多广告中出现过,制作方法并不难.过程:首先按裙子的构造及层次,用钢笔工具分段抠出:然后简单的调色,并用滤镜做出液体效果:最后用喷溅素材融合到裙子边缘并处理好局部明暗即可. 最终效果 PSD ...
- html怎么设置凹陷效果,如何在css中实现圆角内凹效果
如何在css中实现圆角内凹效果 发布时间:2020-07-22 09:22:57 来源:亿速云 阅读:122 作者:Leah 这期内容当中小编将会给大家带来有关如何在css中实现圆角内凹效果,文章内容 ...
最新文章
- 《切入口web教学——使用firebug调试css代码》录制完成
- 邓俊辉数据结构学习-3-栈
- 如何在网页标题栏title加入icon图标?
- 无法访问此网站localhost 拒绝了我们的连接请求_官方教程丨如何在IPFS上创建托管个人网站?...
- 搭建完全分布式的hadoop
- Docker学习总结(63)——容器并不能解决一切问题
- screen乱码问题
- Eight Queens UVa 750
- Java连接mysql数据库的方式_java连接MySQL数据库的方式
- 西安后宰门小学_【云端论坛】走向未来的墙中老校 ——后宰门小学“名校+”教育集团云论坛精彩绽放...
- 神器 mimikatz - 直接抓取 Windows 明文密码
- 基于SpringBoot+Vue开发的一个知识社区分享平台
- latex与word之间的各种转化方法
- Python 数据可视化的 3 大步骤,你知道吗?
- brew对redis的使用
- 比较(==、equals、Comparable、Comparator)
- 聊天框 contenteditable 上传图片及贴图
- Python 随机生成双色球
- 淘宝引力魔方复制后怎么移除?有什么优势?
- ADC DAC时钟域杂散串扰