一位RWU学生如何巧妙地在虚幻引擎中制作出成千上万个立方体同时运动的动画
作为我在德国拉芬斯堡-魏恩加滕应用科技大学的动作设计模块项目的一部分,我承担了制作一个动画短视频的任务。
(本视频转载自Vimeo:
https://player.vimeo.com/video/291514752)
这个任务特意被设计为开放式的,允许我们这些学生用视频讲故事,创作抽象作品,甚至可以创作2D动画。
我几乎从一开始就在使用虚幻引擎,而且一直关注着这种引擎的发展,因此我明白,可以利用这个机会第一次钻研实时影片的创作。
只要数量够多,简单的、个性极少的形状或几何体也能作为一个整体表现精美的图像,这一事实一贯令我着迷。
像素能做到的事远不止是改变颜色和密度而已。在我的项目中,我让虚拟的3D立方体做到了远远超过上下移动的事。这就是立方体的数量能够在视觉效果上产生差异的例子。
我首先用简单的静态立方体试验,创作了一个有未来气息的顶针台,然后想到一个模仿红色电路板的设计。
在确定我要追求的风格之后,接下来我就对驱动这些立方体运动的系统进行原型设计。
我对这个系统的要求是:
同时驱动成千上万个立方体的运动 允许随机/噪声和特定运动 它对性能的影响必须极低,能够在编辑器中稳定运行 最重要的是,这个系统必须易于使用和调整。
虽然可以按传统方法制作动画或者使用蓝图驱动几十个立方体的动作,但我知道只有着色器解决方案才能够在某些场景中动态地移动多达55万个立方体而不会严重影响性能。
我首先生成一个有25600个立方体的顶针台,我最终将根据镜头把它实例化几次,以获得我想要的分辨率。我删除了这些立方体的底面,因为视频中看不到它们,这可以进一步提高性能。
我给上下各四个顶点分配了不同的顶点颜色来遮罩可移动部分,这样我就能使立方体底部保持不动,同时仅允许上表面移动。
为了使用纹理驱动运动,必须生成一个UV贴图,将上面的四个顶点都映射到UV空间中的一个点,并在0-1空间中均匀分布。
这是为了强制这四个点进行相等的移动,否则会在每个点对不同像素采样,这样上表面就不平了。
我在材质编辑器中使用了一个Lerp(线性插值)节点的阿尔法信道中的顶点颜色输出作为遮罩。
将Lerp的输出乘以Constant3Vector (0,0,1)节点可消除X、Y方向上任何可能的运动,仅允许上下移动。
将结果最小值限制为0可确保任何运动都不会低于底部平面。然后将限制输出传递到世界场景位置偏移,基本的框架就完成了。
真正有趣的部分从这里开始。Lerp的输入A是这个项目中最具创意的部分。不需要遵守什么严格的规则,最重要的是尝试各种不同的思路,例如:
在U和V方向缩放纹理 旋转或平移纹理 使用Time and sine节点 切换到允许在不同插接板之间连续运动的世界场景对齐纹理
通过使用世界场景参数集合,我稍后可以在Sequencer中设置关键帧以创作实际的动作。
为了创作出引人注目的画面,我用了一个动态的定向光源和一个动态的天空光照,两者的光强度都设置得非常低(分别是0.17lux左右和0.1 cd/m²),因为反光表面已经在散射光线。
在某些场景中,我在需要时使用了聚光源或点光源造成一些比较小的高亮效果。
然后我使用电影摄像机对外观进行细微调整。大量使用景深改善了立方体的尺寸和数量的外观。
接下来的步骤是在Sequencer中设置不同镜头和运动关键帧。我首先导入音频,并创建了各种占位镜头。
接下来需要获得合适的摄像机角度,以及对世界场景参数集合中存储的材质参数设置关键帧。虚幻引擎的摄像机绑定和摇臂功能帮了大忙,让摄像机本身实现了稳定而不失趣味的运动。
总而言之,对我来说在虚幻引擎4中创作这个项目是一次美妙的经历。由于虚幻提供的优质实时渲染和工具,我能以快得惊人的速度进行迭代。
在我的教授提出反馈和意见以后,我不必回头重新渲染场景(通常这需要好几天时间)。我可以立刻实时更改多种方面,包括颜色、后期处理效果,甚至为同样的镜头选择其他轨迹来快速呈现同一序列的不同变化。这大大加快了创作进程。
我不需要其他软件,只用虚幻引擎4就制作出了整个电影序列,这真是令人难以置信。如今我知道了,UE4是一种功能强大的动态视频创作工具,还有出色的文档和特别乐于助人的社区。
特别鸣谢
Markus Lauterbach教授 Jorge S Soto Gregory Neale Division Games UG 使用的声音:“ManVsMachine”,版权属于Zelig Sound
近期焦点