研发实战:如何利用谷歌Blocks快速建模,改进VR项目工作流程
文章相关引用及参考:映维网
本文来自英特尔社区的软件开发者Devin B。
(映维网 2018年03月21日)本文探讨了如何通过谷歌Blocks在VR中快速建模,改进VR项目的工作流程。在深入研究如何使用这款软件之前,我们先来看一下典型的工作流程。
1. 工作流程
1.1 传统VR开发的工作流程
典型的VR项目是代码与asset的迭代组合。在预制作的过程中,通常有一段时间是用于构思交互性和asset的概念(通过草图)。但在开始制作之后,你经常会遭遇许多次暂停和开始,因为代码开发必须等待asset的完成,反之亦然。
在开发VR的时候,这种情况会变得更糟糕,因为VR的独特视角会造成2D显示器上的3D项目存在缩放,放置和细节的问题。因此,你必须来回多次处理asset开发的问题。另外,原型制作阶段经常会出现低质量的视觉呈现,而这会妨碍吸引融资或兴趣。
1.2 利用VR进行原型制作的优点
在VR中创建原型的模型asset可以帮助代码和asset开发者实现更流畅的流程。与单独提供的草图相比,这种方法可以支持代码开发者更快地设计和调整所需的粗略版本,以及为其提供可操作的对象;同时还能够为asset开发者提供参考资料。建模通常需要使用许多不同工具和相机视角的专业技能,因为这样才能更好地通过2D界面来处理3D对象,并且提高精度和细节,但这需要付出大量的工作量。
另一方面,在VR中进行建模可以为你提供一个自然的3D环境,你能够在房间尺度下移动和塑形。就这样,3D建模更像是使用粘土进行工作,而不是说调整建模应用程序中的顶点。这种方法不仅在创建低细节原型asset时快很多,而且没有任何建模经验的用户也能轻松做到。
1.3 谷歌Blocks低多边形模型的优点
谷歌Blocks为VR提供了一个简单的“通过创建和修改原语来创作”的方法,并支持快速的体三维“素描”。这种修改形状和简单彩色表面的组合也为其提供了简洁和低多边形的美学特点。这意味着更好的性能,从而对尚未优化性能的原型阶段非常有用。简洁的模型甚至可以用来制作相当美观的演示文稿。
1.4 为VR开发优化工作流程
新的制作工作流程从“开始和暂停的‘瀑布式’开发”转移到“代码团队可以在原型制作阶段获取任何所需的原型,无需等待asset团队”。这种方法允许asset团队利用原型模型和预制作的草图来开发最终的asset,并且可以轻松地将其应用于代码团队的工作原型。
你或许会认为,只需在Unity这样的开发工具中使用原语即可完成所需的所有原型“堆叠”,但缺乏实际的粗略模型会令你难以开发合适的交互和测试。当尝试通过立方体,球体和圆柱体进行原型构建时,你将发现进度经常会受到阻碍。借助这个新的工作流程,你可以快速获取更接近最终asset的形状,并为开发最终asset提供额外的方向。
2. 工具综述
下面我们先看看用于开发的工具。除了HTC Vive之外,其他所有工具都为免费。如前所述,我们通过谷歌Blocks来在VR中构建模型;接下来使用谷歌Poly云服务导出和共享模型;然后,我们将在Unity中进行实际的开发;最后则是利用Blender完成asset的开发(你同样可以将Blender换成Maya或其他3D建模应用,并将Unity换为Unreal)。
2.1 利用谷歌Blocks
由于我们主要是使用HTC Vive,所以先从Steam中下载和安装谷歌Blocks(点击前往)。
在你第一次启动Blocks的时候,你可以参考一个制作冰淇淋锥形杯的教程。
这个教程将介绍Blocks的基本操作:
- 移动对象
- 创建和缩放形状
- 绘制对象
- 选择和复制
- 擦除
Blocks简单界面同时为你提供了大量的工具和选项,以下是关于它们的概述:
你同时需要通过鼠标启动选项,这样才能导入可放置在场景中的参考图像(或图像)。要导入图像,请单击屏幕上方中央位置的“Add reference image(添加参考图像)”按钮。
2.2 谷歌Poly
在开始使用Blocks进行建模之前,我们先来看看谷歌的在线模型仓库Poly。
Poly包含了Tilt Brush和Blocks的已发布作品,但你可以在侧栏选择Blocks进行专门的浏览。花一点时间进行浏览,搜索你可以使用形状和颜色。在浏览的时候,一定要给作品点赞(Like),这样你才能在Blocks中快速找到它们。
另外,请务必注意什么模型允许共享或编辑。如果标记为“remixable”,你只能修改和发布对模型的更改。目前,任何标记为“remixable”的模型都需要你对作者进行评分,因此如果你要使用这类模型,请记得对作者评分。
下面让我们来看看用作内容构建基础的特定Blocks模型:
https://poly.google.com/view/bvLXsDt9mww
在点赞之后,如果你希望在Blocks中轻松加载它,请单击左边控制器上的菜单按钮,然后单击“心形”选项查看你喜欢的模型。 然后选择房屋并按下“Insert(插入)”。
在一开始,房屋将缩放成透视画形式。要放大房屋,请通过抓取工具(手)抓住它,然后按住右侧触控板的“Up”进行放大。一旦尺寸达到要求,你就可以使用控制器的抓取间移动和旋转对象。
由于模型的复杂度,渲染性能将受限于你的PC,但这会向你说明这样一个复杂场景是如何组成,并支持你根据需要对其进行修改。在开始使用Unity后,我们将使用我曾修改过的预制版本来降低复杂性并添加碰撞盒,从而节省时间。下面我们先设置Unity。
3. Unity项目设置
3.1 导入插件
首先,我们创建一个新项目(保存在你喜欢的任何地方)。接下来,我们需要导入SteamVR插件以支持Vive(点击前往)。
你可能需要调整项目设置才能满足要求。单击“Accept All(全部接受)”。除非你修改了项目设置,否则以后这一选项将再次跳出询问。届时只需关闭对话即可。
接下来,我们获取一个名为VRTK的优秀工具包,它可以令移动和对象交互变得更加轻松(点击前往)。
我们不会介绍如何在本教程中使用VRTK插件,但我们将使用示例场景来处理一定的问题,如触摸板走动。VRTK插件非常适合制作快速交互。更多关于应用VRTK的信息,请观看以下视频:
我们将把“017_CameraRig_TouchpadWalking”这个示例场景作为开始场景,所以加载这个场景,并删除以下条目之外的其他一切:
- Directional Light
- Floor
- [VRTK_SDKManager]
- [VRTK_Scripts]
接下来,放大Floor的X/Z,从而提供更多可以行走和安放对象的空间。
3.2 导入预制件
将房屋模型的预制件导入至你的场景中(点击前往)。
请确保房屋与地面齐平:
然后你应该可以运行这个项目,戴上头显,并使用触摸板在场景中移动。你可以选择将其导入至不同的示例场景中,使用不同的移动方式(所有示例场景均有标签)。例如,如果你认为触摸板不舒服,你可以选择传送方式。
如果你想跳过上述设置步骤并直接导入房屋,你可以下载完整设置的Unity项目副本(点击前往)。
在碰撞盒之外,你在场景中移动的时候无法进行任何交互。要查看来自Polu的原始FBX,请在“Test Objects”文件夹中打开“model 1”。现在你可以开始为这个优秀的VR场景添加内容。
4. 构建对象
在设置好场景后,我们必须决定要为原型添加什么内容。根据我们要添加的内容,你可以选择两种方法:从零开始构建;重新混合Poly的模型。出于演示目的,下面我们将讲解两种方法。
假如我们希望将房屋变成一种烹饪训练模拟器,而且我们需要更为复杂的交互式道具。下面,我们将从两个组件的简单混合开始,然后创建一个包含盖子的煎锅。
4.1 组合对象
下面我们将两个模型混合成一个,请确保你已经对它们点赞。
- 平底锅
https://poly.google.com/view/bYF5rVRy_kp
- 带盖子的煎锅
ttps://poly.google.com/view/2iOIFA7Sgtg
好了,现在我们将两者结合起来:
你可能想知道为什么我们不能直接在Unity中混合这两个模型。这是由于Poly提供的两个下载选项的重要性:OBJ和FBX。当你下载一个OBJ文件时,整个模型是单一的网格,但对于一个FBX文件,模型包含一系列的单独形状。
这将能极大地改变你在Unity中使用模型的方式。在使用网格碰撞器和设置对象能够通过VRTK进行交互时,将整个网格作为单个对象可能非常有用。我们重新混合的两个模型只是OBJ文件,因此我们无法在Unity中修改各个部分。但现在我们的新模型可以保存为两种文件(有时候需要等待一定的时间才能在下载选项中看到OBJ选项)。
现在让我们下载FBX,并通过拖放将其导入至Unity,然后我们将该对象放入场景之中。
4.2 测试场景
在放置好对象后,点击“Play(播放)”以进入场景并检查比例。如果比例看起来不合适,请选择整个模型组进行调整。在使用VRTK进行交互式原型设计时,你现在就拥有了一个简单的对象,而这比使用未经修改的原语更加有效。与此同时,这为完善模型或添加纹理等额外细节提供了一个优秀的起点。
更加酷炫的地方在于,你也可以首先将房屋对象插入到Blocks中,然后建模平底锅(或其他附件)的同时将完整房屋作为参考,然后在保存和发布之前删除单个房屋对象,你甚至无需使用Unity。
4.3 创建模型
下面我们来看看如何从零开始快速地创建一个简答的模型:奶酪刨。这个模型比一个简答的原语复杂稍微一点点。我们同时会制作一块奶酪,并且添加在切块时掉落的脆碎边缘。你会注意到,我使用了右边控制器的菜单按钮来分组对象和取消分组,我同时还“modify”工具用于边和面。请参见视频:
由于你可以将模型作为FBX导入到Unity,所以你可以轻松地分开奶酪与刨丝器来是进行不同的交互,但同时可以在单一导入中实现这一切。
如果你倾向于使用Unreal,请首先阅读关于这款引擎的FBX工作流程(点击前往)。
5. 建模工具
5.1 导入至Blender
在得到了FBX或OBJ文件后,你可以将它们导入到一个免费的程序中,比如说Blender。
这样你就可以编辑模型,制作动画,或者执行其他操作。
5.2 为Poly导出文件
如果你希望能够再次使用Poly共享模型,你可以将其作为OBJ(使用MTL材质文件)导出。
接下来,点击Poly网站的“upload OBJ”选项。
最后,将.obj和.mtl文件拖放至页面,然后点击“Publish”以发布模型。
然而,这样做的缺点是该模型是单个网格OBJ,你也无法在Blocks中使用它来重新混合或进行查看,因此这主要是作为快速共享完整模型的一种方法。但是,这是向建模者说明工作进度的优秀方法(以及允许你下载OBJ文件,然后在Unity中进行测试)。请记住,即使你对它们点赞,以这种方式上传的文件也不会显示在Blocks中。因此,请注意你点赞的对象是否有标注为“Uploaded OBJ File”,因为这种类型的文件无法在Blocks中使用。
6. 写在最后
在未来,谷歌Blocks有可能集成动画工具,所以相信这会令你以后的工作流程更加炫酷。