版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 简单的涡流,漩涡更新(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_Y
2、XZ):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)中。非常抱歉给你造成的不便,
3、但有时一些很小的错误,无论你一个人检查多少遍都找不出来。感谢你的理解。旋转和漩涡在RealFlow平台是不太容易实现的,大部分要借助第三方工具或三维软件的插件。当然这些工具运用高度复杂的算法和功能去实现绝对逼真的烟雾,但有时候差不多的效果就足够了,例如远处的烟雾或预渲染时。这个免费教程是非常基础的,但也是非常快的方法做到烟雾上升效果。您将了解如何使用基础方程,把它们放入一个脚本,创建卷曲/紊乱的粒子。这个简短的讨论,实际就是像你在玩一样,你可以添加自己的拓展,获得更自然的结果,因为本身这种方法有限制。尽管方法有所局限,却是简单有效的能达到好的效果的方法。作为一个辅助效果,你将学习到关于流体一些
4、有趣的东西。在右边的第一个视频向你展示了流体模拟形成蘑菇云形的烟。第二个视频是一个特写,你可以清楚的看到粒子如何固定在一个路径,并创建涡流的。展示出你的作品当然一个教程只能是一种解决问题的方法,我们希望你多调调参数,力和动画曲线,并展示出你的实现方法。我们对你作的成果很感兴趣,你可以在网站上发静帧或给我们视频链接。-上面是原网站简介-漩涡RealFlow能处理多种模拟任务:流体,刚体和柔体,波浪,风格化流体。用这些工具几乎能完成所有的任务,但仍有一种不行:气态液体(gaseous fluids)当然没有必要用复杂的计算写一个基于Python的烟雾解算器。另外最常见的方法已经被申请成专利了。(例
5、如 J. Stams “Stable Fluids”流体静力学)所以,如果你要编写一个商业烟雾解算器,你必须开发自己的方法,那是一件非常困难的事。此外一切都要适应RealFlow本身,比方说,特色。图1.RF_toolfactory VortexFlow插件基于密度的烟雾模拟。当你看一下模拟的烟雾时,我会发现两个重要的事。1.烟雾上升是由于浮力2.有大的涡流还有小的涡流(紊乱、卷边)产生小的紊乱和卷边方法,称为(涡流限制 Vorticity Confinement)。这个技术引入速度(velocity)在某些领域,创建小的速度随机。涡流限制(vorticity Confinement)实际上增
6、加了烟雾的真实感,使一切变得自然。然而在许多情况下,是不需要这么多细节的。例如缩放很大的烟流(烟羽),或远处的烟雾源。问题是,要做大的涡流是非常困难的使用RealFlow标准流体解算器。所提出的方法实在是很基础的,只达到近似级水准,但你在使用这方法时可能会找到一个新的方法来拓展脚本,去达到更好的效果。真正工作使用时,一定要经过试验,脚本对错误是非常敏感的。因此,本教程实际上是快速的方法提示,而不是全面详细的讨论。但也许你会觉得很有意思,看看你可以用这个方法获得什么。准备主要的困难是,迫使流体粒子沿着圆圈发射器路径运动,像升起的烟雾。实现这种行为的方法或公式是一定要引入Python脚本。一个好主
7、意是在互联网上搜索,你很快就会发现两种基本方法:层流(laminar)和湍流(turbulent flow)在层流流体下在某一个方向没有湍流,可以在水管或通道观察到这样的行为。湍流是非常难以描述的,因为流体看起来没有一个确定方向。在湍流中你能看到漩涡和不同方向的流动。层流和湍流之间有这样一个关系:超过一定标准时,层流可以变成湍流。这个标准就是的雷诺数(Reynolds numbe)。在漏斗,狭窄的管道或障碍物里面的流体可以看到,这两种状态之间的转换。层流这种方法将要使用的公式被称为“Stokes定律”。这个术语,用来描述流体中球形体(粒子)的摩擦力。这力的大小也取决于粒子半径和流体粘度。跟其它
8、任何摩擦力一样,Stoke力导致body/particel减速。在我们例子中,力作用在周围流体。Fs = 6 R vFs 是Stokes 力,是 pi,(Eta)是流体动力学粘度。R是粒子半径,v是速度。这个方法优点,RealFlow可以提供所有必要参数给这个公式。这个思路是创建一个层流的力场抵消流体的上升运动来减速粒子。另一方面,粒子的浮力使流体上升。这上升流体在层流力场影响下会减缓粒子。这意味着,必须作用在粒子云外面。为得到粘稠的效果必须要有很高的粘度值(viscosity)。这也将减慢整个粒子流,当粒子流累积在流体前面。因为动力学粘度值 1是水20C时,它可以被忽略掉。但你能模拟不同流体
9、。为什么最终是负的力,是为了抵消了上升粒子流: Fs = - 6 R v图 2:层流(laminar flow)说明引入负号,因为这力能抵消粒子向上运动。最终,我们得计算粒子半径 R。当你参考RealFlow手册时,会看在发射器Resolution参数下看到这个半径公式。这正是我们需要的: 湍流(TURBULENT FLOW)思考湍流时你会遇到一个困难。当流体在障碍物周围,物体后面就会产生低压区。在前面有高一点的压力。这不同的压力就是流体的阻力,这力可以被表达成:Cw是阻力系数,A 是障碍物横截面。因为我们可以把流体粒子看作一个个小球体,Cw值是0.45,A就是简单的圆面积:R2(译者注:原文
10、应该写错了)图3:湍流图例尽管这个公式能产生一种力,但仅是一方面,并不能产生湍流。仅仅是流体经过时的力(fluid experiences 不知道合适怎么说)。要找到层流变成湍流时间点,雷诺系数(Reynolds number)(后面写为Re)是很重要的。定义Re不是隐藏的,可从RealFlow标准参数来计算,但这仅仅是达到实际效果并不能正确描述湍流物理现像。湍流和卷曲需要一个更加复杂的方法,基于从Navier - Stokes方程的向量场。这各种物理性质的向量场,通常存储成网格(grid)。这是“基于网格的流体”一词的由来。(grid based fluids)RealFlow 湍流参数Re
11、alFlow的标准粒子提供了湍流参数,但这不是自定义的值,是SPH(译者注:Smoothed Particle Hydrodynamics)流体内部参数。用脚本可以写成矢量格式: = Vector.new(x, y, z)脚本对于此脚本,要使用RealFlow辅助器,因为它是一种特殊功能,可以给粒子施加外部力给网格流体或物体,这是方法很稳定,可放心使用。 脚本辅助器可以这样添加:Edit Add Daemons Scripted辅助器结点面板提供了Edit功能。请注意脚本窗口模式。这意味着,你必须关闭此窗口再次访问底层的RealFlow面板。这实在是烦人,但不能改变。为了使一切更方便,你也可能
12、添加一个小型的GUI(图形用户界面)。关于这部分更多说明请参看,RF脚本那本书,GUI部分。如果你要创建GUI,请创建成Batch Script.如果你要加在辅助器”def onSimulationBegin部分,RealFlow可能会崩溃。#-# Function: applyForceToEmitter # This function is called by the simulation engine # when external forces should be applied to the # particles in the emitter. #-import mathimpor
13、t randomdef applyForceToEmitter( emitter ): normalThreshold = 0.85 emitterRes = emitter.getParameter(Resolution) pRad = 1 / (1000 * emitterRes) * (1/3) dynVisc = 1.0 # this is not RFs Viscosity value! particle = emitter.getFirstParticle() while (particle): pVel = particle.getVelocity().module() pNor
14、mal = particle.getNormal().module() rndRange = random.uniform(-0.02, 0.02) if (pNormal = nornmalThreshold + rndRange):stokesForce = -6 * math.pi * pVel * pRad * dynVisc if (scene.getAxisSetup() = = AXIS_SETUP_YXZ): vortexVec = Vector.new(0, stokesForce, 0) else: vortexVec = Vector.new(0, 0, stokesFo
15、rce) particle.setExternalForce(vortexVec) particle = particle.getNextParticle()这个脚本是非常简单的。在第一部分,粒子半径取自发射器的“Resolution.然后脚本遍历所有粒子,读出单个速度矢量。使用的X,Y和Z单独的值,而不是矢量的大小这是计算“module()”语句。这个方程是: magnitude = sqrt(x2 + y2 + z2)这个方程(module())结果是标量(仅仅是数字),不是由三个值组成的矢量。这个操作的原因是矢量不能作为检查条件来判断是否满足条件。但用浮点数字就不存在这个问题。相同的过程
16、(向量 - 模 - 标量)是适用于粒子的正常方向。这个方法必须要找出外面流体,法线模长(normals magnitude)是这脚本最重要和最敏感的值(见参数的调节)。所以脚本仅仅决定粒子在流体外面,力(=阻力)将接受场景设置。为了变得更丰富一点,加一点随机值到法线的模(normals magnitude)。参数调节正如所提到的,主要思路是,减缓流体外部粒子。内部粒子仍然保持初始速度,和拖缓粒子速度。由于粘度(也称为内部摩擦力),整个流体最终会放慢,粒子的聚集在流体的头部。图4:相互影响的不同力,最终创建上升的烟雾上面图片说明的方法:Stoke力Fs减缓流体外部粒子。浮力Fb作用在所有粒子上,
17、产生了一个吸引力,使粒子向下。在这个边界可以看到涡流想得到这个效果,必须标志出流体粒子的外面,这是为了检查法线。越接近流体粒子外部法线就越大。问题是这个值,发射器resolution值越高,它就减小。用“Resolution”值为1.0,normalThreshold“变量可以是1.5或更大。用非常高的设置,是0.5或更小。不幸的是不能为每个resolution设置一个固定的值,因为粒子数和法线长度关系不是线性的。意思是你要测试和试不同的值羽流的质量取决于法线阈值(normal threshold)图5.一个上升烟的模拟这已经调整的“normalThreshold”0.85,circle发射器 缩放是(0.5,0.5,0.5),Resolution值是4.0,Speed是2.0另一个重要的值是发射器的“Viscosity”参数。如果它太小,那么效果不能完全体现出来。能达到最好的效果设置值在4.0与6.0之间。如果有逃
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026陕西西安医学院附属汉江医院招聘1人笔试备考试题及答案解析
- 2026年4月芜湖高新区(弋江区)国有企业招聘部分岗位核减笔试模拟试题及答案解析
- 2026年及未来5年市场数据中国石油管道运输行业发展监测及投资战略咨询报告
- 2026山西朔州市应县医疗集团人民医院招聘编外医务人员9人考试备考试题及答案解析
- 镁还原工安全素养强化考核试卷含答案
- 特种弹簧制作工岗前管理综合考核试卷含答案
- 农业经理人安全文化评优考核试卷含答案
- 2026年陆军第82集团军医院第二季度聘用人员招聘考试备考题库及答案解析
- 2026年及未来5年市场数据中国压榨山茶籽油行业市场深度评估及投资策略咨询报告
- 时间频率计量员达标测试考核试卷含答案
- 日语中助词は和が的区别(初级)课件
- 小儿外科学:先天性直肠肛门畸形
- 陶然笔记合集英语作文博物青年
- 高二【化学(鲁科版)45】微项目探秘神奇的医用胶-课件
- 第五章儿童发展心理学智力的发展演示文稿
- GB/T 40851-2021食用调和油
- corelDraw交互式工具组
- 《运动解剖学》(第三版)-9第九章-感觉器官课件
- 新闻价值及新闻敏感课件
- 2022年新疆地矿投资(集团)有限责任公司招聘笔试题库及答案解析
- 取水许可审批与水资源论证技术审查要点课件
评论
0/150
提交评论