Realflow-2013-中文融化教程详解[终极篇] - 图文(4)

2019-08-30 19:33

下图是一个简单的测试,在球上随即取一个粒子点,然后不断获取周围粒子并直接杀死,产生破裂效果。

如果保留杀死的粒子,那就是一种融化

操作:

1.根据id找出一个粒子

2.使用neighbor函数搜索这个粒子半径内粒子

3.这个半径值设置为全局属性,甚至是从某一个null上来获取,可以方便key帧

4.注意,只有同一个发射器或者发射器之间有关联,才能获取相邻粒子数 Bouns:使用这个属性还会有助于你制作一个合理的温度场。因为这也可以看做是一种定义流体边界的方法。 温度就是从外部像内部传递的。

3.3.3流体边界粒子

如何定义流体外部粒子,这很重要。因为融化就是一个典型的由表及里的过程,如果你定义好流体边界粒子,就可以非常容易做出融化。

真实做流体计算时有标记(Maker)粒子和水平集方法。像naiad中有boundary结点可以直接获取到边界层。

因此如果你要做融化,最关键的就是找好边界粒子。下面主要是realflow中的方法。

粒子法线Normal()

法线概念。就是粒子指向流体外部朝向。

越是流体内部的粒子法线值越小。最外部的比较大。如果能找到合适的法线值,典型的融化效果是很好看的。

它的缺点,就是不好缺点法线值。不同resolution值不一样,不同帧不一样。它应该是一个动态的值。 这需要费一点功夫去测试。

判断粒子的法线值,如果大于一定值就让它转移。这是比较方便也比较真实的一种条件。因为真实的融化就是那种一层层脱落感觉。

但如何在realflow中获取适当的法线值是一件不那么方便的事。

下图是使用默认cross模型,填充粒子。模拟到17帧,并且差不多条件融化到相近效果的 Normal值对比。

我没有找到什么规律,下在只是一些经验值。唯一可以确定的是,只要resolution一样,粒子最大normal值是一样的。所以你确认好一个resolution就不要随意更改了。

Resolution:1 <==> Normal:1.3 (这是测试值) Resolution:5 <==> Normal:0.75(稍微高一点的测试)

Resolution:10 <==> Normal:0.6(大部分效果有这个精度就差不多行了) Resolution:100 <==> Normal:0.28(比较高的精度了,对融化来讲粒子数这么多足够了。再多也没有视觉意义)

Bouns:

为了找出合适的Normal值。我写了一个小脚本,帮助自己就是找出粒子最大法线值,然后乘以0.678。差不多就是所需要的值。

上面脚本功能很简单,就是可以找出合适的Normal值。在测试融化前,只要运行一次就可以了,目的就是为了找出一个值。 当然你也可以利用脚本,自动给filter赋予值。 脚本思路:

1.遍历粒子,获取粒子的normal,然后取模,得到normal法线长度 2.把这个长度加到一个列表中,然后计算出最大的长度。 也就是处理最表面粒子的法线值。

最后我把这个最大值,乘以0.678差不多就是我需要的融化normal值了。 下面脚本,我加了一个null.position条件。这是为了速度考虑,因为只要搜集最表面的粒子就可以了。并不是搜集的粒子越多越好。

maxSample是为了限制列表的长度。同样也是为了计算速度考虑。 注意:最后得到值也只是一个参考数值,具体是多少还是需要自己测试


Realflow-2013-中文融化教程详解[终极篇] - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016-2021年车辆检修市场前景预测及投资规划分析报告(目录)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: