/ Roadtovr / 0浏览

使用UltimateXR更快、更轻松地开发丰富的虚拟现实交互

用户和虚拟世界之间丰富的互动是使VR如此引人注目的关键因素之一,但是对开发人员来说,创建和调整这样的互动是一项具有挑战性且耗时的任务。像UltimateXR这样的工具集可以加快VR互动的迭代过程,为游戏和体验带来更多的交互性和沉浸感。

恩里克·特朗普的客座文章
恩里克是VRMADA的联合创始人和首席技术官,该公司为全球提供企业级VR解决方案。他对计算机图形和数字艺术有着极大的热情,他的职业生涯跨越了20年,涵盖了模拟、视频游戏和现场互动体验。近年来,他热衷于承接具有挑战性的VR项目,并开发了免费且开源的VR框架UltimateXR。您可以在Twitter上关注他的最新工作@entromp。
三年前,我有机会在《道路向VR》的客座文章中讨论了在VR应用程序中愉悦的互动的重要性。我展示了在VRMADA开发的一些示例,我们在企业培训和模拟中使用VR。其中一个关键想法是,良好的自然互动对于培训中所针对的程序的高效吸收至关重要。在VR游戏中,出色的互动改善了游戏性,并且可以使一些机制变得非常有趣和令人满足。
自2016年左右以来,我投入了我人生的大部分时间去构建一个框架和工具集,它已经成为公司的技术基础。主要目标是创建一个可扩展的系统,帮助我们的开发人员多年来创建VR应用程序。在这些年里,我们不得不开发具有极不同要求、互动和目标的应用程序,从严肃的培训到娱乐。这些差异在使框架自然地收敛到一个能够在非常不同的场景中工作的系统方面起到了关键作用。
我们最近决定将框架和工具公开提供-免费且开源供所有人使用。结果是Unity的UltimateXR。我们希望很快将其移植到其他平台(虚幻引擎,Web…)。

在本文中,我将讨论UltimateXR中一些关键特性,这些特性在成功改善我们的VR互动的同时降低了周转时间。
集成手势编辑器
在开发需要在不同姿势之间切换的物体操纵和其他机制时,编写手势姿势是一个重要的过程。
一开始,我们直接从我们选择的3D程序(3dsMax,Maya,Blender等)中导出手动动画,但很快意识到这成为了一个巨大的瓶颈。我们决定在Unity中开发一个完整的手势姿势编辑器,以便我们可以直接从世界编辑器中调整手势姿势。

除了标准的编辑选项之外,一些我认为在降低周转时间方面发挥关键作用的功能包括:

支持自定义小部件,以快速旋转手指骨骼,但也可以让开发人员使用内置的Unity变换控制。它们可以互换使用。
支持固定和混合姿势(稍后详述)。
支持可直接使用或作为新姿势的快速起始点的手势姿势预设。
支持在使用不同坐标系的应用程序中的骨骼之间交换姿势。

使用常见抓握姿势来创建混合姿势以进行操纵
在开发过程中,我们意识到许多对象是使用来自众所周知的一组常见姿势进行抓取的。唯一的区别是抓握的开合程度取决于物体的大小。
我们决定创建一种名为混合姿势的新姿势类型,它由起始姿势和结束姿势定义,可以采用任何中间姿势。为了支持不同的物体大小,起始姿势将是完全张开的姿势,能够抓取最大的物体,而结束姿势将是完全闭合的姿势,能够抓取最小的物体。任何中间大小的物体都可以使用相同的姿势,但通过由滑块控制的不同混合值来调整。

使用标准圆柱形抓握在两种不同的物体上物体

虽然通常使用固定姿势来进行手势和临时握持,但混合姿势对于开发可由许多不同物体重复使用的握持方式非常有用。
混合姿势还被证明对于握持方式可能会改变的物体也很有用,比如按下手持交互设备上的扳机或按钮。

可定制的手部
为每个软件创建不同的手部将是一项非常耗时的任务。在两个特定的娱乐应用程序中,我们使用了定制的模型,但在大多数培训应用程序中,我们一直使用相同的核心资源。这使我们能够重复使用手势和前一节讨论的常见混合姿势。
然而,我们仍希望能够使每个应用程序中的手部看起来不同。为此,我们创建了一个能够在皮肤和手套之间切换并能够自定义任何一种的模型。这样一来,我们可以在新项目中使用不同外观的手部,同时仍能重复使用姿势。

视觉方面通常由客户需求或游戏设计文档驱动。在某些培训应用程序中,您从裸手开始,并且第一步之一就是戴上手套等安全物品。这已经意味着您要么展示皮肤特征,要么决定使用幽灵着色器之类的方法隐藏它们。
VR 应用程序还可以让您自定义皮肤颜色和手部大小。支持多种手部大小可能非常重要,因为在某些场景中,比如逼真的协作 VR 应用程序或培训应用程序中扮演自己的角色时,不同的手部大小可能会破坏沉浸感。

不同的皮肤着色器变体:上方为大手,下方为小手

为了避免仅支持一个固定大小(在许多应用程序中往往是大号男性手),我们选择支持两种手部大小:大手和小手。成年人的手大多可以分为这两种大小。
未来,我们可能会增加根据程序生成改变手部大小的可能性,但目前我认为这是包容性、灵活性和所需努力之间的最佳权衡。
继续阅读第2页:GrabbableObject 编辑器的灵活性 »

GrabbableObject 编辑器的灵活性
在不涉及编程的情况下,创建抓取姿势和编辑可抓取物体几乎占用了互动制作的大部分时间。可抓取物体通过 GrabbableObject 组件进行配置,指定物体的行为以及一个或多个可以从中抓取物体的点。

驾驶舱中的复杂互动

拥有一个良好的 GrabbableObject 编辑器非常有助于最大限度地减少使物体可抓取的时间。但在开发了许多不同的 VR 应用程序后,发现这是最具挑战性的。我们常常遇到以下情况:

一个应用程序需要一个新的操作参数,因为当前的参数列表不支持该行为。
该组件现在更加灵活,增加了一个用于编辑的新参数。
当暴露的参数越多,界面变得越混乱,使用起来也越困难。
在某一点上,它变得过于困难、不直观,无法实现降低交货时间的最初目标。

这是可以预料的。毕竟,操作是一个非常复杂的过程,使用一个对象不再是在控制面板上按 X 键来“使用”,现在一切都涉及到身临其境地使用自己的手来操作物体。可能性是无限的。
我发现在这些情况下,大多数新功能可以分为两个主要类别:

对象的抓取方式。例如,能够使用各种位置和角度在两个方向上抓住一个杆子。
对象的行为方式。例如,控制面板上的旋钮可以旋转到四个不同的位置。

我对这个问题的解决方案是创建一个良好的 GrabbableObject 基类以及相应的架构。使用两种类型的专业化组件扩展功能。

GrabPointShape:将对象上的单个抓取点扩展为更灵活的常见形状,以便更方便地进行抓取。例如,可以为撬棍添加一个圆柱形状,从而使单个默认抓取点能够沿着整个长度和任意角度使用。另一个例子可以是一个方形,以使书可以通过任一4个侧面的任意点进行抓取,而不是一个单一的点。

SpatialControl:通过接管GrabbableObject的某些参数并添加新的行为,增加了专业化功能。例如,旋钮组件将隐藏所有允许编辑旋转约束的GrabbableObject参数,并对其进行控制,并添加将旋钮旋转到不同位置的行为。

这种新的架构已被证明非常有价值,因为功能现在被很好地分隔开。它还有一个额外的好处,即简化了用户界面,因为这些专业化组件会隐藏比它们自己组件中展示的更多GrabbableObject参数。而且这些参数更容易理解,因为它们与专业化功能直接相关,而不是泛化的。

这些都是一些重要的经验,帮助我们缩短了开发时间,并建立了一个可以在未来扩展的坚实基础。感谢您一直与我同行。我希望这些思考可以帮助明确VR应用程序的内部工作原理。也许它们还可以激发其他从事类似技术的VR开发人员的灵感,甚至让他们考虑在项目中使用UltimateXR。

0

  1. This post has no comment yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注