在这个简短的教程中,我们将分析一个简单的 Blender 场景,用来为任何 3D 模型创建转台动画。

这种动画是一些允许你发布 3D 模型的商店所要求的。它们由一系列图像组成,其中要展示的 3D 模型围绕自身旋转 360 度,通常是绕垂直轴旋转。



视频文字稿

大家好。

在这个简短的教程中,我们将分析一个简单的 Blender 场景,用来为任何 3D 模型创建转台动画。

这种动画是一些允许你发布 3D 模型的商店所要求的。它们由一系列图像组成,其中要展示的 3D 模型围绕自身旋转 360 度,通常是绕垂直轴旋转。

本教程使用的是 Blender 3.3 版本制作的,不过我们将要讲解的内容在多个更早的版本中就已经存在,并且很可能在未来的版本中仍然适用。

这是一个面向初学者的教程,我们将介绍一些基础工具,例如用于相机的 Constraint Track To,以及场景的灯光设置。

在教程的第一部分中,我会向你展示一个不包含 3D 模型的基础场景,用来列出模板文件中的各种设置。这个模板文件将作为所有需要取景和渲染的模型的起点。

在第二部分中,我们会结合前面提到的 3D 模型来看一个实际示例,从而了解如何创建旋转动画。

那么,我们从教程的第一部分开始吧。

虚拟场景中只包含五个对象。

  • 三个发光的 Plane
  • 一台虚拟 Camera
  • 以及一个位于虚拟世界中心的 Empty 对象。

Empty 对象作为参考点,用来让虚拟相机和三个发光的 Plane 正确地指向它。

这一点非常重要,因为我们可能需要根据被拍摄对象的尺寸来调整取景。通过使用 Empty,我们不需要分别操作相机和 Plane,只需移动 Empty,其它对象就会自动跟随。

这个约束是通过 Track To Constraint 实现的。顾名思义,它会让拥有该约束的对象自动朝向目标对象。为了正确设置 Constraint Track To,我们需要指定两个方向,一个是前向向量,一个是上方向量。

前向向量称为 Track Axis,它表示对象将朝向哪个方向。以 Main Camera 为例,它的前向方向是本地的负 Z 轴。你可以通过选中 Main Camera,并在 3D 视图中启用 Viewport Gizmo Move 以及 Local Transform Orientation 来看到这一点。正的本地 Z 轴指向画面的后方,因此我们需要在该对象的 Track Axis 字段中设置为 minus Z

这种显示方式也可以让我们很容易地识别 Main Camera 的上方向量。它是正 Y 轴,因此在 Track To Constraint Up 字段中我们选择 Y

最后,只需要将 Empty 对象指定为 Target,相机就会始终指向 Empty,即使我们在场景中移动 Main Camera 也是如此。

另一个与 Main Camera 相关的设置是 Focal Length,它位于该对象的 Object Data Properties 面板中。在这种情况下,最好设置一个较高的数值,例如 80 110 mm,以减少透视带来的变形效果。不过稍后我们会看到一个实际示例。

现在我们已经知道相机的取景轴是本地 Z 轴,我们也可以沿着该轴让相机远离或靠近 Empty,只需使用 G Z Z 即可。

Constraint Track To 也应该应用在三个发光的 Plane 上。不过在这里我们会注意到,与 Plane 垂直的正轴,也就是它们的法线方向,是正 Z 轴。因此在它们的 Constraint Track To 中,我会指定 Z

关于这三个发光的 Plane,其实没有太多需要说明的。它们本质上就是三个 Plane,对应的材质是 Emitter,提供默认的白色照明,强度相同。不过,这三个 Plane 的尺寸并不一致,这一点会影响整体的光照强度以及明暗过渡效果。

这三个 Plane 的摆放方式构成了一个标准的三点布光。不过,到目前为止所列出的设置只是一个起点。你完全可以根据需要,修改这三个光照背景的强度、颜色或在场景中的布局。

当然,与照明相关的元素并不只有这三个发光的 Plane。在 World Properties 面板中,我设置了一张 EXR 类型的图像,并使用 Linear Color Space,用来为物体提供环境照明。

图像的选择取决于多种因素。一般来说,当我要为包含大量金属部件的物体进行取景时,我更倾向于使用彩色图像,而不是模拟摄影棚灯光的图像,这样可以在这些高度反射的表面上获得更有趣、更不单调的明暗效果。

正如之前所说,这些只是为了获得多种照明方案而设置的初始参数。当然,根据实际需要,你也可以关闭这三个发光的 Plane,或者降低 World Background 的光照强度。

通过切换到 Rendered 显示模式,可以实时评估渲染预览效果,稍后我们会在一个实际示例中看到这一点。

至于场景的渲染,大多数商店通常要求输出图像序列。每个商店的规格都不相同,因此需要在 Render Properties Output Properties 面板中根据具体要求来设置相应的参数。

在我的设置中,Render Properties 里只设置了 250 Samples 进行渲染,而且大多数情况下甚至不需要启用 Denoise。因为在这样的场景中噪点非常少,并且可以通过在 Clamping 字段中将数值设置为 0.99 来减少 fireflies。此外,Denoise 可能会影响物体表面细节,所以在这种情况下我更倾向于不使用它。

至于输出设置,在我的示例中,我将分辨率设置为 1920×1080,因为对很多商店来说已经足够。同时,我选择了 PNG RGBA 格式,也就是带有透明背景的单张图像序列。由于不同商店对背景的要求不同,因此在这里我更倾向于输出带透明通道的结果。

说到透明背景,如果你不希望在渲染结果中显示虚拟世界的背景,需要在 Render Properties 窗口中打开 Film 选项卡,并勾选 Transparent

这个模板文件的最后一个设置与 Timeline 有关,也就是动画的整体时长。具体参数取决于各个商店的要求,下面我会展示两个示例。

如果商店要求提交一个真实的视频,或者你打算制作一个视频发布到 Youtube、社交媒体或你的网站上,那么你需要将帧数设置为动画时长(秒)乘以每秒帧数。

例如,要制作一个 10 秒、以每秒 25 帧播放的视频,你需要在 Timeline End 字段中设置为 250

在这种情况下,你还可以在 Output Properties 面板中选择直接生成一个视频文件,而不是输出一系列图像。

如果你只需要生成数量较少的单张图像,例如 13 张,那么只需在 Timeline End 字段中设置要生成的确切帧数即可。Blender 会为动画的每一帧生成一张图像。

以上就是这个文件的通用设置,适用于所有需要渲染的 3D 模型。

随后,可以将这个文件保存在单独的文件夹中,作为一个通用模板,之后为具体项目复制并进行修改。

接下来我们来看一个带有 3D 模型的实际示例。该模型可以通过 Append Asset Browser 导入到场景中。

我选择了 Tableware Set 1 这个模型,因为它由多个对象组成,因此有必要将它们进行分组,或者合并成一个单一对象,这样才能设置它的 Origin,并方便地执行一些变换操作。

模型刚导入时体积非常大,无法放入取景框中。不过,在缩放之前,我会先使用 Join 将它合并为一个对象。此时,构成整个套装的所有独立对象都是被选中的,但还没有一个处于激活状态的对象,因此无法正确执行 Join

为了解决这个问题,我按住 SHIFT 并用鼠标左键点击其中一个对象,例如 Placemat。它的轮廓颜色会发生变化,表示它现在成为了激活对象。

然后我按下 CTRL J,将所有选中的元素合并到 Placemat 对象中。

Placemat Origin 正好与场景中心重合,因此我只需按下 S 键并移动鼠标来缩放它,当对象适合取景框时按 Enter 确认即可。

如果导入的对象的 Origin 并不在场景中心,你可以先手动将它移动到合适的位置,然后按下 CTRL A 并选择 Location。这个操作会重置场景中的 Location 坐标,其结果就是对象的 Origin 会如我们所希望的那样,与虚拟世界的中心重合。

现在,这组对象已经能够放入取景框中,但仍然存在一个问题:这个取景并不适合展示当前这个模型。

在这里我们有两种解决方案。一种是向上移动虚拟相机,另一种是让对象绕 X 轴旋转。具体选择哪一种取决于模型本身。如果对象在底部也有需要展示的细节,那么在围绕垂直轴制作动画之前,先绕 X 轴旋转并倾斜它,通常是更好的选择。

如果你决定采用这种方法,记得使用 CTRL A Rotate 应用旋转变换,并在必要时再次移动对象并应用 Location 变换,以便正确地将旋转后的对象 Origin 设置在虚拟场景的中心。

不过,在 Tableware Set 1 的情况下,模型的下半部分并没有需要展示的细节,因此我们可以采用第二种方案,也就是向上移动虚拟相机。这个操作可以通过选中虚拟相机,并在 3D 视图中使用变换操控器移动,或者使用快捷键 G Z 来轻松完成。

当然,你也完全可以从不同的取景开始,将虚拟相机移动到场景中的其他位置。

需要注意的是,由于虚拟相机始终指向位于场景中心的 Empty,因此不需要对相机的旋转进行任何修改。

你也可以通过移动 Empty 来调整取景。这一点在本示例中使用的模型上尤其实用,因为它的包围盒中心实际上并不与虚拟世界的中心重合,所以需要将 Empty 向上移动,从而同时调整取景,以便更好地观察该模型。

在这种情况下,Constraint Track To 应用于相机的优势同样非常明显。在视频的第一部分中我已经提到,建议为虚拟相机使用较高的 Focal Length 数值,以限制由透视产生的变形。

你现在可以通过修改 Main Camera Focal Length 数值来直观感受这些变形。除了需要前后移动 Main Camera 才能正确取景之外,你会立刻注意到,当 Focal Length 数值较低时,画面中的变形非常明显,尤其是在画面的边缘区域。

因此,我建议将该数值设置在 80 110 之间。我认为没有必要使用更高的数值,不过和往常一样,最终的选择还是应该根据每次所使用的具体模型来决定。

好了,现在我们进入模型动画的制作阶段。

实际上,这个操作非常简单。由于我们需要的是围绕垂直轴的 360 度旋转,因此只需要在动画的第一帧和最后一帧设置两个关键帧即可。

Timeline 的第 1 帧选中 3D 模型,确保 Transform 面板中的 Rotation 数值最初都被重置为 0,然后在 Rotation Z 上点击鼠标右键,选择 Insert Keyframes

接着,移动到动画的最后一帧,在对象的 Rotation Z 字段中输入 360,再次点击鼠标右键并选择 Insert Keyframes

旋转动画就这样创建完成了。我们可以通过点击 Timeline 中的 Play 按钮来查看效果。如果帧数设置得比较少,使用方向键在各个帧之间前后移动,可能会更方便观察。

不过,在开始渲染序列之前,我们还需要完成三项检查。

  • 第一,检查模型的灯光。
  • 第二,检查整个动画过程中取景是否合适。
  • 第三,如有必要,修改各个关键帧之间的插值方式,也就是 Blender 在中间帧中执行旋转的方式。

可以通过按下 Z 键并切换到 Rendered 视图模式来检查模型的灯光。在这种模式下,查看动画中不同帧的模型效果,我们就可以决定是否保留默认的灯光方案,或者是否需要调整三个发光 Plane 的设置,或者更换 World Background 中使用的 EXR HDR 图像。

取景检查则是通过逐帧查看动画来完成的。这一步主要针对那些包围盒不是立方体、且没有居中于场景的模型,就像我们这个例子一样。实际上,Tableware Set 1 的长度大于宽度,因此在某些帧中可能会超出画面范围。

在这种情况下,就需要调整相机与被拍摄对象之间的距离,或者调整 Empty 的高度,以确保在所有帧中对象都始终位于画面之内。

这个操作同样有助于避免相反的问题,也就是防止物体在画面中占据的面积过小而显得不必要地空旷。

最后一个需要完成的操作,是分析各个关键帧之间的插值方式。

实际上,Blender 可以在一个关键帧到另一个关键帧之间执行不同类型的过渡。例如,使用 Bezier 曲线的插值会让动画在两个关键帧之间以渐进的方式开始和结束,而不是线性变化。

不过,在我们的这个案例中,线性的动画可能更合适。

关键帧之间的插值方式可以在 Graph Editor 中进行修改。选中 3D 模型后,打开 Graph Editor,选择其中已有的两个动画关键帧,然后按下 V 键,并选择你希望用于动画的插值类型。

在我的设置中,插值已经是线性的,因为我在 Preferences 窗口的 Animation 选项卡中,通过 Default Interpolation 将其设为所有 Blender 项目的默认值。不过我仍然想向你展示如何手动修改这一设置。

总结一下。在本教程中,我们介绍了如何在 Blender 中搭建一个简单的场景,用来生成 3D 模型的转台图像序列,包括为虚拟相机选择合适的 Focal Length,以及为被拍摄对象设置良好的灯光。

我们还讲解了如何设置 Track To Constraint,让光源和相机始终指向虚拟场景的中心。

同时,我们也介绍了如何正确设置被拍摄对象的 Origin 和旋转方式,以及如何在指定的帧数内创建动画。

最后,我们还展示了如何修改动画曲线的插值方式,以获得 3D 模型的线性旋转效果。

希望这个简单的教程对你有所帮助。我们下次再见。

本网站仅用于展示我的部分作品,不具有任何推广或商业目的。请注意,目前我不接受,也不会回复任何定制项目、咨询服务或其他形式的合作请求。


高级隐私策略信息和cookie文件的使用