AR @ wehkamp

我在WWDC 2017

作为我个人的背景故事,当时我在VWO 4中,至少可以说我度过了美好的一年。 自从我4岁开始学习以来,学校一直是我生活中的“问题”,而此时,我的“水桶即将溢出”。 我感觉不舒服,从字面上想起每天上学和变得不快乐的事实,我已经厌倦了。 让我前进的一件事是编程。 我于2015年开始进行iOS开发,几个月后发布了我的第一个应用程序,直到今天,我仍然每天都在学习新知识。 WWDC是我一生中最酷的一周之一,遇到了很多新人,他们都和我iOS开发一样感兴趣。 我开始感觉好些,但回到家后,我又回到了以前的“学校疾病”中。 在这一点上,我和父母决定放慢脚步。 我开始更多地待在家里,在那里我可以学习iOS开发并跟随我的热情。 然后,夏天来了,在暑假里,我盛开了,我再次感到高兴,得到了一份假期工作,赚了些钱,总之,一切都很好。

我以良好的希望开始了我的新学年(VWO 5),历时约2天。 两周之内,我在家比在学校多,一个月之内,我再也没有去学校了。

在这段时间里,我们与学校举行了多次关于“现在做什么”的会议,我再也不能去学校了,但是一直都呆在家里也不好。 长话短说,最后,我问是否可以作为iOS开发人员开始实习来扩展我的知识,而不仅仅是一直坐在家里。 学校对此还可以,我联系了该地区的几家公司。 其中之一就是wehkamp。 大约6个月后,即2017年12月,在几次会议之后,我正式开始在wehkamp担任iOS实习生,每周工作2天。

因为这是我想出的实习生,并且不是我的学业所必需的,所以我没有要完成的任务或要做的任务。 Wehkamp和我有完全的自由决定在那做什么。 由于其他方面的优先考虑而搁置了一段时间的项目是AR。 所以我们决定要做的是,我将开始使用AR来创建所谓的POC(概念证明)。 在wehkamp,我们拥有自己的生活产品系列,因此决定在AR中展示这些产品非常好。

确定了我们想要的东西之后,我就可以开始做/尝试事情了。 从简单地能够检测到表面开始,到从网络动态加载模型并重新映射纹理结束。 因此,让我们进一步深入。 开始时,我们必须弄清楚基本内容。 我有大约3天的ARKit使用经验,而这仅仅是超级基础。 我也几乎没有使用ARKits基础的SceneKit的经验。 因此,对于第一部分,我经常查看Apples文档和示例代码。 这样,我就能获得一个预加载的模型来旋转和移动,这在当时真是太神奇了!

转换次数

因此,对于我们的最终应用程序,我们需要的不仅仅是4个预加载模型,因此我们需要第三方参与为我们创建模型。 效果很好,但是我们遇到了一个问题。 这些文件以DAE文件(数字资产交换)的形式提供,这是一种流行的3d建模格式。 这里的问题是这些文件不适合移动设备,我们不得不将它们转换为SCN文件,SceneKit Node文件,这是Apple的格式,可与移动设备一起使用。

存储

我们的下一个障碍是模型的存储位置。 我们有了模型,现在我们需要将它们存储在某个地方,由于多种原因,将它们全部存储在设备上似乎不是一个好主意,最明显的一个就是存储空间。 因此,我们决定将它们在线存储,并且很好地解决了一个主要问题,我们将如何获取模型并将其显示在电话上? 为了解决这个问题,我们创建了一些功能,可以从服务器下载模型并进行渲染。 这花了一段时间才能弄清楚,但最终我们使它起作用。 然后,下一个问题出现了,或者实际上没有出现,这就是问题所在。 在将模型从DAE转换为SCN文件的过程中,所有纹理文件路径都被弄乱了,因此纹理将一直指向../现在指向我的Mac上的绝对位置。 在手机上渲染模型时,在该位置未找到任何内容,因为好吧,这不是我的Mac,因此该位置不存在。 我希望其他人也有这个问题,所以我可以将粘贴复制到解决方案中并完成。 但是事实并非如此……所以我们最终要做的是编写一个自定义的重映射函数,该函数将每个纹理文件从其怪异的URL映射到设备上的正确URL。

灯光

所以现在我们在房间里有了一个带纹理的3D模型,可以移动它,但是仍然有一些问题。 首先,一切看起来都像是一个充气的,反光的塑料模型。 简而言之,它们很丑!

花了一些时间弄清楚这是什么,以及为什么它们这么丑。 原来,我们不得不责怪我们的照明。 设置的方式是,我们以相同的速率和强度对模型的每个位进行照明,这意味着您既看不到深度,也看不到阴影。

我们看到了多种解决此问题的方法,下面将解释其中的两种。 解决方案之一是在模型上方一米处添加一个浮动光源,这将仅从1个地方照亮模型,投射并渲染阴影并增加深度。 我们对此进行了测试,模型看起来不错,但是遇到了一个大问题。 拥有多个模型会弄乱事情,因为灯光会重叠并投射出非常奇怪的阴影。

我们最终使用的解决方案不是将灯光固定在模型上,而是固定在人身上。 或者,从他们的角度来看,这等效于用户的电话。 这意味着,如果用户移动手机,灯光也会随之移动,所以我们会有阴影,深度,没有重叠,并且无论您在哪里观看,模型都可以很好地照亮。

现在剩下的唯一一件事就是利用我们在构建POC时学到的知识,并在我们的真实应用程序中充分利用它。 由于此过程主要是通过重新设计外观更好的POC构成的,因此在此我将不作介绍

所以,仅此而已。 现在,小幅更新我自从12月开始实习以来发生的事情。 首先,我不再是实习生,而是一名员工。 紧接着,在与参与方进行了许多会议之后,我正式完成了学业,因此可以跟随自己的编程热情。

编码愉快!


感谢您抽出宝贵的时间阅读这个故事! 随时留下您的意见并提出问题! 如果您想亲自体验增强现实,可以在这里进行。

Wehkamp的我们还有一个技术博客,如果您想阅读更多类似的故事,请查看并订阅。 或者,如果您正在寻找一家很棒的公司的出色工作,请查看我们的工作机会!