Image Based Flow Visualization(IBFV)

来源:互联网 发布:linux centos ubuntu 编辑:程序博客网 时间:2024/04/28 08:20

Image Based Flow Visualization

 

IBFV(Image Based Flow Visualization)是利用噪点图(noise image)来模拟向量场运动的一种可视化方法。为了了解IBFV,先来看看它的原理。如下图

ibfv01

 

 

 

从上图中可以看到,在一个2D向量场(vector field)中有很多样点(sampling),这些样点都在网格(grid)上。每个样点受到向量场的影响,在Δt时刻后,产生速度和位移。由于向量场的影响,网格就要发生变形,如上图中的(warped grid)。然后,我们再用噪点图作为网格的texture,和flow texture进行混合(blending)。上图中map textureinject nosieflow texture是个循环的过程,这样就能产生像流动一样的效果。要注意的是,这里不能只使用一张噪点图,因为我们想到得到动画的效果。所以我们可以预先用代码随机的生成很多张。

 

上面的代码随机生成噪点图。有了噪点图我们就可以在进行对网格贴图的时候,顺序的取出噪点图。下面来看看如何计算向量场对网格的影响。假设向量场中一点p的位置为p(x,y),那么在 Δt时刻后,p’的位置为:

 

 

这里假设在很短的Δt时刻内,p做匀速直线运动。这样就可以得到2D向量场中每个样点受向量场影响在Δt时刻后的位置了。利用这个位置坐标作为噪点图的贴图坐标,然后和inject noise进行混合。然后重复这个步骤,就可以得到连续的动画效果,如下图。

 

 

ibfv01

 

 

如果我们在inject noise阶段,把inject noise用color map进行贴图,那么我们可以得到彩色的流动画。比如,我们用红色代表速度快的部分,蓝色代表速度慢的部分,如下图。

 

ibfv03

 

 

下面列出主要的pseudo代码

 

*原创文章,转载请注明出处*