本文介绍了如何使用 Google Blocks* 在虚拟现实中快速建模,以改进您的虚拟现实(VR)项目的工作流。深入研究软件的使用方法之前,我们来看一下典型的工作流。
工作流
虚拟现实开发的典型工作流
典型的虚拟现实项目是代码和素材的反复结合。概念交互和素材通常有一个预生产时期(通过草图)。但是,一旦生产开始后,您通常会多次启动与停止任务,因为代码开发方必须等待素材完成,反之亦然。
开发虚拟现实项目面临更严峻的情况,因为虚拟现实独特的视角引发了规模、布局和细节问题,这些问题存在于使用 2D 显示器展示的 3D 项目中。因此,您必须反复进行素材开发,才能得到正确的想法。在原型设计阶段,您还会常常看到低质量的演示,这将不利于您吸引资金和关注。
使用虚拟现实进行原型设计的优势
在虚拟现实中创建原型模型素材可为代码与素材开发人员创造更流畅的流程。相比仅使用草图,该方法支持代码开发人员更快速地设计与调整他们理想模型的粗略版本,获得可玩的对象并为素材开发人员提供参考材料。建模一般需要掌握使用各种工具和摄像头视角的特殊技术,才能利用 2D 界面创建 3D 对象,实现高精度和栩栩如生的细节,但是以繁重的工作负载为代价。
另一方面,在虚拟现实中建模使您在自然的 3D 环境中工作,实际上您是在房间大小的真实环境中移动和设计。通过采用该方法,3D 建模更像捏黏土,而不是调整建模应用中的顶点。创建包含少量细节的原型素材时,该方法不仅速度更快,而且更方便缺乏建模技术的用户快速入门。
Google Blocks 低面多边形模型的优势
Google Blocks 提供了一种“通过创建与修改基元进行构建”的简单的虚拟现实设计方法,还支持快速的立体“绘图”。通过将修改后的形状和颜色纯净的表面结合在一起,营造了一种简洁而低面数的唯美风格。这极大提升了性能,在原型设计阶段非常实用,因为该阶段的性能未经优化。简洁的外观甚至不需要修改,便可用作非常美观的演示。
面向虚拟现实开发的工作流修改
全新的生产工作流转变了不断启动与停止的“瀑布式”开发,支持代码团队在原型设计阶段根据他们的需要提供原型,无需等待素材团队。通过该方法,素材团队可以使用原型模型和预生产草图开发完善的素材,并将这些素材轻松替换为代码团队已经实施的工作原型。
使用 Unity* 软件等开发工具中的基元完成所有必要的原型“构建”,想法很简单,但是缺乏真实的粗略模型将会增加开发正确交互和测试的困难。当您试图使用立方体、球体、圆柱体构建对象时,通常会发现进展缓慢。借助新的工作流,您可以快速获取更接近成品素材的形状,并且利用交互开发中学到的知识进一步指导最终素材的开发。
工具概述
我们来列举开发中使用的工具。除 HTC vive* 之外,所有工具均是免费的。如上所述,我们将使用 Google Blocks 应用和 HTC vive 构建虚拟现实模型。接下来,我们将 Google Poly* 云服务使用导出与共享模型。然后,我们将使用 Unity 软件中的模型进行实际开发。最后,我们将借助 Blender* 中的模型进行最终的素材开发。除 Blender 之外,您也可以使用 Maya* 或任何您喜爱的 3D 建模应用,或者将 Unity 替换为 Unreal Engine*(也是免费的)。
使用 Google Blocks
由于我们使用 HTC vive 作为虚拟现实头盔显示器(HMD),首先下载 Steam*,然后访问以下链接安装 Blocks:
http://store.steampowered.com/app/533970/Blocks_by_Google/
首次启动 Blocks 时,您将获得一个指导您使用所有选件制作冰淇淋甜筒的教程:
https://www.youtube.com/watch?v=kTCcM5sRz74&feature=youtu.be
本教程很好地介绍了 Blocks 基本功能的使用方法。
- 移动您的对象
- 创建与缩放形状
- 绘制对象
- 选择与复制
- 擦除
本教程为您提供了简单的接口,便于您随意使用更多工具与选件。以下是所有工具与选件的概述:
https://youtu.be/41IljbEcGzQ
工具列表
- 形状:圆锥体、球体、立方体、圆柱体、环面
- 笔画:三面或更多的形状
- 画笔:调色板背面的颜色选项、绘画对象或面
- 手柄:选择、抓取、缩放、复制、翻转、分组/取消分组
- 修改:修改形状、细分、拉伸
- 擦除器:对象、面
调色板控制
- 教程、网格、保存/发布、新场景、颜色
其他控制
- 单个 Grip 按钮用于移动场景,两个按钮 用于缩放/旋转
- 左触控板的左/右用于撤销/重做
- 左触发器用于创建对称
- 右触发器用于放置物体
文件(左控制器菜单按钮)
- 您的模型、精选、已赞、环境
您还需要使用鼠标启动一个选项,以导入放置在场景中的参考图像(或图像)。这是一种从预生产草图过渡至原型设计的理想方式,无需依赖内存。单击台式机屏幕顶部中心的 Add reference image按钮,以导入图像。
Google Poly
在我们进一步讨论如何在 Blocks 中建模之前,我们先了解一下 Poly,它是谷歌推出的一款在线“仓库”,包含大量已发布的模型:https://youtu.be/qnY4foiOEgc
Poly 汇集了来自 Tilt Brush 和 Blocks 的已发布作品,但是您可以选择侧边栏的 Blocks,以专门浏览任意一个来源。抽时间进行浏览与搜索,看看您能使用各种形状和颜色制造哪些物体,无需任何纹理。浏览时,请记得单击 Like,以便您在 Blocks 中轻松找到它们。
请务必注意哪些模型要求获得共享或编辑许可。您只能对标记为可合成的模型进行修改或发布修改。目前,任何标记为可合成的模型均要求您注明原作者,因此,如果您将可合成的模型用作实际项目中某对象的基础,请务必注明原作者。
现在,我们看一下可作为构建内容的基础使用的特定 Blocks 模型:https://poly.google.com/view/bvLXsDt9mww
点赞后,为了从 Blocks 中轻松加载模型,单击左控制器上的 menu按钮,然后单击 heart选项,便可查看您点赞过的模型。然后选择房屋,并按下 Insert。
房屋随即就会像透视模型一样被放大。如欲继续放大,请用抓取工具(手柄)抓取房屋,然后按住右触控板上的 Up(+)不放,以进行放大。一旦大小符合了您的要求,您可以使用控制器手柄移动与旋转房屋。
由于模型的复杂性,渲染性能可能受计算机的影响,但是这向您展示了复杂的场景是如何构建的,并且支持您根据自身的需求进行修改。一旦我们开始使用 Unity 软件,将使用我修改过的预制件版本,以降低复杂性,添加碰撞盒与节省时间。现在,我们来设置实施了虚拟现实的 Unity 软件,这样我们便有了放置创建对象的空间。
Unity* 软件项目设置
导入插件
首先创建一个新项目(将它保存在您喜欢的位置)。接下来需要导入 SteamVR* 插件,以支持 vive:https://assetstore.unity.com/search?q=steamvr
您可能需要根据它的建议调整您的项目设置。首次操作需单击 Accept all。在此之后,它可能会再次询问您,除非您已修改了项目设置。稍后直接关闭该对话。
接下来,我们将获取 VRTK,它是一款能够轻松进行移动与对象交互的卓越工具套件:https://assetstore.unity.com/search/?q=vrtk
本教程不会提供关于如何使用 VRTK 插件的详细信息,但是我们将使用一个示例场景来进行某些操作,如通过触控板来控制移动。VRTK 插件非常适合将快速交互应用于您在 Blocks 中创建的对象。有关 VRTK 使用方法的更多信息,请观看本视频:
我们会将示例场景“017_CameraRig_TouchpadWalking”用作快速启动场景,因此,您需要加载该场景并删除除以下部分之外的所有内容:
- 平行光
- 地面
- [VRTK_SDKManager]
- [VRTK_Scripts]
接下来,扩大地面的 X/Z,您将拥有更大的空间来移动和放置物品。
导入预制件
抓取我们之前展示的房屋模型预制件,并将其导入您的场景:https://www.dropbox.com/s/87l8k23pc3h4a40/house.unitypackage?dl=0
请确保房屋移动后与地面齐平:
然后,您应该能够运行项目,戴上您的 HMD 并使用触控笔在场景内移动。如果通过触控板控制移动引起了您的不适,您也可以将该项目导入使用不同运动形式的其他示例场景(所有示例场景均被标记),如远距传动。
如果您想跳过这些设置步骤,直接导入房屋,可以从此处下载经过完备设置的 Unity 软件项目:https://www.dropbox.com/s/cehr2wxhi6nmh6c/blocks.zip?dl=0
目前,在碰撞之外,您经过场景时不能与任何物体交互。如欲查看来自 Poly 的原始 FBX,打开 Test Objects文件夹中的 model 1。现在,您拥有了一小片虚拟现实场景,可以开始添加对象了。
构建对象
现在场景已设置完成,我们需要决定为它添加何种原型。根据我们想要添加的对象,分为两种方法:从零创建或从 Poly 合成。出于演示目的,我们将使用两种方法。
假设我们想把房屋转变为烹饪和培训模拟器,需要更多的互动道具,它的形状要比基元提供的形状略微复杂。首先,我们将两个组件进行简单的合成,以创建一个带盖子的煎锅。
合成对象
我们将以下两个可合成模型合成为一个,请记得对它们点赞:
我们开始合成:https://youtu.be/SbjSs_rcFbk
您可能会问,为什么不把两个对象放入 Unity 软件,直接在软件上合成对象?这突出了从 Poly 获取的两个下载选项- OBJ 和 FBX -的重要性。如果您下载了 OBJ,整个模型是一个网格;如果您下载了 FBX,模型是所有单个形状块组成的集合。
这改变了 Unity 软件中的模型使用方式。在打开网格碰撞器以及设置对象以通过 VRTK 交互时,将整个网格用作单个对象非常有用。我们合成的两个模型仅用作 OBJ 文件,因此,我们不能在 Unity 软件中修改单个部件。但是,我们的新模型可用作两种文件(有时 OBJ 在下载时显示需要一些时间)。
现在,我们来下载 FBX,使用拖放功能将其导入 Unity 软件(和其他文件的导入方式一样),然后将对象拖入场景。
测试场景
将对象放置于场景后,单击 play直接进入场景以检查比例。如果比例不正确,选择整个模型组进行调整。现在,您拥有了一个简单的对象,可用于借助 VRTK 的交互原型设计,相比使用若干个未经修改的基元,使用该对象更加有效。您也获得了一个完善模型或添加纹理等额外细节的绝佳起点。
更妙的是,您可以首先将房屋对象插入 Blocks 中,对锅(或其他任何配件)进行建模。同时参考整座房屋,然后在保存与发布前删除单个房屋对象,甚至无需进入 Unity 软件。
创建模型
现在,我们看一下如何从零创建一个快速、简单的模型,如奶酪刨丝器。该模型不是一个简单的基元,但是也不是过于复杂。我们将构建一块奶酪,当您切开它时,会露出酥脆的边缘。您会发现我使用了右侧的 menu按钮对对象进行分组和取消分组,以简化操作。我还在两个边和面中使用了 modify工具。观看视频:
由于该模型可以作为 FBX 导入 Unity 软件,您可以以单个导入的形式轻松实现奶酪和刨丝器的分离,以进行各种交互。
如果相比 Unity 软件,您更倾向于使用 Unreal Engine,首先参阅该引擎的 FBX 工作流:https://docs.unrealengine.com/latest/INT/Engine/Content/FBX/index.html
使用建模程序
导入 blender
如果您拥有了 FBX 或 OBJ 文件,您或建模师想在完整的建模软件包中处理,您可以将它们导入免费的程序,如 Blender。
您可以在此处编辑模型、制作动画或执行其他操作。
面向 Poly 导出
如果您希望能够再次使用 Poly 共享模型,可以将其导出为 OBJ(包括 MTL 材料文件)。
接下来,单击 Poly 网站上的 upload OBJ按钮。
最后,将 .obj 和 .mtl 文件拖放到页面,然后单击 Publish发布模型。
但是缺点在于模型为单一网格 OBJ,您无法在 Blocks 中使用它进行合成或查看,它主要用于快速共享完整模型。但是建模师可以借助它出色地向您展示正在进行中的任务(还支持您下载 OBJ,以便在 Unity 软件中执行测试)。请记住,通过此方式上传的文件不会在 Blocks 中显示,即使您点赞了它们。因此,注意您点赞的对象是否标有“上传的 OBJ 文件”,如果有的话将无法在 Blocks 中使用。
回顾
我们回顾一下本文的主要内容。
- 拥有预生产参考图像后,将它们导入 Blocks。
- 在 Blocks 中快速“绘制”可用模型。
- 在合适的时候,将可合成模型作为起点。
- 你可以导入其他模型,以供参考或缩放。
- 向 Poly 发布您的模型(您可以选择不公开模型)。
- 根据您的需要,下载 OBJ 或 FBX。
- 将模型导入 Unity 软件进行原型设计。
- 与建模师分享 Poly 页面,以便他们修改 OBJ 和 FBX 或将其用作参考,为建模师提供 Unity 软件场景的预生产草图,甚至屏幕截图(或可玩版本),然后开始在 Blender 等工具中开发最终素材。
- 建模师也可以使用 Poly 为您提供可下载和插入场景中的快速预览。
- 改善与重复,以快速构建您的商业或游戏项目!
未来,Google Blocks 可能会集成动画(请参阅本文:https://vrscout.com/news/animating-vr-characters-google-blocks/),以使您的工作流更加出众,让我们拭目以待!