上次,我们看着交互式虚拟现实雕塑可以用Leap Motion图形渲染器创建,作为交互188bet让球设计实验的一部分。利用雕塑的形状渲染,现在我们可以手工编写和编码这个3D形状池的布局和控制以及单个对象的反应行为。

跳跃运动188bet让球交互引擎为以手为中心的VR交互设计提供了基础。点击鸣叫通过将交互引擎添加到场景,将交互行为组件添加到每个对象,我们有把握的基础,触摸和其他互动。但是对于我们的VR雕塑,我们还可以使用交互引擎的健壮和性能的手接近意识。有了这个基础,我们可以快速实验不同的反应手存在,捏,以及触摸特定对象。我们潜水吧!!

从交互引擎开始

开始,我们为雕塑创作了两个主要脚本:

  • 雕塑布局:场景中这个脚本的一个实例充当雕塑管理员,控制雕塑并向用户公开参数,以便在运行时创建变化。它根据需要处理启用和禁用对象,以及通过事件向组发送参数更改。
  • 雕塑互动:在每个对象上,这个脚本从SculptureLayout脚本接收消息,并与它的LeapMeshGraphic及其交互引擎交互行为组件通信。使用交互引擎提供的回调为我们的反应性提供了一条路径。

在Unity场景层次结构中,每个雕塑对象都需要有一组组件。除了LeapMeshGraphic,InteractionBeh.r组件使对象可以与手交互。反过来,它需要统一物理刚体和碰撞器组件的存在。最后,每个对象接收我们的SculptureInteraction行为脚本。这个组件集合允许我们为每个对象设计一个相当复杂的动态行为。

左栏:场景层次结构。中栏:雕塑对象设置。右列:雕塑父设置

雕塑的父转换包含图形渲染器组件和雕塑布局脚本。雕塑的对象池是这种转变的产物,因为图形渲染器对象必须在图形渲染器组件下父化。对于跳跃188bet让球运动操纵的手模型,手跟踪,以及交互引擎设置,开始使用其中之一非常简单交互引擎模块文件夹中的场景示例.

“LeapMotion交互引擎”中的小部件示例可以很容易地连接到“Unity”事件中。点击鸣叫交互引擎设置包括InteractionManager组件和InteractionHand资产。InteractionHands是在运行时由碰撞器构造的不可见手,刚体,关节,以及Leap ContactBone脚本。InteractionManager提供我们场景中具有InteractionBeh.rs的互动对象的感知。

几个示例场景包括简单的滑块和按钮小部件示例。当参数在代码中公开时,可以使用这些参数快速地进行试验。小部件具有用标准Unity事件检查器UI公开的事件。这意味着您可以将滑块连接到脚本中的方法和参数,而无需进一步编码!然后,当UI工作时,它们还提供了如何设置小部件层次结构和组件的现成示例。

VR雕塑布局与控制

学习如何做一个简单的,高交互性#VR雕塑演示与几乎没有任何代码。点击鸣叫执行其主要目的之一,SculptureLayout脚本的RetLayout()方法接受许多用户修改的参数——特别是纬度和经度计数——并从对象池构建雕塑。根据需要(再次通过添加或从呈现组中删除)启用和禁用对象,这取决于这些计数。其简单的布局算法遍历对象池,并基于一组函数为它们分配位置。

初始函数是球形布局函数。对这个函数的修补很容易导致形成钟的变体,扭曲的床单,镜像漏斗,以及其他。

SculptureLayout脚本的另一个目的是向用户公开控件,以便用户可以在运行时定制雕塑。这些只是作为公共参数构造的,这些公共参数用它们的setter方法触发Unity事件。这样就很容易创建UI,只需要更改雕塑的更新参数。对象上的SculptureInteraction脚本在启用和禁用这些事件时订阅和取消订阅。它们反过来仅在发生这些参数更改时才处理这些参数更改。

雕塑布局脚本包括用于更新雕塑的一组特征的参数和事件:

  • 经纬度合计,定义球体的水平行和垂直行以及其他布局的行和列中有多少对象
  • 单个对象的比例
  • 布局功能
  • 形状网格
  • 扭曲,基于雕塑中物体的高度应用比例调整器
  • 悬停比例尺它定义了当手接近时对象将伸缩的大小
  • 悬停目标重量,它定义了当物体靠近一只手时,物体会朝它旋转多远
  • 对象基色
  • 物体发光颜色

这组功能提供了足够的组合,以享受与雕塑长期玩乐而不用尽其可能。然后,SculptureLayout脚本具有用于保存和加载此参数列表的特定设置的方法。可以创建这些预置集合来立即转换雕塑并显示有趣的配置。

雕塑交互:使用交互引擎回调

创建SculptureInteraction行为类首先使用Interaction Engine和其他方法从Leap Motion Unity模块绑定到Leap Motion跟踪数据的回调。orm——允许它使用关于手的信息来控制它的视觉特征。188bet让球

当InteractionHand位于特定InteractionBeh.r的全局设置阈值内时,将触发交互引擎的OnHover()回调。通过订阅此回调,SculptureInteraction类可以运行它的行为方法,主要由简单的向量数学组成,当一只手靠近的时候。首先,它计算从手掌到物体的距离。然后它可以使用这个距离来加权它的其他数学函数:

  • 瞄准悬停物体的旋转
  • 规模手接近时对象的转换
  • 混合使用LeapMeshGraphic_BlendShape值的权重来动画形状的变形目标
  • 辉光更改LeapMeshGraphic的._GlowColor值的权重

在SulptureInteraction的onHover()处理程序方法中,我们可以使用Leap Moti188bet让球on C#API的公共属性PinchStrength来检测手是否也在夹。然后,再多一点的数学运算,物体就会朝紧要位置移动。这创造了一个““塔菲拉”行为,允许雕塑分开。

对于链式反应脉冲行为,创建了另一个脚本——PulsePoseDetector.cs脚本,它位于InteractionHand转换上。它使用API方法..finger[x]isExt.()查看是否扩展了食指和拇指,而其他方法没有扩展。这变成了一个简单的姿态检测器,我们可以与交互引擎的组合使用主悬停回调.

通过首先检查我们的姿势是否已经被检测和保持了一些帧,我们会知道手是否准备好了。然后,使用交互引擎的OnContactBegin()回调和PrimaryHover,当摆姿势的食指触摸对象时,我们可以在触摸对象的SculptureInteraction类中调用public NewPulse()方法。这调用Propagate方法,它检查它的邻居,并进而触发他们的脉冲传播方法为我们的连锁反应。

脉冲本身由一个辅助程序组成,该辅助程序通过存储在雕塑交互中的渐变来描绘物体的颜色。这既使我们能够访问脉冲颜色,又允许我们在脉冲的寿命期间改变颜色。

应力测试与优化循环

如在我们以前的职位,这个雕塑是故意要找到并超过图形渲染器和交互引擎的限制。这有助于我们关注性能瓶颈和bug,并突出显示可能的用例。增加可见的数量,雕塑中的活动形状和运行Unity's Profiler提供了大量丰富的信息,这些信息是关于代码的哪些部分每帧占用的时间最长,以及我们是否看到垃圾收集。

188bet让球Leap Motion的交互引擎包括用于#mobileVR优化的简单技术。点击鸣叫此外,我们可以开始确定使用这些工具和方法来优化雕塑项目特定代码的最佳实践。当然,对于任何VR项目,不管是桌面VR还是移动VR,都有无穷无尽的其他优化,但是这里有一些针对雕塑的特定优化,以说明一些典型的性能调优。

例如,我们检查过“忽略抓取对于我们每个人的交互行为。因为我们没有抓住雕塑中的形状,我们可以关闭所有形状的抓取检测的计算。(虽然在每个形状上的每个雕塑交互脚本中运行的数学在计算上是微不足道的,我们有时会有数百个这样的形状悬停,因此,在雕塑交互脚本中,我们通过计算每四帧对手的反应来优化。然后,这些结果被馈送到用于对象的位置和旋转的连续lerps(线性插值器)。当你的手接近时,形状行为的变化几乎是不可察觉的,这提供了又一个小的性能优化。

通过这些行为示例,我们已经说明了如何将Leap Motion跟踪API和Unity Modules组合在188bet让球一起,从而实现多种形式的交互探索,每种交互探索只需要几行代码。188bet斗牛对于VR雕塑项目的下一部分,我们可以开始使用交互引擎的反应性小部件。在这一点上,雕塑的许多参数在代码中公开,因此,它们可以很容易地连接起来,由交互引擎UI控制。我们将在本系列的下一篇文章中深入讨论如何创建这些UI来创建UX操场。

跳跃运动的交互工程师,188bet让球巴雷特一直致力于游戏设计的交叉点,信息可视化和动画制作20年,游戏设计师和动画师。

LinkedIn