天天看点

Unity2017版本TimeLine& Cinemachine 技术

Unity2017.1版本中推出了全新的Timeline技术。Timeline不仅仅只是一个可被游戏行业应用的工具,它可以为各个行业(影视制作、广告、建筑等)的互动内容开发者提供支持。下面本人就TimeLine &Cinemachine 以及Frame Recorder等三个方面简介一下相关技术,希望大家能有所收获。

一: TimeLine  时间线

是一种影视动画与游戏强交互内容的开发工具。一开始的开发目的仅仅是为了游戏中“转场动画”而设立的开发工具,但是后来随着开发的进展开发人员发现可以不断加入更多的功能,使其更加的强大。TimeLine就像导演一样在Unity中控制序列、使用真实世界相机的设置来合成镜头、自动跟踪指定位置。

目前基于Unity2017.1版本,总结Timeline功能可以分为如下四部分:

  • 预渲染过场动画(类似3DMax 、Maya软件中的预渲染)
  • 实时渲染过场动画
  • 影视制作(FrameRecorder)
  • 可交互动画片段(timeline基于assets, 可被重复使用)不仅仅限于游戏使用。

    虽然TimeLine 随着版本的提升,一定会不断加入新的功能实现,但是目前(2017年)其主要作用还是做“过场动画”(或者说“转场动画”)。 TimeLine 的操作界面类似 时间线,但是本质不同是它可以控制模型、粒子、音频、摄像机镜头、脚本等诸多内容,甚至可以开发完整游戏,见图1_1所示。

Unity2017版本TimeLine& Cinemachine 技术

图1_1 本章配套演示项目TimeLine截图

      与TimeLine 技术配合使用的还有 “Cinemachine”插件(高级虚拟摄像机系统)、“FrameRecorder“帧录制工具。 前者是虚拟摄像机系统,提供了丰富功能的影视专业级场景跟踪与拍摄控制技术。后者直接把TimeLine工程场景效果输出到自定义格式贴图中,最终利用帧动画技术完成游戏场景之间的动画过度,即“过场动画”。

    提示:这里Cinemachine虚拟摄像机系统,以及Frame Recorder 并不是直接集成在Unity编辑器中使用,而是需要分别通过Asset Store 、Github进行下载安装后使用。 这样安排是因为Unity公司认为以上功能的实现还不是最终完善版本,更多内容还在研发之中。所有就把完成度高的部分以插件形式提供广大研发人员使用,相信后续版本会做到无缝整合在一起。

因为TimeLine在内的三大技术规范与内容较多,所以笔者决定以小项目演示的形式,分为若干步骤的讲解,带领读者学会其核心技术。首先我们先来了解Timeline 的使用与基本功能

    第1步骤:

     新建项目(必须使用Unity2017.1 以上版本),导入必要资源。 因为本演示项目需要用到角色的动画演示,所以我们打开Asset Store 窗口,在搜索框中点击“Mecanim Locomotion Starter”查找插件模型。点击“导入”按钮后,系统会弹出导入内容确认窗口,我们默认点击“Import”导入即可。见图1_2所示。

Unity2017版本TimeLine& Cinemachine 技术

图1_2 下载Mecanim LocomotionStarter 模型

    第2步骤:

    项目视图中建立TimeLine(鼠标右键弹出窗口àCreateàTimeline),然后拖拽到层级视图中。然后我们建立一个简单的演示场景,在一个平面上建立一个红色Cube与黄色Sphere ,如下图1_3所示

Unity2017版本TimeLine& Cinemachine 技术

图1_3 建立演示基本场景

     第3步骤:

     现在我们建立Timeline 的“Activation Track”轨,学习游戏对象的隐藏与显示基本控制技术。首先点击Unity顶部菜单Windows-->Timeline Editor ,新建Timeline窗口。然后点击Timeline左上角的“ActivationTrack”选项,建立“Activation Track”轨(图1_4),同时把层级视图的Cube对象拖拽到本轨道控制物体中,见图1_5所示。

Unity2017版本TimeLine& Cinemachine 技术

图1_4 建立“Activation    Track”轨

Unity2017版本TimeLine& Cinemachine 技术

图1_5  Cube 赋值给Activation Track轨

现在定位Active 轨道段,快捷键Ctrl+D复制一份,点击Timeline 左边的控制三角按钮“Play”,预览场景。此时我们会发现cube 立方体会随着时间线的移动显示与隐藏交替出现,这说明“Active”轨是用于游戏对象的显示控制。

     第4步骤:

     现在我们来建立“AnimationTrack”轨,学习游戏对象与角色模型的动画控制。首先建立“Animation Track”,把Sphere 拖拽到本轨中,此时会立即显示“Create Animator on Sphere”弹出框,点击后我们发现在Sphere 对象上添加了Animator组件,只有这样“Animation Track”才能控制游戏对象录制“方位”(Transfrom)动画。

    第5步骤:

    点击Sphere所属的“AnimationTrack”右边的“红色”点进行录制,此时会发现本轨道发红显示“Recording...”字样,如图图1_6所示。

Unity2017版本TimeLine& Cinemachine 技术

图1_6  Animation Track 录制动画中

    第6步骤:

    拖动Sphere 物体,此时录制轨会留下白色的“帧点”,然后在录制状态下移动时间线。再次拖动Sphere 就会再次留下“帧点”,这样不断循环可以记录下所有位移信息。点击Timeline 的“Play”三角按钮,可以在不运行项目的情况下,直接预览录制的位移动画效果。如果认为这种方式比较简单,则可以点击红色录制按钮右边的白色按钮,显示其方位曲信息。读者可以通过拖拽鼠标的方式,进一步调节出更加复杂的方位动画,见图图1_7所示。

Unity2017版本TimeLine& Cinemachine 技术

图1_7 曲线方式调节游戏对象方位动画

    第7步骤:

    “AnimationTrack”轨除了一般的方位(位移、旋转、缩放)动画制作,更多是用在角色模型上。现在把角色模型DefaultAvatar.fbx (项目位置:Locomotion Setup-->Locomotion-->Animations-->DefaultAvatar.fbx)拖拽到场景视图中。然后再建立一个“Animation Track”,把层级视图中的DefaultAvatar 拖拽到本轨道控制物体中。

    第8步骤:

    点击“AnimationTrack”右边(显示三条横线Logo的)按钮,在弹出框中点击“Add From Animation Clip”,在弹出窗口中添加Idle 、Walk、Run等角色动画,播放预览效果。参见图1_8所示。

Unity2017版本TimeLine& Cinemachine 技术

图1_8  添加角色动画剪辑到Timelin

层级视图TimeLine对象所属的Playable Director 组件,改变Wrap Mode属性 为“Loop”可以不断循环重复的预览动画效果直到满意,比较实用。

二:  Cinemachine 虚拟摄像机

     Cinemachine 是虚拟摄像机系统,使用它可以像导演一样在Unity中控制序列、使用真实世界相机的设置来合成镜头、自动跟踪指定位置。Cinemachine虚拟摄像机功能强大,它即可以单独使用也可以配合Timeline制作功能强大的影视视频特效。

Cinemachine 目前(2017年)需要在AssetStore 下载,打开Asset Store 窗口搜索关键字“Cinemachine”,然后下载安装。(图2_1)

Unity2017版本TimeLine& Cinemachine 技术

图2_1  下载Cinemachine 虚拟摄像机

关于Cinemachine摄像机系统笔者还是以小项目演示形式,分为若干步骤进行讲解。这里为了方便起见,我们接着前面上一节内容的场景继续演示开发。

     第1步骤:

     插件导入成功后,在Untiy顶部会多出“Cinemachine”菜单,点击“CreateVirtual Camera”创建第1个虚拟摄像机。在层级视图上会出现“CM vcam1”的虚拟摄像机对象。"CM vcam1"属性视图中,把Sphere 对象赋值给属性“Look At”,这样第1台摄像机就会一直“关注” Sphere对象。

Unity2017版本TimeLine& Cinemachine 技术

图2_2  给“CM vcam1”对象赋值“Look At”属性

    第2步骤:

    依次点击菜单“Cinemachine”-->"CreateFreeLook Camera" 创建第2台虚拟摄像机。先禁用“CM vcam1”, 把层级视图的“DefaultAvatar”赋值给 "Create FreeLook Camera" 摄像机的Look At参数。再把层级视图的“DefaultAvatar”模型下的“RightLeg”赋值给 "Create FreeLook Camera" 摄像机的Follow参数。运行游戏(或者点击Timeline窗口的运行按钮),这时我们发现,围绕着“DefaultAvatar”角色对象, Create FreeLook Camera摄像机形成了上、中、下可随玩家鼠标移动(上下左右)而自由旋转的自由灵活摄像模式。见图2_3所示。

Unity2017版本TimeLine& Cinemachine 技术

图2_3  Create FreeLook Camera虚拟摄像机

    第3步骤:

Unity2017版本TimeLine& Cinemachine 技术

图2_4  创建Cinemachine Track

     目前为止各个摄像机应用还是各自为战,如何有效按照开发意图管理各种摄像机呢?这样我们就想到了Cinemachine 与Timeline 结合使用,即用Timeline 管理各个虚拟摄像机。

首先建立Timeline 的“CinemachineTrack”轨,管理各虚拟摄像机。点击TimeLine 的"Add" 按钮,建立“Cinemachine Track”轨,把主摄像机赋值给“Cinemachine Track”,见图2_4所示。

    第4步骤:

    点击“Cinemachine Track”轨, 鼠标右键点击弹出框“AddCinemachine Shot Clip”选项。点击“Cinemachine  Shot”编辑轨,在属性视图中对VirtualCamera 属性添加我们上面建立的虚拟摄像机,见图2_5所示。现在运行程序,我们发现两台摄像机(“CM vcam1”与“CM FreeLook1”)已经按照事先定义的顺序依次在Game视图输出场景信息了。

     提示:这里的虚拟摄像机实际并不直接输出场景信息,而是建立时给主摄像机加入了“Cinemachine Brain (Script)”脚本组件。Unity从而通过这个组件来管理各个虚拟摄像机,单一时间点只有一个虚拟摄像机把场景信息转发主摄像机,玩家从Game 视图看到最终的影像。

Unity2017版本TimeLine& Cinemachine 技术

图2_5 完成Cinemachine Track轨编辑

三:  Frame Recorder 帧录制器

Frame Recorder 帧录制器是Unity公司开发的一个高级“截图工具”。本质是从Timeline 中获取最终输出场景信息,然后转制为JPEG、PNG、EXR 三种格式的图片与视频信息。具体使用步骤如下:

Unity2017版本TimeLine& Cinemachine 技术

图3_1  Recorder 窗口

     第1步骤:

从Github下载FrameRecorder帧录制器。下载链接地址:https://github.com/Unity-Technologies/GenericFrameRecorder  或者也可以直接在本章节的配套资料中获取。

     第2步骤:

   由于FrameRecorder是开源项目,所以直接把下载后的Zip包解压缩,导入本项目中即可。导入成功后,Untiy顶部菜单会多出一项“Tools”,我们依次点击“Tools”-->"Recorder"-->"Video"把弹出窗口停靠Unity编辑器一侧,如图3_1所示。

     第3步骤:

   对Recorder 窗口的如下参数赋值,它是录制输出信息内容的关键:

  • Output format:输出格式(JPEG、PNG、EXR)选择
  • Output Path:  输出路径
  • File Name:    输出文件名称

   第4步骤:

   Timeline 中点击“Add”按钮,建立“RecorderTrack”轨。然后鼠标点击选择“Add Recorder Clip”,这时就会发现Recorder Track 上增加了“RecorderClip”。点击Recorder 窗口的“Start Recording”开始正式录制,见下图3_2所示。

Unity2017版本TimeLine& Cinemachine 技术

图3_2  增加RecorderClip,点击“Start Recording”录制