2.8 Flowmap的实现

news2024/11/27 0:27:37

一、Flowmap是什么

Valve 2010的GDC讲座,《求生之路2》中水的制作

http://alex.vlachos.com/graphics/Vlachos-SIGGRAPH10-WaterFlow.pdf

Water (shader) - Valve Developer Community

1.Flowmap的本质

一张记录了2D向量信息的纹理,Flowmap上的颜色(通常为RG通道)记录该处向量场的方向,让模型上某一点表现出定量流动的特征。

通过在shader中偏移uv再对纹理进行采样,来模拟流动效果。

一个向量场——>使用RG通道记录方向——>flow map 色值与方向的对应关系

2.前置了解:UV映射

UV坐标用于查找纹理的颜色值。

UV贴图(用于理解):使用(R、G)颜色通道表示坐标。

黑色(0,0)绿色(0,1)红色(1,0)黄色(1,1)

UV贴图上颜色相同处:意味着采样纹理时使用了同一位置。

3.为什么要使用flowmap

类似UV动画,而非顶点动画。换而言之,无需对模型顶点进行操作,易实现,运算开销小。

不仅仅是水面,任何和流动相关的效果都可以采用flowmap。

flowmap 粒子与快速傅里叶变换(FFT) 波形构造水面

战神flowmap在天空球中的应用

二、Flowmap Shader

1.借助Shader Graph理解Flow map

  • 采样Flow map获取向量场信息
  • 用向量场信息,使采样贴图时的UV随时间变化
  • 对统一贴图以半个周期的相位差采集两次,并线性差值,使用贴图流动连续

演示详细去参考课程:2800_哔哩哔哩_bilibili

2.Shader中实现

目标:

    • 根据flowmap上的值,使纹理随时间偏移。
    • 最简单的随时间偏移 UV - time,为什么相减?
      • 先看UV + time的情况,(u,v) + (time,0)
      • 模型上某个点:随time增加,采样到的像素越远。
      • 视觉上可以形容为:更远距离的像素偏移向改点,视觉效果和我们直观认识到的运算法则是相反的。
      • UV值作为向量(u,v),自然也遵循向量的运算法则。但UV偏移时,改变的不是顶点的位置。
    • 单方向运动× ,由flowmap获取流动方向√。
    • flowmap不能直接使用,将flowmap上的色值从【0,1】的范围映射到方向向量的范围【-1,1】
    • 调整采样时的UV为:adjust_uv = uv - flowDir * time
    • 在这里我们用FlowSpeed来控制向量场的强度
    • 随着时间进行,变形越来越夸张,为了把偏移控制在一定范围内使用frac函数。
    • 由于frac函数的使用,产生了跳变,修改代码
    • 我们希望无缝循环
    • 用相位差半个周期的两层采样进行甲醛混合,使纹理流动一个周期重新开始时的不自然情况被另一层采样覆盖
    • 用flowmap修改法线贴图

三、Flowmap操作

1.Flowmap Painter

Unity制作的绘制flowmap的工具

注意:用该工具得到的flowmap为线性空间下的颜色,不需要gamma校正,Unity中请取消勾选“sRGB”

2.Houdini Labs

Houdini Labs是内置在houdini中的一组游戏开发相关的节点,可以在github中搜索sidefx Labs或着直接在houdini中安装得到。

在较早版本的houdini中无法在shelf内找到该工具,你只能通过github下载。在这些未被内置到houdini的版本中,这组工具的名称为gamedev。

1.flowmap相关节点功能

节点名称

功能

Labs flowmap

为模型初始化一个向量场v

Labs flowmap brush

笔刷绘制修改向量场

Labs flowmap obstacle

根据障碍物修改向量场

Labs guide flowmap

根据样条线修改向量场

Labs flowmap to color

将向量转化为模型顶点色

Labs flowmap visualize

可视化,内置flowmap shader

Labs flowmap的设置

本节点的功能是为模型每个点初始化一个点属性(Point Attributes)——v。 兵可以勾选方便查看向量。

Method(初始化方式)

功能

Normal

模型法线生成初始v向量

slope

计算梯度生成初始v向量

direction

将所有v向量设置为固定方向

Labs flowmap brush

笔刷

  • 由comb节点(梳法线)简单修改而来。
  • 在operation标签下设置了对点的v属性进行修改

· Comb Lift 用于调整笔刷模式:

0 为正常绘制

1 为擦除 (使向量变为该点的法线值)

-1 使向量指向该点法线的反方向

其余值则为混合模式

在houdini中,一些节点可以通过将鼠标移动到模型视窗“view”,

再按enter进行操作,esc退出。所有可执行的操作显示在视窗最下方;

· Brush和Symmetry 标签下为笔刷控制选项。

如笔刷不透明度Opacity

两个输入端:

第一个为我们的flowmap field,

第二个为需要检测碰撞的模型。

这个节点将模型转化为体素(VDB),并在和flowmapfield接触的位置改写向量场,使受影响的向量指向远离碰撞体的方向,模拟出一个反冲的效果。

· Strength决定了flowmap field受影响的程度;

· Division Size和Dilate Volume用于控制VDB,分别用于体素的细分程度和整体体积。

注意:Division size不宜过小,一是因为该VDB是空心的,可能会形成壳体,二是细分过多会导致占用大量资源。

简单来说,你可能需要反复调整这两个值并观察来达到理想的结果。

· Blur strength用于平滑,避免局部不自然。

Labs guide flowmap

2.flowmap的绘制与烘焙

Labs Maps Baker节点

导出时注意gamma校正选项、UV匹配

用Labs UV transfer节点来匹配高模和低模的UV

flowmap贴图设置:

  • 无压缩或高质量
  • 确认色彩空间

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

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

相关文章

uwsgi+gevent+nginx部署实现协程高并发

python 所有用到的库 alembic1.12.0 amqp5.1.1 aniso86019.0.1 APScheduler3.10.4 async-timeout4.0.3 billiard4.1.0 blinker1.6.2 celery5.3.4 certifi2023.7.22 cffi1.15.1 charset-normalizer3.2.0 click8.1.7 click-didyoumean0.3.0 click-plugins1.1.1 click-repl0.3.0 …

基于web的酒店客房管理系统

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 会员信息管理 客房信息管理 收藏客房管理 用户入住管理 客房清扫管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施…

数据结构———— 堆

(一)基础补充 满二叉树是每一层节点都放满的二叉树。 完全二叉树是只有最后一层节点右边不放满的二叉树。 满二叉树(Perfect Binary Tree) 如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。另一种说法:一个深度为k(>=-1)且有2^(k+1) - 1个结…

拼多多商品链接获取拼多多商品详情数据(用 Python实现拼多多商品信息抓取)

在网页抓取方面,可以使用 Python、Java 等编程语言编写程序,通过模拟 HTTP 请求,获取拼多多网站上的商品页面。在数据提取方面,可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是,拼多多…

Bootstrap-初始

响应式布局: 一个网站可以兼容多个终端(PC、移动端) >框架使用的版本是根据公司的产品所面向的是什么样的客户来决定的!!! 官网:Bootstrap

iMovie for Mac:专业级的视频剪辑体验!

如果你是一位视频爱好者,那么你一定不能错过iMovie for Mac这款专业视频剪辑工具。它不仅拥有简单易用的界面,而且功能强大,可以让你轻松完成复杂的视频剪辑任务。 一、界面友好,上手容易 iMovie for Mac的界面设计简洁明了&…

深度解析locked勒索病毒,勒索病毒解密,数据恢复

locked勒索病毒曾经消失了一段时间,但是从今年6月份以来,这种类型的勒索病毒又“重出江湖”,被感染的服务器和企业越来越多,这让很多企业和安全运维人员都非常头疼。为了减少这种情况的发生,云天数据恢复中心将对locke…

为什么说,网络安全工程师是网安行业的天花板?

为什么说,网络安全工程师是网安行业的天花板? 最近看到网上有很多人在问诸如:“怎样成为网络信息安全工程师”等相关问题,甚至还有人说“网络安全工程师已经成为这个行业的天花板”,这可能与近几年网络安全事件频发&a…

阿里云 腾讯云 配置二级域名并解析指向非80端口操作指南

目标:主域名 imps.com 已完成配置,新增配置 kpi.imps.com 等二级域名并指向 8083 端口。 (此操作需要主域名已经通过备案3天后,最好指向的IP地址网站也通过了备案申请,否则会提示域名没有备案。) 操作流程…

C++标准模板(STL)- 类型支持 (数值极限,is_exact,has_infinity,has_quiet_NaN)

数值极限 定义于头文件 <limits> template< class T > class numeric_limits; numeric_limits 类模板提供查询各种算术类型属性的标准化方式&#xff08;例如 int 类型的最大可能值是 std::numeric_limits<int>::max() &#xff09;。 鉴别准确表示的类…

在Kubernetes中实现gRPC流量负载均衡

在尝试将gRPC服务部署到Kubernetes集群中时&#xff0c;一些用户&#xff08;包括我&#xff09;面临的挑战之一是实现适当的负载均衡。在深入了解如何平衡gRPC的方式之前&#xff0c;我们首先需要回答一个问题&#xff0c;即为什么需要平衡流量&#xff0c;如果Kubernetes已经…

【技能树笔记】网络篇——练习题解析(五)

目录 前言 一、应用层的作用 1.1 应用层的作用 二、HTTP协议 2.1 HTTP协议 三、FTP协议 3.1 FTP协议 四、DNS协议 4.1 DNS协议 五、DHCP协议 5.1 DHCP协议 六、邮件协议 6.1 电子邮件协议 总结 前言 本篇文章给出了CSDN网络技能树中的部分练习题解析&#xff0c…

检验检疫系统(LIS)源码:C# + MVC + SQLserver + Redis

LIS系统源码技术特点&#xff1a;采用.Net Core新的技术框架、DEV报表、前端js封装、分布式文件存储、分布式缓存等&#xff0c;支持LIS独立部署&#xff0c;Docker部署等多种方式。 技术架构&#xff1a;ASP.NET CORE 3.1 MVC SQLserver Redis等 开发语言&#xff1a;C…

每日一题——数据分析题

2023年上海市高等学校信息技术水平考试模拟题&#xff1a;数据分析题 读取csv文件这里可以使用pd.read_csv() import pandas as pd# 读取CSV文件 fileroad r素材\city_GDP.csv data pd.read_csv(fileroad, encodinggbk)# 输入地区城市名 city input("请输入城市&#…

SpringBoot之实现Web消息实时消息推送

文章目录 1 实时消息推送1.1 消息推送1.2 准备sql1.3 短轮询1.4 长轮询1.4.1 简介1.4.2 代码示例 1.5 iframe流1.6 SSE1.6.1 简介1.6.2 与 WebSocket 区别1.6.3 代码示例 1.7 MQTT1.7.1 简介1.7.2 为什么要用 MQTT协议 1.8 WebSocket 1 实时消息推送 1.1 消息推送 推送的场景…

[NCTF2019]SQLi regexp 盲注

/robots.txt 访问一下 $black_list "/limit|by|substr|mid|,|admin|benchmark|like|or|char|union|substring|select|greatest|%00|\|| |in|<|>|-|\.|\(\)|#|and|if|database|users|where|table|concat|insert|join|having|sleep/i";If $_POST[passwd] admi…

Vue的MVVM模型

MVVM模型代表三个东西&#xff1a; 1. M : 模型&#xff08;model&#xff09; --> data中的数据 2. V : 视图&#xff08;view) --> 模版代码 3. VM : 视图模型&#xff08;viewmodel&#xff09; --> Vue实例 我们用代码来展示上图中的关系&#xff1a; 也就…

激光除草距离我们实际的农业生活还有多远,结合近期所见所感基于yolov8开发构建田间作物杂草检测识别系统

最近的中秋、国庆双节相信很多朋友都会回家和家人团聚&#xff0c;我也一样&#xff0c;我的家乡是比较小众偏远的乡村&#xff0c;童年给我的最大的记忆就是干不完的农活&#xff0c;而这农活中很大一部分就是蹲在田间地头去人力拔草、撒肥料等&#xff0c;人力终究是很慢效率…

【Linux】 vi / vim 使用

天天用vim 或者vi 。看着大佬用的很6 。我们却用的很少。今天咱们一起系统学习一下。 vi / vim 发展史 vi 是一款由加州大学伯克利分校&#xff0c;Bill Joy研究开发的文本编辑器。 vim Vim是一个类似于Vi的高度可定制的文本编辑器&#xff0c;在Vi的基础上改进和增加了很多…