首页 > 其他分享 >UE中基于FluidFlux插件实现洪水数据接入的一种思路

UE中基于FluidFlux插件实现洪水数据接入的一种思路

时间:2024-11-05 11:08:33浏览次数:1  
标签:插件 数据 纹理 像素 FluidFlux UE Height 生成

这是FluidFlux插件文档链接:

http://imaginaryblend.com/2021/09/26/fluid-flux/

FluidFlux插件原本可以在编辑器模式下,通过右键SimulationDomain保存模拟状态,这个模拟状态保存后是一个资产文件以及三张纹理图Ground,Height,Velocity。

img

SimulationDomain中有一个俯视的场景捕获相机,三张纹理图就是根据场景捕获得来的。Ground是在模拟过程中一直不变的,代表地面捕获结果,是模拟过程的基础高度图。Height中保存了水位高度信息,Velocity中保存了水流速信息。通过纹理图每个像素保存的信息对这片捕获的区域进行水体模拟还原,实际上也就是划分了栅格,栅格大小和多少是在domain中自行调节的。最高尝试过包围4096*4096大小的区域,每个像素代表2平方米,实际也就是8平方公里多一点。

接入外部已经生成好的洪水水位数据,可以将其映射到该区域对应的栅格内,反向手动生成高度图,如果有流速信息,亦可反向生成速度图。插件生成的Height纹理是PF_R16F格式,float数据需要转换到uint16格式进行逐像素的数据操作。Velocity纹理是RGBA8格式,通过材质看,似乎RG通道分别代表了xy流向速度,B通道存储了高度值,A通道存储的是和水面泡沫相关的数值。我只尝试手动生成了Height纹理,Velocity并不十分确定。

生成后,可根据Domain的Load方法,加载生成好的高度图,即可生成对应的水位模拟情况。

有几个点可能要注意:
①整个过程可以改造成运行时而不紧紧是编辑器态下可用,可实现在线的数据接入。如果只需要预制好一系列贴图,编辑器态下就够了。
②如果纹理过大,生成时间还是比较长的,还需要考虑显存占用问题。数据读入和纹理生成可以全都放到子线程中进行没有问题。会有较大的性能提升。
③如果数据不太丝滑,会导致直接生成的水面有尖峰,且相邻间水填充初始状态有问题,可以考虑先提前Load进去,模拟一小会,再把Domain中的Current State中的高度图与速度图做保存使用,这样保证在实际场景中的表现效果。
④水位高度图中每像素数据应该不是纯粹的相对于地面的水位高度数据,最终采用的一个方法是,在完全没有水的情况下捕获场景区域,存储一个基础Height,在此Height图逐像素值基础上加上水位高度。
⑤如果每像素栅格数值较大,则捕获场景会不够精细,有些凹凸不平的地面,会初始带有奇怪的水迹,在做数据映射时,可以考虑把这些没用的数据点额外减一个值,让他们的水位别凸出来。

最终方案已经基本完成,因为贴图较大,所以还是有一点卡顿情况,还有就是如③所说,平滑数据需要一些时间,实际运行时需要在后台跑挺长时间,但基本不影响主线程,不会造成大片的卡顿。

方案仅供参考,欢迎交流。

标签:插件,数据,纹理,像素,FluidFlux,UE,Height,生成
From: https://www.cnblogs.com/bningj/p/18527362

相关文章

  • 手把手教程:使用 Fluentbit 采集夜莺日志写入 ElasticSearch
    Fluentbit是非常流行的日志采集器,作为Fluentd的子项目,是CNCF主推的项目,本文以夜莺的日志举例,使用Fluentbit采集,并直接写入ElasticSearch,最终使用Kibana查看。借此实践过程,让读者熟悉Fluentbit的使用。测试环境介绍MacbookM1芯片ElasticSearch、Kibana7.15.0,使......
  • 手把手教你编写自定义Categraf插件
    本文分享自天翼云开发者社区《手把手教你编写自定义Categraf插件》,作者:任****佳Categraf是一个监控采集Agent,类似Telegraf、Grafana-Agent、Datadog-Agent,希望对所有常见监控对象提供监控数据采集能力,采用All-in-one的设计,不但支持指标采集,也希望支持日志和调用链路的数据采......
  • 你肯定不知道:Vue多文件上传时拖放操作的优雅处理
            多文件上传是Vue应用的常见操作。操作要求:(1)允许反复拖放多个文件到待上传区域(2)自动过滤掉重复拖放的文件(3)拖放后,形成待上传文件列表的简易缩略图(4)双击文件名,可移去某个文件。具体效果,如下图所示。        我们可将拖放操作设计为一个插件指令dragDro......
  • GPT-Academic 其它插件相关使用教程
    一.虚空终端“GPT插件虚空终端”似乎是一个结合了GPT技术和某种终端(可能是命令行或控制台)的插件或工具。以下是一些可能的解释和应用:GPT插件:这可能是一个利用GPT(生成式预训练变换器)技术的插件,用于提供自然语言处理功能,比如文本生成、对话系统等。虚空终端:这个名称可能指的......
  • GPT-Academic 编程类插件区使用教程
    GPT-Academic官网:GPT-Academic官方用户中心一.虚空终端在网络编程中,网络终端可以指一个通过网络连接到远程服务器或服务的终端,用户可以通过它来执行远程命令。二.解析整个python项目GPT(GenerativePre-trainedTransformer)是一种强大的语言模型,能够理解和生成自然语言文本......
  • vue项目接入CDN域名:你可能会碰到的问题
    背景项目需要接入cdn加速域名,但只能在生产环境验证。所以发版之前本地先准备好cdn的包,然后发版的时候部署到生产环境,结果发现,点击菜单后页面的URL不对了,静态资源加载是可以的。本来页面URL是这样的:test.com/app/xpg/ind…但点击菜单后,把cdn的域名加上去了:test.com/https://c......
  • 基于SpringBoot + Vue的在线学习平台(角色:学生、教师、管理员)
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • 基于SpringBoot + Vue的社区智慧医疗养老系统(角色:老人、老人家属、管理员)
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • Chrome 插件怎么安装与下载?超详细
    原文链接: https://www.chajianxw.com/tutorial/how-to-install-chrome-plugin.html前言国内因为无法访问Chrome应用商店的缘故,导致很多优秀的扩展程序无法正常下载与安装。本文将手把手教你如何通过离线安装Chrome插件,全文图文讲解,超级详细哟~跟着下面的教程来就行,分分......
  • Chrome 插件怎么安装与下载?超详细
    原文链接: https://www.chajianxw.com/tutorial/how-to-install-chrome-plugin.html前言国内因为无法访问Chrome应用商店的缘故,导致很多优秀的扩展程序无法正常下载与安装。本文将手把手教你如何通过离线安装Chrome插件,全文图文讲解,超级详细哟~跟着下面的教程来就行,分分钟搞......