Fluids —— Whitewater (SOP)

news2025/1/11 20:38:49

目录

 Whitewater Lifecycle

Workflow

Whitewater source

Deformation sources

Visualizing whitewater

Whitewater solver

Wind

Foam erosion

Repellants

Whitewater postprocess


        基于SOP的白水是对SOP FLIP工作流的增强;该系统与规模无关,无需考虑粒子数即可控制白水的物理量;可在低精度下控制好设置,在使用在高精度上;此系统支持foam, spray, 及bubbles的同步创建;

 Whitewater Lifecycle

        解算器负责生成新的白水粒子,使用由Whitewater Source生成的emit来确定发射量;粒子的老化与死亡也由解算器处理,根据当前条件,动态计算死亡;确定死亡几率时,会考虑以下因素:

  • age,更老的粒子更易死亡;
  • depth,深度的变化,死亡几率也会变化;
  • density,开启erosion,密度也会增加死亡几率;

高级用户可访问点属性deathchance

注,忽略其他因素,Lifespan是平均寿命;

Workflow

可使用Whitewater Configure,将创建4个节点以生成白水,可作为起点;

  • Whitewater Source,生成白水的emit场;
  • Whitewater Solver,白水设置且解算;
  • Whitewater Post-process,为渲染做准备;

FLIP Configure Beach Tank

Whitewater source

有多种不同方式来发生白水粒子

  • Curvature,使用粒子速度和表面法线间的角度,确保白水在浪尖;
  • Acceleration,基于流体速度的变化,可检测粒子重新加入流体的区域;
  • Vortcity,速度体积内的旋转强度,以确定流体的搅动区域(通常在表面更深的区域发生),如波浪崩开;
  • Pressure,基于压力梯度与surface梯度间的对齐,如两矢量方向相反则没有粒子发射;但一旦波浪冲击,方向将相同,则发射粒子;
  • Splash,直接作用于点并使用相对密度;
     

Deformation sources

另一方法是基于变形的发射,此方法用于识别流体表面的挤压Squish、拉伸Stretch、及缩放;

  • Squish,发射于表面被压缩的区域;
  • Stretch,发射于表面被扩展的区域;
  • Scale,基于在所有方向的压缩或扩展;

Visualizing whitewater

        Visualization标签可显示激活的不同发射类型,Curvature (red), Acceleration (green) 及 Deformation (blue);

Tips

  • 该节点默认会输出emitsurface, 及 vel,也可只emit以节省空间(关闭Output Fluid Fields);
  • 可开启Extra Sources,连入第四个端口,以将这些点转化为发射体积;
  • 如白水太少或太多,通常更好的方法是查看FLIP模拟;

Whitewater solver

有多种方式控制白水量,以下是一些最常用的方法;

  • Whitewater Scale,控制白水粒子间的间隔,降低参数会增加粒子量,如左600,000,右75,000;
     
  • Emission Amount, 发射白水量的简单倍增,如左600,000,右300,000;
     

Wind

         wind仅影响spray粒子,当粒子从表面升起时,将被wind影响,也有Wind Shadow使spray更加真实;其中Collider Shadow可使用碰撞体阻挡风影响,Water Shadow使用surface(如波浪)阻挡风影响;

如,spray黄,foam蓝,bubbles紫;

Foam erosion

        会在密度大的区域保留foam,在稀疏的区域侵蚀;这一功能是非常有用的,大量白水被发射时,开始是没有细节的大白块,增加侵蚀会使粒子更快的消失,并形成更多的洞;

 

注,可开启Visualization/Relative Density以查看;

Repellants

        创建并维持排斥粒子,将白水排斥开并形成蜂窝状泡沫结构,以下红色点表示;Repellant的半径和noise有许多变化,以使外观更有机;

Whitewater postprocess

为渲染做准备,可输出ParticlesFog Volume(沿速度场)、Mesh

  • Particles,默认输出,可获得大量细节,如海浪撞击岩石;
     
  • Fog Volume,对光穿过白水并被吸收有用;
     
  • Mesh,可在泡沫和没有泡沫间定义边有用;
     

Tips,如使用Domain/Flatten Outside Bounding Box选项,将白水粒子展平到水平面;对与整个海洋模拟融合时,很有用;可避免白水看起来像漂浮在surface上;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day-06 构造有效字符串的最少插入数

思路 动态规划: Word[i]单独组成abc 如果Word[i]>word[i-1] 则word[i]和word[i-1]一起构成abc 解题方法 关系式:dp[i]dp[i-1]2或dp[i]dp[i-1]-1 时间复杂度: O(n) 空间复杂度: O(1) Code class Solution {/*动态规划&…

摩托车充气泵方案芯片应用设计

技术工程师在做产品方案开发之前,首先也是最重要的就是芯片选型。为什么这样说呢?那是因为芯片是整个方案设计中,最至关重要的一环,没有它,后面的工作将无法进行,只有将芯片核心基础定下来,后面…

zabbix监控windows主机

下载安装zabbix agent安装包 Zabbix官网下载地址: https://www.zabbix.com/cn/download_agents?version5.0LTS&release5.0.40&osWindows&os_versionAny&hardwareamd64&encryptionOpenSSL&packagingMSI&show_legacy0 这里使用zabbix agent2 安装 …

C#,迭代深化搜索(IDS)或迭代深化深度优先搜索(IDDFS)算法的源代码

摘要:本文介绍适合于大数据规模情况下的,新型的迭代深化深度优先搜索(IDDFS)算法的原理、实例及实现的C#源代码。 引言 常用的树(或图)遍历算法是两种: 广度优先搜索算法(BFS) 和 深度优先搜索…

LeetCode[105] 从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7] …

Veeam Backup12安装备份恢复ESXI7.0 U3虚拟机

介绍 只需单个平台即可保护并管理所有工作负载、应用及数据:云端、虚拟、物理、SaaS、Kubernetes、VMware、Hyper-V、Windows、Linux、UNIX、NAS、AWS、Azure、企业应用等。 个人主要用于备份ESXi上的虚拟机,可以实现单次完整备份,和定时的…

k8s中top指令使用前提:正确安装metrics-server

参考引用项目:https://www.cnblogs.com/lfl17718347843/p/14283796.html Kubernetes Metrics Server 是 Cluster 的核心监控数据的聚合器,kubeadm 默认是不部署的。 确认metrics-server能否被使用的三个前提(验证以及修改方法https://cnblogs…

C#编程-实现多线程

实现多线程 多线程帮助同时执行各种操作。这为用户节省时间。多线程程序包括一个主线程和其他用户定义的线程以同时执行多个任务。 微处理器为执行的进程分配内存。每个进程占有内存中它们自己的地址空间。但是,所有在进程中的线程占有相同的地址空间。多线程允许在一个程序…

k8s的存储卷

存储卷------数据卷 把容器内的目录,和宿主机的目录进行挂载。 容器在系统上的生命周期是短暂的,delete,k8s用控制(deployment)创建的pod,delete相当于重启,容器的状态也会回复到初始状态。 …

红队打靶练习:BREACH: 1

信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.110.128 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.110.1 00:50:56:c0:00:08 …

Linux基础开发工具--vim

2.vim 代码编辑器 vim共有3种模式: ​ ​ 命令模式: $:将光标定位在当前行最右侧 ^:将光标定位在当前行最左侧 shiftg:将光标移到文本结尾 nshiftg:将光标移到文本第n行 gg:将光标移到文本开始 h:左 j:下 k:上 l:右 nyy:复制当前行/或复制多…

解锁行内元素和块元素的奥秘:网页开发的基础

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

操作系统课程设计:常用页面置换算法(OPT、FIFO、LRU)的实现及缺页率的计算(C语言)

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder) 目录 一、效果图二、代码(带注释)三、说明 一、效果图 二、代码(带…

7.云原生之jenkins集成SonarQube

1. 私有云实战之基础环境搭建 2. 云原生实战之kubesphere搭建 3.云原生之kubesphere运维 4. 云原生之kubesphere基础服务搭建 5.云原生安全之kubesphere应用网关配置域名TLS证书 6.云原生之DevOps和CICD 7.云原生之jenkins集成SonarQube 8.云原生存储之Ceph集群 文章目录 搭建 …

作业--day45

定时播放 #include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MyWidget) {ui->setupUi(this);ui->bg_lab->setPixmap(QPixmap(":/pictrue/shanChuan.jpg"));ui->bg_…

CMake入门教程【高级篇】执行文件、库属性set_target_properties和get_target_property

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1.概述2.命令作用3.详细使用说明4.完整代码示例5.实战使用技巧与注意事项6.总结分析1.概述 se

java基于SSM的旅游论坛设计与实现论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

【Node.js学习 day3——http模块】

创建HTTP服务端 //1.导入http模块 const http require(http);//2.创建服务对象 const server http.createServer((request, response) > {response.end(Hello HTTP Server);//设置响应体 });//3.监听端口,启动服务 server.listen(9000,()>{console.log(服务…

【昕宝爸爸小模块】HashMap用在并发场景存在的问题

HashMap用在并发场景存在的问题 一、✅典型解析1.1 ✅JDK 1.8中1.2 ✅JDK 1.7中1.3 ✅如何避免这些问题 二、 ✅HashMap并发场景详解2.1 ✅扩容过程2.2 ✅ 并发现象 三、✅拓展知识仓3.1 ✅1.7为什么要将rehash的节点作为新链表的根节点3.2 ✅1.8是如何解决这个问题的3.3 ✅除了…

全网最细RocketMQ源码二:Producer

入口 这里分析源码用的入口是: org.apache.rocketmq.example.quickstart package org.apache.rocketmq.example.quickstart;public class Producer {public static void main(String[] args) throws MQClientException, InterruptedException {/** Instantiate wi…