图形学基础——Flowmap的实现

本文介绍了Flowmap的基础概念、Flowmap shader的实现原理和Flowmap的制作方法,包括使用Unity3d的Flowmap Painter和Houdini进行制作。Flowmap用于表现2D向量流动效果,通过在shader中应用向量场信息,实现UV动画效果,无需顶点动画,运算开销小。
摘要由CSDN通过智能技术生成

Flow map

百人计划学习地址:图形 2.8 Flowmap的实现

一、基础概念

首先复习一下UV映射

UV坐标用于查找纹理贴图上的颜色值
在这里插入图片描述

什么是FlowMap?

Flowmap的实质就是一张记录了2D向量信息的纹理

Flow map上的颜色(通常为RG通道)记录该处向量场的方向,让模型上某一点表现出定量流动的特征。通过在shader中偏移uv再对纹理进行采样,来模拟流动效果。

我们使用(R,G)向量来表示色值,如下图三所示,表现了向量的方向与色值的对应
在这里插入图片描述

Flow Map实现原理
通过所带有的向量场的信息对UV进行偏移,并干扰采样的过程,使原本的采样效果变得扭曲
在这里插入图片描述
为什么要使用FlowMap?

用于表现各种流动的效果,好处如下

  • 效果类似于UV动画,而非顶点动画。
  • 无需对模型顶点进行操作
  • 易实现,运算开销小
    在这里插入图片描述

二、Flowmap shader

shader的实现流程

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

如何实现最简单的随时间偏移?

使用UV - time

为什么是相减?
先来看看 uv+time 的情况(u,v) + (time,0) :模型上某个点: 随着time增加,采样到的像素越远
视觉上可以形容为:更远距离的像素偏移向该点,视觉效果和我们直观认识到的运算法则是相反的,所以需要相减

我们需要更好的运动方向,正确的方法是从flowMap获取流动方向

但是,flow map不能直接使用,需要将flow map上的色值从[0,1]的范围映射到方向向量的范围[-1.1]

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值