这一页由机器翻译,以英文版为准。 查看英文版 →

◆ 2024 / Unreal Engine 5 · UCL

Emotional Weather

一个实时天气模拟器,用 Unreal Engine 5 做的。它讨论游戏里的天气和情绪,把渲染出来的画面当成一幅画。

上下动是换天气,左右动是风。

这个实时天气模拟器把云、雾和雨当成笔触。

  • 在 Unreal Engine 5 里做了实时天气:光线步进的体积云、雾和雨
  • 做了那块画布,让它在 Shishkin 的画和实时渲染之间渐渐过渡
  • 写了配套的研究:把画面、声音、材质和交互放在一起读这个场景(多模态分析),并且认为作品的意义要由观者来补完(读者反应理论)

我的角色

艺术家兼程序员,独立完成

时间

2024

引擎

Unreal Engine 5

制作于

UCL

系列

Body, Mind and Soul

状态

可运行版本和书面研究,未展出

标签

艺术 · CG 编程 · 互动媒体

在 YouTube 观看 ↗

作品

一幅实时渲染出来的画。

起点是 Ivan Shishkin 的《橡树林中的雨》(Rain in an Oak Forest,1891):细雨,薄雾,压低的土色,情绪留得很开,看的人会把自己的感受带进去。风景画常这么用天气,雨是悲伤,暴风雨是怒。Ruskin 把这叫“情感误置”,认为是个毛病。

Ivan Shishkin 的油画《橡树林中的雨》:灰雾里的高大橡树,一条带水洼的泥路,两个人躲在一把伞下
Ivan Shishkin,Rain in an Oak Forest,1891。布面油画,124 × 203 cm。莫斯科国立特列季亚科夫画廊。公有领域。

在这个实时的版本里,天气由看的人自己来改。

场景里的那块画布

风景里立着一块画布,上面是实时渲染和油画混在一起的图像。天气一变,材质读到当前状态,就在晴天的画、阴天的画和实时场景之间慢慢过渡。

技术和画面是一起决定的:光线步进的云,会淋湿又会干回去的地面,还有把风显出来的草木。

艺术家陈述 →

场景里画布的动画:天气和时间滑块移动时,画面在油画和实时渲染之间过渡
过渡中的画布。底下两个滑块管天气和时间;画架上的画在油画和实时渲染之间混合。
画架和画立在阳光下的草地上,草地长满白色羊胡子草,后面是起伏的丘陵
晴天,画和风景对上了。
研究

天气是一种叙事手段。

这个项目把古典绘画的想法和实时图形放在一起,落点在天气和情绪。

生成的图像和原画

这个项目也在问:程序生成的图像和一幅画是什么关系?再创作和它所依据的原作又是什么关系?这片风景是着色器和模拟光照实时算出来的,但构图和打光都照着古典风景画来。场景里的画布把 Shishkin 的画和实时渲染放在一起,天气一变就从一个过渡到另一个,原作和再创作在同一个画面里就能比。天气是看的人定的,所以每看一次,画都不一样。

理论

  • 多模态分析(Burn,2016)。天气是一种象征性的叙事工具,光线、云的厚薄、颜色的变化,都变成情绪的隐喻。
  • 读者反应理论(Ryan,2003)。人是拿自己的经验去理解媒介的,所以项目关心的是每个玩家各自怎么读一个会变的天气系统,没有预设的唯一答案。

案例

《橡树林中的雨》(Rain in an Oak Forest,Shishkin,1891)

细雨,雾中的林子,压低的土色:安静,孤独,往里看。意思留得很开,看的人会把自己的感受投上去。

Red Dead Redemption 2(Rockstar,2018)

被雨泡透的地面,远山上的雾,环境里的雨声。暴风雨里走得更慢这类机制,把情绪和玩家的移动绑在一起。

技术研究

  • 光线步进,做体积云、雾和大雨。
  • 程序化着色器,做随天气变化的地面湿度、水洼和水的折射。
  • Niagara,做雨、闪电和天气过渡,和场景里的事件同步。
  • 自适应声音,跟着天气强度和玩家位置变。
设计

设计与渲染。

艺术构想

设计是从古典风景画来的。天气过渡靠色调、光照强度和体积深度的变化来渲染,每种天气各担一个叙事角色:雨是忧郁,暴风雨是紧张,晴天是宁静。

选哪些天气

选雨、雾和暴风雨,一是它们在象征上对应悲伤、不确定和紧张,二是它们在视觉上拉得开。哪里对氛围有帮助,写实就往那里夸一点;过渡全部做了混合,不会突然一跳。

环境构成

  • 模块化地景:树、石头和水景拼起来,世界可以跟着情绪的走向变。
  • 昼夜循环:一套连续变化的时间系统,同时推着环境光和天空盒走,光影带着看的人经历这些变化。
  • 开放探索:什么时候换天气,看的人自己决定。

技术美术本身就是作品

着色器和体积光照直接扛起视觉叙事。实时流水线、LOD 管理和优化过的 Niagara 效果保证帧率稳得住。

同一片风景,厚厚的阴云压下来,颜色褪成橄榄色和灰色
阴天,颜色褪成橄榄色和灰。
低角度阳光和薄雾把风景冲淡,丘陵只剩轮廓
薄雾里的低角度阳光,光线步进器就是为这个效果写的。
场景在 Unreal Engine 独立预览窗口里运行
在 Unreal Engine 独立预览窗口里运行。
技术附录:系统、着色器和流水线

系统概览。

天气控制系统图
用户输入进到核心处理器,由它实时驱动云、地形、粒子和光照几个子系统。

天气控制

  • 输入:两个滑块,一个管天气(晴 / 阴 / 雨),一个管时间(白天 / 夜晚)。
  • 云:颜色、密度和运动都由云管理器调。
  • 地形:贴图、水洼和植被跟着当前状态变。
  • 雨和雷:交给 Niagara。
  • 光照:环境光和地景光照做了混合,一种天气滑进下一种。

体积云

光线步进算的是光穿过体积数据的路径,所以密度、光照和运动都能实时变。天空每次不一样,光穿过云层会出现丁达尔光束这样的效果。

动态地形

  • 水洼:雨留下的最实在的痕迹。大小是动态的,正在下、刚下过和晴天,地面上看起来各不相同。
  • 植被:风本身看不见,所以用顶点着色器让草木摆起来,风就显出来了。
  • 按坡度贴图:地形向量判断一块地是平的还是斜的,据此选贴图,交界处用线性插值过渡。

雨和闪电

近处的雨用 CPU 算,这样能和可交互的物体做碰撞检测;远处和背景的雨用 GPU 算,省开销。闪电改了好几版。第一版只有一道光,于是加了一个屏幕空间点光源,让整个场景跟着亮一下,雷声在闪电之后一到三秒响。

实时渲染作为生成艺术

场景里的画布显示的是实时渲染和美术作品的混合。混合材质从界面读当前的天气值,在晴天的画、阴天的画和实时场景之间做线性插值,画面就跟着天空慢慢变。

测试与迭代

改动和下一步。

  • 色彩校正:对照视频和照片里真实的天气,调整预设。
  • 屏幕雨滴层:一个玻璃上的雨水效果,看的人能看到雨滴顺着镜头往下流,雨大了它也跟着变。
  • 光照与环境混合器:再调一调参数,让氛围更鲜明。

后续

现在的画作整合靠的是算法叠加和混合。更好的做法是逐个分析画家的作品,给每位画家建一套材质函数和风格预设,再用这些去生成新的画。

之后还可以加测试环节:让参与者用模拟器,同时用参与式观察记录他们的情绪反应。另外是更多种天气,以及让玩家自己动手画。