RealFlow教程之破裂的肥皂泡
- 格式:pdf
- 大小:687.18 KB
- 文档页数:10
雨点打湿贴图也许你曾问过自己,怎样模拟雨点滴落在路面打湿的效果呢?下雨的时候,我们会在人行道或路面上看到有一些“暗点”。
随着雨越下越大,这些点变得越来越多,直到覆盖满整个路面,变潮湿。
这个简短的教程使用一个非常简单却很有效的方法。
你会学习到怎样来制作这个雨点打湿的效果。
“雨点打湿贴图”是一个很小的效果,ReaFlow没有直接提供。
但几乎所有三维软件都可以制作此效果。
只要有一个基本的粒子系统——没什么特别或是复杂的。
使用这个本文方法,你可以在很短时间内创建一个真实可信的动态雨点打湿贴图。
下面这张图片能让来看到最终效果是什么样子。
整个动画大概有10秒。
渲染时还包括了地面贴图但大概只渲染了8~10分钟。
雨点贴图加到了漫反射通道(diffuse channel)混合起来效果更真实。
一、怎样制作下雨效果在这个短短的教程中,我们不是在能模拟物理真实的RealFlow中制作。
这次,我们想要一个非常快速的方法,来模拟雨点痕迹的效果。
为此,我们在三维软件来制作。
这个效果也可以在RealFlow中制作,但不是明智的选择。
(译者注:其实工作时,非常多时候不是要你能做的多好多精致,而是要快速简单的做出任务需求)现在几乎所有的三维软件都提供了一个简单的粒子系统(particle system):包含发射器(emitter),几种反应器(reflector)或是碰撞面(collision plane)。
这些我们案例中都要用到。
在这个例子中,使用的是Cinema 4D,但原理对其它任何软件来说都是一样的,下面几乎是脱离平台进行讲解的。
(其它软件像,Maya,Max,Houdini等等,都提供了同样功能的粒子系统。
).二、设置我们的场景只需要一个发射器,一个发射源对像,一个碰撞平面,两种材质和一个摄像机。
一些软件可能需要重力(Gravity)来让粒子下落。
发射器不应太小,它可以是任何形状,但这里我们使用矩形发射器,使用500cm*500cm.(这只是参考,具体多大自己决定)。
Realflow 4物体溶合变形综合实例教程 原作:Next Limit 编译:赵耀翻译教程:RealFlow 4物体溶合变形综合实例教程原作:Next Limit编译:赵 耀教程出处源自Next Limt 官方网站 (该教程原始文档属性中显示作者名称为Bea)。
此教程通过一个简单的方法带领大家制作出令人信服的“液态金属人”效果。
作者在教程中讲述了使用RealFlow4制作流体动画运算的规范操作和步骤,以及针对控制流体的运动效果和网格模型的细节表现作了非常详细地讲解。
基于国内很多学习使用RF4软件的朋友,对于软件本身的一些常用参数存在概念混淆和困惑,故本人翻译此教程,希望对学习使用RF4的朋友们有所帮助。
In this tutorial we will simulate a fluid that changes its shape to form a face, a kind of "Terminator mercury effect".在这篇教程里我们会模拟出一种使流体的形状逐渐形成一个人的头部,像“终结者里的液态金属人”一样的效果。
Video: render.mov参考视频:render.movWHAT DO WE NEED?我们需要些什么?First of all, we need an object to render with UV coordinates and a proxy object that has fewer polygons but still has UV coordinates. In this case, we've chosen a head.首先,我们需要一个展好UV并可以准备渲染的高精度模型,和一个同样要展好UV但却是低精度的模型。
在这个范例里,我们使用一个头部模型。
Original model: 3152 faces原始模型:3152个面。
小蜘蛛长的很难看,八条腿,还有六只眼睛,皮肤灰灰的,上面还有细长的毛毛。
在这个草丛里,大家都看不起它。
就连它自己也觉得自己太丑了。
它不敢跟有着红色黑点外套漂亮的瓢虫小姐,还有会唱歌的纺织娘小姐一起玩。
就连和毛毛虫一起,也不敢,至少人家以后会变成好看的蝴蝶呢,自己会变成什么呢?,还是丑陋的八脚小怪物。
小蜘蛛,只能偷偷的的躲在角落里织网,一圈又一圈。
因为小蜘蛛这么长时间练习和它那种坚韧的精神,它的网到是织的很漂亮。
整整齐齐,又细又有弹性,还能很容易就粘到很多像蚊子,苍蝇这样的坏家伙。
虽然小蜘蛛的网织的已经这么好了,可从来没人夸奖过它,它得到的只有嘲笑。
一天早上小蜘蛛,又向往常一样,看自己织好的网。
哇,上面挂了好多露珠,晶晶亮,好漂亮。
小蜘蛛心想,赶紧把收起来吧,不然太阳出来,露珠就飞走了。
嘿,到了晚上,在阴凉处的露珠真的还在。
小蜘蛛小心的碰了碰,叮的,弹一下。
没有掉下去。
原来经过一天的时间,没有晒到太阳的露珠,已经变成真的珍珠一样的东西,永远不会飞走了。
小蜘蛛可高兴了,它想这要是戴在身上多好看啊!它小心的拿了一串挂在自己身上,真的很好看。
可小蜘蛛想,这么好看的东西戴在我身上真是可惜了。
对,送给瓢虫小姐和纺织娘小姐她们吧。
两们小姐,收到这个礼物后,可高兴了。
还抱着小蜘蛛亲了一下,小蜘蛛也很开心。
可是,啊呀,因为一共就做了三串,两串给了,瓢虫小姐和纺织娘小姐,还有一串不小心被自己弄丢了。
毛毛虫就没有了。
小蜘蛛答应了毛毛虫,一定会在它变成好看的蝴蝶时,把那一串做好的。
恩,学习了下面内容,你就可以帮助小蜘蛛喽!路径转换(Path Converter)器这个免费的工具,可以把一个模型的动画路径转换成序列粒子。
你可以把粒子调·节成稠密的或稀疏的在这路径上。
粒子路径就是物体运动轨迹。
另一个应用是模拟生长效果,例如根的生长。
当然,路径转换器,需要动画路径,但不管这路径是在RealFlow或其它三维软件创建都是可以的。
肥皂泡的科学原理肥皂泡是一种看似简单的东西,但却蕴含着复杂的科学原理。
它由水、肥皂和空气回路组成,是一种典型的半透明、球形的薄膜,能够在光线的照射下呈现出华丽的颜色和光影变幻。
在科学界,肥皂泡经常被用来研究液体表面张力、色彩、光学以及物理化学等方面的问题。
下面,我将为大家详细介绍肥皂泡的科学原理。
一、液体表面张力与肥皂泡的形成肥皂泡的形成离不开液体表面张力的作用。
液体表面张力是液面上每个分子所受到的分子间作用力之和,也是液体表面趋向于缩小的原因。
液体分子在表面上的作用力比分子在内部的作用力要大,因此液体表面会收缩,形成最小表面积。
当我们在水中加入肥皂时,肥皂分子会与水分子发生作用。
肥皂分子的两端分别是疏水性和亲水性的,它们可以与空气形成界面,也可以与水形成界面。
在水中,肥皂分子会形成一个类似于球形的结构,疏水端朝外,亲水端朝内。
这个结构可以降低水分子在表面上的作用力,从而打破了表面张力。
这就是为什么加入肥皂后,液体表面张力会变小,使得液体表面能够伸展开来形成肥皂泡。
二、肥皂泡的形态与稳定性肥皂泡形态的稳定性受到多个因素的影响,包括表面张力、液体粘度、气体压力、重力、周围环境的温度和湿度等等。
受欧拉-李普希兹方程的限制,肥皂泡总是倾向于呈现出最小表面积的球形。
当我们吹气进入肥皂液中时,液体表面张力使得气泡成为一个球形。
如果空气压力较大,则气泡将变得更小;相反,如果空气压力较小,则气泡将变得更大。
肥皂泡的稳定性来自于它的薄膜结构。
肥皂膜是一个由肥皂分子和水分子交织在一起形成的两层结构。
在肥皂泡形成的过程中,肥皂分子以疏水端向外,亲水端向内的方式排列组成了一个二维的层状结构。
这个结构形成了一个较为稳定的薄膜,但是却很薄,通常不超过几个纳米。
三、肥皂泡的颜色和光学特性肥皂泡的颜色和光学特性是由光线的干涉和反射所造成的。
当白光照射在肥皂泡上时,部分光线会反射和折射穿过薄膜,然后在泡壳的内部反射。
经过多次反射后,光线的相位发生变化,而不同颜色的光线波长受干涉影响的程度不同,我们看到了不同的颜色。
RealFlow 执行五种粒子状态。
Dumb暗哑的, Fluid流体, Gas气体, Elastics弹性 and Custom自定义.依据不同的类型选择,每 个行为都有不同的属性。
并不是所有的类型都使用同一种方法交互Dumb这种粒子彼此间不进行交互,因糨他们不能创建体积。
RF 能管理巨大的 dumb 粒子.粒子间没有影响,最大子步能被减小加速模拟 Dumb 粒子不被其它粒子系统影响,但它们能与物体交互体,能影响其它类型的粒子,比如流体与气体。
FluidRealFlow's "liquid" 类型表现一种真实,不可压缩的流体。
每个粒子表与一全流体的元素。
(数量取决于体积大小) 。
能够精确表现流体的动力学属性。
Gas此种粒子,与流体粒子共享一些属性。
但行为表现不一样。
. 一个 gas 会尽力向外膨胀,直至丢失所有能力。
当使用外部压力时,会心力向外肿胀,直到内外部压力一样。
gas还可以共享其它物体或气体的热量。
Temperature: 粒子温度,是300K.温度被链结到压力上,高温会造成更高的压力。
.Heat capacity: 热量。
这个参数控制在流体内粒子间热传播的速度。
它就象固体的传热率。
Ext. temperature: 外部静态环境温度。
.如果它低于内部温度,粒子将趋向于冷。
External capacity: 粒子传播热量就依据这个值。
如果为0,那么热量就不传播。
Maximum number of particles: 当前粒子最大粒子数。
. Elastics这种类型使用一种弹性质量系统。
, 创建一个弹性结构。
这个结木色可以使用物体顶点作为粒子。
并总会在重压后试着复员。
弹黄也能被设置为断开或丢失它们原来的属性。
ustom自定义类型由一个脚本定义。
Resolution: [缺省情况下 1.0=1000 粒子每立方米。
Density: 每立方米的密度。
缺省为水、Affect: 影响。
Realflow 2013 中文融化教程详解[第一篇]直线网转载vfxinfo序章:五分钟设置一个金属人头融化(本篇文章最终效果)人头融化对本系列文章来说,这仅是一个开始。
看下图,是所有我要表达与融化相关的东西(这是金属人头融化视频,换了不同材质渲染)本教程特色:1融化相关所有操作都在realflow里完成。
(包括上图,是由realflow内置渲染器“渲染”的)2.总计用了不到10个结点(包括地面,相机结点。
)3.不需要任何Python脚本4.更不需要使用Graph结点图辅助因此,如标题,设置一个这样的效果只要5分钟。
只要你会realflow基本操作,就肯定能快速做出类似效果。
对这样的融化效果,总共有这四大步。
下面主要讲解的是第二步,如何填充模拟粒子动态。
以及一些融化细节注意点。
第一步:准备素材1.准备一个需要融化的模型。
甚至只用realflow内置的球啊,立方体都可以。
如果是自己模型,可以导出成SD,或abc.obj等等都可以。
大部分情况建议使用简模,因为越少的面,计算越快。
不过这个案例,就算你使用很高的面数,对最终解算速度也没有任何影响。
注意:这里因为要模拟的是一个金属融化效果,所以下面参数是往,比较粘稠的方向调整。
当然所有参数都不是固定的,只供参考。
2.把模型导入到realflow中。
(这里使用的是realflow2013,对制作效果来说。
版本没有太大关系,只是别的版本没有内置渲染器。
还有结点关联方式不同。
)第二步:建立必要结点3.建立两个发射器,两个辅助器和一个地面。
(相机是随模型导入进来的)。
ParticleMesh结点可以等粒子模拟好再加所有节点如下图第三步:设置各结点属性4.填充模型使用粒子填充发射器Fill_Object。
这个发射器下面也会称为源发射器在结点面板下选择你的模型,然后点击Fill Volume为Yes。
这样就会看到模型填充好了粒子。
如果你觉得粒子数不够。
可以加大Resolution值。
波波是出生在海里的,他不是鱼,也不是海藻,更不是贝壳。
她是个小波浪,她是小女生哦。
她的样子不固定,一会温柔平静的像小绵羊,一会疯狂怒吼的像大老虎。
虽然她会变成不同的样子,可她还是叫波波。
我们知道波波虽然没有脚,但她可厉害了,能到很远很远的地方,甚至还能从南极到北极呢。
波波其实不喜欢自己凶的像大老虎,这样看起来一点不淑女,是没人喜欢的。
波波很喜欢天上的云弟弟,因为云弟弟经常在天上变成各种好玩的样子,有一回云弟弟,还把自己变成狼外婆,然后把帽子当鞋子穿,走路一扭一扭的,可好玩了。
波波总会被云弟弟滑稽的样子逗的咯咯笑。
不过波波还是最喜欢云弟弟变成小雨点下来看她,一滴一滴落在波波的身上,然后波波就会变出一圈圈好看的波纹。
小雨点落在波波身上时,是会奏出好听的曲子的,波波还能根据曲子的节奏听出云弟弟今天有没有不高兴,有时候还会听出明天云弟弟要讲什么故事呢。
这个小秘密波波一直没告诉过云弟弟。
波波有个愿望,就是能飞到天上去亲亲云弟弟。
但一直没能实现。
(有人能帮助我们可爱的波波吗?看了下面教程说不定你能哦)波峰浪花这种典型的浪花形成需要适当天气和环境条件。
汹涌的或细碎的波浪,在暴风雨时很常见,海岸附近也有。
汹涌或细碎可看成是波浪的缩放,造成的差异。
本质上是一样的。
特别是RealFlow 4用户会在这一课获益,因为默认模拟波浪。
用RealFlow5或RealFlow2012有点不同,这些高版本支持被称为“Tessendorff波”的统计频谱波浪(statistical spectrum wave)的模拟。
这高度逼真的模型提供了一个函数来创建和调整波浪,与或多或少尖锐的波峰。
这些频率波(spectrum wave)会使结果更逼真,想快速完成波浪制作用这方法不错另一种方法是在自由Python脚本帮助下从其它资源导入置换贴图,但这个方法有两个很不好的缺点:1.你需要用外部资源来创建波浪的外形(capable)2.在大部分情况下RealFlow插入波浪,会再一次导致成波浪尖端是圆形示例视频是尖锐的波浪和其它形态的组合。
发射器通用属性介绍:Resolution:分辨率,这里可以理解为单位时间内例子发射的数量,这个值越高,流体效果就会越好,但要考虑到硬件的支持性能适当调节。
Density:流体密度,密度越高流体的速度就会越慢,越沉重。
Int pressure:内部压力,这个数值会影响两组相近的粒子,这个数值为0时就会取消流体和气体的运动。
越大越散Ext pressure外部压力,这个数值会对所有粒子产生影响,并使粒子保持一种紧缩的状态防止其扩散。
越大越散Viscosity:黏度,像水这样的粒子黏度值比较低大概1-4之间,蜂蜜或石油这类的粒子就会比较高一点大概5-8之间。
Surtace tension:表面张力,表面的扩张Interpolation:插值Max particles:粒子的最大数量,当前发射器粒子总量。
基础发射器:分为6种外形,circle圆形发射器、square方形发射器、sphere圆球发射器、linear线性发射器、triangle三角形发射器、cylinder圆柱形发射器。
他们的发射方式是相同的,只是外形有所变化。
此类发射器的参数介绍:Volume:体积,此参数设为正数时会产生大量粒子。
Speed:速度,控制着粒子发射器的速度,速度越高每秒产生的粒子就越多。
为0时则不发射粒子。
Vrandom:垂直随机值,给粒子添加垂直方向的运动变化。
Hrandom:水平随机值,给粒子添加水平方向的运动变化。
Ring ratio:环比率,调整发射器的内径。
Randomness:随机值,粒子在原始方向或位置上添加一些随即变化。
object emitter:物体发射器在链接物体的表面或顶点发射粒子。
Object:目标物体,选择要发射粒子的物体。
Creation:选择发射粒子的类型。
Parent velovityper:父速率,粒子在产生时获得一个父速率。
Distance threshold:距离极限,粒子与物体之间的距离。
重要提示:这个教程最终模拟时,第一遍会报错。
Reset一下,再模拟就正常了。
具体原因解释请看问题总结日志:内容简介:重要提示在 2011.10.5号之前的PDF教程“Bursting Soap Bubble”,有一个错误。
第二个脚本不能放在“StepsPre”,应放在“FramesPre”。
非常感谢来自孟买/印度(Mumbai/India)的朋友Sukumar Senthil Raj,告诉我们这个错误。
正确的教程已经放到下载栏了。
此免费教程教你怎样创建一个,在慢镜头中慢慢破裂肥皂泡的漂亮效果。
用一点Python脚本就可以帮助你能,确定肥皂泡的不同表面区域破裂。
一旦表达破开,效果就会波及整个泡泡。
虽然此效果可以不需要脚本,但为了更好的控制还是使用的好。
1.效果速度传播2.可以轻松定义表面到底哪个区域破裂3.当破裂产生就定义新的点4.此效果不只限于肥皂泡,可用于任意开关最后,创建这流体特殊效果要做的一些设置,仅仅是非常高的表面张力值(tension)。
辅助器和力也很重要。
当然要进行Mesh操作,另一个是原因是,因为我们想输出一个肥皂泡,最好也是用Mesh。
你能在右边看到两个视频,第一个是在RealFlow里Mesh过的样子,第二个是输出渲染过的版本。
总之这个慢慢破裂的肥皂泡效果是非常可吸引人的,你可以加上其它设置,应用在不同场合,例如用kill辅助器做成,等离子球或融化效果。
展示出你的作品当然一个教程只能是一种解决问题的方法,我们希望你多调调参数,力和动画曲线,并展示出你的实现方法。
我们对你作的教程很感兴趣,你可以在网站上发静帧或给我们视频链接。
下面PDF正文部分----------------------------------------------------------------------------------------肥皂泡每个人都吹过,甚至成人也会很有兴趣的玩,还尝试玩出不同花样。
Realflow 2013 中文融化教程详解[第二篇]直线网转载vfxinfo融化通用模型(2/3)(上图是我使用金属人头案例,使用不同材质渲染的结果。
)本文简介:本文阐述的是对融化效果通用模型。
这是为了脱离软件对融化本身效果的思考。
这么做的目的很简单,就是真正掌握融化效果,不受平台的束缚。
甚至可以把这个效果所用的知识点迁移到另一个看似完全不相关的效果上比如融化理解了,你可以很轻松在技术层面实现一个冻结效果一、融化(melt)效果简介1.什么是融化:先用自己语言组织一下什么是融化。
然后再往后看好,看一下最常见到的冰块融化效果(图片来自维基百科)根据图片,我们可以看到这样的现像:1.冰块在逐渐变小2.冰块慢慢变成水3.水在变多,是由冰块转换而来的。
用自己话描述一下:一块很大的冰块慢慢变小,变成水流到杯子里,水在一点点上升。
最后冰块消失,全部变成了水。
不要觉得上面这些描述很傻。
做一个视觉效果前,最好有一个充分仔细的观察过程。
而如何客观的描述现像,对自己的理解,和后期的制作有很大影响。
让我们像孩子一样,使用最真实眼光来看待自然融化维基百科定义:熔化是指物质由固态转变为液态的一个过程(又称熔解,其中冰的熔化又写作融化、融解)。
固态物质中的内能增加(通常借由加热)至一特定的温度(称之为熔点),在该温度下(或对于非纯物质,在某温度区段内),会转变为液态融化效果,是一种物体状态变化的效果,从固体到液体的变化。
物体状态变化的效果总是非常吸引人。
自然界中,有固液气三态的变化(准确来说还有等离子态)。
物质在不同状态时,物理性质是很不一样的。
比如冰和水的差异。
本质其实是因为分子之间的距离不一样。
我们要探讨的融化,是属于物体从固态到液态的变化效果。
(其实如果做从固态到气态,气态到液态,都是非常吸引人让人着迷的效果主题。
)制作物体状态变化的效果无论用什么方法,总要考虑解决这样几个问题。
1.如何保持原始状态2.如何转换过渡3.变化后状态控制上面几个问题,在特定好融化效果。
realflow中英⽂对照第⼀节菜单新建项⽬打开项⽬保存项⽬另存为...项⽬⽂件恢复到打开时的状态查看当前项⽬的⽂件夹调⼊物体⽂件为当前选定的发射器调⼊单帧粒⼦流⽂件⽤于建⽴粒⼦流的初始状态更新 SD⽂件显⽰场景中存在的元素及其相关统计数字最近打开过的场景列表⾃定义选项退出摄像机删除后退前进移动旋转绽放复制选定的元素显⽰选定物体的正⾯添加空组边界⽅框⽹格棱⾓⾯光滑⾯当前选定的物体场景中所有物体边界⽅框⽹格棱⾓⾯光滑⾯⽹格模式时只显⽰元素正⾯显⽰贴图顶视图前视图侧视图透视图摄像机机视图(必须已存在摄像机当前视图重置视图以边界框显⽰显⽰/隐藏⽹格显隐背景图像导⼊背景图像居中选定元素跟从选定对象Element:当前选定的物体( Object ) 、浪⾯( Realwave ) 或⽹⾯(Mesh)的视图显⽰:Bounding Box 边界⽅框。
Wireframe ⽹格。
Flat Shaded 棱⾓⾯。
Smooth Shaded 光滑⾯。
Scene:场景中所有物体、浪⾯或⽹⾯的视图显⽰:Bounding Box 边界⽅框。
Wireframe ⽹线。
Flat Shaded 棱⾓⾯。
Smooth Shaded 光滑⾯。
Wireframe back faces ⽹格模式时只显⽰元素正⾯。
Textured 显⽰贴图。
――――――――――Point of View :当前视图:Top View 上视图,Front View 前视图 Side view 侧视图,Perspective View 透视图Camera View 摄像机机视图(场景中必须已存在摄像机)Reset View 使当前视图恢复到0 点居中的系统默认状态Fast View 进⾏视图操作时,物体、浪⾯和⽹⾯以边界框显⽰――――――――――View Grid 显⽰或隐藏当前视图的建筑平⾯。
View Screen Texture 显⽰或隐藏当前视图的背景图像。
肥皂泡破裂现象及产生小液滴分布研究段香盼; 武海娟; 王旭; 郭蓉; 李凯璐; 马春旺【期刊名称】《《大学物理》》【年(卷),期】2019(038)011【总页数】6页(P48-53)【关键词】肥皂泡破裂; 放射性线状分布; 肥皂膜; 碎片【作者】段香盼; 武海娟; 王旭; 郭蓉; 李凯璐; 马春旺【作者单位】河南师范大学物理与材料科学学院河南新乡453007; 河南师范大学国家级物理实验教学示范中心河南新乡453007【正文语种】中文【中图分类】O351.2肥皂泡是一种由肥皂水薄膜围成的空心密闭结构,可以视为由围成泡体的膜和内部空心结构两部分组成.肥皂膜由内外两个表面和中间的液体构成.在物理研究中,对肥皂泡的研究涉及力、热、光等复杂的物理性质,而肥皂泡的形成机制在数学、化学、生物等学科方面也有一定的研究和应用.近年来,冷文秀等 [1]从光学、力学、热学角度对肥皂泡的基本物理性质进行了实验研究;游少萍[2]把肥皂泡的研究扩展到建筑设计中;唐玄之等[3]对大小肥皂泡的连通问题进行了讨论.空间独立肥皂泡的破裂过程和自由液面上气泡的破碎过程存在一定的相同点,但同时也存在一定的差异.目前,针对自由液面上的气泡破碎过程有一定的研究成果[4-7],但是针对空间独立的肥皂泡破裂过程的研究却很少.近来,刘联胜等[8]利用高速摄像技术对自由空间悬挂气泡的破碎过程和破碎机理进行了解释,但是对其破裂后形成液滴的分布特点关注度仍然很低,存在着一些尚待解决的问题.因此,对空间独立的肥皂泡在破裂后形成的液滴开展研究,具有一定的物理意义.本文将通过控制肥皂泡的大小,分析肥皂泡在破裂后形成液滴的分布特点,尝试解释肥皂泡破裂过程中的特点和液滴分布规律.在肥皂泡破裂的过程中,根据破裂原因不同可以将之分为“自然破裂”和“受破破裂”[8].本实验研究肥皂泡在受破破裂过程中产生液滴的特点.1 实验方法1.1 实验装置简介本文实验装置如图1所示.实验中,在支撑架下方的实验台表面放置A4纸,调节固定架上两根支撑架的高度,使用医用注射器前端蘸取肥皂液,将注射器放置于支撑架上,缓慢向下推动注射器手柄,使其吹出肥皂泡.肥皂泡悬挂在注射器的下端,用针尖在肥皂泡上方刺破肥皂泡.1固定架;2医用注射器;3支撑架;4肥皂泡图1 实验装置图通过调节支撑架的位置,可以控制肥皂泡离实验台表面的高度;利用注射器活塞所处的刻度来控制注入肥皂泡中的气体体积;利用最大刻度为30 ml的注射器来获取不同体积的肥皂泡.肥皂泡破裂后会产生大量液滴,它们沿不同的方向发射出去. 为了方便分辨,在肥皂水中加入红色墨水.在实验纸上记录液滴的分布,并把这些液滴称为碎片.实验中,墨水与肥皂水的比例为3∶22,墨水使用英雄牌红墨水,肥皂水使用泡泡小子高级泡泡水.将记录纸放置在实验台上,当碎片含有的液体全部浸入到记录纸表面后,用扫描仪扫描记录纸,获得破裂产物分布的彩色图像.扫描仪分辨率设置为400像素/英寸.所获得的图像中,像素尺寸为64 μm,图像的大小为3400×4677×3.1.2 分析方法图2是一个肥皂泡破裂产物的分布示意图.以图2为例来说明利用MATLAB分析和处理数据的方法,并把图像中每个碎片所包含的像素数目称为碎片的面积.图2 肥皂泡破裂产物分布图MATLAB对图像的处理过程如下:第1步,将彩色图像变为灰度图,同时保留原始彩色图像. 灰度图中像素值的范围是0~255,黑色对应的像素值是0,白色对应的像素值是255.第2步,获取图像中碎片的位置信息.从图2中可以看出,碎片的大小差别很大,导致不同碎片的像素值分布跨度大,常规的图像处理操作方法会使要获得的目标信息大量丢失.因此,将像素值为255的位置全部剔除掉,得到碎片的位置,将碎片所在位置的值赋为1,剔除掉的位置设置为0,通过该方法将得到关于目标物的二值图像.第3步,剔除杂质点.在第2步将图像从灰度图变为二值图的过程中,尽管能够有效地避免信息的丢失,但同时也将杂质信息引入目标物图像中,使杂质变成了目标物.因此,还需要将杂质剔除掉.在图3中,左侧图像是目标物,右侧图像是杂质,杂质用黑色圆圈圈出来.在彩色图像中,目标物显示出粉红色,而杂质显示出灰色.杂质主要是由纸张不够干净和在利用扫描仪扫描的过程中引入的.彩色图像在数值上由代表红(Red)、绿(Green)和蓝(Blue)的RGB三部分数字合成.图3中,可以通过MATLAB软件的数据游标工具显示出每个位置的RGB值.目标物和杂质的最大区别就在与目标物的R值比自身的G值大,而杂质的R值比自身的G值小.利用这个特点,可以将杂质挑选并剔除,这也是在实验中选用红墨水作为显色物质的原因.由于目标物中心位置所对应的R值和G值差距更大,因此先将每一个碎片的中心坐标求出来,利用中心坐标位置所对应的值进行目标物和杂质的筛选.第4步,获取图像中碎片的数目和面积.剔除掉杂质后,在新的二值图像中,利用图像处理形态学中的bwlabel函数[9],对每个碎片进行标定,得到小碎片的数目.在此基础上计算小碎片的面积A,即求出单个小碎片包含的像素数目.图3 目标物和杂质相应位置的RGB值2 实验结果与分析2.1 同体积肥皂泡随高度变化破裂产物分析2.1.1 实验结果通过调节支撑架的高度,可以改变肥皂泡破裂后碎片飞行的时间.实验中,设置医用注射器的体积V0=18.0 ml,肥皂泡破裂时中心离桌面高度分别为H = 2.0 cm、4.0 cm、6.0 cm和8.0 cm,所得到的实验结果如图4(a)、(b)、(c)和(d)所示.图4(a)和(b)中,碎片分布基本连成直线,呈明显的放射性线状分布;图(c)中,外侧碎片呈现较为明显的放射性分布,中心区域碎片的放射性分布消失;图(d)中放射性分布完全消失.这表明肥皂泡的高度越低,碎片的放射性分布越明显;高度增加,放射性分布逐渐消失,碎片分布散乱.2.1.2 过程分析肥皂泡由内外两层膜和夹在两层膜中间的液体构成.在重力作用下,肥皂泡上端的液体不断地往下移动,在下端产生液体聚集现象.肥皂泡的上端逐渐变薄,承压能力变小,达到极限后会自发破裂.表面张力作用使肥皂泡在自发破裂前处于亚稳平衡状态.在该状态下,用针尖扎肥皂泡时将破坏肥皂泡的平衡并导致肥皂泡破裂.破裂时,肥皂膜将发生液膜卷曲[6],形成环状断面,并且环状断面不断向周围扩展.由于受表面张力内部气压的作用,产生气流喷射,环状断面将形成环形不稳定波[8].伴随着环状断面的扩展,这些不稳定波逐渐发展成液体细丝,液体细丝逐渐变长,向外部延伸.在液体细丝内部,由于液体分子间存在分子间作用力,分子之间为了达到稳定,会使液体细丝断裂成膜液滴.图4(a)揭示了该过程,可以明显观察到液体细丝前端发生断裂,后端仍然连接在一起,碎片呈现出放射性线状分布. (a) H= 2.0 cm (b) H= 4.0 cm(c) H= 6.0 cm (d) H= 8.0 cm图4 体积为18.0 ml但破裂高度不同时破裂产物分布在肥皂泡下端聚集了部分液体,当环状断面扩展到该位置时,与聚集液体发生相互作用,导致液体细丝极不稳定,将完全断裂,形成膜液滴,并且底部液体将发生射流和射流断裂现象[8],如图(b)所示.对比图(a)发现,图(b)中的液体细丝断裂明显,中心大碎片也产生了部分分离.图(a)和图(b)的区别在于肥皂泡破裂时的高度.图(a)中肥皂泡中心离桌面高度低,破裂发生时间短,肥皂泡破裂只进行了早期过程的一部分.由于液体细丝断裂形成的膜液滴会产生不同的初速度,在空气中运动时间短,其分布近似呈现一条直线,所有的液体细丝围绕中心大碎片呈现出放射性线状分布.图(b)中高度增加,膜液滴初速度不同,在空气中运动时间增加,落在纸面上的位置出现了分离.但是,相对图(a) ,图 (b)的高度增加较少,液滴分开间距小,同一条液体细丝所产生的液滴分布在一条直线附近,因此图(b)整个分布呈现出放射性. 随着高度继续增加,图(c)和图(d)的中心位置小碎片数目增多,大碎片被分开.液滴运动时间变长,碎片分布变得分散,放射性分布现象逐渐消失.结合以上分析和文献[8]对气泡破裂过程的描述,将肥皂泡破裂过程划分为3段变化过程,即破裂初期的“气流喷射、液体细丝前端断裂”、破裂中期的“液体细丝后端断裂”和破裂末期的“底部液滴射流与射流断裂”.考虑破裂过程汇总,肥皂膜的液体表面张力的变化情况和所起的作用,在肥皂泡破裂之前,表面张力维持肥皂泡的亚稳平衡状态;破裂初期,表面张力使环状断面扩展到底部聚集液体处;破裂中期,表面张力与聚集液体相互作用;破裂后期,表面张力使射流发生断裂[8].由于这3段破裂过程所处的时间不同,力的作用效果不同,将分别形成由小到大不等的破碎液滴.2.2 同高度肥皂泡随体积变化破裂产物分析2.2.1 实验结果肥皂泡的体积决定着肥皂泡膜的薄厚,体积越大,肥皂泡膜越薄,越容易破裂;体积越小,肥皂泡膜越厚,越不容易破裂.不同体积的肥皂泡,产生碎片的数目和大小有所不同.为了得到离散的碎片分布,选择不同的参数设置,即H=8.0 cm, V0=2.0 ml、6.0 ml、10.0 ml、14.0 ml、18.0 ml、22.0 ml、26.0 m和30.0 ml,其中V0由医用注射器来确定.由于每次实验肥皂泡的破裂具有随机性,对于同体积的肥皂泡,分别重复20次实验.对同体积的20 次肥皂泡破裂实验获得的碎片总数取平均并求其标准误差,可得碎片数目N随体积V0的变化及误差范围,见图5(a).对图5(a)中的数据进行拟合,得到式(1),V0和N之间存在幂函数关系.(1)(a) 碎片数目与体积关联图 (b) 碎片数目与厚度关联图图5 碎片数目分布图相同体积的肥皂泡,不同的大小将导致膜厚度的不同,假设肥皂泡的膜整体均匀且为标准的球形.通过对肥皂泡的实际测量,可以得到肥皂泡的体积与医用注射器吹出的气体体积存在微小的差别,因此可以将肥皂泡内的气体体积处理为V0,肥皂泡内表面到肥皂泡中心的距离为r0,蘸取的肥皂水体积为V,肥皂膜的厚度为d.肥皂膜的厚度相对肥皂泡的半径来说很小,蘸取肥皂水的体积可以利用式(2)近似求出(2)肥皂泡内的气体体积为(3)联立式(2)、(3)可得肥皂膜的厚度为(4)将式(4)两边同时取对数,可以得到(5)其中如果每次蘸取肥皂水的体积V相同,肥皂膜厚度与肥皂泡体积两者对数的变化呈直线关系.实验中,为了使注射器每次蘸取的液体尽可能相等,将30 ml的肥皂液倒入尺寸为16.5×10×5.5 cm3的长方体容器中,每次用注射器前端与容器底部接触,每蘸取50次液体,重新向容器中注入30 ml液体,以保证容器中液体的高度几乎不变.实验中不能直接测量蘸取一次的液体体积,可以多次蘸取肥皂水,通过对实验前后肥皂水体积进行测量,得到实验中减少的肥皂水体积,结合蘸取的次数可以求得平均每次蘸取肥皂水的体积.实验中,蘸取50次后,肥皂水的体积减少了1.4 ml,平均每次蘸取肥皂水的体积约为0.028 ml.结合该数据,利用式(5)可得相应体积的肥皂膜厚度.将肥皂膜的厚度与破裂产生的碎片数目建立联系,结果如图5(b)所示.对图5(b)中的数据拟合,得到式(6),d和N之间存在幂函数关系.N=571.9d-2.178+506.1(6)观察式(1)、(4)、(6),可以将式(4)代入式(6)中,验证式(1)的结果.为了保持前后数据单位一致,将式(4)中的数据单位转换为图5(a)、(b)中使用的单位,变换后的结果为(7)其中V0的单位为ml, d的单位为10-5 m.将式(7)代入式(6)中,可得(8)对比式(1)和(8),可以得到两式形式相同,且幂函数的指数相差0.003,差距微小,基本可以验证3个公式之间的正确性,两公式相应位置的系数差别主要来源于实验误差.下面分析碎片数目的变化规律.按照碎片面积的大小,把它们划分为不同的区间,并统计每个区间内碎片的数目,其中每个区间的长度为15像素点.对体积相同的肥皂泡,将20次实验结果取平均值并求其标准误差,作出碎片数目与面积关系图和误差范围,如图6所示,其中n0代表每个面积区间的碎片数目.由于每次实验中面积大于300的碎片数目少,间距大,因此在该图中舍去面积大于300的碎片.图6 碎片数目与面积关系图图6中,碎片数目的对数随着面积的变化逐渐偏离直线,根据肥皂泡破裂过程的3阶段分析,使用MATLAB软件对数据进行3段线性拟合.具体的步骤如下:首先,将前3个数据作为第1段,将接下来的3个数据作为第2段,将剩下的数据作为第3段,分别对每段进行拟合,求其R2(决定系数),并将3段的R2值相加,结果记为S,S作为判断拟合程度的参数;其次,保持第1段的数据不变,逐渐增加第2段的数据,第3段的数据相应的减少,分别拟合并求其S;然后,逐渐增加第1段的数据,进行同样的循环过程,通过循环将所有的情况都求出来;最后,比较所有情况的S值,S值越大,拟合的效果越好.表1给出了不同体积中拟合效果最好的数据结果,表2给出了表1中每段拟合所对应的斜率.其中,每段数据的拟合函数均为n=kA+b(9)式中n=lg n0,A为碎片面积,k为拟合曲线的斜率,b为拟合曲线的截距.表1 不同段R2和S值V0/mlR21R22R23S2.00.999040.987970.971042.958056.00.991590.999960.9 72562.9641110.00.989770.999610.989262.9786414.00.985650.995800.9998 02.9812518.00.983510.999770.954532.9378122.00.978300.999280.968842. 9464226.00.979360.998250.948692.9263030.00.995500.999640.979312.974 45表2 不同段斜率值V0/mlk1k2k32.0-0.01755-0.01078-0.005976.0-0.01474-0.00860-0.0053310.0-0.01316-0.00896-0.0049814.0-0.01405-0.00660-0.0096618.0-0.01510-0.00925-0.0052322.0-0.01758-0.01213-0.0056226.0-0.01611-0.01015-0.0050130.0-0.02021-0.01283-0.00575表1中,每段拟合结果R2值都接近1,说明拟合效果好;表2中,不同段之间的斜率存在明显的差别,说明分段效果好;不同段斜率差别的原因主要来源于每个阶段产生的碎片数目存在较大差距.同一体积,根据不同段斜率之间存在的差别将碎片进行划分.把第1段对应的碎片称为小碎片FS;第2段对应的碎片称为中等碎片FM;第3段对应的碎片称为大碎片FL.对面积大于300的碎片也进行数目统计及标准误差处理,得到图7所示的结果,将该部分的碎片也称为大碎片FL.图7 不同体积肥皂泡破裂产生的面积大于300的碎片数目与体积变化关系2.2.2 过程分析碎片的总数目受肥皂膜厚度的影响,本文中把肥皂膜的厚度视为均匀分布,这是一种理想情况.实际上,肥皂泡破裂时膜的厚度并不均匀.肥皂泡的下端肥皂膜厚,含液体多,在此处产生的液体细丝片段会比前期产生的包含更多的液体,发生断裂时,分子间作用力会使更多的液体聚集到一起,这些膜液滴会以一定的初始速度向纸面运动,形成面积相对较大的碎片.底部聚集的液体发生射流,断裂产生的液滴容易形成面积更大的碎片.肥皂泡破裂过程对应3个阶段.第1个阶段,肥皂泡从顶部开始破裂,随着环状断面不断扩展,液体细丝逐渐变长.在环状断面扩展到底部聚集液滴位置的过程中,液体细丝前端不稳定,发生断裂,形成膜液滴,膜液滴面积小,形成小碎片FS.第2个阶段,环状断面开始与液体发生作用,会使没有断裂的液体细丝变得极不稳定,发生断裂,产生膜液滴.此时断裂的位置发生在液体细丝的后端,后端比前端包含的液体多,液体细丝在断裂时会产生面积较大的膜液滴,形成中等碎片FM.第3个阶段,底部液体发生射流,将液体断裂成小液滴,这些小液滴陆续落在纸面上,形成大碎片FL.3 讨论肥皂泡体积的不同,导致膜的厚度不同.在实验的过程中发现,体积越小的肥皂泡,肥皂膜越厚,用针尖不能一次性把它扎破;体积越大的肥皂泡,肥皂膜越薄,针尖刚接触表面,就会立即发生破裂.该现象说明了针尖的作用不是直接使肥皂膜破裂的原因,而是加快了作用点处达到不平衡的速度,使肥皂膜在该位置发生破裂.本实验中肥皂泡破裂后产生大量碎片,其中会有极少数碎片符合杂质的要求,在处理中被MATLAB软件剔除掉,造成部分数据缺少;体积越大,产生的碎片数目相对越多,碎片之间发生相连的情况多.在面积统计的过程中,有部分大碎片来自于几个碎片的相连,造成该部分面积统计结果不够精确.4 结论本工作通过对肥皂泡破裂产物进行研究,得到了肥皂泡破裂现象和碎片的分布特点.控制体积一定,在肥皂泡破裂高度较低时,碎片呈放射性线状分布;随着高度增加,碎片的放射性线状分布逐渐消失;液体细丝断裂后形成的膜液滴初速度方向不同.控制高度一定,研究了肥皂泡体积与碎片数目及肥皂膜厚度的关系,得出了肥皂泡体积和碎片数目之间存在幂函数关系.在理想情况下,推导了肥皂泡体积和肥皂膜厚度两者的对数存在线性关系,并得到了肥皂膜厚度和碎片数目之间也存在幂函数关系.研究不同体积肥皂泡破裂产生碎片的面积大小,得到了肥皂泡破裂所经历的3个阶段.第1个阶段,肥皂泡破裂后,受表面张力内部气压的作用,产生气流喷射,环状断面形成环形不稳定波,不稳定波逐渐发展成液体细丝,液体细丝前端不稳定,断裂产生小碎片;第2个阶段,环状断面与底部液体发生相互作用,导致液体细丝不稳定,液体细丝后端断裂,产生中等碎片;第3个阶段,底部液体发生射流和射流断裂,产生大碎片.【相关文献】[1] 冷文秀,胡佳晨,张鑫杰,等.肥皂泡的光学和力学性质[J].物理实验,2013,33(2):29-33.[2] 游少萍.肥皂泡与建筑[J].华中建筑,2008,26(11):20-23.[3] 唐玄之,王琦,魏良淑,等.大小肥皂泡连通后的讨论与计算[J].大学物理,2007,36(10):20-23.[4] Lee J S, Weon B M, Park S J, et al. Size Limits the Formation of Liquid Jets During Bubble Bursting[J]. Nature Communications, 2011,2(1):1-7.[5] Lhuissier H, Villermaux E. Bursting bubble aerosols[J]. Journal of Fluid Mechanics, 2012, 696:5-44.[6] 马超,薄涵亮.气泡破裂产生膜液滴现象可视化实验研究[J].原子能科学技术,2012,46(suppl.1):231-235.[7] 马超,薄涵亮.单气泡破裂产生膜液滴空间分布实验研究[J].原子能科学技术,2015,49(10):1766-1771.[8] 刘联胜,王子月,段润泽,等.自由空间内气泡破碎过程的实验研究[J].工程热物理学,2018,39(6):1291-1296.[9] 杨杰,占君,周至清.MATLAB图像函数查询使用手册[M].北京:电子工业出版社,2017:359-360.。
调整RealFlow的全局参数File cache 文件缓存是保留下来用于播放模拟数据的内存。
这个参数如果使用较高的值,那么播放就可以加速Min substeps最小子步数,仅仅适用于“Adaptive自适应”模式。
如果增大这个数值,模拟就会变慢,但是增加精确程度,不稳定模拟变得稳定,一般数值5到10之间,如果错误仍然存在,可以轻微增大。
Max substeps最大子步数,也受限“Adaptive自适应”模式,低数值可以加速计算,但代价是牺牲精确度。
过低值会导致粒子和物体之间的碰撞检测失败。
HYBRIDO混合粒子grid domain 网格空间(网格流体都需要)grid fluid 网格流体创建网格流体的三个步骤:1.创建一个网格流体框2.添加一个支持物体(几何体)作为发射器的外形3.选中支持物体并创建物体发射器。
PS:网格流体框之间是不能相互交互的,他们都是分开区分的。
理解粒子在流体解算器中的地位很重要,基本上,他们是随流体进行流动的,没有质量的,他们的重要作用就是预览主水体,但是计算流体动力学的时候,他们却不被考虑,所以即使粒子数很多但是计算过程也是非常的快速。
网格流体容器(Grid Fluid Domain)Displacemrnt 置换面板提供你对海洋曲面的所有必须参数。
不仅能定义不同级别的细节程度,还可以控制外观。
置换贴图使用一种静态的方法来创建曲面结构,这种方法强烈依赖于海洋曲面的精度。
Fluid 面板,这个参数组用于修改网格流体的物理属性以达到一些效果。
1.Resolution细分精度,此关键参数,只是增加容器空间内小单元格的数量,并不是增加实际粒子数。
2.Particle sampling粒子采样,控制粒子的数量,数值进行三次方计算等于每个小单元格的粒子数。
3.Density 密度,对流体密度的修改不会影响流体的动力学行为,即使修改为很大的值都不会产生很明显的效果。
因为RealFlow的网格流体采用的是运动学(kinematic)的粘稠度,而不是动力学的。
简单的涡流,漩涡更新(Oct.21,2011)我们检测到脚本中有一个小错误。
估计你们中大部分人已经纠正了这个bug,但对那些不太熟悉Python的人还是有必要的。
PDF已经做了更新。
旧版本if (scene.getAxisSetup() = AXIS_SETUP_YXZ):forceVec= Vector.new(0, stokesForce, 0)else:forceVec= Vector.new(0, 0, stokesForce)particle.setExternalForce(vortexVec)正确版本if (scene.getAxisSetup() ==AXIS_SETUP_YXZ):vortexVec= Vector.new(0, stokesForce,0)else:vortexVec= Vector.new(0, 0,stokesForce)particle.setExternalForce(vortexVec)(译者注:其实就是(scene.getAxisSetup() == AXIS_SETUP_YXZ)中赋值符号(=),改为等于号(==))更新(11.15.2011)正确的PDF已经放在下载区了,还包含了了RFS文件。
这个文件可以直接载入RealFlow。
还可以复制相关脚本,到场景的脚本辅助器(scripted daemon)中。
非常抱歉给你造成的不便,但有时一些很小的错误,无论你一个人检查多少遍都找不出来。
感谢你的理解。
旋转和漩涡在RealFlow平台是不太容易实现的,大部分要借助第三方工具或三维软件的插件。
当然这些工具运用高度复杂的算法和功能去实现绝对逼真的烟雾,但有时候差不多的效果就足够了,例如远处的烟雾或预渲染时。
这个免费教程是非常基础的,但也是非常快的方法做到烟雾上升效果。
您将了解如何使用基础方程,把它们放入一个脚本,创建卷曲/紊乱的粒子。
这个简短的讨论,实际就是像你在玩一样,你可以添加自己的拓展,获得更自然的结果,因为本身这种方法有限制。
RealFlow教程之——破裂的肥皂泡重要提示:这个教程最终模拟时,第一遍会报错。
Reset一下,再模拟就正常了。
重要提示此免费教程教你怎样创建一个,在慢镜头中慢慢破裂肥皂泡的漂亮效果。
用一点Python脚本就可以帮助你能,确定肥皂泡的不同表面区域破裂。
一旦表达破开,效果就会波及整个泡泡。
虽然此效果可以不需要脚本,但为了更好的控制还是使用的好。
1.效果速度传播2.可以轻松定义表面到底哪个区域破裂3.当破裂产生就定义新的点4.此效果不只限于肥皂泡,可用于任意开关最后,创建这流体特殊效果要做的一些设置,仅仅是非常高的表面张力值(tension)。
辅助器和力也很重要。
当然要进行Mesh操作,另一个是原因是,因为我们想输出一个肥皂泡,最好也是用Mesh。
你能在右边看到两个视频,第一个是在RealFlow里Mesh过的样子,第二个是输出渲染过的版本。
总之这个慢慢破裂的肥皂泡效果是非常可吸引人的,你可以加上其它设置,应用在不同场合,例如用kill辅助器做成,等离子球或融化效果。
下面是正文部分肥皂泡每个人都吹过,甚至成人也会很有兴趣的玩,还尝试玩出不同花样。
除了好玩,肥皂泡还有一些非常有趣的科学背景。
图1.一个真实的肥皂泡表面张力或许是肥皂泡最重要的一个特性了。
因为表面张力的存在,这也是肥皂泡会在空气中摇摆不定的原因。
另一个由表面张力产生的效果是,肥皂泡是球形的。
假如没有外部环境(重力,空气阻力等等),肥皂泡将是一个完美的球形。
因为它们总有形成,称为极小曲面(minimal surface)的趋向。
你一开始看到肥皂泡,你可能会认为它有很高的表面张力,其实正好相反。
肥皂和洗涤剂表面张力很低,如果不是这样肥皂泡就不会产生了。
因为水的表面张力很高,肥皂泡会立即破裂。
另一个让人印象深刻的是肥皂泡很漂亮。
它总是有很多颜色,他们反射的颜色看起来在晃动,混合了油一样。
肥皂泡有这么的丰富颜色,因为它的壁很薄。
当水蒸发时(肥皂泡变薄),会有不太显眼的颜色。
当然这个效果不能用RealFlow模拟。
但可以用物理渲染引擎做到,让它看起来五颜六色。
在渲染时你可以调节材质的不同厚度,得到不同颜色。
第一步:怎么在RealFlow里创建一个泡泡第一步就是创建泡泡。
在这个例子里,填充模型做泡泡,不是一个好方法,因为它要一个尽可能薄的空心物体。
用单个粒子层可以达到这个目的。
在RealFlow里有这样几种方法来做成这种结构:1把.粒子均匀分布的Python脚本2.“sphere”发射器3.“Fill Object”发射器和“k sphere”辅助器结合4.激活“Particle layer”设置的“Fill Object”发射器第一个方法能给你很好的效果,因为你能得到一个没有任何缝隙或孔洞的球体。
但用粒子脚本是有问题的。
原因是每一个粒子有一个确定的基于Resolution值的半径。
这半径是很重要的,因为为直接影响粒子之间的力。
如果粒子之间距离非常近,你会观察到互相排斥的效果,流体会变得不稳定。
也可以用非常低的内压“Int Pressure”参数减少这排斥值,但那时就会失去流体的特性看起来像dumb粒子。
这所以是Dumb粒子,当然就是因为非常低的”Int Pressure“值。
图2:分布规则的球体你可以降低“Resolution”值,但不容易找到正确的值。
如果太高,很难与粒子交互;太低,流体粒子就会乱飞。
第二个方法是使用“Sphere”发射器。
用这个方法也可以创建一个很薄的粒子层。
你仅仅需要把"speed"值设成很低,例如0.1 。
然后第一帧后停止发射。
这样可以管理表达式或动画关键帧。
可能最好的方法就是基于"Fill Object"发射器。
这发个发射器提供了两种模式:第一个模式是填充模型。
填充好后你可以把“k volume”辅助器放在模型里面(“Inverse=Yes”),删除多余的粒子。
当然辅助器半径可以做些调整,根据空心的模型来调。
结果还不错,但你可以在下面的图片看到,看起来像有花纹的图案。
这方法可以轻松控制厚度并能根据需要,用大量粒子。
图3.用"Fill Object"发射器填充的空心球粒子,辅助使用"K Sphere"辅助器然后,用“Fill Object”第二种模式:“Particle layer”(粒子层)。
当这个设置为“Yes”,RealFlow 会覆盖满球体表面,但不会出现几何体交接线。
优点是流体是静止的,因为这是RealFlow 自动计算正确粒子半径,你可以增加“Resolution”到非常高的值,而不会出错。
它也能减少粒子间缝隙,你只是需要一个很高分辨率的球体/泡泡做基础。
用RF_toolfactory’s “RF Toolbox Scripts”(最后一个教程会介绍这个工具)你可以重新创建很高分辨率的模型。
你可以在下面图片看到结果。
请注意这是较低resolution值版本,忽略相邻边线。
这个方法另一个优点是:你不需要任何初始状态,因为粒子层是Realflow直接创建的,存储或改变时只要“Reset”一下就可以。
第二步:脚本做这个效果的脚本是很短的,也很容易理解。
在写脚本之前,很重要的一件事就是你要知道我们要做成什么效果。
我想在粒子层上开一个渐渐扩大的洞。
在这个过程中,流体其它部分必须不受影响,保持原样。
所以第一步就需要冻结所有粒子,然后把他们速度设置成0.0。
再然后就开始定义,到底在泡泡哪个地方破裂。
函数要允许我们把扩散的种子(seed)放在整个表面,或完美的限制他们在一个特定区域。
这部分要在模拟前执行,尽管它是"Simulation Events"脚本:Layout>Simulation Events初始化场景窗口弹出时,你会看到两个部分。
上面部分是模拟事件分支,下面部分是Python 代码部分。
脚本预设必须添加在”SimulationPre“:SimulationPre > Right-click > Add script...(RF5版本后,Layout-->Simulation Events<Ctrl+F2> 打开下图3窗口)此操作会打开另一个窗口,你可以输入脚本:# Get the emitter, loop through its particles and freeze thememitter = scene.getEmitter("Fill_Object01")particleList = emitter.getParticles()for particle in particleList:particle.freeze()# Determine four seed particles which are relatively close togetheridList = []maxId = len(particleList)/50for i in range(0,4):curId = random.randint(0, maxId)idList.append(curId)scene.setGlobalVariableValue("oldRadius", 0.005)scene.setGlobalVariableValue("idList", idList)第一个代码片段只是简单的调用发射器和粒子。
通过循环全所有粒子冻结用freeze()函数。
这个函数功能是使粒子保持当前所有状态,例如,velocity和position.直到粒子unfreeze(解冻)。
图4:初始化"Simulation Evets"窗口脚本.脚本第二部分是很有趣的,因为会定义种子(seed)。
在这个例子,种子(seed)是产生随机。
为此,脚本从“particleList”函数指定粒子的总数。
要控制种子(seed)影响更多或更少区域,整个粒子数除以50.如果想靠近一点,可以除以100,或500,如除以1则遍布整个表面。
接下来循环for i in range(0,4):用来创建4个种子粒子。
如果你想要增多种子,只要简单的改变括号里第二个数字,例如(0,2)或(0,8)。
结果是一个随机数,可以用来寻找一定的粒子,通过利用粒子的ID数。
ID 被存储起来供进一步使用。
最后,所有相关数据必须存储在被为全局变量的里面。
这个变量是一种,当你想共享不同脚本(类型)下的值/变量(例如Batch -> SimulationPre, FramesPre -> StepsPost 等等)和当变量要永久存储(值固定)。
全局变量是“oldRadius”和“idList”。
这“idList”是,当然需要种子粒子ID。
“oldRadius”变量决定种子粒子周围破裂的大小。
它值要很小获得连续效果。
它甚至可以是0.模拟第二部分是脚本控制模拟,在"FramesPre"下,在simulation events tree (模拟事件分支)。
这里脚本输出和用粒子ID,和初始半径。
另外,循环需要遍历整个粒子。
当一个ID存在于“idList”,脚本就继续扩散到相关连粒子。
import random# Prepare the variable, get the emitter and its particlesoldRadius = scene.getGlobalVariableValue("oldRadius")idList = scene.getGlobalVariableValue("idList")emitter = scene.getEmitter("Fill_Object01")particleList = emitter.getParticles()initialRadiiList = [0.005,0.009,0.015,0.012]counter = 0# Loop through all particles, get Idsfor particle in particleList:theId = particle.getId()# Check if the current Id is in already stored in the idList.# If yes, calculate the radius around the seed particles.if theId in idList:newRadius = oldRadius + initialRadiiList[counter]neighbors = particle.getNeighbors(newRadius)counter += 1# Replace the old radius with the new radius to simulate a grwoing areascene.setGlobalVariableValue("oldRadius", newRadius)# Loop through the particles around the seed and unfreeze its neighboursfor neighbor in neighbors:if (neighbor.getId() in idList):particle.setVelocity(Vector.new(0,0,0))else:neighbor.unfreeze()脚本思路是,收集种子(seed)粒子周围一定半径内相邻粒子。