向 Volodymyr Kravchenko 学习
在 Instagram 上查看此帖子
Volodymyr Kravchenko (@vovavfx) 分享的帖子
在 Remedy Entertainment 的《Control》系列游戏中,“Hiss”是主要的反派势力:一种来自高维度的实体,它会感染人类,并通过独特的腐蚀类视觉特效(VFX)显现。这一设定非常迷人,正如 Remedy 在其现代游戏中运用的诸多视觉技法一样。多年来,它也吸引了不少艺术家的关注,他们利用不同的工具与游戏引擎对这一效果进行了研究与还原。
近期,一段由 Volodymyr Kravchenko 制作的、展现该“Hiss”灵感效果的视频在网上迅速走红。部分用户表示,其令人不安的画面让人联想到偏头痛发作时的体验。Volodymyr 是一位常驻阿姆斯特丹的设计师与视觉艺术家,其作品主要聚焦于实验性视觉、动态设计、三维建模以及实时视觉特效。我们联系了他,请他简要分享制作这种体积流体扭曲效果的流程:
“该项目的主要灵感来源于 Remedy Entertainment 及其游戏的视觉语言,尤其是《Control》。我非常钦佩他们在视觉设计上的处理方式。“Hiss”效果促使我在 Blender 中探索类似的扭曲表现,我同时使用了纯计算机生成(CG)场景与实拍素材进行尝试。我拍摄了几段视频,搭建了一个简单的测试场景,随后开始反复试验。
希望这份拆解能为你自己的实验提供一个起点。在摄影、模拟与动态影像之间的交叉领域,仍有大量值得探索的空间。”
流体模拟。该模拟可通过 Blender 内置的烟雾求解器、自定义 Python 求解器或 Houdini 等软件实现。此流程的关键在于准备一个 OpenVDB 序列,其中需同时包含密度(控制特效出现的位置)与速度场(提供流体的运动信息)。
冻结首帧。对于 CG 场景,我渲染了一帧不含特效的干净画面;对于实拍素材,则提取视频片段的第一帧。这张被冻结的图像将作为源图,在特效中发生拉伸与流动。
让图像坐标随流体传递。这是最困难的部分。网格模型自带 UV 坐标,便于直接驱动变形;但体素数据没有 UV,仅靠速度向量不足以指导纹理随时间形变。我编写了一段 Python 脚本,为每个体素记录相机投影生成的 UV 坐标,并使其沿速度场移动。这样每个体素都能“记住”自身对应的图像像素位置,流体带动这些记忆向前推移,图像便随之跟随。最终结果保存为一个名为 uv_flow 的 VDB 网格。
着色处理。针对 CG 场景,通过属性节点读取 uv_flow,并将其直接连接至图像纹理的坐标输入端。Cycles 渲染器会将该 VDB 数据作为体积进行渲染,由密度值控制扭曲图像的显示区域。针对实拍素材,则将传递过来的坐标投影至 UV 贴图,用于扭曲冻结的图像。特效范围之外的原始视频仍会正常播放。
外观打磨。我通过为红、绿、蓝三个通道分别采样略微偏移的坐标来实现色散效果。这些偏移量会跟随形变轨迹变化,从而在拉伸的细节边缘形成彩虹状镶边。最后,我微调了形变强度与色彩参数,以塑造最终的视觉效果。
