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教程之——破裂的肥皂泡重要提示:这个教程最终模拟时,第一遍会报错。
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)粒子周围一定半径内相邻粒子。