设置和配置烟雾解算器。 此是一个稍低级别的解算器,是Pyro解算器的基本解算器。
查看烟火视觉扩展页面,获取关于使用参数得到不同火和烟雾外观的信息。
smoke solver 提供了基本的烟雾模拟, Pyro Solver添加了火的模拟以及形状的控制。如果你只想生成烟雾, smoke solver 会非常有用,因为它简单,并且高级用户可以在其上创建自己的扩展内容。但是 Pyro Solver更灵活。
Setting up
如果你使用工具创建Pyro效果,其会给你自动设置设置源对象,解算器,以及输出物体。
如果你手动设置pyro网络,你可以使用 Smoke Object 节点创建一个DOP物体(其会附加烟火解算器所需要的数据)如果你已经有一个DOP物体,你可以使用 Smoke Configure Object node添加所需要的数据。
解算器会利用物体上各种场数据。
物体应当有一个用于烟雾密度的标量场density。
物体应当有一个用于每个体素处速度的矢量场vel。
另外,物体可以有一个标量场temperature ,用于内部浮力的计算。
Inputs
Object | A Smoke object to work on. Note that a smoke object can contain multiple containers. |
Pre-solve | Run the network branch attached to this input before each solving step. In the standard pyro setup, the attached node (Gas Resize Fluid Dynamic) automatically resizes the fluid containers at each step. |
Velocity update | Nodes attached to this input can edit the simulation network’s velocity fields, for example to apply custom forces, before the “project gas non-divergent” step (see also the “Sourcing (post-solve)” input below). |
Advection | Connect a Gas Advect node to this input to allow the it to advect the points of geometry data attached to the container based on the fields in this solver. |
Sourcing (post-solve) | The main use for this input is to add volumes attached to this input as fuel sources, density sources, sinks, collision fields, pumps, etc. These volumes will usually be created by a Source Volume node that imports volumes from a geometry network. See pyro sourcing for more information. Nodes attached to this input can also edit the simulation network’s velocity fields, for example to apply custom forces, after the “project gas non-divergent” step. |
Parameters
Simulation
这些参数控制着模拟如何随着时间变化。查看pyro模拟如何工作,获取更多关于温度和速度场如何驱动模拟扩散的信息。
Time Scale | 对烟火的模拟进行时间缩放。 |
Temperature Diffusion | 是温度场的一个高斯模糊因子。高的值会更多的向外扩展烟雾,创建更少的尖锐效果。例如,值为2会每秒使用值为2的半径模糊温度场。真实世界中该参数是模拟扰乱效果,会向外扩散场。 |
Cooling Rate | 设置烟雾的冷却快慢。值为0.9会每秒降低90%的温度。 |
Viscosity | 速度场的流动性。高的值会使临近的体素有同样的速度,创建一个更像流动的效果,值为0会允许临近的体素值朝着任意方向移动(没有限制性),创建一个更随机的,紊乱的效果。 |
Buoyancy Lift | 每个体素处向上的力会被环境温度和体素温度值的差所缩放。因此,越热的区域会上升越快,冷的区域会下沉。增加该值可以使烟火效果上升更快。 |
Buoyancy Dir | 设置所运用的浮力的方向。 通常用于向上提升,模拟,也可以快速的调节模拟的运动方向。 |
Relationships
在Houdini12之前,Pyro解算器会使用DOP关系来将源对象,水泵对象,sink以及碰撞几何体和流体容器产生关联,使用Merge DOP/Apply Relationship DOP来创建这个关系。在H12和之后的版本中首先方式是使用SOP网络创建源,水泵,Sink,以及碰撞几何体,并使用Source Volume DOP导入它们。
如果你想使用旧的关系方式来设置源,Sink等关系,你可以使用该选项卡中的参数来启用关系。默认,关系是关闭的,解算器会忽略这些关系。
你可以同时使用这两种方式,即导入导入DOP物体,并将其附加到解算器的“源”输入端,以及设置DOP物体的关系。当启用关系时,解算器会合并两种方式之间的源,Sink等关系。
Enable Relationships | 使用物体的关系数据来添加源,水泵,SInk以及碰撞几何体关系到模拟中(以及连接被导入的数据到源输入端)。 |
Sources
Enable Source Relationship | 将物体作为一个源对象处理,即Smoke的模拟会从该物体上产生。 | ||||||
Add Source To | 将源对象添加到哪个场上。默认是密度(其会创建烟雾)。要创建火,你可以将此改变为fuel(燃料),并设置源物体的温度属性。 | ||||||
Source Merge | 如何将源物体的体积添加到模拟中。会缩放所添加的数量。 | ||||||
Velocity Merge | 源物体的速度如何影响容器对象的速度场。会缩放所添加的数量。 | ||||||
Temperature Merge | 源物体的温度如何影响容器对象的温度场。缩放控制着要添加的温度数量。 | ||||||
Velocity Type | 如何测量源物体上的速度。如果源几何体没有随着时间变形,可以使用“刚性速度”。如果源几何体随着时间变形,但不会改变拓扑,可以使用“点速度”方式。
|
Pumps
Enable Pump Relationship | 给DOP物体使用一个“水泵”关系,即DOP物体会作为一个水泵,对烟雾产生推动作用。 |
Velocity Merge | 源物体的速度如何影响容器的速度场。缩放参数控制着所添加的速度数量。 |
Velocity Type | 控制水泵物体的每点速度是如何计算的。 |
Temperature Merge | 物体的温度属性是否会影响容器对象的温度场。如果你选择“Set interior”, 方式,在物体内部的部分温度场会被设为物体的温度值。 |
Collisions
Enable Collide Relationship | 给DOP物体使用一个“碰撞”关系,即DOP物体会和烟雾碰撞。 |
Temperature Merge | 物体的温度属性是否会影响容器对象的温度场。如果你选择 “Collision interior”, 方式,在物体内部的部分温度场会被设为物体的温度值。 |
Restrict Mask to Bandwidth | 使用碰撞遮罩,只会从原始的碰撞几何体上计算到一定的距离范围。关闭此项会计算遮罩的完整范围。 |
Use Point Velocity for Collisions | 如果碰撞物体是变形的,但是有固定的拓扑,可以开启此项,如果拓扑也不固定,可以开启Use volume velocity for collisions方式。 |
Use Volume Velocity for Collisions | 如果变形几何体随着时间是变形的(改变形状),且拓扑也会改变,可以开启该项。 |
Collide with Non-SDF | 允许流体和没有SDF的物体碰撞,如其他流体。 |
Extrapolate into Collisions | 拷贝密度和燃料场到碰撞场中。此会导致烟雾变得有粘性,可以避免烟雾和碰撞直接的空气带。也可以避免烟雾穿过碰撞场。(物体的运动会带动烟雾的运动) |
Correct Collisions | 在每个步幅上,清空碰撞遮罩内的密度场。此可以避免烟雾穿过物体,或被困在物体内部。 |
Sink
Enable Sink Relationship | 给DOP物体使用一个“Sink”关系。 |
Advanced
通常你不需要改变这些参数。
Use OpenCL | 默认,DOP中启用了缓存。 默认是启用了重设大小。重设大小必须通过CPU来管理场的变化。它可能会打碎GPU内存,导致内存溢出错误。 |
Minimum Substeps | 强制设置解算器所运行的最小子步幅尺寸。通常, pyro solver 不需要子步幅。如果你使用的是烟雾解算器,可以增加此值获取一个更稳定的效果。增加它会使模拟变慢。 |
Maximum Substeps | 强制设置解算器所运行的最大子步幅尺寸。增加它也会使模拟变慢。 |
CFL Condition | 当最大子步幅大于1时,解算器会使用该参数来定义子步幅的数量。其条件是:没有子步幅会允许一个物体以大于该体素数量产生渗透的。高值可以通过更多的子步幅来移动烟雾,很可能让它穿过碰撞物体。 |
Frames Before Solve | 指定在完全解算完成前,等待的帧数量。只有这些帧或运用到运用到上一此解算器输入端的会被计算。 |
External Forces
Scaled Forces | 是一个被每个体素处forcescale 场所缩放的力的列表。默认是所有的力,除了重力。 |
Absolute Forces | 统一运用到所有体素上的力列表,会忽略forcescale 场。 |
Rest Field
Enable Rest | 启用静止场,可以用于跟踪流体随着时间的运动。开启此项可以在体积材质上映射噪波或纹理。 |
Dual Rest Fields | 创建一个rest2 场,即是一个有主要的rest场返回的场,允许你运行较长的模拟,无需 |
Frames Between Solve | 在重设静止场前,帧的数量。 |
Frame Offset | 静止场会在哪一帧被重设。如果你在预滚动模拟,可以延迟静止场的初始化,直到预滚动完成,通常此会产生一个好的结果。 |
Time Scale | 设置经常场对速度场反应的快慢。值为1会使静止场精确的匹配速度场,值小于1会使静止场的移动比真实流体慢。 |
Projection
模拟中“映射非分散”的步骤会移除速度场中分散的元素。
Projection Method | 设置映射非分散对象的算法。“PCG”有更精确的边界条件,可以避免计算碰撞物体的内部。“ Multigrid ”更快,特别是在大的高分辨率的容器中。 |
Multigrid Iterations | 设置 multigrid 方式中计算的迭代次数。增加此值可以强制其映射多次,使其更精确(不要高于5). |
Advection
Advection Type | 用于传输场的算法。
| ||||||||||
Clamp Values | “BFECC and Modified MacCormack ”传输类型的错误校正可以移除超出容器的外的体素值,导致产生负的密度值的奇怪的效果。此参数可以让你选择一个方式来避免这个问题。默认是“重置”方式。
| ||||||||||
Vel Advection Type | 用于传输速度场的算法。列表中更高的类型会降低场的外观粘度。 | ||||||||||
Advection Method | 控制粒子跟踪。
| ||||||||||
Advection CFL | 当跟踪粒子时,此控制在单次迭代计算中,粒子可以移动多少体素。高的值会产生快速的传输,和快速的跟踪,但会有更多错误。 |
Collisions
Correct Collisions | 设置碰撞物体内部的密度,燃料场为0.此可以避免燃料和密度从移动的物体中漏出。 |
Feedback Scale | 是一个烟雾对物体反作用的力的缩放因子。值为0,烟雾不会反作用于物体(没有反馈效应)。 |
Clear
Fields to Clear | 在解算完步幅后,清空指定的场类型。此可以去掉不需要的.sim 文件,减少模拟数据的尺寸,节约保存时间。
| ||||||
Additional | 此处是一个用空格隔开的额外场列表,在解算处理完成后,这些场数据会被清空。 |
Outputs
First Output | 此操作节点的输出取决于连接到该节点的输入对象。如果一个物体流输入到该节点,输出也会是一个包含同样物体的物体流(但是会在物体上附加该节点的数据)。 如果没有物体流连接到该节点,此输出就会是一个数据数据。此数据输出可以被连接到一个Apply Data DOP节点上,或者之间连接到其它数据节点的输入上,将该节点的数据附加到另外一个物体或数据块上。 |