《Tilt Brush》是一款VR绘图应用,它提供了包括太空在内不同风格的3D空间用来作画,同时还提供了多种样式的笔刷,比如彩虹、发光带、星星、烟雾甚至枫叶。本文我们一起来看看如何利用Tilt Brush Unity SDK在Unity中使用Tilt Brush。

关于Tilt Brush Unity SDK
Tilt Brush Unity SDK是为设计在Unity里使用Tilt Brush进行草图创建的工具,此工具易于上手,让艺术家以全新的方式来实现创意。 

Tilt Brush Unity SDK包括以下几个部分:
《Tilt Brush》的初始材质和脚本,将自动绑定到导入的草图,以便在Unity中的效果与在《Tilt Brush》中的草图一致。
《Tilt Brush》的音频响应功能,让画刷响应音乐。
可重用的示例脚本,增加交互或利用导入的草图制作动画。
《Tilt Brush》内容的妙用。

使用前须知
目前Tilt Brush Unity SDK还处于内测阶段。使用最新版SDK时,请参照以下指南:
需要Unity 5.4.2f2或更高版本。
需要Tilt Brush v7.0或更高版本。
不支持基于粒子系统的画刷:Bubbles(泡沫),Dots(点),Embers(余烬(余火)),Smoke(烟雾),Snow(雪花),Stars(星星)。
这些画刷外观可能不同:Pinched Flat,Pinched Marker,Electricity,Hyper Grid,Toon,Light Wire,Rainbow

下载与导入
点击这里下载最新版Tilt Brush Unity SDK。您会在下载好的文件中看到一个Unity资源包,它就是SDK,导入方法如下:

  • 打开Unity。
  • 新建项目或打开已有项目。
  • 双击下载好的. unitypackage文件,或者点击菜单项Assets > Import Package > Custom Package。
  • 导入Unity资源包。



下载并导入SDK后,我们开始导入草图。

导入草图
要在Unity中使用《Tilt Brush》的草图,需要将草图导出为FBX文件并复制到项目中。Tilt Brush SDK会在导入过程中处理文件并指定正确的材质。

导出草图的步骤如下:

  • 打开《Tilt Brush》,加载草图。
  • 单击菜单设置区域的[...]图标。
  • 单击Labs图标。
  • 在弹出对话框中单击Export。


导入草图到Unity场景的步骤如下:

  • 将.FBX文件(Windows:My Documents/Tilt Brush/Exports 或Mac: Documents/Tilt Brush/Exports)复制到Unity项目。
  • 将.FBX文件从项目视图拖至层级视图。


注意:Tilt Brush Unity SDK不会加载.tilt文件;不需要复制FBX包含的纹理贴图到Unity项目。

提示:可以从SDK提供标准的Tilt Brush环境开始学习。Tilt Brush环境位于TiltBrushExamples/Environments/Standard目录下。

示例
“TiltBrushExamples”文件夹下的示例展示了在Unity中使用《Tilt Brush》草图及其它内容的不同方法。

Environments / Standard
该场景包含初始的Tile Brush环境和灯光设置,非常适合以此场景开始学习在Unity中使用《Tilt Brush》草图。
 


Sequence - Looping Animations
使用多个草图的示例,利用Sequence脚本创建了火焰动画。
 


Sequence - Audio Reactive
与音乐节拍同步的动画示例!
 


下面是VR示例,使用VR示例之前请先注意以下几点:
下载SteamVR package并导入到工程项目,使用SteamVR推荐的设置。
将[CameraRig]预制件添加到场景。

VR/Story - Teleporting
将鼠标悬停在箭头上并使用Trigger按钮来穿过地牢。
 

 
将传送点放在草图周围进行探索


VR/Story - Custom Triggers
与草图进行交互,讲述一个古怪的故事。
 

 
自定义触发器,放置于草图周围来触发场景切换事件


提示
音频反应
可以在场景里根据音频来摆动画刷:

  • 将[TiltBrush Audio Reactivity]预制件拖入场景。
  • 如果场景中没有Audio Source,则添加一个。


如果画刷没有移动,可以在运行模式下选中预制体查看着色器接收到的音频数据。
 



发光



通过添加Unity内置的着色器Bloom来实现《Tilt Brush》的视觉效果:

  • 导入Standard Assets的Effect插件包(Assets menu / Import Package / Effects)。
  • 重要注意:勾选Camera的HDR。
  • 添加Bloom后处理效果,参考推荐设置如下:


 


脚本示例
Tilt Brush Unity SDK含对草图重用的脚本示例:
创建动画循环。
草图不同地点之间传送。
创作交互性故事。
创建时间轴动画。
将草图分成各个部分(实验)。

下面我们就展开介绍一下各个实例。

创建动画
使用内含的包含Sequence脚本来将《使用Tilt Brush》草图用当作动画帧。
创建动画步骤如下方法:

  • 创建空对象(GameObject)
  • 添加Sequence组件 (Add Component > Tilt Brush > Sequence)

 

 

  • 将模型、文件夹或者游戏对象拖入检视面板(Inspector)以添加帧。

 


要快速将草图转换为动画,可以从文件夹创建序列:

  • 右键单击包含所有草图的文件夹
  • 点击Create Looping Sequence:

 

 

  • 这会将文件夹的所有草图转换为一个序列


音频响应动画
还可以创建一个根据音乐节拍播放的序列,步骤如下:

  • 将Playback Mode设置为Every Beat
  • 将[TiltBrush Audio Reactivity]预制件添加到场景
  • 添加Audio Source组件及您喜欢的音乐



参考


播放模式:

  • Every Beat,播放歌曲的每一拍都会改变动画帧
  • Constant, 动画帧在经过固定秒数后改变
  • Frames Per Second, 动画帧播放速度(每秒帧数)


导出设置(当项目里有Cinema Director 可用时):

  • Cutscene Director,将序列帧导出到时间轴。
  • Time Per Frame,每帧持续时间(以秒为单位)。
  • Turn into Cutscene, 利用所有正确参数创建过场动画对象。


帧:

 

  • 添加帧的方法:将模型,文件夹或游戏对象拖入到Sequence窗口。

 

  •  添加空白帧

 

  •  重复此帧的次数

 

  •  删除帧

 

  •  将帧向上或向下移动(不支持鼠标拖拽)


创建交互性VR故事或探索草图
请注意,使用VR脚本步骤如下:

  • 下载SteamVR package并导入项目,使用SteamVR默认推荐设置。
  • 将[CameraRig]预制件添加到场景。


可以通过视角预定好的传送点来探索草图,或者通过Teleport脚本在不同草图间移动。这可用于:

  • 探索大型草图。
  • 创建线性或分支交互性故事。
  • 在不同草图之间导航。

 

 
使用传送点探索草图


草图之间进行传送
创建独立场景:
创建空游戏对象。
添加Story Scene组件。
创建子对象并附带Story Teleport Trigger组件,将它设置为不同场景的传送点。
为子对象添加所有草图和游戏对象:
 



层级视图结构如下:

  • 场景1:草图;传送到场景2的传送触发灯光;物体等等...
  • 场景2:草图;传送到...的传送触发。


最后,设置传送点之间导航的方法。

视点之间传送
想让玩家移动到某个点,步骤如下:

  • 创建空游戏对象。
  • 添加Story Teleport Point组件。


最后,设置视点之间导航的方法。场景视图会显示点与点之间的连线方式。
 

 
与另外两点相连的传送点(作者 Scott Campbell)


点或者场景之间导航
要在点到点之间移动,需要在它们之间设置传送点。Tilt Brush Unity SDK包含几个示例脚本:
 

  • 使用玩家周围的箭头:


- 创建空游戏对象
- 添加Story Arrow Navigation组件:运行场景,每个可以传送的点,都会在玩家周围出现箭头。鼠标悬浮在传送点上面,利用触发器传送到另一点。
 

  • 使用激光指针:


将Laser Pointer组件添加到控制器,步骤如下:
- 将[CameraRig]预制件添加到场景。
- 为左右手控制器分别添加SteamVR_Laser Pointer组件并设置颜色。
在传送点添加图标步骤如下:
- 设置图标纹理和材质。
 



当激光指针悬浮在传送点图标并单击触发器时,玩家将被瞬移至传送点。
 

  • 手动放置传送触发器


- 创建空游戏对象并添加Story Teleport Trigger组件。
- 设置触发器的触发时间与传送的目标点(查看下方Story Teleport Trigger组件介绍)
- 调整碰撞体设置触发器被激活的位置。

提示

  • 创建分支故事时,为每个场景添加多个触发点。
  • 通过添加返回前一个或下一个场景的触发器,为每个场景创建翻页效果。
  • 在场景里添加传送点 ,传送至同一场景的特定地点。



参考文档

  • Story Scene组件:Story Scene组件来使对象成为玩家可以传送到的独立场景。当玩家传送到该场景,所有子对象会被激活,离开场景时被销毁。


-First Scene,如果被勾选,场景会成为运行后首个激活的场景(其它场景会被禁用)。
 

  • Story Teleport Point组件:Story Teleport Point组件用于指定玩家传送的空间点。

 


- Teleport To All Points,玩家是否能传送至场景任意点?
- Points,玩家可以传送到指定点。
- Teleport On Start,在中起始,勾选该选项会禁用场景中启用该选项的任意其它点。
- Floor Offset,从玩家地面传送到另一点地面的高度。默认高度是一个人坐下的眼睛的平均高度,所以传送点和视点位置要一致。
- Icon Texture,可视化点的图标。如果想隐藏传送点,将该属性留空即可。

选中传送点时,会在场景视图显示一些有用信息,告知玩家的传送点与传送时间:

  • flat bottom white square表示玩家所在地面。
  • wide white box表示玩家坐下的平均高度。
  • slim tall white box表示玩家站立的平均高度。
  • blue arrows表示所有从此处传送的点。


 

 
选中传送点后的可视化小标记


 

  • Story Teleport Trigger组件:Story Teleport Trigger组件用于自定义玩家传送到不同场景或传送点的方法。在草图的关键点添加交互性(例如门把手)

 


-Trigger Type,定义触发器激活时间。
-        Steam VR Controller Enter: When this is touched by a controller
-        Steam VR Controller Enter: 控制器触碰触发器时
-        Steam VR Controller Interact: When this is touched by a controller and its trigger button is pressed
-        Steam VR Controller Interact: 控制器触碰后按下触发按钮。
-        Steam VR Head Enter: When this is touched by the player’s head (the main camera)
-        Steam VR Head Enter: 玩家头盔(Main Camera)触碰触发器时
-Target Type 定义传送点位置。
-        Scene: Teleport into a different Story Scene (Note: not a Unity Scene)
-        Scene:传送到不同的Story Scene(注意:不是Unity场景)
-        Teleport Point: Teleport into a Teleport Point
-        Teleport Point:传送到传送点
-Transition Time 传送需要的时间(单位为秒)。
-Transition Color 屏幕淡出的颜色。


创建过场动画
请注意:要使用Cinema  Director工具栏编辑时间轴,可以将不同草图按帧分类后,插入时间轴。创建时间轴步骤如下:

  • 导出Tilt Brush每一帧并复制到工程项目。
  • 右键单击包含所有帧的文件夹(以及子文件夹)。
  • 单击Create Cutscene。


 


 

  • 可以看到弹出的Director窗口,每一帧均被插入到时间轴。

 




提示:可以通过选中序列后单击Turn into Cutscene按钮,将动画序列转换为时间轴。

锐亚教育