Fluids —— MicroSolvers DOP
目录
Gas SubStep —— 重复执行对应的子步
Switch Solver —— 切换解算器
Gas Attribute Swap —— 交换、复制或移动几何体属性
Gas Intermittent Solve —— 固定时间间隔计算子解算器
Gas External Forces —— 计算外部力并更新速度或速度场
Gas Particle Separate —— 通过调整相邻位置来分离粒子
Gas Match Field —— 构建指定场以匹配参考场的尺寸和精度
Gas Seed Volume —— 在新区域生成粒子
Gas Linear Combination —— 合并多个场或属性
Gas Resize Field —— 调整场的尺寸
Gas Synchronize Fields —— 同步场的变换
Gas Particle to SDF —— 将粒子转化为SDF场
Gas Particle to Field —— 复制粒子点属性到指定场
Gas Reinitialize SDF —— 保留零表面并重初始化SDF场
Gas Buid Collision Mask —— 根据碰撞对象构建碰撞场
Gas SDF to Fog —— 将SDF场转化为Fog场
Gas Limit —— 限制场的值
Gas Enforce Boundary —— 对场强制边界条件
Gas Project Non Divergent Variational —— 无散度投射(可变)
Gas Project Non Divergent Adaptive —— 无散度投射(自适应)
Gas Viscosity —— 将粘性应用到速度场
Gas Adaptive Viscosity —— 将粘性应用到速度场(自适应)
Gas Feedback —— 计算并应用反馈力到碰撞体
Gas Extrapolate —— 沿SDF外推场的值
Gas Seed Markers —— 在surface边界周围生成标记粒子
Gas Seed Fluid Particles —— 创建、删除、或重生成粒子
Gas Integrator —— 将力应用于粒子
Gas Particle Move to Iso —— 将粒子移动到指定的SDF等值面上
Gas Limit Particles —— 将粒子限制在box内
Gas Particle Count —— 计算每体素的粒子数量
Gas Stick On Collision —— 在碰撞上粘连
Gas SubStep —— 重复执行对应的子步
该节点为microsolver,用于构建更大流体解算;Fluid Solver/Smoke Solver DOP可在主solver前或后添加microsolver,以扩展或调整模拟;该节点将对输入的solver,从左到右依次执行,并重复执行子步;
- 以Geometry判断要执行的子步数,如FLIP Solver;
- 假定pscale=1、v={1,0,0},则一帧运动0.0417米,如0.0417 > CFL Condition,则就执行2个子步;
- 以vel判断要执行的子步数,如Smoke Solver;
- 假定voxel size=0.1、vel={1,0,0},则一帧运动0.0417米,0.417个体素,如0.417 > CFL Condition,则就执行2个子步;
Switch Solver —— 切换解算器
此节点可让对象被多个解算器中的一个解算,由switch value数据确定;不像Blend Solver或Multiple Solver,仅使用一个子解算器;
注
- 如使用merge合并多个子解算器,相对于直接连接多个子解算器;
- 参数Value Enables All,为切换启用或禁用(类似Enable Solver DOP);
Gas Attribute Swap —— 交换、复制或移动几何体属性
常用于复制属性,在执行一些破坏性操作之前;
Gas Intermittent Solve —— 固定时间间隔计算子解算器
以规定时间间隔计算附加的子解算器,确保以不同的速率进行操作,或独立于子步的速率进行操作;
Gas External Forces —— 计算外部力并更新速度或速度场
在速度场内,对每个点计算外部力,然后更新速度场;每个体素的mass被指定为1,以用于力计算;torque被忽略;在粒子系统内,对每个点计算外部力;
- 更新Geometry的速度;
- 更新vel场;
Gas Particle Separate —— 通过调整相邻位置来分离粒子
当粒子靠的太近时,通常是使用力将其分开;不幸,如FLIP Solver正在移除divergence,力会被抵消;此节点通过直接调整粒子位置,使其分离;也确保没有能量被添加到系统;
Gas Match Field —— 构建指定场以匹配参考场的尺寸和精度
此节点会创建、调整尺寸、重采样,以匹配参考场的精度和大小;对于创建中间结果,但又不想显式地附加;如想移除该中间场,可设置为0;
注,由于匹配导致尺寸或精度改变,则数据会重置为0;
Gas Seed Volume —— 在新区域生成粒子
在新体积区域,创建flip粒子;可被用于填充新空间(当体积运动时形成的空间);可在较大流体区域模拟移动的小片;
Gas Linear Combination —— 合并多个场或属性
使用简单的方式,以快速合并多个场或属性;
(coef_1 * val_1 OP coef_2 * val_2 OP coef_3 * val_3 + constant)* totalcoefficient
Gas Resize Field —— 调整场的尺寸
调整场的边界框,使其最接近匹配size、center(保持相同的体素尺寸和体素对齐);可追踪移动的流体;
先参考场与设置的尺寸计算,在与源场计算;
Gas Synchronize Fields —— 同步场的变换
此节点匹配参考场的size、center;仅与参考场具有相同的体素量,才可变换;
精度、size 相同,直接匹配center、size;
精度、size 不相同,匹配center、size后,精度不变、体素量已变化;
Gas Particle to SDF —— 将粒子转化为SDF场
从粒子系统构建SDF场,粒子pscale属性用于描述半径球;
- Bandwidth,体素倍数的距离,超过此距离的体素均为此值;
- Use Max Speed,使用粒子的最大速度去扩展bandwidth,需v属性;有用于对快速运动的流体增加外推;
Gas Particle to Field —— 复制粒子点属性到指定场
复制粒子的点属性到指定场,粒子需pscale属性;
Gas Reinitialize SDF —— 保留零表面并重初始化SDF场
在各种操作下(如advection),SDF可能扭曲且不再表示到表面的实际距离;此节点会恢复SDF的“到表面距离”的特性,同时保留表面的零等容线;
Gas Buid Collision Mask —— 根据碰撞对象构建碰撞场
可根据碰撞对象构建碰撞场,表示碰撞体与流体场重叠处;生成内负外正的有符号距离场;还生成碰撞速度场(存储碰撞体点的速度);
- collision,重叠处的碰撞场(内正外负);
- collisionvel,存储碰撞体最近点的速度;
- collisionindex,最近碰撞对象的ID(表示离体素最近的碰撞对象);
Gas SDF to Fog —— 将SDF场转化为Fog场
Sampling Method,如何计算在SDF内的体素百分比;
- Supersampling,对每个体素进行多次采样,以设置内部百分比;
- Voxel Face Area,仅适用face-sample,计算更精确的权重(基于face-edge);
- Volume Fraction,使用构成体素的四面体体积估算,并以大约同super-sampling相同的成本,获得平滑准确的结果;
Gas Limit —— 限制场的值
限制(clamp)场值,可使用Field或Constant模式;
Gas Enforce Boundary —— 对场强制边界条件
有两种类型边界条件
- 创建场时,侧边界;
- 由碰撞体指定的碰撞边界;
Field,强制边界的场,默认Vel(Faces);
Collision Field(SDF),在其内部体素强制为collision value;
Collision Value,与Field类型一致,强制碰撞边界值,无则值为0;
Collision Index,碰撞对象ID,仅当勾选velocity enforcement才适用,用于局部速度计算;
- 可由Gas Build Collision Mask创建;
Boundary Value,与Field类型一致,指定场的边界值,无则为默认值;
Velocity Enforcement,允许速度离开碰撞体非进入,避免被追踪的surface黏附在碰撞体上;
Velocity Type,rigid不考虑变形,point点数不变,volume以SDF计算变形;
Use Friction and Bounce,使用碰撞对象和流体本身physical的Friction 、Bounce影响对应场;需有碰撞索引场Collision Index;Collision Weights,可由Gas SDF to Fog创建;
Gas Project Non Divergent Variational —— 无散度投射(可变)
此节点会移除速度场的散度(表示扩展或收缩),通过计算压力场(pressure抵消任何压缩或稀薄作用),并立即应用该场;
不同于Gas Project Non Divergent DOP,会考虑体素分量的覆盖,可更好地计算沿倾斜边界的速度场,避免出现阶梯效果;
流体力学中不可压缩条件为,速度场的散度为0;
注,常与POP Force DOP、Gas Turbulence DOP节点一起使用;Gas Advection依赖无散度场;
Gas Project Non Divergent Adaptive —— 无散度投射(自适应)
此节点会移除速度场的散度(表示扩展或收缩);散度被投射出速度场(通过计算流体的压力场,然后将压力场的梯度应用到速度场);压力场会在自适应(octree)背景网格解算,以显著提高性能(Gas Project Non Divergent Variational使用均匀统一的网格);
为保持高精度细节,会沿流体边界构建精细的网格带,网格会逐渐向内变粗;为最小化自适应和均匀统一网格的压力解算差异,在更新速度场前,自适应压力会被上采样然后平滑回到均匀统一网格;
注,需开启Solve Pressure with Adaptivity参数;
Gas Viscosity —— 将粘性应用到速度场
该节点会将粘性效果应用到速度场,粘性力可使流体附近的部分具有类似的速度;可被认为是局部阻力,流体的每部分都会被减慢到相邻流体的速度;
对少量粘度,可简单的使用Gas Blur DOP节点(对速度场)来实现;
此节点执行一个隐性的解算,类似Gas Project Non Divergent Variational节点,但大约三倍复杂,会相应地更慢;
注,为更准确的结果,速度场应已是无散度的(通常为应用Gas Project Non Divergent Variational的结果),然而由粘性解算的速度场可能不再是无散度的,所以粘性流体解算会在粘性解算前后都解算无散度;
Gas Adaptive Viscosity —— 将粘性应用到速度场(自适应)
该节点会将粘性效果应用到速度场,粘性力可使流体附近的部分具有类似的速度;可被认为是局部阻力,流体的每部分都会被减慢到相邻流体的速度;
粘性效果会在自适应(octree)背景网格解算,以显著提高性能(Gas Viscosity使用均匀统一的网格);
对少量粘度,可简单的使用Gas Blur DOP节点(对速度场)来实现;
注,为更准确的结果,速度场应已是无散度的(通常为应用Gas Project Non Divergent Variational的结果),然而由粘性解算的速度场可能不再是无散度的,所以粘性流体解算会在粘性解算前后都解算无散度;
Gas Feedback —— 计算并应用反馈力到碰撞体
使用压力场pressure(由无散度方程生成的),对碰撞体应用反馈力;影响会被添加到碰撞体的Feedback数据内;
Gas Extrapolate —— 沿SDF外推场的值
场的值(在等值线)将沿surface场增加的方向复制;
如Surface Index、Geometry被提供,将通过查找最近点(Surface Index指定的)并在该点位置对场插值,来执行外推;
注,最终的外推距离是在最大体素量和计算的速度值中取最大值;surface的bandwidth范围也影响外推;
Gas Seed Markers —— 在surface边界周围生成标记粒子
该节点创建标记粒子,或surfels,沿SDF边界;用于修正流体,以帮助保留体积并维持边界的高细节;
被创建的surfels,具有属性Cd(表示其在surfels的内部还是外部,内红外绿),还有属性pscale(到surface的距离,会钳制在0.1-0.5个体素尺寸之间);
Gas Seed Fluid Particles —— 创建、删除、或重生成粒子
该节点是在指定体积内,创建、删除、或重删除粒子,为Fluid Slover量身设计的;
注,Geometry需要pscale属性;
Gas Integrator —— 将力应用于粒子
将力应用于流体系统中的粒子,根据应用的力调整粒子的速度和位置;
Simulation Method,应用力到粒子时的解算模式;
- Euler,first-order,最快有效模式;可能需要较小的子步才可保持稳定;
- Midpoint,second-order,比Euler更慢但更稳定;
- Runge-Kutta,fourth-order,比Euler/Midpoint更慢但更稳定;
- Runge-Kutta-Fehlberg,fourth/fifth-order,能自适应决定合适的子步长度;必需和Gas Substep节点一起使用;
- Runge-Kutta2(1),类似Runge-Kutta-Fehlberg模式,first/second-order,能自适应决定合适的子步长度;必需和Gas Substep节点一起使用;
- Runge-Kutta3(2),类似Runge-Kutta-Fehlberg模式,second/third-order,能自适应决定合适的子步长度;必需和Gas Substep节点一起使用;
- Leapfrog
Advection Method,更新粒子位置;
- Standard,粒子位置被直接更新,使用当前粒子速度和步幅长度;
- XSPH,更新粒子位置,使用速度(融合每粒子当前速度和其相邻粒子的平均速度);
Gas Particle Move to Iso —— 将粒子移动到指定的SDF等值面上
将粒子移动到指定的SDF等值面上;可使用此方法,强制粒子移出表面;
Not Equal,不等于指定值的所有粒子;
Less,小于指定值的所有粒子;
Greater,大于指定值的所有粒子;
Gas Limit Particles —— 将粒子限制在box内
此节点会将点限制在给定的box内,box外的点也会调整其速度,以确保不会立即再次离开到界外;
Pos Behavior,如何对待超出边界的点;
- None,不修正位置;
- Clamp,将点位置钳制在边界;
- Bounce,反弹点位置,如在外0.5就反弹为在内0.5;可保留逃逸粒子的运动,并避免所有粒子具有相同位置;
- Wrap,右边外的0.1点,将移动到左边内的0.1的位置;
Vel Behavior,如何修正速度;
- None,不修正速度;
- Clamp,位于碰撞方向的速度分量,设置为0;
- Bounce,位于碰撞方向的速度分量,设置为相反;
Gas Particle Count —— 计算每体素的粒子数量
在场的每体素内,计算粒子数量并存储其值在对应场;
Gas Stick On Collision —— 在碰撞上粘连
此节点添加“sticky velocity”到流体素材vel上,以匹配碰撞速度(在碰撞体周围);此修改会使流体像粘连在碰撞体上;
相关文章:

Fluids —— MicroSolvers DOP
目录 Gas SubStep —— 重复执行对应的子步 Switch Solver —— 切换解算器 Gas Attribute Swap —— 交换、复制或移动几何体属性 Gas Intermittent Solve —— 固定时间间隔计算子解算器 Gas External Forces —— 计算外部力并更新速度或速度场 Gas Particle Separate…...

工业智能网关:HiWoo Box远程采集设备数据
工业智能网关:HiWoo Box远程采集设备数据 在工业4.0和智能制造的浪潮下,工业互联网已成为推动产业升级、提升生产效率的关键。而在这其中,工业智能网关扮演着至关重要的角色。今天,我们就来深入探讨一下工业智能网关。 一、什么…...

Apollo之原理和使用讲解
文章目录 1 Apollo1.1 简介1.1.1 背景1.1.2 简介1.1.3 特点 1.2 基础模型1.3 Apollo 四个维度1.3.1 application1.3.2 environment1.3.3 cluster1.3.4 namespace 1.4 本地缓存1.5 客户端设计1.5.1 客服端拉取原理1.5.2 配置更新推送实现 1.6 总体设计1.7 可用性考虑 2 操作使用…...

魅族MX4pro系统升级、降级
网上的教程都是按住开机键音量上或者下键,但是我按了没用,还是直接点击压缩包管用。 下载系统 官网地址(所有手机固件):https://flyme.cn/firmware.html 官方魅族mx4Pro系统:https://flyme.cn/firmwarelis…...

【Docker】快速入门之Docker的安装及使用
一、引言 1、什么是Docker Docker是一个开源的应用容器引擎,它让开发者可以将他们的应用及其依赖打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之…...

记录汇川:H5U于Factory IO测试13
主程序: 子程序: IO映射 子程序: 辅助出料 子程序: 模式选择 子程序: 示教程序 子程序: 手动程序 子程序: 统计程序 子程序: 异常报警 子程序: 自动程序: F…...

PYTHON通过跳板机巡检CENTOS的简单实现
实现的细节和引用的文件和以前博客记录的基本一致 https://shaka.blog.csdn.net/article/details/106927633 差别在于,这次是通过跳板机登陆获取的主机信息,只记录差异的部份 1.需要在跳板机相应的路径放置PYTHON的脚本resc.py resc.py这个脚本中有引用的文件(pm.sh,diskpn…...

网络配置以及命令详解
传统linux中,网络接口为eth0,eth1,eth2,..... RHEL 7以上版本默认命名是基于分配上的固定名称,ens33 接口类型: en:以太网有线接口 wl:无线局域网接口 ww:无线广域网 dmesg:显示开机信息 适配器类型: s:热插拔插槽 o:板载 p:pci类型 ifconfig ens160(命令行配置,临时生效):查…...

商务外语MR混合现实仿真情景实训教学
MR混合现实技术是一种将虚拟世界与真实世界相结合的技术。通过MR设备,我们可以将虚拟的场景、人物、物品等元素实时地呈现在真实的环境中,实现真实与虚拟的完美融合。在商务外语的实训教学中,MR技术可以为我们提供丰富的场景资源,…...

牛客周赛 Round 28 解题报告 | 珂学家 | 组合数学 + 离散化树状数组
前言 整体评价 还是E稍微有点意思,新周赛好像比预期要简单一些, _. 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红的新周赛 思路: 模拟 #include <bits/stdc.h>using namespace std;int main() {int res 0;for (int i 0; i < 6; i…...

Python系列(3)—— 变量
变量 一、变量命名规范二、变量赋值三、变量的数据类型四、变量的作用域五、变量类型转换 Python编程中,变量是存储数据的容器。它们用于存储各种数据类型,如整数、浮点数、字符串、列表、字典等。理解变量及其工作原理是Python编程的基础。 一、变量命…...

Java 并发性和多线程2
四、如何创建并运行 java 线程 Java 线程类也是一个 object 类,它的实例都继承自 java.lang.Thread 或其子类。 可以用如下方式用 java 中创建一个线程: Tread thread new Thread(); 执行该线程可以调用该线程的 start()方法: thread.start(); 在上…...

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!
原文链接 https://openaigptguide.com/gpt-store-and-chatgpt-team/ OpenAI推出的两款新产品和服务:GPT Store和ChatGPT Team,提供了许多全新的解决方案和功能,旨在帮助用户更轻松地使用和构建GPT工具,同时也增加了公司的收入来源…...

memory泄露分析方法(java篇)
#memory泄露主要分为java和native 2种,本文主要介绍java# 测试每天从monkey中筛选出内存超标的app,提单流转到我 首先,辨别内存泄露类型(java,还是native) 从采到的dumpsys_meminfo_pid看java heap&…...

kubectlkubeletrancherhelmkubeadm这几个命令行工具是什么关系?
背景 在最近学习k8s的过程中,发现kubectl&kubelet&rancher&helm&kubeadm这几个命令怎么在交错使用,他们究竟是什么关系?他们分别应该在什么情况下使用呢?这里我进行了简单的总结,做个区分。 各工具说…...

Day26 669修剪二叉搜索树 108有序数组转为二叉搜索树 538二叉搜索树转换为累加树
669 修剪二叉搜索树 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 class Solution { pub…...

优化CentOS 7.6的HTTP隧道代理网络性能
在CentOS 7.6上,通过HTTP隧道代理优化网络性能是一项复杂且细致的任务。首先,我们要了解HTTP隧道代理的工作原理:通过建立一个安全的隧道,HTTP隧道代理允许用户绕过某些网络限制,提高数据传输的速度和安全性。然而&…...

第二篇ts,es6箭头函数结合typescript,和for...of
1.基本用法: const f v > v// 等同于const f function(v) {return v}2.箭头函数返回数组 const f () > {const list [1,2,3]// 直接返回一个对象return list.map(it > ({id: it}))}const result f() // [{id:1},{id:2},{id:3}]3.箭头函数和变量解构结合使用 cons…...

异构多品牌高清视频监控接入-技术方案
目 录 一、概述 二、建设目标及需求 (一)建设总目标 (二)需求分析 三、设计依据与设计原则 (一)设计依据 (二)设计原则 1、先进性与适用性 2、经济性与实用性 3、可靠性与安全性 4、开放性 5、可扩充性 6、追求最优化的系统设备配置 7、提高监管…...

编程探秘:Python深渊之旅-----机器学习入门(七)
团队决定在他们的项目中加入一些机器学习功能。瑞宝,对新技术充满好奇,跃跃欲试地想了解更多。 瑞宝(兴奋地):我一直想学习机器学习,现在终于有机会了! 龙(微笑着)&…...

SpringMVC 学习博客记录
文章目录 Servlet请求转发和请求包含RequestDispatcher HandlerInterceptor组件实际运用场景 HandlerMapping&RequestMappingInfo(HandlerMapping)HandlerExecutionChainHandlerAdapter源码学习知识点博客记录 Servlet请求转发和请求包含 RequestDispatcher Request#getR…...

重磅!OpenAI正式发布,自定义ChatGPT商店!
1月11日凌晨,OpenAI在官网正式发布了,自定义GPT商店,可以帮助用户找到目前最好用、流行的自定义ChatGPT助手。 在2024年第一季度,OpenAI将启动GPT 开发者收入计划。首先,美国地区的开发者将根据用户对其 GPT 的使用情…...

LeetCode讲解篇之47. 全排列 II
文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个nums中元素是否被访问的数组used、记录还需要递归的深度deep 遍历nums 如果当前元素被访问过或者当前元素等于前一个元素且前一个元素没被访问过就跳过该次遍历 否则选择当前元素,继续递归 直到…...

机器学习~从入门到精通(二)线性回归算法和多元线性回归
为什么要做数据归一化 一、数据归一化: 1.最值归一化 2.均值方差归一化import numpy as npX np.random.randint(1,100,size100) X X.reshape(-1,2) X.shape X np.array(X,dtypefloat) X[:,0] (X[:,0]-np.min(X[:,0]))/(np.max(X[:,0])-np.min(X[:,0])) X[:,1]…...

IPv6组播--PIM
IPv6组播路由协议 PIM(IPv6)作为一种IPv6网络中的组播路由协议,主要用于将网络中的组播数据流引入到有组播数据请求的组成员所连接的路由器上,从而实现组播数据流的路由查找与转发。 PIM(IPv6)协议包括PIM-SM(IPv6)和PIM-DM(IPv5)两种模式 IPv6组播协议定义 PIM(…...

如何在Spring Boot中使用EhCache缓存
1、EhCache介绍 在查询数据的时候,数据大多来自于数据库,我们会基于SQL语句与数据库交互,数据库一般会基于本地磁盘IO将数据读取到内存,返回给Java服务端,我们再将数据响应给前端,做数据展示。 但是MySQL…...

PDF 文档解除密码
PDF 文档解除密码 1. 文件 -> 文档属性 -> 安全 -> 文档限制摘要2. PDF365References 1. 文件 -> 文档属性 -> 安全 -> 文档限制摘要 密码保护《算法设计与分析基础_第3版.pdf》 2. PDF365 https://www.pdf365.cn/ 免费功能 -> PDF 去密码 开始去除 Re…...

React16源码: React中的expirationTime过期时间的计算源码实现
expirationTime 的计算方式 先看expirationTime相关的源代码,这里是异步的计算方式,它会有一个过期时间异步任务优先级比较低,可以被打断,防止一直被打断导致不能执行,所以React给它设置了 expirationTime 过期时间也…...

程序设计语言的分类
编译与解释 编译型 将源代码转换成目标代码,通常源代码是高级语言代码,目标代码是机器语言代码,执行编译的计算机程序称为编译器。 eg:java 好处:对于相同的源代码编译产生的目标代码执行速度更快,目标代码不需要编译…...

Python轻松实现炫酷的手势检测
大家好,今天分享一个非常有意思且十分简单的python库——mediapipe库。该库集成了大量的深度学习模型,短短几行代码,就可以快速实现一个炫酷的实例,本文就以手势检测为例,展示一下这个强大的开源库。 mediapipe由Goog…...