2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

3 概述

我们的方法是使用户在地平面和时间采样分辨率(1-10m每个单元格和每个时间步一天)上进行交互式设计静态和动态的中等规模的积雪场景(典型的,1-10km)时有效的。特别的,我们希望捕获到雪场效应的特征。比如山峰背风侧的雪檐口,雪崩冲刷的斜坡,下坡交织的滑雪道。最后时,增强用户的体验和改进控制,我们想真实生活中用户期待的那样,雪崩和新轨道的生成能够快速可视化,甚至是剩下的以更快的速度模拟运行。

我们的方法生成的积雪场景,高度场网格由压实、稳定、不稳定、粉状雪附加层表示,通过一系列并发现象绘制,包括降雨(本例中指降雪),雪融化和风运,交互通过共享的雪层间接的交互。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

图3:系统概述,用户可以定义影响雪模拟的环境条件,或直接和间接的触发想雪崩、滑雪轨道的事件。这些使用我们统一随机的泊松模拟。

反过来,这些事件受到与时间相关的环境条件的强烈影响。像温度、普遍的风、阳光的强度。雪崩和滑雪代表一类有限持续时间现象,需特殊处理,特别是如果把它们合并到游戏和虚拟环境的动态实时效果中。积雪和环境随时间的演变,在分层的场景中十分复杂的相互作用。一个因果关系可能涉及风吹动粉状雪和不稳定雪吹过一个山峰斜坡,通过一个不明显的滑雪者为雪崩的触发设定一个理想的条件。完成如此复杂的交互模拟,关键的想法是用泊松过程处理多种事件模拟交织增加的步骤,经常是不同的时间规模。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

图4:降雪、雪融化、雪崩的时间发展。通过泊松过程处理每个事件,像降雪和雪崩由起始和结束事件处理。雪崩阶段具有高频性,在两个低频率事件中可能发生完整的雪崩(如降雪阶段)。

用户可以通过几个方法直接模拟:通过在环境条件里定义提前设计的情节来改变,通过直接绘制雪层的高度改变,通过间接的探索现象的参数,或者雪崩和滑雪触发。为了交互性能,框架的所有组件都在GPU上完成。

3.1 模拟方法

场景模型由规则网格组成。每个单元格包含高度值得栈,表示一系列排序层:基岩层(初始得静态高度场数据),压实雪(从上面承受压力的冰块层),稳定雪(与地形强烈结合的粘性层),不稳定雪(在受到扰动时易受滑动影响的薄层),和粉状的雪(具有很小内聚力的充气层受到恒定的小量溢出)。

环境条件:交互式会话以预先计算步骤开始,其中环境条件用于计算初始积雪。他们包含温度(从高度和光照计算)和风(从高度和海平面的风速计算)。这些现象仅在模拟启动时或用户决定改变环境条件时才考虑。使用温度的标量场和风速的矢量场的计算结果存储为地形上的静态层,并与积雪层一起使用,以计算不同运行时事件的局部效果,所有这些都是应用于整个地形。

泊松随机模拟:在运行时,感兴趣的现象需要不同的时间尺度:比如说,典型的雪融化的时间尺度远远大于运行雪崩所需要的时间。为此,泊松过程与每个现象进行关联,表示为一系列独立的随机事件,整体地形应用的平均频率fe。使用随机变量te表示下一个事件类型e触发的时间。变量te定义为概率密度函数服从指数分布。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

因给不同类型事件设置时间值是独立的随机变量,下一个事件的概率e是:

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

模拟算法按如下方式运行:在每个模拟阶段,系统从概率分布函数(1)中随机选择一个事件,触发它。全部的模拟时间通过当前现象关联的平均时间步长增加。

当高频事件触发时基于时间步长的时间无缝支持时间缩放。比如雪崩和滑轨,分配一个比其他事件更高的频率,使他们被认为是动态的现象。

3.2 事件分类

我们把不同的现象分为一系列随机的,无穷小的事件,每个都应用于整个地形(然而不同的局部效果依赖于环境条件和雪层)。在附加的事件模拟阶段中,一些现象,比如降雪需要一个起始事件和总的步长。我们使用的两种类型的事件:

积雪演变现象发生在一系列缓慢随机事件的很长一个阶段上。比如,雪融化和风运两种现象始终有效,并通过一系列Snow-MeltingStep events 和Wind-Transport-Step事件发生,相应的,平均一天发生两次。另外现象是降雪,通过Snowfall-Start事件触发,平均一周一次,然后通过一系列Snowfall-Step事件在几天之内一天两次。每个阶段事件更新包括雪分布和雪的稳定性。

交互现象在我们的框架中包括雪崩和滑雪轨道。都发生很短的时间。除了在运行时随机调用(例如,在一平方公里的地形上平均一周一次雪崩,一小时一次滑轨),雪崩和滑轨可以直接由用户触发。这是通过增加相关的Avalanche-Start事件的频率,然后在用户选择的位置上创造有利的条件,直到请求的事件运行。同样的方法也适用于灾难性事件,比如当滑轨上用户穿过不稳定雪层时触发立刻的雪崩。雪崩现象开始后Avalanche-Step事件平均0.1s发生一次,这能确保用户看到自然速度下发生的动态现象。

4 环境条件

积雪的改变主要依赖于局部环境条件的变化,最重要的就是温度(受阳光的影响)和风。这些条件主要依赖于地形的地势(topography),雪层的影响可以忽略不计,因此,我们可以预先计算这些条件,只有在用户需要修改地形或者输入参数的时候更新它们(比如风向和海平面温度)。

4.1 温度

在我们的模拟中,在那些主要依赖于高度A和阳光暴露量I,温度是一个重要的环境输入参数。严格的说,总的高度应该由地形的高度B和雪的厚度D。然而,雪的贡献太小(D<<B)我们可以使用近似值A=B完成预计算。温度T的计算公式:T = T0 +ktA+kiI:

T0表示海平面温度,Kt表示-0.01C/m 高度没升高一米温度减0.01C,Ki表是24小时光照之后温度增加10C。

阳光暴露的计算更加的复杂。直射的光可能被地势阻挡,云层的散射导致环境阻塞。

单射线返回导致雪的高反射率。总的曝光量是直射光,环境光,间接光之和:I = Isun + Isky + Iind

地形上p点的直射光被测量为阳光照射一天的比例。并由下式计算。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

Ksun表示阳光的强度,Sh表示入射光ih一小时在地形上的投影,n表示地形上p点的法向量。

环境光的暴露量,我们假设环境光Isky是旋转不变的。P点周围的采样方向是,获得的最大角是地形的切线和地形方向上的最高可见点与p点连线之间的夹角。微分角,环境光的暴露量,

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

一个点的总的环境光积分和是

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

p点的间接光照使用直接光照附近随机角度θi和距离{r0,…,rj}的极坐标采样的区域.每一个采样点P(i,j)(发射点),我们在接收点的法向和采样方向(Pi,j-P)之间定义一个角度。相反地,是发射点法向量和相反的采样方向之间的夹角。间接光照的计算公式如下:

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches表示采样区域,N个采样角度,

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanchesdi; j表示P点和Pi,j点之间的距离。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

4.2 风

在积雪的模拟中,在雪的移动中风是关键的角色,由于依赖于地形所以很复杂。首先,我们把地形上部的风当作一个2D的向量场,根据全局统一的2D风向量场进行初始化。该向量场受到高度,局部斜率方向和风阻挡的影响得到加强。在这儿,我们设置A=B,允许预先计算。

首先,我们说明文丘里效应是在高处风会加速,风速根据高度进行缩放:

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

然而文丘里效应的线性化并不是物理上的加速,它的优点是简单可控制。而且,在我们的实验结果中,雪的覆盖效果在视觉上与从加速模拟获得的结果不可区分。

第二,我们根据地形的斜率改变风向,nxy作为表面法向量的水平分量。定义为nxy在文丘里向量方向旋转90度之后获得的2D向量。当地形都是平的,是最小的,风向是不改变的。否则风向倾向于对齐,被下面的等式捕获。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

最后,风阻挡的地方形成了波峰和山脊线的背风面,行成了雪檐口的特征。为了完成这个,我们假设风的阻挡分两种情况(完全的风和没有风),我们创建一个风效应表面代表最低的海拔,在它的上面风全力的吹动。

水平方向风的速度设置为W,风效应表面Wz的高度与垂直风速Wsz相关。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

其中C是当风效应表面严格高于地面时垂直风速降低的常数。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

图7:风效应表面与地面相关(Wz=A),垂直速度强制跟随地形的梯度。否则Wsz根据常数C值递减,使风效应表面生成一个抛物线式的形状。

C的值通过实验设置为0.7m s-2,并控制风影帽部分的范围。值越小,帽子越大。这层的高度推导出。对于W=0,等式是未定义的,设置Wsz = A。山脊线的背风面,高程和风的梯度在相反的方向上作用,产生负的垂直速度,迫使风效应层缓慢降低,产生一个抛物线式的风影帽。迎风面,风被推向表面,Wsz由A的2D梯度控制的。

高度Wz和垂直速度都使用高斯模型进行计算。初始化设置Wz=A,Wsz=W*.迭代过程以黑白棋盘格方式进行。奇数次迭代时,分配的白色网格单元相对于黑色分配的单元更新。如下:首先,Wsz是独立于Wz计算的,然而Wz是根据新的Wsz值更新的;最后,如果Wz<=A,Wsz进行修正。在偶数次迭代中,黑色单元重新估值。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

图8:风速随着高度增加,显示为左图中蓝色到红色的区域,暗色的线表示了局部的风向;风效应表面拥抱着地形除了山脊的背风面,右图中生成的蓝色帽子。

5 积雪

雪在结构和组成上很少是均匀的。为了表达这一点,我们把雪分为四层:compacted (压实C), stable (稳定S ), unstable (不稳定U), and powdery (粉状P) 。后两者之间的区别是必须的,因为粉状的雪经常在沉积之后立即向下流,然而不稳定的雪只有在发生雪崩事件之后才改变。不稳定层被当作在真实雪中易碎层和强硬层交织之间的代理,更像雪崩的触发。

我们框架的关键是降水、融化、扩散和风的改变作用下跟踪雪层高度随时间的变化。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

图9:不同现象下的积雪效果

5.1 降雪

降雪是一个覆盖事件,通过添加到最上层来影响积雪。我们使用一周为平均触发间隔,3天为平均持续时间。除了这些,用户可以调节降雪的强度Ksnow。

Foehn效应给出了降雪和高度之间明确的关系:

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

是从降雨转变为降雪的高度,表示降雨的时间步长。降雪初始分为粉状的雪和正常的雪,着陆之后被分为S层和U层。首先,一些雨夹雪转变为粉状的雪(即,雪不能结合到裸露的斜坡上或者已经存在的雪层上)。雪变成粉状的比例是2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

(取0-1),2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches是用户定义的影响斜率缩放的常数,雪表面高度的梯度的标准化。Sc

雪不能降落的临界斜率。基于这个假设,临界斜率依赖于地下表面的惯性温度,当温度降低的时候,临界斜率增加:

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches温度影响的缩放因子,2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches表示最高温影响的临界角。然后剩下的比例2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches由不稳定和稳定雪之间分配。

不稳定雪的比例是:Xu=(取0-1)。2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

5.2 雪状态的改变

温度和斜率是雪稳定性变化的主要因素,因此层类别之间总改变。我们提出一个简单的模型把各种因素都考虑进去。

温度引起积雪的融化,根据:2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches是一个全局融化率常数,2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches融化出现的最小温度,2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches状态改变的时间步长。逐层出现融化,从顶部(unstable)到底部(compact)进行处理。最后产生的水,不考虑进我们的模型。

雪稳定性的改变依赖于温度。暖雪(Twarm)便的很不稳定。冷雪在局部融化和重新凝结之间上下振动,并作用于加强雪的稳定。在冷的温度时雪的稳定只在自己重力的压力之下。经过我们模型的实验,通过线性插值捕获的结果,稳定性的变化依赖于温度:使用参数-Kw,Kc和0分别对应warm,cool,cold temperatures,-Kw和Kc是用户定义的状态改变速率常数。斜率也纳入考虑范围,在一般的斜坡上,不稳定性增加的缓慢一些,相对的陡峭的斜坡上稳定性增加的慢一些。

5.3 粉状雪扩散

由于其一致性,粉状雪经历了局部移动和溢出的几乎恒定的扩散过程。我们以高更新频率应用于粉状雪层(P)的扩散过程。使用4个相邻单元格的斜率(pn)来计算每个单元格(p)的扩散:粉状雪在方向d上改变的比例是这个方向上的斜率函数sd,Sd0为初始值常量,速率变化参数(km):

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

是扩散事件的时间步长。雪从p点的流入i或者流出o分别定义为md所有正负之和。如果o>i+P,粉状层(P)每个输出的正数md按照(i+P)/o的比例进行缩放,以防止出现负数量的粉状雪。然后,粉状层通过被当作md的相邻单元格更新。

 

5.4 风运

风作用在粉状的雪上,根据雪面的曲率进行冲刷和平流。为此我们计算雪面的风阻,考虑了风速W和高度A:

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

在实践中,如果它是正的curvw=0,或者如果风效应表面跟雪表面不同(如图8右蓝色的风影区域)。然后,雪从一个单元中以成比例的凹面开始侵蚀:侵蚀数量是

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches,并存储了在W方向上的两个相邻值。

风也能减少夯实的斜坡上的稳定积雪,因此在雪的上面形成了薄的易碎的壳,否则的话会在下坡处溢出。为实现该效果,在垂直风速上正向的改变了不稳定性的比例。如图11所示。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

图11:稳定性图:不稳定和粉状的雪以紫色显示,压实和稳定的以蓝色显示,黑色表示没有雪的区域。

 

6 交互现象

本节描述的现象是要么自动出发(每个单元的可能行很低,以至于它们很少发生),要么由用户手动选择种子点触发。如果真实与模拟时间同步,后者是最有用的,以至用户能更好的判断动态现象。

6.1 雪崩

雪崩行为包含了许多关联的条件,包括地形形状和初始的环境条件,各种成分,包括夹带的空气和不同形式的雪。在这里,我们关注两种主要雪崩类型:(1)干燥的雪崩由粉状雪和粘性冰块组成。这种雪崩最好作为颗粒状流体处理;(2)潮湿的雪崩,是有重量和部分融化的雪作为粘性流体处理。这些类型代表了两种类型统一的极点:我们统一当作为通过温度参数化的混合行为。

在标准的雪崩类型分类的一个轴上,我们应该标明雪的类型。原点区域的其他轴包括其实区域(点或平板)和滑动层的水平(表面或全部)。分类计划中,我们支持湿雪和干雪的表面滑点区雪崩。

流体模拟。所有的雪崩类型都可以通过流体模型包含,为此我们选择实现了的流体静力学模型。该2D欧拉方法将模拟域离散化成2D网格通过虚拟管道连接通信生成雪的列。管道的压力依赖于流体容量,流体模拟的稳定性受流体压力差的影响。对于一个地形网格中的单元C,我们使用摩尔的领域,它考虑8个相邻的单元。压力差∆Pi在相邻单元C和Ci之间。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

A=B+D是表面的最高点,ρ是液体的密度,g=9.81,表示重力加速度。相邻单元之间雪的加速度是ai

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

dx表示单元的宽度。管道中的流动演变为

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

C是管道的横切面,设置为C=dx2常数。

最后,不稳定雪层U的高度根据2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches调整。为了移除正数量的雪量,我们重新在等式3中调整了版本2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches,缩放因子2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches,总的输出流2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

颗粒材料流体同样是通过给流体添加规则来实现建模,比如给流体添加反向的摩擦力2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

θc体是雪的剩余角度。如果没有流体,或者应用这个力之后会改变流向,流体的静态摩擦力设置为0。这样的生产规则可以在欧拉模拟中引入人工网格。然而,在我们的示例中,雪崩足迹相对于地形是非常的小的,没有人工视觉出现。粘性雪崩被添加了粘性力,相对于流向的方向2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches。我们讨论的方法在加速项中加入了这些力。

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

应用我们的框架:在我们的模拟中,只有不稳定层U和顶部的粉状层P是需要雪崩再分配。假设稳定层和压实层很强的混合在一起了(确保我们雪崩是表面层雪崩类型)。

在我们的框架中,我们使用Snow Moving布尔层变量来决定不稳定层是局部静止还是运动的。首先雪存在,中断点可以自动触发或用户触发。如果不稳定层U不是空的,雪崩就会立即传播到相邻的区域,跟U层的厚度是成正比的。所有再中断区不稳定的雪立即开始运动,雪崩的下坡区不稳定的雪也一样。

6.2 滑雪轨道

在真实山地场景建模中,人类对地形的作用是另一个不可忽略的因素。特别的,北欧人的滑雪不仅仅压紧了雪层和留下轨道,而更重要是增加了场景的真实感,但是在不稳定雪层上执行就会触发雪崩。

我们模拟网格的大小只允许考虑滑雪者的大致方向。虽然这在模拟北欧滑雪对雪状态模拟的影响已经足够了,我们需要精确路径去实现真实感渲染。我们选择结合程序方法生成看似合理的精确轨道。

全局路径搜索。跟雪崩一样,非用户触发的滑雪者由地形上Ski-Track-Start事件自动生成,每个单元格产生滑雪者的概率很低。这种可能性受到滑雪路径长度和可行性的影响。因此我们预先计算每个单元到最远的下坡终点的距离(局部最小值,地形的边缘),使用元胞自动机找到地形上的最小距离,并在后续步骤中传播此距离,一遍直接在GPU上计算这个地图。距离图既可以作为自动产生新滑雪者的加权遮罩,也可以防止滑雪者到达死胡同。

大规模路径计算的是滑雪者的近似方向和移动,没有详细的曲线去控制他们的速度。因此,我们考虑地形的斜率定义理想的斜率角st角,即滑雪者舒适的滑行和试着跟随,确保有足够的雪支持他们的滑行。在本工作中,滑雪者模型被当作一个独立的代理通过他们的位置和方向定义,基于相邻单元雪量的数目决定他们下一次移动的局部搜索,相对斜率和与计算的权重与终点的距离有关系。实际上,滑雪者有一些小tile的前视窗口,中心附近的单元格定义为控制的最佳候选方向。滑雪者瞄准单元格n的可能性是:

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

I是指示器函数,Sn是当前单元格和n单元格之间的斜率,f是分配权重的函数,可以根据斜率改变滑雪者的行为。为避免方向的突变,计算新的平滑过渡的方向并应用于滑雪者。操作的方向需要重新计算每一个动画步骤。

精确轨道的创建用于渲染的目的。他们基于以下观察来近似,滑雪者的精确移动近似于多种振幅和频率的正弦曲线的叠加。突变的地方用于减速,直的路径就获得速度。根据这一点,在全局滑轨的所有直线段的移动使用模拟,a是振幅,f是频率,随着地形斜率的变化动态更新。

确实,滑雪者在山上直线下降的移动比在等值线之后有轨迹的要快。为解释这个,我们计算滑雪者的有效斜率Se为

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

L表示正弦曲线极值之间的距离。这提供了滑雪者达到其舒适目标坡度t所需的本地频率值

2018-Guillaume-Interactive Generation of Time-evolving, Snow-Covered Landscapes with Avalanches

通过沿正弦曲线选择合适的起始相位值,确保了滑雪者先前精确位置和方向的连续性。在每个动画步骤中,将运动细节的结果映射到使用等式4计算的低分辨率轨道上。这是通过对覆盖整个地形的轨道纹理层的局部更新完成的。另一种方法是将纹理导出为离线渲染的置换贴图。

滑雪轨道和雪之间的交互是双向作用的。一旦一个滑雪者进入一个网格单元,他就会将固定数量的雪从不稳定状态转变为稳定状态,或者如果没有更多不稳定的雪,则从稳定状态转变为压实状态。如果仍然存在不稳定的雪,就会增加雪崩的可能性。相反地,考虑雪对渲染滑雪道的影响。当雪沿着路径沉积或者被风转移时,轨道根据所涉及的量动态的褪色。

 

上一篇:contenteditable属性,让div也可编辑


下一篇:HTML学习笔记——HTML常用标签