ue4相机_GDC2019: UE4中的距离场和仿真技巧(二)

f6e2e84cde0ccdafabe4a2de989419fe.png
8fbef47448fca0f0d86cea6e1fcd2c8c.png
https://www.zhihu.com/video/1102939157441228800

这个烟花的例子跟上面的很像, 都是通过Cascade控制DynamicParameter节点(视频)

b850c513dc8328676618edba9a7ca5f7.png
https://www.zhihu.com/video/1102939523356393472

使用简单的StaticMesh来做环境特效, 比如尘埃, 用类似的做法可以省去GameThread的更新开销

897db96b13529489e39f7b8cefca6cd5.png

Spline Thicken通常被Epic的特效和环境美术用来模拟弯曲的圆柱体

703b11986fffacbcb07270edce99ab93.png
https://www.zhihu.com/video/1102939929067216896

60722b828730add5b79582dcbc7b305c.png
56a750051d04155867fec9ba1f89feff.png
https://www.zhihu.com/video/1102940270789779456

很多Gears5里的特效都是使用VertexShader来完成的, 降低了CPU的开销

fc705186713e9907c7608df780e25cff.png

空间信息怎么办?

66b5e5e5a8b5e16cc066406e1492c613.png

盖斯特纳波经常用来做海洋模拟, 就是多个不同步长的正弦波做叠加

9c72e7e968a177394f1d854619ad0c60.png
  • Amplitude: 振幅(波形高)
  • WaveDir: 波传播的方向
  • Pos: 顶点的起始点
  • Wavelength: 波长, 波形的频率
  • Phase: 偏移, 跟之前的StartTime一样

5179ff2019568b96b9233b2aa3803a27.png

使用frac来做波形的重复传播

2cfa0ee99f597bee8e575f132f4b5c83.png

把上面那个重复的0~1的值跟Sin函数进行叠加

b1c20b736f945aa12a67f3f46ef621a1.png
https://www.zhihu.com/video/1102940652643475456

视频里演示了这次分享中和许多技术. MPC可以在不同材质间共享全局参数, 比如波长, 水花, 泡沫等的时间参数

f929b19cc1e6d19c3bb6e36d1fdbdc2d.png

加入一个Phase参数控制两个波形之间的距离, 可以是常量也可以是变量.

27027d56ef2d6c0d768a59087243de55.png

DistanceField(距离场)可以告诉你跟一个最近表面的距离, 那可以用DistanceField来控制PhaseOffset, 用于模拟水波靠近岩石的效果

059c9899a8d55dec3d401120cac6f4c8.png

UE4工程中需要开启DistanceField, 材质中可以使用DistanceToNearestSurface节点来获取离最近表面的距离, 这些信息是保存在相机周围的Volumn Texture(3D体积纹理)里

af46683a8797eb29efc0f771458c2916.png

反转0~1的值, 把距离转换成Mask

332f2859bfa1925a79070ddf9bee2fc0.png
https://www.zhihu.com/video/1102940883166584832

一个PhaseOffset的例子

c86667d6d6a026bd716ed1caa17d37cb.png

6787da03e6f6823f0ba6f7a85c18e322.png

把DistanceFieldGradients与波形方向结合在一起

4812721669094a5cf1748dc952c9f369.png

DistanceFieldGradients看起来像NormalMap, 代表了离最近表面的方向

c5871cc92041bb5bec1dea054675e5b9.png
https://www.zhihu.com/video/1102941497325912064

跟方向做点积

97bfc3d3da44f0c3dc07b6cba4f4e2f6.png

美术通常用Flowmaps来保存流动的方向

da80f0b1bc7c546c49eed39e67d19a14.png
https://www.zhihu.com/video/1102941714280542208

这是Fortnite里的河流, 在边缘的地方结合了DistanceField和NormalMap来改变流向, 用来模拟水流经过鹅卵石的效果

ad2ad91bda91ccbe3d38bf9d879e66f8.png
https://www.zhihu.com/video/1102941946766630912

又一个例子, 演示DistanceField改变flowmap的方向

7c7ad9332f32e20372df5b43416c9091.png

这是材质节点, 把NormalMap从Tangent转到Flow空间

4eba84719efa9a1eb4deab59ae0424fa.png

总结Analytical Simulation的优势: 性能好, 适合做环境特效什么的

0f336a22140268b1fc13159d063fae4a.png
04717a6f0ba10a09926f16beb8b679f2.png
https://www.zhihu.com/video/1102942143718518784

补充了一个LaggedWave实现

7ae107f444c1c0e7a9c100d9d0443e51.png

使用Vector Noise中的Curl Noise可以加入很多三维空间的随机效果, 不过需要节省着点用

0f22e34cd332effab78be5ff5bc57c0e.png

使用UE4中的ScaleUVsbyCenter对Flowmap进行缩放, 用来模拟泡沫从岩石上落下的效果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值