《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》草图。

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

092642smhvbm8vppkkgvng.jpg
自定义触发器,放置于草图周围来触发场景切换事件
提示
音频反应
可以在场景里根据音频来摆动画刷:
将[TiltBrush Audio Reactivity]预制件拖入场景。 如果场景中没有Audio Source,则添加一个。

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

092736ldi8j67ddid3ff8n.jpg

通过添加Unity内置的着色器Bloom来实现《Tilt Brush》的视觉效果:
导入Standard Assets的Effect插件包(Assets menu / Import Package / Effects)。 重要注意:勾选Camera的HDR。 添加Bloom后处理效果,参考推荐设置如下:


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

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

创建动画
使用内含的包含Sequence脚本来将《使用Tilt Brush》草图用当作动画帧。
创建动画步骤如下方法:
创建空对象(GameObject) 添加Sequence组件 (Add Component > Tilt Brush > Sequence)

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

093149t2pgpg12tyt115vp.jpg
要快速将草图转换为动画,可以从文件夹创建序列:
右键单击包含所有草图的文件夹 点击Create Looping Sequence:

093231ez4hxpmmcz5nxvxq.jpg
这会将文件夹的所有草图转换为一个序列

音频响应动画
还可以创建一个根据音乐节拍播放的序列,步骤如下:
将Playback Mode设置为Every Beat 将[TiltBrush Audio Reactivity]预制件添加到场景 添加Audio Source组件及您喜欢的音乐


参考
093401lno5oxlc1g1fx18i.jpg
播放模式:
Every Beat,播放歌曲的每一拍都会改变动画帧 Constant, 动画帧在经过固定秒数后改变 Frames Per Second, 动画帧播放速度(每秒帧数)

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

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

093553lqdn5nxygk8zins8.png 添加空白帧

093608hhnnnnphpg4pwgqq.png 重复此帧的次数

093608vgll2ggzgr1d1t3r.png 删除帧

093609m8v888bdlzxo38u3.png 将帧向上或向下移动(不支持鼠标拖拽)

创建交互性VR故事或探索草图
请注意,使用VR脚本步骤如下:
下载SteamVR package并导入项目,使用SteamVR默认推荐设置。 将[CameraRig]预制件添加到场景。

可以通过视角预定好的传送点来探索草图,或者通过Teleport脚本在不同草图间移动。这可用于:
探索大型草图。 创建线性或分支交互性故事。 在不同草图之间导航。

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

100050sdcc7cgcnnrinr82.png

层级视图结构如下:
场景1:草图;传送到场景2的传送触发灯光;物体等等... 场景2:草图;传送到...的传送触发。

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

视点之间传送
想让玩家移动到某个点,步骤如下:
创建空游戏对象。 添加Story Teleport Point组件。

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

100147sjylwyjca77q0sk7.png
与另外两点相连的传送点(作者 Scott Campbell)
点或者场景之间导航
要在点到点之间移动,需要在它们之间设置传送点。Tilt Brush Unity SDK包含几个示例脚本:

使用玩家周围的箭头:

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

使用激光指针:

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

100231zdhhpjfhsfszptph.png

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

手动放置传送触发器

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

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


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

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

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

100508gz11l5338zt1j3ly.png
- 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表示所有从此处传送的点。


100729vl2hh6lblfllteur.png
选中传送点后的可视化小标记

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

100910e9kuju85adv1ju1z.png
-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 屏幕淡出的颜色。


创建过场动画
请注意:要使用CinemaDirector工具栏编辑时间轴,可以将不同草图按帧分类后,插入时间轴。创建时间轴步骤如下:
导出Tilt Brush每一帧并复制到工程项目。 右键单击包含所有帧的文件夹(以及子文件夹)。 单击Create Cutscene。


101031yiqwfwiggww277ox.png

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


101105ok9s5yy6nzf3b6c5.png

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

实验功能:分离画笔注意:这是实验性功能。使用前请先保存项目。

此脚本可以将草图上使用同一颜色的画刷分离成不同的对象来独立操作。该功能适用于在同一个《Tilt Brush》草图上绘制几个对象,然后再在Unity中进行分组的情况。

分离草图的步骤如下:
将模型拖至层级视图。 选择想分离的草图。 依次点击菜单项Tilt Brush / Labs / Separate strokes by brush color。

101105ffaoehdphajayb6q.png 不同颜色的画刷将被分为成不同组的独立对象。

101106mg0iv7coqk7s0vcc.png

已知问题:
如果菜单项为灰色,确保选中了层级视图中的草图。 场景中只存在分离后的对象网格,不能将它保存成预制件或复制到另一个场景。

总结
本文主要为大家讲述了Tilt Brush Unity SDK在Unity中的使用方法,从下载和导入到实际案例与问题,希望能对您的开发有所帮助。更多详情请访问Unity官方中文社区(forum.china.unity3d.com)。


锐亚教育

锐亚教育 锐亚科技 unity unity教程