editflow系列(三):使用Blender制作宣传片

分类: 开发笔记

严格来说,这篇不是开发笔记。

最近参加单位内部的Hackathon,最后要提交一个视频。虽然说明了不需要flashy的视频,但editflow这个项目(介绍参见之前的系列文章)实在没有太多可以叙事的——本就是个UI库——那倒不如在宣传片上下点功夫。

之前也看过微软出品的一些UI设计的宣传片,十分惊艳,可以在下面这个B站系列中看到: https://www.bilibili.com/video/BV15f4y127an

再加上我一直很想入门Blender,不妨借此机会,做一个炫酷的视频!当然了,由于能力极其有限,炫酷程度显然不及微软宣传片的万分之一。

话不多说,先上视频。

gif

视频中,灰色圆形薄片象征着光标(或理解成手指触摸区域)。

建模

还好只是做个UI库的宣传片,基本上长方体、圆柱体就能解决问题,建模​相对容易。

节点和输入输出端点

在实际实现中,节点由一个矩形主体和多个圆形输入输出端点组成。转换到3D世界中,自然就是长方体和圆柱体了。

node-0

实际上,在Blender中没有所谓的“长方体”,只有“立方体(Cube)”。如果想获得长方体的外形,则需要设置不同方向的缩放比例。

node-prop

比如这里,我就设置了2倍的X轴缩放和0.02倍的Z轴缩放,也就做到了宽宽、薄薄的效果。

对于圆柱体也是类似,X轴和Y轴均设置了0.1倍缩放,Z轴设置了0.016倍缩放。另外,圆柱体的Z轴平移也有0.01m,因此会高出长方体一小截,创造一点层次感。

port-0

缩放操作手柄

可以看到视频开始,当光标按下节点主体后,节点四周出现了6个蓝灰色小方块,这就是缩放操作手柄。

handle-0

这些手柄都是缩放后的立方体,当然也会通过一些位移创造层次感,实现方式和前面提到的圆柱体一致,这里不再赘述。

光标/触摸区域指示

就是一个和输入输出端点模型完全一样的圆柱体,仅仅是后面设置材质时有所区别。在这里也不多说了。

cursor-0

连线

这部分建模算是难度最大的了,毕竟是弯弯曲曲的玩意儿——当然了,这也是最后一个视频中出现的模型。

螺旋

我在这里使用了Blender的螺旋修改器,它会把物体不断地旋转一定角度并平移一定距离,然后把整个轨迹连接起来形成一个新的物体。螺旋特别适合用于制作弹簧、绳索之类的物体。因此,我利用它制作了一个类似马桶下水管的连线模型。

首先,我们要创建一个基础模型,即需要被不断旋转平移的物体。可以想象,连接一个圆形旋转平移的轨迹,就可以创造出一个类似弹簧的物体。如果想做出多股的效果,自然要多来几个圆形。

line-0

修改Screw的长度和Angle旋转角度来调节效果:

line-screw

为了清晰地展示这两个参数的效果,我分别控制其中一个参数为0,改变另一个参数录制了两个变化动图:

line-screw-screw line-screw-angle

弯曲

现在连线已经有了,但还没完。因为我们要让连线从一个节点的输出端点连接到另一个节点的输入端点,所以连线必须能够按照指定的路径弯曲。

最简单的做法肯定是直接对原始图形旋转一定的角度,但这样连线永远是直线,不够美观。虽然我们实际的实现中确实是直线的连线,可宣传片毕竟还是要夸张地美观一些才好。

这里就要添加一条贝塞尔曲线,然后利用曲线函数修改器使得我们的连线跟随贝塞尔曲线变形。

line-curve-0

line-curve-modifier

背景墙

我们要打光源,为了显示出光影效果,肯定要安放背景墙。其实就是四面立上平面,底面也躺着一个平面。

wall

小技巧:“关联”

宣传片里面涉及的模型确实不多,就这几种,但肯定需要复制粘贴一些。这里就又涉及一个“复制对象”和“复制关联"的区别。

Blender的“关联”是一个很实用的功能,当两个对象拥有某一类属性的关联时,你对任一对象相关属性的修改都会同步应用到另一个对象。换句话说,他们共享某一类属性。

模型对象、材质、数据属性、动画都可被关联。

当然,关联也可以通过Make Single User被取消(在Object -> Relations菜单下)。

make-single-user0

一般来说,为了方便统一修改,我直接通过“复制关联”(Duplicate Linked)来复制几个相同的节点模型。而对于动画过程中可能需要单独变换(例如材质)的模型对象,我再应用Make Single User使其可以被独立修改。

小技巧:统一修改属性

默认情况下,即使同时选择了多个对象,在右侧属性窗格修改属性也只会影响当前唯一一个活动对象。如果想使得修改应用到全部选中的对象,应按下Alt+Enter应用属性修改。

材质

材质这部分我尚未认真学习。视频中所使用的材质,基本都只是设置一下颜色,金属质感等等。

material-line

毕竟不怎么懂,我也就不多说了。记得材质这里也要注意关联的问题就好。

动画

Blender的动画系统相当易用。如果你曾经接触过Flash,一定也能很快习惯Blender的时间轴、关键帧的概念。

简单说,对象的各类属性窗格里面的属性几乎都能插入关键帧,这包括对象、修改器、粒子系统、物理等等属性。另外,材质里面的属性也是可以插入关键帧的。

小技巧:“插帧集”

之前说过Alt+Enter可以将属性修改应用到全部选中的对象,那么关键帧该如何同时为全部选中对象插入呢?

使用“插帧集(Keying Set)”就可以。

“插帧集”不仅可以为多个对象同时插入关键帧,还可以指定插入关键帧的属性集合,这也是它更重要的作用。Blender预置了一些插帧集,也支持自定义插帧集。利用好这个特性,可以在制作动画时事半功倍。

keying-set

为材质属性插入关键帧

当光标按下节点、缩放操作手柄、输入输出节点时,都会有颜色加深的动画渐变效果。这就需要我们为材质属性插入关键帧。

key-for-material

animate-material

波纹特效

视频开始,光标按下节点,光标下方出现了波纹特效。这里,用到了波纹修改器,非常简单,甚至连关键帧都不需要设置(因此把波纹特效放在动画这部分来讲似乎都不太严谨)。

波纹既然是应用于物体的修改器,说明它必然要通过物体自身面片的位移来形成波纹。因此,我们首先要对节点进行面片的细分。

node-subdivide

wave-modifier

为了让波纹在时间轴的某个区间生效,需要设置Time部分的OffsetLife属性,即从时间轴何时开始,持续多久。

另外,波纹的位置也需要通过Position部分的属性来设置,或者结合Start Position Object来指定波纹位置的参照对象。这里我就指定其位置与光标模型位置相同。

animate-wave

连线动画

前面建模的时候,我们知道连线的长度可以通过修改曲线函数修改器的Iteration属性来改变。因此,连线由短变长的动画很容易搞定。

animate-line

那么难点是什么呢?就是那个光标了!怎么才能让它也跟着贝塞尔曲线移动呢?

首先,我们要为光标模型添加一个对象约束——“跟随路径约束”。

follow-path-constraint

由于光标模型之前需要有一些关键帧动画,不可能一上来就施加“跟随路径”的约束,所以我在它需要跟随路径的前一帧,设置了Influence属性的关键帧,使其为0,也就是说该约束对其没有影响。后一帧则立刻使其成为1,光标模型也就吸附到了贝塞尔曲线的起始点。

animate-influence

太棒了!现在光标已经吸附到了路径上,下面就要使其移动。这就要结合曲线的“路径动画(Path Animation)”属性来实现。

path-animation

Frames属性相当于把整条曲线分成多少份,Evaluation Time则指定当前路径处在第几份。这样,“跟随路径约束”会自动使光标模型吸附到曲线这一份的位置上。

因此,我们只需为Evaluation Time插入关键帧,就能实现光标沿着路径移动的动画效果了!

视频合成

最后Microsoft字样其实并非3D模型,而是通过视频合成加上去的。这也是为了实践一下Blender的视频剪辑功能。

Blender的视频剪辑可以添加编辑好的3D场景,甚至可以加入多个摄影机的不同画面用于剪辑。要注意一点的是,视频剪辑必须在3D场景之外的场景:

scene

如上图所示,3D建模等都在Main场景中,而视频剪辑则在新建的Main.001场景中。

插入场景,再插入文字,定位好时间,就可以渲染合成了!

video-editing

对了,刚开始使用视频剪辑时,可能会发现视频剪辑预览窗口显示插入的3D场景是灰蒙蒙的模型,没有带上材质和光影。这是因为加上材质光影后,预览会变得非常卡顿。这个可以在预览窗口的侧边栏设置Preview Shading