Unity如何做流体物理的几个轮子

发布时间:2022-01-05 14:25:19 作者:小新
来源:亿速云 阅读:208

小编给大家分享一下Unity如何做流体物理的几个轮子,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Unity如何做流体物理的几个轮子

内部实现就是Liquidfun

Unity如何做流体物理的几个轮子

也提供了metaball实现(虽然2D的metaball实在没啥可说的)

Unity如何做流体物理的几个轮子
half4 frag (v2f i) : COLOR  {      half4 texcol,finalColor;      finalColor = tex2D (_MainTex, i.uv);
   if(finalColor.a < _botmcut)    {      finalColor.a = 0;    }    else    {      finalColor.a *= _constant;    }                      return finalColor;  }

原理就是按透明度阈值discard掉阈值外的像素,圆片的实际范围会比显示的多探一部分出去,两个圆片探出来的部分叠在一起,透明度就会超过阈值变得能够显示,看起来两个水滴就会粘连在一起了,而不是相互独立的圆。

Unity如何做流体物理的几个轮子

但是3D水不能只考虑密度,还要考虑法线。且3D空间里密度也不能简单Blend实现叠加,3D空间同时也会因为纹理的大小限制而不能像2D空间这么铺张浪费,导致算法变得完全不同。2D水渲染是看起来复杂实际上很简单的例子,而3D水渲染恐怕就是看起来复杂实际上更复杂的例子了。

Unity如何做流体物理的几个轮子

不过令我比较意外的是,Liquidfun里面大部分示例都没有用metaball技术,而是直接用AlphaBlend将全部粒子绘制上去的。它使用了大小接近像素的粒子,然后根据物理计算出来的流体密度来直接给粒子着色(水面和泡沫密度低所以是白色的,水底密度高所以是深色的),已经可以得到足够理想的结果。

Unity如何做流体物理的几个轮子

仔细想想和metaball根据透明度重映射差不多,它只是把累计密度的部分直接放到了物理上处理,然后往屏幕上直接画点罢了。

它最后的这个weight演示能充分体现出其着色原理。

Unity如何做流体物理的几个轮子


以上是“Unity如何做流体物理的几个轮子”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. 【unity实用技能】List<T>类几个常用的
  2. [unity3d]unity中几个系统自带的函数的执行顺序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

unity

上一篇:Java JVM常见面试题有哪些

下一篇:Http请求头中Referer的含义和作用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》