Things,Inc的Bruno Oliveira( @btco_code

[编辑:该应用现已在App Store上使用]

我一直是3D,VR和AR的爱好者,我很幸运,到目前为止,我的工程学中很大一部分都致力于该领域内的项目。

即使2010年代的恶劣VR冬天使我对新耳机有些怀疑,但每当新的头戴式耳机都会上市时,我仍然会得到那种古老的兴奋感。

我在一个名为Things,Inc。的小型初创公司工作。后缀使它听起来超级认真和公司,但我们只有3个人,而我们没有人穿着领带或西装。不过,我们有很花哨的连帽衫。

不用说,当苹果宣布Vision Pro时,我们很高兴能够掌握它,因此我们决定在它发布后立即预订。当我们等待耳机发货时,我们开始使用模拟器进行一些准备工作。

我们坐下来,解决了世界统治的计划。他们开始并以“让我们变得有趣的东西”开始并结束(我们在世界统治上不是很好)。我们对Visionos开发人员的视频进行了狂欢,好像它们是备受期待的电视连续剧《电视连续剧》第2季,然后开始工作。

自然,我们不得不将注意力与这个闪亮的新玩具和在房间里的作品之间分配,但我们认为值得为此付出几周的时间。

虽然没有替代自己手中掌握实际设备的替代方案,但苹果公司准备了大量的开发人员文档,这使我们对耳机的能力有一个清晰的了解,因此我们可以立即开始取得进展。

我们建造的

没有任何进一步的ADO(对以前的ADO感到抱歉),这是我们最终发展的内容:

我说“最终发展”是因为决策过程远非直接。但很快就会有更多有关此的信息。

该应用显示您的目录,这些目录是人们使用房间创建和上传的用户制造对象。单击类别或标签时,您会收集一些内容:

需要Voxel Corgi吗?谁没有!马上就来。这是显示对象及其一些信息的详细信息。

Visionos SDK中(许多)很酷的事物之一是,它允许您将真人秀直接嵌入视图层次结构,因此我们可以拥有一个真正的3D小部件,其中模型从窗口中出现:

现在,您可以单击“添加到游乐场”,现在您将Corgi送入泡沫中(您还将如何交付Corgi?),准备放置在家中的任何地方。或公园。或办公室。

这是沙发上的柯基犬。

使用3D手势,您可以移动,旋转并缩放Corgi。甚至疯狂地放了两个尸体。并使它们巨大。

当然,您不仅限于Corgis或您的客厅。这是中央公园的团队进行体素野餐。

幕后…

现在,我们谈论了我们的建造,让我告诉您一些有关幕后的信息。

我们最初的想法是建立的东西,也就是说,体素编辑。我们已经在房间应用程序中有一个体素编辑器,看起来像这样:

所以自然而然地,我们认为“为什么不尝试有关Visionos的想法?”毕竟,可能出了什么问题?

因此,我将我们的所有Vox解析和网格构建代码从C#代码库移植到Swift和RealityKit,而Nick和Jason则在该应用程序的空间UI上工作。

正是在这里,我们开始了解到,这款新设备具有我们必须考虑的截然不同的交互范式。

悬停在情人眼中

Apple Vision Pro的独特功能之一是其专注于用户隐私。因此,与我使用过的以前的耳机不同,它不会自动暴露某些关键信息,例如用户的头部方向,凝视方向,窗户位置,甚至用户在物理空间中。

我们所能做的就是告诉系统可以与哪些元素进行交互,它将需要检测用户是否做出任何影响这些元素的手势。特别是,即使悬停效果也完全不透明应用程序:我们只是说我们想要悬停效果,但是当用户悬停在我们的组件上时,我们不会收到通知。

这也适用于3D图形:我们可以将某些实体标记为可以悬停的和可交互的,但是我们没有任何实际发生的信息。

结果,我们无法“巧妙地”对悬停状态或按需点击反应:无论是悬停或可点击的东西,即作为真人秀kit实体都需要存在。

我们最初打算制作Voxel编辑器,并实际上开始构建它:

但是由于这种限制(有充分的理由存在),该模型中的每个体素都必须为其每个素的每个面孔都有一个单独的点击目标,即使对于小而言,它也会非常昂贵楷模。

但是在这一点上,我们还没有尝试过实际的耳机!也许对我们来说有一个惊喜。耳机的性能如此之多,以至于拥有成千上万个实体并不是一个问题,这并不是一个不可能的范围。

像我这样的工程师在面对痛苦的重写主要软件的前景时,非常擅长一厢情愿。我的意思是,令人惊讶的是。

获取耳机

随着耳机船约会的临近,我们决定在纽约见面,以便我们可以花一个星期的时间在该应用程序上工作。

可以肯定的是,我们会及时拿到耳机,我们每个人都买了一个,然后将它们全部运到Jason's(我们的首席执行官)房屋。他监视了交货,并在UPS卡车和货物一起进来时英雄地守卫。

我们第一次尝试使用耳机。

魔法。

我们进行了入职。实在太棒了。清晰的高分辨率显示屏,完美的眼动追踪,自然手势,沉浸式空间声音,令人愉悦的UI。

我们使用“过山车测试”测试了潜伏期,在那里我们戴上耳机时来回扔了一个过山车,以查看潜伏期是否足够低,以至于我们可以在耳机上抓住它。

我们意识到,由于没有耳机的怪异形状,即使没有耳机,我们也无法捕捉过山车,因此这不是一个很好的测试。如果您要为科学严谨的科学阅读本文,我很抱歉让您失望。

问题

即使耳机是最新的,一开始的经验还是很棒的,我们很快就意识到我们的愿望和现实之间有一些不兼容(何时是这样,现实往往会获胜):

  • 基于凝视的互动是直观的,但不是非常精确的(不是要在体素编辑中需要的水平)。
  • 将眼睛用于精确工作并不舒服。我们的眼睛很快从反复地从表面到地面飞镖到放置体素而感到疲倦。

但是,我们也意识到了一些出乎意料的好事:

  • 耳机的图像清晰明确,没有任何模糊,它是如此之高,以至于即使在耳机上也可以使用手机。
  • 滚动是fuuuuuuuun。为什么滚动这么有趣?它没有乐趣的权利,正在滚动。即使是设置UI也很有趣,因为有很多设置,您可以滚动通过它们。
  • 其他手势也很有趣(拖动,旋转,缩放)。

很多手指指向

从硬件的角度来看,现场有成千上万的实体等待着凝视激活。从人体工程学的角度来看,使用我们的眼睛选择体素是不是启动者。

好的,因此,如果基于凝视的体素编辑无法正常工作,我们需要弄清楚用户如何选择要放置体素的位置。

我们搜寻了答案,并最终在我们的武器结束时找到了答案。如果我们可以简单地将食指指向Voxel,我们想修改并做一个手势来编辑它怎么办?

因此,我使用ARKIT API实施了手动跟踪,这要求我学习一些手动解剖结构,以便我可以理解文档,例如,当某些东西返回了“从掌骨 - 苯烷接头到近端的次朗根司型拨号”的矢量时。

因此,用户的手指将是一个“激光指针”,他们将手指连接起来或用拇指“单击”以放置体素。

我喜欢像其他任何人一样从远端的尾巴中出来激光,但是我们很快意识到这还不够精确,而且实际上也很累。

我们遇到了人类肌肉和关节的硬件限制。

让我们看其他应用程序

我们在App Store上查看了许多其他Visionos应用程序。我们担心的是,它将充满许多很酷的应用程序,我们永远不会有机会在那个令人难以置信的应用程序的海洋中受到关注,但是令我们惊讶的是,我们错了:Visionos的应用程序很少,至少基于我们的兴趣,甚至更少的好人。

我的意思是,有很多业务和生产力应用程序,但是我必须承认,我对空间计算的未来派科幻时代的梦想和视野不包括查看悬停在我的咖啡桌上的电子表格。我对这个未来时代的梦想甚至根本不涉及咖啡桌。

我们看到某些应用程序本质上是具有几个3D元素的2D应用程序,其中包括许多流行的手机游戏,但是在虚拟2D表面上玩它们的体验并没有比在真实平板电脑上玩它们要好得多。

Thing Things,Inc的空间计算的巨大危机

这是黑暗陷入的时候。我的意思是,冬天是下午6点,但也同样隐喻:如果在App Store中没有令人信服的应用程序,而我们的想法也没有解决,这表明这只是无法做一些有趣的事情吗?这只是浪费时间和金钱吗?

我们决定称之为。

我们有很多想在房间内实施的功能,而不这样做的机会成本开始烦人,因此我们决定将头戴式设备放回(不合理的昂贵)案例中,并专注于已经拥有用户的应用程序并需要我们的注意。这是成年人,成熟的事情,这是一个可靠的决定,我们会回顾并为之骄傲。

我们甚至开始列出我们将要在房间里做的一切,因为我们已经决定将自己完全奉献给它:

这样就开始了Thate Inc.的空间计算的巨大危机。我们必须勇敢地忍受这些挑战的时代,无论它持续了很多月,希望我们最终能在遥远的未来回到Visionos。

这个时代持续了15分钟。

Thing Things,Inc的第二个空间计算时代

当我们埋葬这个应用程序并准备继续前进时,我们的社区经理马特·福加蒂(Matt Fogarty)在最后一次尝试,实际上是在做我们以前从未做过的事情:认真地使用该应用程序,就像用户一样。到目前为止,我们所做的最多的是放置一个或两个对象,并立即尝试编辑它们,这导致了我们之前描述的破碎经验。取而代之的是,马特根本没有打开Voxel编辑器,而只是放置了库中的几个对象并组装了一个小场景。

尼克尝试了,然后我比杰森。我们的思维方式是“是的,我们放弃了这个,但让我们最后一眼看一下”。但是随后我们意识到,如果我们根本不使用Voxel编辑器……它有点有效。但是我们已经做出了决定!

“这个很有趣。不好了。” - 尼克

几分钟后,我们的脑海中已经形成了一个新计划:将其融入足够好的状态以制作一个视频,然后我们会发推文,但除此之外什么都没有。

只是一个视频。因为制作实际应用是不可能的,所以需要几个月的时间。我们非常擅长建立以现实时间表制定这些公司,经过深思熟虑的计划。

“如果我们在本周末之前运送该应用程序怎么办?” - 杰森

那是。

到那时,我们已经了解了耳机的功能和缺点,我们最终可以设想如何使该应用程序起作用。我们将其从垃圾桶中挖出,并决定将浏览我们广泛的目录,然后将3D型号放置在您的房间中,这样您就可以娱乐了很少的场景。

UI系统

我深入研究了3D数学,实体和变换,偶尔会从Swift击败Swift,因为我想出了如此深的线性代数问题,例如“为什么Panda Spawn the Panda Spawn ting ting ting ting tos tos toss toss the Spawn的屁股将其屁股转向用户而不是前部?”。

尼克和杰森(Nick and Jason)设计和建立了一个精美的系统,用于浏览目录,从firebase中加载数据并将其整齐地显示为主页,类别甚至搜索。

这包括大量的工作,以最佳的安排来组织图书馆中成千上万的东西,以确保人们拥有建立有趣场景所需的东西。

产卵

我们遇到的一个问题是,当您在场景中添加一个新对象时,用户有时很难注意到该对象出现,因为他们的注意力可能集中在UI上。

为了添加问题,没有可靠的方法(据我们所知)将3D对象相对于窗口在3D空间中的位置定位,从而使新对象很难将新对象定位在用户无法预测的位置错过。

我们的解决方案?

只需将新物体放入气泡中!它标志着它是一个新对象,因此用户知道它只是添加的,并且很容易引起人们的注意。尼克甚至添加了空间声音,因此用户对气泡在哪里有感觉。

从2024年开始,气泡在空间计算应用程序中发出什么声音?我不知道。有未来派的东西,但也很友好。我们用来描述它的术语是“有机半机械人”。

如何删除东西?

出现的另一个有趣的问题是:移动,旋转和缩放很容易,但是如何删除不想要的东西呢?

我们可以有一个垃圾桶,但这会干扰场景,我们不知道将其放在哪里(请记住,我们不会自动知道用户在场景中的位置),然后用户想将其移动, ETC。

因此,我们决定采用一种有趣的方法:将东西拖到地板下,然后它们会变成红色并在灰尘云中爆炸。一旦我们了解了如何进行粒子效应,我们也将它们添加到了更多地方。谁不喜欢粒子发射极?

就是这样。功能的结尾。到星期四早上,我们宣布该应用程序已完成,并坚定地说:“不再有功能,只有从现在开始。”

正如您可能从本文中所期望的那样,这并不是很可行。

保存或不保存

最初,计划是仅仅是为了娱乐而只看到3D模型,并且无法保存您创建的场景。

所以我们完成了。我们开始使用该应用程序,创建一些场景。但是后来我们开始玩得开心,这就是危险。我们开始感到失望,因为我们会失去创建的东西。

我可以闻到一英里外的特征蠕变,并且空气中有非常强烈的非功能完整的香气。

我们知道这是一个风险:如果我们玩得开心,我们很明显想保存它。

只有两个选择:

  • (a)使它变得不那么有趣,所以人们不想保存
  • (b)实施保存

“当你给老鼠一个饼干时……” - 尼克

我不熟悉这个表达,我不是动物学专家,但是我相信给老鼠一个饼干的问题是“那时想要一杯牛奶”(尽管我很难想象鼠标会如何喝酒它)。

所以我们说……如果我们有办法储蓄怎么办?让我们做这个超出范围的小功能,但这将是一个小功能。

“听到吗?这就是特征的声音蔓延。” - 布鲁诺

值得庆幸的是,由于Swiftui的工作方式,数据已经以序列化的格式大多,这并没有带来重大困难。尼克在创纪录的时间内构建了整个保存/加载UI……并在我们认为是一款大部分无卵石的鞋子中发现了几个卵石:用户如何重命名,覆盖,删除,被警告未得救的更改等?值得庆幸的是,这些都解决了。

前往中央公园的旅行

在某个时候,天气晴朗,由于我们没有从公寓里拿出太多东西,因此我们决定走几个街区到中央公园。但是,当然,我们不能像普通人一样在中央公园里散步,我们必须带上耳机并在那里尝试。

这是一个成功:该应用程序运行良好,将Voxel Dog放在真正的狗旁边很有趣,这是我在这里不包括狗的隐私的图像(真正的狗,而不是Voxel One)。而且因为真正的狗在大便。

但是,这是尼克在虚拟柠檬树下抚摸虚拟的corgi的另一个。

当我们这样做时,实际上有人接近我们。

“新玩具?” - 中央公园的随机人

这个问题中的指责语气促使我们清楚地表明,我们根本没有开心,这严格是为了工作,这个路人似乎对此感到满意,好像在说“在这种情况下,只要您可以,只要您是您的没有开心。”

不过,我们完全是。

提交的最终准备

拍摄促销视频和App Store屏幕截图并不是一件容易的事,因为它需要一个特殊的过程,该过程从耳机中拍摄高分辨率图像。杰森花了几个小时为此。事实证明,这导致耳机会加热很多,这是一个很容易解决的问题:

当我撰写最后一段时,它是星期五的午夜,我们刚刚在App Store中提交了该应用程序以进行审查,因此我们在分配的时间成功完成了该应用程序。

它没有我们想要的所有功能,但是它具有我们认为至关重要的所有功能:这是一个搭配半杯牛奶的饼干。

经过几天的重密度工作,我感到非常疲倦,但自相矛盾的是也非常充满活力。我期待看到用户将对此应用程序做些什么!

编辑:该应用现在已在App Store上进行

点赞的用户