Tag: 增强现实

如何使用Mapbox和ARKit在增强现实中整合3D地图

最近,我想看看是否可以在增强现实中实现3D地图,以进行潜在的安装。 我从未使用过ARKit,我在3D方面的经验也相当有限,而且我对真正的本机应用程序iOS开发一无所知(React Native距我已经很近了)。 幸运的是,Mapbox是一个令人难以置信的插件,可用于在Unity中处理地图,并且还有一个(在撰写本文时为beta)(实际上是脚本和示例集)用于将ARKit集成到Unity中的插件。 通过一点点的试验和错误,我就能使事情正常进行,尽管我绝不是权威,甚至不是寻求帮助的好资源,但我可以分享自己的过程和对我有帮助的资源,以及使用Unity for AR的一些基本原理。 完成所有这些操作后,插入设备(iphone 6s或更高版本,运行iOS 11 beta),然后在XCode顶部的“播放”按钮旁边将其选择为要构建的设备,然后点击“播放” 。 XCode将编译该项目,这可能需要一些时间,最终它应该编译无误,并显示在设备的主屏幕上。 一旦构建完成,我的矿井就会自动启动,但是我听说有些设备无法自动启动该应用程序的问题,在这种情况下,您只需在主屏幕上找到它并单击即可启动。 您应该看到一个标准的摄像头,在适当的照明条件下(可能需要一点时间),您将看到代表ARKit的点云的黄色圆点,以及场景中心带有蓝色,红色的棋盘立方体以及代表3D轴线的绿色极点。 当您的相机找到可以识别为平面的东西时,黄色十字准线框将关闭以形成完整的矩形,您可以单击屏幕以放置3D立方体。 如果放置不带黄色矩形的3D立方体,则ARKit会尽最大努力确定将场景放置在空间中的哪个位置,但准确性不高。 我已经在[此处]上传了我的Unity文件。 恭喜! 希望您已经在Unity中使用ARKit! 如果没有,请前往支持论坛并寻求或寻求帮助。 在Unity中生成Mapbox地图 我不会在这里详细介绍,因为Mapbox在创建如何在Unity中构建3D地图的演练方面做得非常出色,但是基本上是以下过程: 按照此指南安装SDK,在成功完成每个步骤后,单击“下一步”。 完成本教程的所有三个阶段(您只需要第一步即可完成,但是有趣的东西出现在第2部分和第3部分中),并确保您可以成功构建一个新的Unity项目(没有ARKit),您可以单击在Unity中播放并查看。 如果您有麻烦或感觉到已发现错误,请在Github存储库中提交问题。 Mapbox使用最新的Unity beta版来快速响应我自己的问题,却看不到“ Mapbox”菜单项。 我还在[此处]上传了文件(您需要确保添加自己的Mapbox访问令牌)。 也许会有所帮助。 放在一起 尽管关于如何前进的文档对我而言并不是很直观,但是Unity ARKit插件实际上为您提供了将自己的内容集成到ARKit中所需的一切,对于这个特定示例,我们要做的就是向右拖动正确对象的脚本。 首先,我尝试将我的MapBox映射合并到Unity项目中时出现了一些错误,所以我做了相反的事情,从ARKit中获取了脚本,并在我的MapBox项目中实现了这些脚本。 要使一切正常运行: 将ARKit插件导入到您的mapbox项目中。 创建一个名为ARCameraManager的空游戏对象,然后从层次结构中拖动对Main Camera的引用。 在检查器的脚本选项中选择是否要Get Point Cloud和Light Estimation 。 其他所有内容均应为默认设置。 如果要生成平面,以便可以在ARKit找到要附着物体的表面时看到,请从ARKit示例中的UnityARKitScene复制GeneratePlanes游戏对象到Mapbox场景中。 创建另一个名为MapParent游戏对象,并将在其教程中创建的Mapbox Map游戏对象拖到MapParent中。 这在允许您缩放地图时很有用。 我将地图父级的比例任意更改为.05 ,但如果您想要一个巨大的生命尺寸的AR地图,请将其保留为1(或更大?)。 在实际的Map Game Object上,从ARKit > […]

ARKit和CoreLocation:第二部分

使用线性代数(和Trig)导航 示范代码 ARKit和CoreLocation:第一部分 ARKit和CoreLocation:第二部分 ARKit和CoreLocation:第三部分 数学和坐标之间的方位角计算 如果您没有机会, 请先 结帐 第一 部分 。 现在,我们需要弄清楚如何获得两个坐标之间的方位角(角度)。 找到轴承后,我们进行了旋转变换,以使节点朝向正确的方向。 定义 弧度: 弧度是一个角度度量单位,定义为使得一个弧度从单位圆的中心对向产生的弧长为1。弧度等于180 /π度,以便将弧度转换为度,乘以180 /π。 如果您有两个不同的纬度(地球上两个不同点的经度值),则借助Haversine公式 ,您可以轻松地计算大圆距离(球体表面上两点之间的最短距离)。 – 可动类型 sin =对立/斜边 cos =相邻/斜边 棕褐色=对面/相邻 atan2: 带两个参数的反正切或反正切函数。 棕褐色30 = 0.577 意思是:30度的切线为0.577 arctan 0.577 = 30 意思是:切线为0.577的角度为30度。 按键 “ R”是地球的半径 “ L”是 经度 θ是纬度 “ β ”轴承 ‘ ∆ ‘是增量/变化 通常,当您沿着大圆弧路径(正交运动)时,当前的前进方向会有所不同; 最终航向将与初始航向有所不同,具体取决于距离和纬度(如果要从例如35°N,45°E(≈巴格达)移至35°N,135°E(≈Osaka),将以60°的航向开始,并以120°的航向结束!)。 该公式适用于初始方位角(有时称为正向方位角),如果沿大圆弧沿直线直线移动,则将使您从起点到终点 […]

增强现实的设计与开发

当iOS 11于9月19日发布时,苹果一夜之间成为增强现实(AR)的最大参与者。 利用AR(允许虚拟对象覆盖在现实世界之上)的产品已经问世多年。 Snapchat的镜头使用AR,而App Store则堆满了较旧的应用程序,这些应用程序可带来相对错误的AR体验。 但是在iOS 11上,苹果通过发布名为ARKit的开发人员工具包改变了竞争环境。 该工具包由复杂的技术组成,开发人员可以以此为基础来提供高质量的AR体验。 自从90年代以来我就一直是AR的忠实拥护者,因此我一听说它就渴望在ARKit的基础上构建。 自从我将Float发布到App Store以来已经有几个月了。 在我从事硬件,移动,Web和VR产品的产品,市场营销和开发工作的同时,创建AR产品时出现的考量和挑战是新颖且令人着迷的。 这是我遇到的一些最重要的问题,以及我如何(或没有)解决这些问题。 增强现实的声音设计 Float的一些核心功能是允许用户创建虚拟屏幕,以循环播放用户的视频。 然后,用户可以在3D空间中以拼贴方式将视频布置在自己周围,将视频缩放到100英尺高,或者以其他方式重新混合其内容。 视频带来声音。 在测试早期版本的Float时,我的想法是“嗯……每个虚拟视频屏幕都应该播放自己的音频。 当然。” 当所有视频相互尖叫时,这导致了嘈杂的用户体验。 我的解决方案是在静音的同时播放最近播放的视频音频。 但是,那里有更好,更直观的解决方案。 虚拟屏幕的理想行为是随着用户靠近特定虚拟屏幕而变大的音频。 随着用户离屏幕越来越远,该视频的音频变得越来越安静。 从理论上讲,这种行为听起来不错,但是在实践中,这种设计可能会迅速变成一堆的屏幕静音,取消静音,增大或减小特定屏幕的体积,侵入性的UI覆盖或尴尬的UI交互,以及我没有做过的其他行为。认为将其内置到我的实验应用中是无益的。 最好的移动应用程序采用周到的声音设计,以令人赞叹的提示音和流行音来通知和激发我们,预示着新的聊天或通知。 此处的区别在于,我们每天使用的大多数应用都是二维的。 它们是生活在我们屏幕上的平面应用程序。 AR应用程序通过放置虚拟物品,数据或我们通过屏幕与之交互的其他事物来修改和改善我们周围的世界。 与常规移动应用程序相比,AR应用程序在玩法上有更多的选择,因此AR应用程序的声音设计需要更接近3D视频游戏的声音设计。 我认为我们已经离开了几年,发生了重大的硬件范式转变,并且进行了大量的产品实验,而无法起草用于处理增强现实音频的可靠设计准则。 增强现实的对象放置和信息架构 当您在普通的非AR移动应用中点击某些内容时,该应用通常会全屏显示或突出显示或放大您所点击的内容。 这些应用程序的设计可能会提示您要经过人工操作的深度和屏幕层次,但是您的交互仅限于触摸二维平面:手机的屏幕。 AR应用程序可帮助您浏览屏幕以与虚拟对象和真实对象进行交互。 与虚拟对象进行交互的一个示例是在Float中捏一个虚拟视频屏幕,以将其缩放到200英寸宽。 与真实对象进行交互的一个示例是浏览无数卷尺AR应用程序之一,然后点击房间的各个角落以测量墙的长度。 假设您正在开发一个AR应用,每次点击屏幕时都会生成一只闪亮的新飞小狗。 恭喜! 您的应用已经可以运行,您只需要处理一些小细节。 例如:新的幼犬应该在哪里产卵? 他们是否应该在轻按的屏幕前出现一只脚? 两只脚? 他们应该总是面对着你吗? 或以其他方式旋转? 它们应该总是一样大小吗? 那是什么尺寸 他们应该受到重力的影响吗? 好的,既然您已经做出了所有这些决定,那么您就决定添加功能,例如,轻按小狗即可显示带有小狗名称的标签。 但是那个标签应该是什么尺寸? 如果小狗在房间对面,是否应该在小狗上贴标签? 还是应该将标签从屏幕弹出18英寸,以便您可以不动地阅读它? 标签应该是什么字体大小? 哪种字体? 什么颜色? […]

生日快乐-优惠券内有95%的折扣

大家好, 作为两个孩子的骄傲的父母,我一生中最快乐的日子是我孩子的生日。 我打算给我的女儿(明天明天7点大)送一个虚拟蛋糕,但她说服我,真正的粉红色公主蛋糕会更合适,更美味。 为了庆祝我女儿的生日,我将为我所有课程赠送折扣券。 您只需花10美元即可获得我的任何课程。 该交易将于下周结束,因此请不要等待太久。 掌握iOS版ARKit 精通iOS版Core ML 使用Java Spring Boot掌握微服务 使用蒸气2的服务器端Swift 使用Kitura掌握服务器端Swift iOS精益控制器的完整指南 我认为我的学生是我家庭的一部分,而你的成功就是我的成功。 工作中最好的部分是,当我收到一名学生的电子邮件,其中显示了他们在完成课程后构建的应用程序时。 这是我的一个学生的屏幕截图,该学生使用该课程为他的孩子创建了一个应用程序。 在线网络研讨会: 我将于下周10月26日(美国中部时间)下午在“使用ARKit构建增强现实应用程序”上举办我的第一个免费在线网络研讨会。 您可以在这里注册。 非常感谢您支持我的课程! 如果您能对课程进行评分和评价,我也将不胜感激。 评分确实有助于添加更多内容并支付账单😉 谢谢, Azam

具有里程碑意义的增强现实:Swift中的ARKit + CoreLocation

将增强现实对象放置在现实世界的位置,以便用户可以移动并查看浮在地标上的虚拟图钉 本文将说明如何: 将AR引脚放置在地标上 用户移动时将AR引脚保持在其地标上 避免ARKit的陷阱和怪癖 从这往哪儿走 设置好所有基础知识之后,您可以做很多很酷的事情。 这是我已经能够工作的一些示例: 做自己的pin(aka SKNode )缩放,而不只是使用ARKit的 设置SKNode的SKNode相对于它们与用户的距离,以使距离更远的销钉出现在距离更近的销钉的后面。 子类SKScene并使用touchesBegan方法在用户轻触图钉时得到通知。 定期检查是否有重叠的引脚,并且仅显示较近的引脚,等等。

ARKit之旅-第4部分,物理

下弗雷泽 结果 虽然这确实会按正确的方向创建塔,但结果是塔始终会自行倒下。 仅使用2或3行效果更好,但是在更长的时间内,如果没有任何用户交互或施加额外的力,它仍然会崩溃。 所有块节点共享相同的SCNPhysicsBody。 有一些不同的属性会影响物体之间的相互作用,因此我们尝试更改这些属性以查看效果。 摩擦力增加到最大值1,质量减小,恢复原状设置为零,但无济于事。 对于不熟悉恢复的人来说,它代表物体的弹跳,可以认为在撞击过程中可以节省尽可能多的能量。 例如,有弹力的球的复原力就很高,这意味着放下弹力球会导致弹跳回到弹起的高度。 下一步 我们将计划添加其余的UI功能,以允许从塔中删除块然后将其堆叠。 尽管跳到这一步似乎很愚蠢,但我知道即使塔的行为异常,也可以实现此功能。 这应该让我们在其他团队成员在塔楼上工作时取得进步。

进入ARKit之旅—项目“总结”

一个星期前,作为Galvanize第三季度项目的一部分,我和其他团队成员一起投入使用ARKit来构建iOS应用程序。 既然我们已经介绍了,我想分享有关该过程,我们学到的东西以及下一步的一些最终想法,以期帮助任何想要开始构建AR应用程序的人。 除此之外,我希望这对那些有想法并只是在思考“我该怎么办呢?”的人(尤其是新编码员)至少可以有所启发。 我们从哪里开始 我们的程序专注于Javascript,所以我喜欢在Swift中向我的工具箱中添加新语言并学习一些用于移动和本机应用程序开发的一般概念的想法。 话虽这么说,我和我的团队成员都没有任何Swift或Objective C的经验,所以我们首先必须专注于学习,然后才能构建有意义的东西。 我一直在独立研究Java,这是我们的“选修课”阶段的一部分,这使过渡变得更加容易,但是仍然需要回到基础知识。 幸运的是,学习一门新语言确实没有那么困难。 那里有一些很棒的资源(Treehouse,Udemy,当然还有Apple文档),最终,设计和逻辑并没有真正在各种语言之间发生变化-只是人们实现该设计和逻辑的方式。 前2-3天花在重新学习诸如变量声明,类型输入(来自Javascript背景的新概念),控制流,类和OOP(也是相对较新的)之类的东西。 到那时,我们已经感到更加自在-我们已经学习和培训了像工程师一样思考的思想,我们只需要了解应用这种思想的新方法即可。 我们在哪里结束 申请还远远没有完成,但是我对我们能够完成的工作感到非常满意。 在Swift中建立基础之后,我们能够导入ARKit和UIKit库以添加所需的功能。 最终结果是一个塔式建筑游戏,其中的木块使用增强现实技术渲染,并且用户能够移动这些块,目的是将它们堆叠起来以在塔掉落之前将其建造得更高。 在演讲之前的晚上,我设法获得了我们团队的一些视频 我们在使用UI时遇到了一些挑战,不得不进行两次旋转,直到我们确定在仍然感觉自然的情况下仍能正常工作的东西。 我们的第一个尝试是使用Core ML来跟踪手势,以便用户实际上可以抓住并移动AR块,但是在所有三个维度上进行跟踪而不是仅跟踪X和Y都存在真正的挑战。 接下来,我们尝试使用触摸手势,因此用户可以拖动这些块进行放置。 这带来了将二维手势转换为3维运动的相同挑战。 我们最终选择了控制板样式,以便用户可以对块(均具有物理物体和属性)施加力以将其放置到位。 我们无法解决的一个问题是围绕这些物理问题-目前,塔楼将自行落下。 我们认为这是由砌块所在的平面引起的,如果它不是完美的水平,重力将倾向于将塔架推倒。 这绝对是一个问题,因为无法按照我们的预期完成游戏,但是一旦问题解决,我们很乐意将其余的机制都准备就绪。 下一步是什么 要解决的直接挑战是使该塔保持在原位。 我们对此有一些想法,并将在未来几天内尝试更好地了解不同的场景工具包类型如何交互。 我也确实想找到一种方法来使手部跟踪工作达到我们最初的预期。 在我们的研究中,我遇到了Manom​​otion公司,该公司有一个非常有趣的产品,该产品支持AR应用程序的手势跟踪。 我想尝试一下他们的SDK,以了解其工作原理,但是最终,我认为找到一种没有这种即插即用解决方案的方法将是一件充满挑战的挑战。 这是什么意思 当您删除详细信息(iOS,Swift,AR Kit,Core ML)时,该项目的目的是促使我们作为开发人员抓住机遇并潜入未知领域。 这是关于变得不舒服变得更加自在—能够使用全新的东西并找到将其与不新的概念联系起来的方法。 确实,这是拥抱变化。 作为工程师,我认为我们在成就自己时只能受到恐惧和安慰的限制。 我们需要对学习新事物持开放态度,即使这意味着一开始就会感到有些失落或不安全。 我们都从这里开始-无论是Javascript,Python,Java还是任何语言,我们都从零开始。 根据我们已经知道的信息,可以轻松地休息一下。 仅承担我们知道可以解决的挑战就很容易避免失败。 但是,如果我们能克服这些困难,那么如果我们能够跨入新的领域并告诉自己:“这将很艰难,但无论如何我都会这样做!” —如果我们能够做到这一点,我认为那是没有的限制我们可以完成的工作。 非常感谢大家为您提供一些宝贵的时间阅读这篇文章-我真的希望您能拿走一些东西,即使有些少! 我打算在Galvanize计划即将结束时继续发布更新,因此,如果有任何问题或主题可以帮助您解决,请在评论中告诉我!

我们欢迎Apple提供的最新增强现实套件:ARKit!

我将简要介绍一下被认为是虚拟现实最新阶段的苹果公司的ARKit。 苹果在WWDC上介绍了他们从事一段时间的增强现实程序。 在会议上,苹果公司软件工程副总裁克雷格·费德里希(Craig Federighi)宣布,通过增强现实开发者工具包(ARKit),开发者可以在iPhone和iPad上完成许多事情,从简单的计算器到更复杂的视觉效果。 例如,开发人员可以“将咖啡杯放在桌子上”(这些应用程序已经可用),但是现在您可以在杯子旁边添加杯子的阴影和一本书。 瞧! 我们都知道口袋妖怪围棋现象。 您可以在走路时遇到宠物小精灵,并通过扔戳球来接住它。 棘手的部分是,根据您距生成点的实际距离,口袋妖怪现在可能会显得更大或更小。 以前从未使用过该技术的版本。 实际上,您可以从根本上改变整个相遇机制的过程,而在Pokemon周围走来走去或远离它。 玩家现在可以从不同的角度和距离接近以向口袋妖怪扔throw球。 听起来不错! 宜家是另一个例子。 在决定购买家具之前,您实际上可以在房间里看到它的确切大小和形状。 问题是它在您的家庭/办公室中覆盖了多少地方,或者它是否适合您将成为过去的两难境地! 最后但并非最不重要的例子是实时汽车目录(有传言说奥迪和梅赛德斯已经制定了计划)。 想象一下从电话屏幕上查看汽车的仪表板,您将立即获得有关该魔术按钮的信息。 或者,您正在寻找引擎盖内部,以查看想要添加一些机油的部分以及如何进行干预-或一些基本知识,例如,如果您是汽车新秀,则如何打开引擎盖。 此外,当您想要为汽车增加其他功能(天窗,座椅,方向盘套,导航装置等)时,您会发现其适合性。 您是否还在考虑实时订购? 可以说ARKit是虚拟现实的最新阶段,Apple相信开发人员的想象力。 ARKit是免费的,并且引起了极大的兴趣。 通过新应用程序与ARKit的竞争现在已经开始,我想我们很快就会在市场上看到它们。 一项技术说明: ARKit还支持Unity,Unreal Engine和SceneKit以及Xcode应用程序模板。 我们期待着您的增强现实想法。 🙂