Houdini 中文帮助文档

Smoke Solver

设置和配置烟雾解算器。 此是一个稍低级别的解算器,是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

ObjectA Smoke object to work on. Note that a smoke object can contain multiple containers.
Pre-solveRun 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 updateNodes 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).
AdvectionConnect 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如何测量源物体上的速度。如果源几何体没有随着时间变形,可以使用“刚性速度”。如果源几何体随着时间变形,但不会改变拓扑,可以使用“点速度”方式。

Rigid Velocity源物体必须是无变形的才可以用该方式(刚性方式)。
Point Velocity源物体可以有变形,但拓扑不能变。
Volume Velocity使用代表物体的SDF对象。允许几何体有变形,且不需要有固定的拓扑,但不可以检测切线速度。

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用于传输场的算法。

Single stage等同于 Gas Advect DOP节点,在每个点上会通过速度场返回跟踪一次,获取新的体素值。
BFECC and Modified MacCormack运行一个二级的基本传输步骤,会使尖锐的流体不会那么分散。
Clamp Values“BFECC and Modified MacCormack ”传输类型的错误校正可以移除超出容器的外的体素值,导致产生负的密度值的奇怪的效果。此参数可以让你选择一个方式来避免这个问题。默认是“重置”方式。

None不会进行任何校正。
Clamp限制每个体素值到可行的数值范围内。
Revert如果校正后的错误值仍然超出了范围,会将它返回到单级的数值。
Vel Advection Type用于传输速度场的算法。列表中更高的类型会降低场的外观粘度。
Advection Method控制粒子跟踪。

Single step获取每个体素处的速度,并且子啊用于时间步幅的方向上使用单个步幅。此更快速,且独立于速度场的速度,但对于大的时间步幅仍然会崩溃。
Trace确保返回的跟踪在速度更新前不会移动超过单个体素的距离,允许有大的时间步幅。
Trace midpoint和Trace类似,但会使用一个更有序的传输方式,更精确,但速度慢。
HJWENO是一个non-lagrangian 积分器,可以让你理论上更精确的传输分散场。不幸的是,如果子步幅太大,它会奔溃。
Upwind是一个比non-lagrangian方式快速但精度低的方式。
Advection CFL当跟踪粒子时,此控制在单次迭代计算中,粒子可以移动多少体素。高的值会产生快速的传输,和快速的跟踪,但会有更多错误。

Collisions

Correct Collisions设置碰撞物体内部的密度,燃料场为0.此可以避免燃料和密度从移动的物体中漏出。
Feedback Scale是一个烟雾对物体反作用的力的缩放因子。值为0,烟雾不会反作用于物体(没有反馈效应)。

Clear

Fields to Clear在解算完步幅后,清空指定的场类型。此可以去掉不需要的.sim 文件,减少模拟数据的尺寸,节约保存时间。

None不执行任何场的清空。
Hidden在下一个时间步幅中不需要的场,且没有向导参数的会被清空
Static在下一个时间步幅中不需要的场会被清空。
Additional此处是一个用空格隔开的额外场列表,在解算处理完成后,这些场数据会被清空。

Outputs

First Output此操作节点的输出取决于连接到该节点的输入对象。如果一个物体流输入到该节点,输出也会是一个包含同样物体的物体流(但是会在物体上附加该节点的数据)。

如果没有物体流连接到该节点,此输出就会是一个数据数据。此数据输出可以被连接到一个Apply Data DOP节点上,或者之间连接到其它数据节点的输入上,将该节点的数据附加到另外一个物体或数据块上。

点击分享到: