在遥远的国度...我在Wrike上开始了关于黑客马拉松的故事,因为黑客马拉松就像是一个童话:狂热者齐心协力,将他们的想法付诸实践。 一个想法被释放出来,就像一个神话般的箭头,然后它可能掉落在博亚尔的院子里,或者消失在日常生活的沼泽中。 而且,就像童话故事一样,它总是令人兴奋。 毕竟,要在很短的时间内组建一个团队,并从一个创意中制造出一个产品,甚至展示它,以使人们诚实地感到惊讶并不容易。

但是说真的,我想分享参加黑客马拉松的经验,我们在那里开发了增强现实(AR)。 我将告诉您有关我们如何尝试为任务找到现成的AR SDK的信息,但是没有找到。 结果,他们决定自己编写AR,结果证明了这一点。
俗话
我真的很喜欢黑客马拉松:我参加了几次,我必须自己做,如果可能的话,我会参加。

黑客马拉松通常由特定的组织举办,这对公司的HR品牌有效。 目标可能会有所不同:关于公司或产品的故事,雇用不同程度的进取心,组织主题社区,寻找新想法(
尽管拥有自己产品专家的军队,从梦想家那里获得清晰的主题领域的一堆想法可能很有用 ),等等。 d。
对于参与者来说,这是一个了解公司的机会,因为黑客马拉松通常是它的反映,并且可以从中得出有关内部厨房的结论。 要了解公司的流程,您可以查看其如何组织黑客马拉松:参加黑客马拉松的项目有哪些限制(
任务范围,主题领域,技术,工具等 ); 事件级别; 竞争部分的标准和透明度; 裁判-组成和质量; 组队的规则和方法是什么? 通常,公司分为进行黑客马拉松(
内部或公开 )的公司和不进行黑客马拉松的公司。 我喜欢那些花钱的人,因为 这些是比较开放的公司。
我本人参加黑客马拉松不是为了胜利,而是为了参与。 我想知道:
- 尝试新技术。 在一次“食品”黑客马拉松比赛中,我们参加了Flutter ,并为ios和android编写了一个应用程序。 尽管我们之前都没有尝试过Flutter,但我们知道如何使用Dart 。
- 为了结识新朋友并与新人一起工作 ,因此在参加了“城市”黑客马拉松之后,我打电话给黑客马拉松项目的帮凶,在我的团队中担任主要工作,我从不后悔。 Hackathon是测试战友的好方法。
- 做我真正需要自己的事情。 在内部黑客马拉松上,他们查看了该应用程序,然后将其用于工作中。
- 从创作中获得积极的情绪。 我真的很喜欢黑客马拉松的气氛!
因此,我很高兴参加wrike hackathon(
今年是第三次内部hackathon ),我们提出并改善了wrike:以前的一些hackathon项目已经存在于我们的产品中,还有一些积压在团队中。 尽管黑客马拉松是内部活动,但规模仍然令人鼓舞,大约招募了30支团队(
超过100人 ),所有团队都提出了新颖的创意。
在2018年的hackathon上,我决定尝试与
AR合作 。 在
MVP中,当您将鼠标悬停在带有加密的任务标识符的图形代码上时
,我想制作在手机屏幕上显示的变形任务(
名称,状态,艺术家等 ),并且还增加了更改状态以及从您自己分配/删除任务的功能。 有一个主意,有一个黑客马拉松,团队也没有参与。 在指定的日子,一切都转了过来。
我问灰
在设置环境(
搜索SDK和框架;安装软件;配置等 ),预先编写代码
等方面,我并没有为黑客马拉松做特别准备,而只是设计思路,功能,考虑按什么顺序进行操作等 因此,该团队咨询并决定我们将使用Java编写代码(他们
是在Android上本地编写的),并且有一个假设,即可能有很多现成的AR库。 我们的计划:选择一个方便的SDK,向其中添加
Wrike API ,然后集中精力编写应用程序的逻辑。 因此,我们的首要任务是找到一个方便的Java AR SDK,该SDK可让您:
- 在给定的虚拟表面上绘制一些东西。
- 集成/已经包含动态图形元素( 条形码,QR等 )的扫描器。
- 低门槛工作( 我们在hackathon,我们需要快速进行 ):有一个演示,有文档,有一个免费/试用版。
看起来很简单。 我们开始根据“
2018年顶级增强现实SDK ”之类的文章对选项进行分类

首先,我们看了Google。 他们打开了“
快速入门 ”,按照说明进行了所有操作,启动了它,瞧瞧,一切正常:Android出现在我的桌子上,也可以移动。 我们为应用找到了“基础”的感觉。 但是随后令人失望的是,
图像识别无法按照我们的需要进行:只有一张图片,它应该清晰可见,并且应该来自以前已知图片的数据库(
并且我们必须为每个任务拥有自己的唯一标记 )。 而最可悲的是无法控制焦点,这就是为什么要捕捉我们需要识别的图像对用户来说是一项艰巨的任务。 没错,现在已经重点
解决了
问题 ,但是我们必须继续进行搜索。 总的来说,谷歌确实不错,但是不能满足我们的任务。 而且由于OSX上OpenGL的特殊性,我们无法使该演示在仿真器中正常工作,而我们在实时电话上进行了所有操作。
我们阅读了文档,观看了
视频 ,看起来很不错。 有很多功能,例如
Image Targets 。 我们决定尝试:注册,下载,收集,启动。 该演示应用程序已启动,但在模拟器或实时android-e上均不起作用。 尝试测试任何功能会使整个应用程序崩溃。 决定不要浪费时间搜索问题并解决问题,然后继续使用下一个SDK。
我们下载了SDK,通过了
教程并启动了演示。 各种各样的可能性很多,演示立即给人留下深刻的印象,有一堆迷你示例,我们玩了很多(
例如,有面部识别 ),并且,瞧,该演示已经具有QR识别。 但是问题是我们得到了代码中加密的内容,但是我们不知道它的位置。 他们开始了解QR扫描仪的布置方式。 事实证明,它是作为
ZBar上的插件以SDK的肯定插件的形式制作的。 起初,我有一个疯狂的主意,发现gcc并完成插件,以便它也可以给出坐标,但是我们及时停止了工作。
他们战斗了3天3夜
意识到一天分配的时间中有很大一部分已经落后,并且我们仍在寻找我们的SDK(不仅有
其他解决方案的示例,不仅如上所述,而且还有惨败 ),我们决定不再搜索“银色子弹”,而是将所有内容都收集进去。你的手 一个新的计划已经成熟:作为任务标记,我们采用简单而通用的QR码; 为了识别它们,我们使用
ZXing ,它可以同时识别多个代码,除了值,库还提供了QR码的3个“搜索”点的坐标。 然后,在代码阅读器之上,我们将实现我们的AR。 卷起袖子前进,我们得到3分,这意味着在仿射变换的帮助下,我们可以获得所需的一切。

由于我们的任务并不困难,因此他们没有开始寻找数学图书馆。 我们要做的第一件事是为需要重新计算的坐标创建自己的类。 最终使用QR码的算法相当原始:
- 摄像机的图像被传输到ZXing,我们得到一个数组,其中包含点的坐标和QR码的值。
- 从3个坐标中,我们计算出正方形的第4个角,将正方形增加一倍半以重叠原始QR码,并获得卡片的基础。
- 我们在Wrike API中发出请求,以收集有关任务的数据。
- 由于仿射变换,我们画了一张卡片,我们保存了所有变形( 视角,旋转,缩放 )。
我们洗净了算法,它起作用了,我们进行了测试,我们处理了内存泄漏,添加了视觉效果,享受了黑客马拉松。
我在那里喝蜂蜜啤酒
在黑客马拉松中,除了您的产品本身之外,展示产品的方式也很重要。 每个人都知道您的截止日期非常紧迫,并且不期望您从技术上获得漂亮的解决方案,因此您需要展示您的创意之美。 我一直喜欢讲故事的方法,在这种方法中,听众了解产品是为谁制造的,在什么条件下使用产品以及解决了什么问题。

因此,在我们的演示中,除了演示获得的功能之外,我们还呼吁人们发挥想象力,并描述了这种增强现实(
AR眼镜很快将变得司空见惯 )可以改善在计算机外部工作但与工作相关的人们的生活的情况。 例如,用于从事房屋维修的设计师-建筑师与直接在房屋本身中实施项目的团队之间的交互。
我认为我们很荣幸地展示了我们的MVP,并抓住了我们的爱。 夏天结束了,野餐和度假季节快要结束了,我们正在考虑将秋季的傍晚专门用于Wrike AR的开发。
感谢您的插图,
Sai Kin !