Realflow 2017中文版是一款专业的流体动力学模拟软件,涵盖多种设计工具,用户可以轻松创造出各种纹理效果,及其逼真,操作简单,有需要的用户可以下载体验哦!一定会为您带来意想不到的效果。
软件介绍
RealFlow是专用于水面波浪的模拟,如海面、落入物体后水面泛起的涟漪、行驶在水中的船(包括破浪泛起的粒子水花和产生的水面拖尾),能够完成的项目包括:物体落入水面后激起波浪,并且随水面上下波动,还能产生溅起的水花。粒子落在水面上泛起的涟漪。在水面上快速运动的物体产生尾迹、水花和波浪,常用于船只的航行模拟。表现动态、自然波动的水面,如湖泊、水池、海洋等,还能产生海水拍岸溅起海浪水花的效果。
RealFlow没有提供任何照明和渲染功能。你可以通过调节粒子流的UV坐标来拖拉纹理,从而创建各种纹理效果。你可以为网格创建UV坐标,并且创建 “Wet Texture Maps” (打湿纹理贴图)。它可以创建非常丰富和真实的纹理效果,但不能在传统的场景中进行纹理贴图。通过为软件重写流体解决方案,现在的模拟速度提高了20%到 30%。程序可以更好地处理多处理器系统和巨大的内存分配。最具创新性的功能是“Wet Texture Maps”(打湿纹理贴图)。当粒子碰到表面,它在物体的表面上“绘制”纹理。因此,它可以在表面上留下痕迹或者“打湿”纹理。
Realflow 2017特色
1、质量:每一个模拟都非常卓越,效果非常棒。
•简单的导入你的场景,从RealFlow添加液体和直接渲染出来。
•直接在RealFlow微调真实材质,连接如速度、漩涡度或生命值。
•有效静态帧或动画序列。
•采用最先进的基于物理渲染引擎:Maxwell Render™。
•精确的碰撞模拟。可以在复杂几何和超速的对象模拟精确和快速的碰撞。
Hybrido也受益于 RealFlow 2015更深入的OpenVDB算法的集成。
Hybrido翻转模拟现在更快,更准确的碰撞,和更好的内存管理,尤其是在处理复杂几何和快速移动的对象。
2、速度:DYVERSO,新DYVERSO工具(DY-SPH DY-PBD)流体动力学。
新版DYVERSO(DY-SPH,DY-PBD)的流体解算程序效果惊人,使您的模拟创作更上一层楼。新的DY-SPH和DY-PBD解算程序功能强大,并且GPU也得到加速您的模拟创作速度大增。超出您的期待,创建光滑的层状网格,使您的模拟创作更加逼真。直接渲染RealFlow模拟仿真。
3、控制:用户界面
•RealFlow 2015新版本的用户界面挤满了大量的新的增强工具,使它更友好,更人性化。
•增强的用户界面:关系编辑器节点更紧凑。
•节点面板:点击工作流。
•参数面板:动画按钮,表达式,Params锁定,ramps曲线小部件,滑块与鼠标中键的控制。
Realflow 2017新功能
新的呈现令人难以置信的细节的基础求解器。
新的飞溅和泡沫发射器迅速处理。
增强的工作流程:RealFlow Graphic
新的,可视化的基于节点的方法来设置场景元素之间的联系。
创建RealFlow的模拟图,无论何时何地在模拟过程中,您可以 创建/修改/提取 场景元素中数据。
快速高品质预览: Maxwell Render(麦克斯韦渲染)
预览你的模拟呈现在背景与麦克斯韦渲染质量。
新的文件格式:Alembic
新的文件格式允许您更大的灵活性,在你的管道,并提供高效的数据交换。
改进压裂工具
更快更可控的破碎。
改善了的网格化算法 RealFlow RenderKit
新的网格算法意味着更小,更富有细节的网格。
Realflow使用教程
创建漩涡
RealFlow能处理多种模拟任务:流体,刚体和柔体,波浪,风格化流体。用这些工具几乎能完成所有的任务,但仍有一种不行:气态液体(gaseous fluids)
当然没有必要用复杂的计算写一个基于Python的烟雾解算器。另外最常见的方法已经被申请成专利了。(例如 J. Stam’s “Stable Fluids”流体静力学)所以,如果你要编写一个商业烟雾解算器,你必须开发自己的方法,那是一件非常困难的事。此外一切都要适应RealFlow本身,比方说,特色。
图1.RF_toolfactory VortexFlow插件基于密度的烟雾模拟。
当你看一下模拟的烟雾时,我会发现两个重要的事。
1.烟雾上升是由于浮力
2.有大的涡流还有小的涡流(紊乱、卷边)
产生小的紊乱和卷边方法,称为(涡流限制 Vorticity Confinement)。这个技术引入速度(velocity)在某些领域,创建小的速度随机。涡流限制(vorticity Confinement)实际上增加了烟雾的真实感,使一切变得自然。
然而在许多情况下,是不需要这么多细节的。例如缩放很大的烟流(烟羽),或远处的烟雾源。问题是,要做大的涡流是非常困难的使用RealFlow标准流体解算器。
所提出的方法实在是很基础的,只达到近似级水准,但你在使用这方法时可能会找到一个新的方法来拓展脚本,去达到更好的效果。真正工作使用时,一定要经过试验,脚本对错误是非常敏感的。因此,本教程实际上是快速的方法提示,而不是全面详细的讨论。但也许你会觉得很有意思,看看你可以用这个方法获得什么。
准备
主要的困难是,迫使流体粒子沿着圆圈发射器路径运动,像升起的烟雾。实现这种行为的方法或公式是一定要引入Python脚本。一个好主意是在互联网上搜索,你很快就会发现两种基本方法:层流(laminar)和湍流(turbulent flow)
在层流流体下在某一个方向没有湍流,可以在水管或通道观察到这样的行为。湍流是非常难以描述的,因为流体看起来没有一个确定方向。
在湍流中你能看到漩涡和不同方向的流动。层流和湍流之间有这样一个关系:超过一定标准时,层流可以变成湍流。这个标准就是的雷诺数(Reynolds numbe)。在漏斗,狭窄的管道或障碍物里面的流体可以看到,这两种状态之间的转换。
层流
这种方法将要使用的公式被称为“Stokes定律”。这个术语,用来描述流体中球形体(粒子)的摩擦力。这力的大小也取决于粒子半径和流体粘度。跟其它任何摩擦力一样,Stoke力导致body/particel减速。在我们例子中,力作用在周围流体。
Fs = 6 ∏ η R v
Fs 是Stokes 力,∏是 pi,η('Eta')是流体动力学粘度。R是粒子半径,v是速度。这个方法优点,RealFlow可以提供所有必要参数给这个公式。这个思路是创建一个层流的力场抵消流体的上升运动来减速粒子。另一方面,粒子的浮力使流体上升。这上升流体在层流力场影响下会减缓粒子。这意味着,必须作用在粒子云外面。
为得到粘稠的效果必须要有很高的粘度值(viscosity)。这也将减慢整个粒子流,当粒子流累积在流体前面。因为动力学粘度值 1是水20°C时,它可以被忽略掉。但你能模拟不同流体。为什么最终是负的力,是为了抵消了上升粒子流:
Fs = - 6 ∏ηR v
图 2:层流(laminar flow)说明
引入负号,因为这力能抵消粒子向上运动。最终,我们得计算粒子半径 R。当你参考RealFlow手册时,会看在发射器"Resolution"参数下看到这个半径公式。这正是我们需要的:
湍流(TURBULENT FLOW)
思考湍流时你会遇到一个困难。当流体在障碍物周围,物体后面就会产生低压区。
在前面有高一点的压力。这不同的压力就是流体的阻力,这力可以被表达成:
Cw是阻力系数,A 是障碍物横截面。因为我们可以把流体粒子看作一个个小球体,Cw值是0.45,A就是简单的圆面积:∏R2(译者注:原文应该写错了)
图3:湍流图例
尽管这个公式能产生一种力,但仅是一方面,并不能产生湍流。仅仅是流体经过时的力(fluid experiences 不知道合适怎么说)。要找到层流变成湍流时间点,雷诺系数(Reynolds number)(后面写为Re)是很重要的。定义Re不是隐藏的,可从RealFlow标准参数来计算,但这仅仅是达到实际效果并不能正确描述湍流物理现像。
湍流和卷曲需要一个更加复杂的方法,基于从Navier - Stokes方程的向量场。这各种物理性质的向量场,通常存储成网格(grid)。这是“基于网格的流体”一词的由来。(grid based fluids)
RealFlow 湍流参数
RealFlow的标准粒子提供了湍流参数,但这不是自定义的值,是SPH(译者注:Smoothed Particle Hydrodynamics)流体内部参数。用脚本可以写成矢量格式:
ω = Vector.new(ωx, ωy, ωz)
脚本
对于此脚本,要使用RealFlow辅助器,因为它是一种特殊功能,可以给粒子施加外部力给网格流体或物体,这是方法很稳定,可放心使用。 脚本辅助器可以这样添加:
Edit > Add > Daemons > Scripted
辅助器结点面板提供了"Edit"功能。请注意脚本窗口模式。这意味着,你必须关闭此窗口再次访问底层的RealFlow面板。这实在是烦人,但不能改变。
为了使一切更方便,你也可能添加一个小型的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 math
import random
def applyForceToEmitter( emitter ):
normalThreshold = 0.85
emitterRes = emitter.getParameter("Resolution")
pRad = 1 / ((1000 * emitterRes) ** (1/3))
dynVisc = 1.0 # this is not RF’s Viscosity value!
particle = emitter.getFirstParticle()
while (particle):
pVel = particle.getVelocity().module()
pNormal = 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, stokesForce)
particle.setExternalForce(vortexVec)
particle = particle.getNextParticle()
这个脚本是非常简单的。在第一部分,粒子半径取自发射器的“Resolution".然后脚本遍历所有粒子,读出单个速度矢量。
使用的X,Y和Z单独的值,而不是矢量的大小
这是计算“module()”语句。这个方程是:
magnitude = sqrt(x2 + y2 + z2)
这个方程(module())结果是标量(仅仅是数字),不是由三个值组成的矢量。这个操作的原因是矢量不能作为检查条件来判断是否满足条件。但用浮点数字就不存在这个问题。
相同的过程(向量 - >模 - >标量)是适用于粒子的正常方向。这个方法必须要找出外面流体,法线模长(normal’s magnitude)是这脚本最重要和最敏感的值(见参数的调节)。所以脚本仅仅决定粒子在流体外面,力(=阻力)将接受场景设置。为了变得更丰富一点,加一点随机值到法线的模(normal’s magnitude)。
参数调节
正如所提到的,主要思路是,减缓流体外部粒子。内部粒子仍然保持初始速度,和拖缓粒子速度。由于粘度(也称为内部摩擦力),整个流体最终会放慢,粒子的聚集在流体的头部。
图4:相互影响的不同力,最终创建上升的烟雾
上面图片说明的方法:Stoke力Fs减缓流体外部粒子。浮力Fb作用在所有粒子上,产生了一个吸引力,使粒子向下。在这个边界可以看到涡流
想得到这个效果,必须标志出流体粒子的外面,这是为了检查法线。越接近流体粒子外部法线就越大。问题是这个值,发射器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之间。如果有逃逸的粒子,可以加一个"k Volume"场,或放一个盒子在发射器附近。另一个可能是增加“min substeps”(这值对逃逸粒子有很大影响)