7 F! L% D* J* m# e9 z! {
3 q) N7 [4 L: L0 U+ V
7 Q5 {. I) |1 N7 X. _- ]/ f 9 l! ~2 W s5 y5 l
一、海洋水体构建技术! o$ ]! x& X- p; @6 n
在仿真技术研究过程中,相比于地表地形模拟,真实感水体的渲染和模拟一直是计算机图形学和游戏开发领域的核心难点之一。 & w7 D9 I, L9 e8 {- k9 _* I& p$ k
地表地形模拟注重各类地理环境的还原和与实体的交互性,而在水体渲染中,最核心的部分为波形的模拟和水体渲染着色。
% R6 b. f7 r5 o5 Z& S (一)波形模拟
5 L1 C: i% c' J: h6 O4 C& Z2 P 波形模拟研究如何模拟出逼真的水面波浪的流动变化。按照流派进行分类,波形模拟有5种典型类型,包括线性波形叠加方法、统计模型方法、波动粒子方法、基于物理的方法、预渲染方法等。而其中属于线性波形叠加方法的盖斯特纳波(Gerstner Waves)由于计算量可控,性价比高,在游戏水体渲染领域的应用较为广泛,也是目前我司项目中主要采用的计算方法。
! w, Z# ^4 \7 L4 g6 `. h4 O 线性波形叠加方法的主要思路是累加不同的线性波形函数以构造波浪表面,可以将其理解为波动现象在深水中引起水颗粒运动的一种解析解。下图展现盖斯特纳波水颗粒运动的图示。波浪中的任何点都沿圆形轨迹移动,靠近表面的半径较大,而在水中更深的半径呈指数减小,如橙色水粒所示。此波的特点是波峰尖锐,波谷宽阔,适合模拟海洋等较粗犷的水面。
: Q5 x- ]" c; W {9 o* \+ w3 s8 f 水粒运动示意图波峰波谷示意图(二)水体着色
5 b- T( r" ?9 G. ]* |/ u 在水体渲染着色方面,到达水面的光线除了在水体表面发生反射之外,还有部分光线进入水体内部,经过吸收和散射后再次从水体表面射出,即水体的次表面散射现象。水体渲染的要点包括漫反射、镜面反射、法线贴图、折射、通透感、基于深度的查找表方法、次表面散射、白沫、流动表现、水下雾效。 ! m' H* _, w3 S4 X: n8 n6 ?& A
针对水体通透感的表现方案,目前采用次表面散射近似方法(Sub-Surface Scattering Approximation Approach)。首先假设光更有可能在波浪的一侧被水散射与透射,基于快速傅里叶变换(FFT)模拟产生的顶点偏移,为波的侧面生成波峰遮罩。根据视角、光源方向和波峰遮罩的组合,将深水颜色和次表面散射水体颜色之间进行混合,得到次表面散射颜色。将位移值(Displacement)除以波长,并用此缩放后的新的位移值计算得出次表面散射项强度。
0 i3 e0 S& [" k9 u 基于次表面散射近似的水体表现白沫是一种复杂的海水现象,可被视为水面上的纹理,其可直接由对象交互作用,浪花的飞溅,或气泡与水表面碰撞而产生。
# _% {0 T7 l5 P/ h; g8 l1 w$ N, u9 ^ a)浪尖白沫 # l i# U7 \) K
雅克比矩阵法。基于雅克比矩阵(Jacobian)为负的部分作为求解白沫分布区域的方案。 6 ]( s" Z: d: C& P& x9 L! Y
波峰白沫区域贴图b)岸边白沫
& g1 e; J! g7 D+ o2 E6 u; L% p 多渐变贴图法(Multi Ramp Map)。以规则的间距对地形结构进行离线采样,标记出白沫出现的区域。采用高斯模糊和柏林噪声来丰富泡沫的表现形式,以模拟海岸上泡沫的褪色现象。
- I) u# T8 A8 d 白沫混合比率c)交互白沫 4 L9 W2 @: ?# O5 l3 j
场景深度法。比较场景深度和水深得到白沫遮罩,通过渐进模糊(Progressively Blur)得到风格化的白沫表现。 ) w8 d$ A5 W; u: V
二、典型场景效果展现# r# \7 p7 `2 Q$ @- H/ D4 Z8 _8 Y: z
通过波形模拟与水体着色技术的应用,结合天气系统、光照系统、地形构建工具,可还原出逼真的海面、海中、海底、海滨多层级海洋场景,以满足水面舰艇展现、水中潜艇展现、海底地形展现、海滨海浪展现等各类海洋场景展现需求。 " q3 s6 d9 f- V
(一)海面视角展现7 T; g3 {& o3 [3 z
9 H# }" Z* |% b# j & u% |' @! o3 B9 `1 N: O
普通海水海面效果. o3 \: r; M, v# h; e
9 j/ U1 A$ y, ^# i+ f9 E: U 暴雨天海面效果
/ o/ f/ P$ [5 c. D2 j V/ U- \% r4 _ % }" ~$ ?; x$ x, P6 d: d4 l+ l: d2 n
暴雨天海面天气特效(二)海中视角展现( [+ `( E$ t8 Q2 @, R1 ^5 y6 w6 w; Z' @
. J! H3 g# W; G
^0 f8 o/ d5 C! Z
海面与海里视角切换' {$ P0 |5 G' P5 P# ?; N. U0 L
0 s& r2 R% F# o# ^; ?7 N/ {% J 海里潜艇移动效果9 M# `6 L7 b$ `2 C3 b6 z+ \0 m
# \9 t9 O6 z8 ]- x" }- x3 ]4 r 海里爆炸效果(三)滨海视角展现: i2 D {1 Z6 ^& q- |0 G; z: W
5 O6 Q: M* u5 m) P. \% B9 }
9 h5 Q) H* b) Y8 w) c, w8 ^
滨海海浪交互效果(四)高空视角展现7 `/ v9 m- M% m* q4 A; b
( b- U! H: l/ j + x& l% C# N1 r, _
海洋高空总览 ~" Y; A" ~3 M% [/ T" T5 a
1 h$ O0 X5 d# J) f) w0 I8 N5 L
海底地形总览(五)视频; T( s" R9 ^% W' Q' D
. G2 h, B% N' I& b- B" x! [8 ?
! c% n% c4 c' Y: L5 j3 r N. Y
7 ?, G0 t% Z& ^) V3 _, [0 @ 8 W2 D2 k1 V6 e6 c+ x+ E7 P
& T9 ]7 z1 _6 H/ ~6 F* x5 @
, V r) A* h r: Y " y- y- W4 s: _$ s7 _% `
 0 $ e6 [, a- `4 V
2 P9 G! i9 p" I' A$ \ # c- S* a }4 B) ~3 ?+ m/ J2 n
( @& q7 S0 K6 Y$ o: {4 Z' V ' k) R7 R6 I1 [ x3 w( h7 i% x
# f7 h/ e8 S- R0 R
* ^8 m/ |8 E! {* w4 g
! P4 }; C: W! G: {5 @* x
END 5 _3 O+ w; R- ~8 l% G6 S9 O3 D
$ ]: Z3 O% K( h1 k9 O
0 t, \5 @. M7 v
3 F7 ~" j/ f9 r: E( \
: h! w( l7 @$ f1 U* j/ O% e |