Tag: AR

5个iOS ARKit应用将向您展示增强现实的力量

苹果通过将其作为iOS 11的主要更新在AR应用程序上下了赌注,似乎押注了苹果的青睐。 如果您仍然不了解AR,那么这项技术可以在手机摄像头的帮助下将虚拟对象放到现实世界中。 在iOS11发布之后,苹果用户已经开始疯狂,社交媒体正以AR特色图片和视频激增。 相关文章: ARKit和ARCore:所有您需要知道的AR将如何影响移动应用程序世界 在WWDC 2017中,公司向iOS应用程序开发人员展示了其ARKit,用于构建AR应用程序。 在周二发布iOS 11之后,该公司添加了许多AR应用程序,并从那时起不断更新App Store。 我们为您带来商店中可用的一些最佳AR应用程序,这些应用程序将带您进入AR世界。 1. 天空指南 该应用程序最大程度地利用了增强现实,并通过您经历过的电话为您提供了最舒缓的视野。 该应用程序可让您通过将手机的摄像头对准天空来发现天体及其当前位置。 在晚上dog狗或在山上露营时使用该应用程序。 该应用程序可以使用或不使用wifi和蜂窝数据。 2. 健身AR 如果您担心自己的跑步或骑行路线,并希望对其进行优化,那么Fitness AR非常适合您。 该应用程序可让您借助AR将3D地形图放置在桌子,地板或床上来探索锻炼路径。 选择路线并调出AR相机后,您可以将所选地图放置在现实世界中。 您可以旋转,放大和缩小它们以构成锻炼。 相关: Snapchat添加了新的增强现实功能,将您的Bitmoji角色带入现实生活 3. 宜家广场 该应用程序可让您将宜家的产品虚拟放置在您自己的位置,并精确显示家具的尺寸。 宜家的应用程序包含沙发,扶手椅,脚凳,茶几等的3D和真实比例模型。 通过摄像头扫描地板,从宜家产品列表中选择所需的物体,然后将摄像头对准地板空间,最后将产品拖到要放在地板上的位置。 4. GIPHY世界 流行的GIF提供公司已经可以在iMessage,Facebook Messenger等应用程序中发送GIF。 该公司通过将AR本质添加到其GIF中进一步迈出了一步。 GIPHY World允许您将自己喜欢的动画GIF放到周围,并制作视频以通过该应用与朋友分享。 5. 胡萝卜天气 Carrot Weather是一款功能强大的疯狂天气应用程序。 随着iOS 11的发布,公司通过ARKit将天气机器人添加到其应用中。 该机器人在向您提供天气详细信息的同时,会不断发出一阵小蛇。 相关: Google向Android用户赠送的最新礼物:ARCore增强了现实 一个小提示,只是不要戳机器人的Oculus传感器! 有关最新的技术新闻和评论,请在Twitter,Facebook,LinkedIN,Instagram和Flipboard上关注MobileAppDaily 本文是否有帮助?

ARKit和SceneKit入门

尽管增强现实技术已经存在了很多年,并且基于目标的体验的准确性不断提高,但是诸如PokémonGO等游戏的普及以及Apple发行的ARKit和Google的Android的AR Core的推出AR掌握在大多数消费者手中。 凭借能够了解您周围世界的无目标AR的能力,我们有机会打造出引人入胜的新AR体验。 随着新能力的出现,我们在创造这些体验的工作中将面临新的挑战。 在接下来的几篇文章中,我们将逐步建立各种流程,获取3D模型,对其进行处理并将其用于我们自己的AR体验中。 可以在https://github.com/AbovegroundDan/ARTutorial_Part1上找到此文章的项目。 基本 我们的ARKit应用程序将使用SceneKit进行渲染。 SceneKit是适用于iOS的本机3D渲染引擎,可直接与ARKit挂钩。 3D模型格式 SceneKit中有一些可用的本机格式可用于加载3D模型,但我们将专注于Collada Digital Asset Exchange或DAE格式。 DAE格式使我们可以在场景文件中包含多个对象,包括相机和灯光以及任何几何图形。 SceneKit具有用于加载场景文件的例程,我们将编写一些扩展程序以简化加载。 要编辑3D模型,我们将使用Blender,因为它是免费的并且可以满足我们的需求。 尺寸和单位 SceneKit使用仪表作为尺寸调整和物理模拟的度量单位。 因此,当我们看到任何涉及尺寸的内容时,包括Xcode中的“场景编辑器”,它始终是指米。 在Blender中,我们还需要确保以米为单位工作。 Blender的默认值是米单位,但是检查总比处理场景中的巨型或微小模型要安全得多。 在Blender的右侧面板中,选择“场景”选项卡,并确保将“单位”设置为“默认”或“仪表”。 坐标系 SceneKit在“ Y向上”系统中运行,这意味着Y轴朝上,而Blender的Z轴朝上。 在导出场景并将其加载到SceneKit时,我们需要意识到这一点。 通常这不是问题,因为出口商通常会负责转换。 根据您使用的是自定义导出器还是在不同的坐标系中工作,可能需要在建模应用程序内部旋转模型。 管道 从艺术家那里获得模型或自己完成所有工作时能够快速工作的秘诀是拥有良好的工作流程。 在这种情况下,我们需要一个良好的管道来以尽可能少的按摩和处理将模型带入我们的经验。 搅拌机加工和出口 我们首先要考虑的是我们是否要使用AR世界中文件中的模型来源。 在此示例中,我们将直接从3D模型文件创建AR场景,因此我们不会做太多更改。 确保稍后进行更简单的导入的一件事是确保文件路径是相对的,以便以后稍后导入或必须将文件传输到另一台计算机时,纹理的路径将继续指向有效文件。 归一化 我建议将每个模型的当前位置,旋转和比例标准化为基准值。 例如,如果在建模过程中将模式缩放为(0.87,0.92,0.87)以更好地适合场景,则应用该缩放将使当前缩放为(1.0,1.0,1.0),但将模型保持在该大小你有过。 这可能会干扰设置为特定值的动画,但是对于静态模型而言,它可以很好地工作,并且如果我们要设置比例或旋转值的动画,可以让我们在代码中进行某些假设。 为了规范当前值,我们必须使用Blender的Apply选项应用于对象。 通过单击场景层次面板旁边的+按钮,打开属性面板。 选择模型将向我们显示以下属性。 在这里我们可以看到对象具有旋转和比例。 我们将删除对象上的旋转,但将比例保持在它们所处的值(这是我们的美术师打算如何显示对象),但是我们要做的是将这些值设为默认值或身份值。 选择对象后,我们从底部菜单栏中选择“ 对象”->“应用”->“旋转和缩放”菜单项。 完成此操作后,我们可以看到旋转值分别为(0,0,0),缩放比例为(1.0,1.0,1.0),正是我们想要的值。 在这种特殊情况下,这些对象是单独的网格对象,我们现在要做的是将它们组合在一起,以便我们可以整体上操纵这些对象。 让我们创建一个父转换并将所有这些对象作为其子对象。 从3D视图底部的“添加”菜单中,选择“ 添加”->“空”->“平轴” 。 在“层次结构”视图中,将“ Empty”对象重命名为“ […]

介绍WRLD挑战赛的获胜者

WRLD最近为开发人员使用任何WRLD SDK创建最有用的应用程序或身临其境的体验带来了全球性挑战。 比赛于10月1日开始,一直持续到12月31日。 WRLD从VR驱动的旅行应用程序到身临其境的健身游戏,再到导航应用程序再到飞行游戏,都对这一挑战做出了很好的回应。 提交的创意与WRLD SDK结合在一起,是无止境的。 根据WRLD平台功能的创造力,相关性,质量和使用情况对获奖者进行评判。 认识获奖者: 有用的应用类别的获胜者: YouAnchor YouAnchor是Yosun Chang推出的第一个iPhone X应用程序,可让您成为自己的现实世界化身中的化身锚。 用户可以用自己的脸庞伪造自己的个性化头像,并在自己的作品中加注星标,以欣赏风景如画的美景,随时随地共享和直播。 该应用程序的目标用户是想个性化自己的化身并通过WRLD 3D地图进行实时流播的所有人。 应用程序的质量以及概念的独特性是决定其成功的因素。 该应用程序目前可以在iPhone X上查看,但不久之后还将对其他手机开放。 您可以在Github存储库中查看YouAnchor。 游戏/沉浸式体验类别的获胜者:天使世界 该游戏由肯尼·汉森(Kenny Hansen)创建,专注于解决VR内容的三个主要问题:不中断沉浸感就很难移动,通常是一个狭窄/封闭的环境,而且很孤独。 Angel World旨在提供一种开放,自由,富有表现力和深度的开放世界体验,使您可以在任何地方飞行以与世界各地的玩家交流。 在WRLD的3D地图中飞行的感觉同时空灵而令人上瘾。 该应用程序主要用于房间规模的VR用户,肯尼(Kenny)打算在夏天推出更完美的体验。 最后,非常感谢所有参与#WRLDChallenge的开发人员和设计师。 我们希望将来也能举办更多此类比赛。 敬请关注!

将.dae模型导入SceneKit

我们最近一直在开发一款相对知名的“不稳定方块塔”游戏的AR版本,我们决定将其命名为Toppler。 我们采取的第一步就是使用Blender设计木块,然后直接在SceneKit中使用它们。 我将详细介绍将3D模型导出为.dae (数字资产交换)文件的过程以及如何将其与SceneKit一起使用。 您可能倾向于将其视为一个简单的步骤,但是需要注意一些事项,并且如果您以前没有做过此主题,那么缺少有关该主题的文档就尤其具有挑战性。 1.导出.dae文件 我使用Blender来制作木制积木(我将跳过积木创建步骤,这可能是以后的主题)。 您将在Blender中采取的最后一步是导出您的创作。 经典菜单,只需点击文件>导出> Collada(.dae)。 您将看到一个带有多个选项的导出窗口。 我们将感兴趣的选项是Selection Only 。 取消选中该复选框将导出场景中的所有内容(例如:灯光,照相机等)。 在这里,我们只希望将木块导出,因此我们将确保之前已选择它,然后将其选中。 选择一个适当的路径,然后单击右上角的“ 导出COLLADA”按钮。 导出后,您将在其纹理旁边找到导出的DAE文件(如果有的话)。 您甚至可以通过QuickLook获得不错的预览。 2. .dae文件 .dae文件格式(或COLLADA文件)已由“ 协作设计活动”定义。 就像定义3D对象各种特征的XML文件一样简单。 您将在文件中找到各种库,这些库将用于描述场景。 例如,我们将找到library_images来引用我们的纹理, 引用了我们的纹理和效果的library_geometries ,声明了可用几何形状的library_visual_scenes ,以及保存我们的场景元素并引用所需材质和几何形状的library_visual_scenes部分。 这里没有其他小节。 随时使用您喜欢的文本编辑器打开.dae文件,以亲自检查一下。 3.导入Xcode 使用Blender建模3D对象时要了解的一件事是与Xcode使用不同的坐标系: 在Xcode中,Y轴描述高度,而Blender中的Y轴描述深度(并且反向观察适用于Z轴)。 幸运的是,Xcode知道如何处理坐标系之间的这种差异。 如果查看Xcode中的scnassets资源文件夹,您会注意到“ 始终使用Y轴 ”选项。 意思是 : Xcode将强制执行自己的坐标系,并将转换任何使用不同坐标系的对象。 现在,只需将.dae文件及其纹理拖放到.scnassets文件夹中即可。 Xcode将自动使用适当的轴设置对其进行转换,您将能够使用Xcode Scene Editor打开它并预览3D对象。 如果最终将纹理.png文件移动到其他位置,请确保使用“材质检查器”将其重新分配给所需的材质。 4.转换为.scn 如果要使用场景编辑器(或任何特定于SceneKit的设置)更改3D对象的物理行为,则需要将模型转换为.scn文件。 在Xcode中预览模型时,请点击编辑器菜单,然后点击转换为SceneKit场景文件格式 。 然后你走了! 您最终将获得一个.scn文件,准备在SceneKit中完全使用它。 现在,您可以将其拖放到另一个场景中,或者可以通过代码将其导入并将其根节点添加到父SCNNode 。 […]

Primeros Pasos con ARKit

十一月十一日在iOS 11上的发布会上,您将收到更多关于ARKit的信息。 iOS框架的清晰实现。 虚拟现实的存在于iOS上的存在,而虚拟现实的存在则在虚拟现实中得以实现,而在大多数情况下,这种行为就存在于新闻媒体中。 在iOS平台上,您可以通过视觉工具(VIO)组合视觉信息(VIO)。 ARKittienelacapacidaddereconocerlascaracterísticasmás著名的Lasimágenes,现实的侦探对比检测器的差异,在视频和视频的位置。 您可以在teoría的despuésde Toda laTeoría度假,也可以在墨西哥的tirarlíneasdecódigo度假。 ¿Cómoempezamos un proyecto de realidad aumentada? 在Xcode上的第9个版本,它们是“增强现实应用程序”。 不适用的常规技术:SpriteKit,SceneKit o Metal,电子游戏,电子游戏,3D场景摄影机等。 从苹果到苹果的视频聊天,从苹果到苹果的存在,从游戏到游戏,从头到尾都是真实的游戏Tener unos conocimientosbásicosy muchaimaginación。 实名制制的唱片(唱片,唱片,没有模拟唱片)在发行中。 您可以在ARKit上购买自己的产品和服务。 Para empezar,necesitamosañadirnuestro escenario,este caso和al trabajar con SceneKitseríaun objeto del tipo ARSCNView。 @IBOutlet var sceneView:ARSCNView! 在视图中将出现escena的配置。 ARWorldTrackingConfiguration以及您在escena上的新的配置文件中使用了Aquíestálomásbásicopara que funcione。 覆盖func viewWillAppear(_动画:Bool){super.viewWillAppear(animated)//创建会话配置let configuration = ARWorldTrackingConfiguration()//运行视图的sessionseneView.session.run(configuration)} 您可以在viewDidLoad中轻松地进行操作。 在3D显示器上显示3D图像。 覆盖func viewDidLoad(){super.viewDidLoad()//设置视图的委托sceneView.delegate = self //显示诸如fps和计时信息之类的统计信息sceneView.showsStatistics […]

在iPhone X上使用面部跟踪进行3D ARKit

iOS开发人员Peter Norrby在Twitter上演示了他即将推出的应用程序“ Parallax View”的嘲笑。 在其中,您可以在显示器上看到3D图像,该图像随着设备倾斜而改变了用户视角。 这是Cupertino的ARKit在iOS开发平台上增强现实创造力的另一个示例。 利用iPhone X的面部跟踪功能,应用程序可以利用精确的TrueDepth相机,并通过根据其脸部位置更改显示器上的3D图像来向用户提供反馈。 AppStore中还有其他类似的应用程序,但是没有一个使用iPhone X的最新硬件进行人脸跟踪。 最初发布在 imthemobile.guru上 。

ARKit基础知识—世界跟踪和定位101🗺

在本教程中,我们从头开始设置一个基本的ARKit应用程序,并了解ARKit应用程序中包含的组件。 具体来说,我们将专注于世界跟踪和定位。 定位🎯 关于定位的第一件事是节点的位置始终相对于父节点。 为了定义节点的位置,我们使用SCNVector3。 SCNVector3是3D向量。 在我们的SCNVector3节点中,有三个参数分别代表我们的x,y和z轴。 node.position = SCNVector3(0,0,0) 您可以通过将节点设为场景根节点的子节点来将其放置在场景视图中。 根节点是一个节点,没有形状,大小或颜色。 sceneView.scene.rootNode.addChildNode(节点) 如果我们运行我们的应用程序并触摸“添加”按钮,我们会发现我们的盒子直接添加到了我们的世界原点。 现在只剩下这些,直到下一次。 #TFH✌🏾

增强现实-简单的技术介绍

大家好,我又是安东尼奥 👋上一次我们进行互动时,我写的是关于如何使用外部传感器将iPhone变成Brythm呼吸频率监测器的信息。 但是,这次,我将向大家介绍增强现实(简称AR)的惊人世界。 突然的主题转变并非无处不在,而是来自Apple的WWDC 2018活动,在该活动中他们展示了他们正在从事的许多项目,取得了多大的成就以及还有待改进的地方。 在他们的许多主题演讲中,其中一位谈到了最新的AR尝试:ARKit2。这反过来激起了我对该主题的兴趣,并且由于我有一些空闲时间并想要一个新的宠物项目,所以……在这里😅因此,不费吹灰之力,让我们直接潜水。 增强现实到底是什么? 很多人将其误认为是虚拟现实,但我希望到本文结束时,您能够清楚地分辨出他们的区别,如夜间🌃和白天☀️🏙。 您可能已经注意到,您的身体和思想存在于被您视为“ 现实”的时空混合之中,如今,您甚至可以“存在”于计算机生成的被称为“ 虚拟现实”的时空混合之中。 但是,在这两种极端之间,可能存在其他类型的现实,其中“正常”现实和虚拟现实在不同程度上交织在一起,其中之一就是增强现实 。 正如我们所看到的, 增强现实作为一个概念意味着在现实中添加了一些虚拟现实,以增加额外的风味,但又不至于使其不堪重负,或者换句话说,重点应该放在将虚拟元素引入物理世界中而不是相反。 从概念上来说,这一切似乎都不错,但它带给我们以下问题(或任何较不深奥的版本): 增强现实体验应遵循哪些属性和规则? 事实证明,这包含三个关键组成部分: 1)它必须结合虚拟和真实信息,以真实世界为主要行动场所; 2)它必须与实时更新交互; 3)它必须在物理环境中的3D空间中注册虚拟信息。 本质上,在物理环境中移动时,用户的动作(移动/交互)会对渲染的虚拟元素产生直接影响,并且所有这些都是实时发生的。 如果密切注意,这些规则不会区分特定的输出设备或交互介质,这意味着从理论上讲,AR不仅限于显示和视觉刺激。 audio但是,音频,触觉,嗅觉和味觉AR很难实现。 既然我们知道了什么是AR,您可能会倾向于认为它已经存在很长时间了,这是错误的。 😶增强现实作为一个概念已经存在了数十年,实际例子也很多而又丰富,因此让我们快速看一下这些年来这一切已经发展到了什么程度。 我保证不会让您厌烦可怕的数学细节,我在所有这些工作中所扮演的角色是展示AR变得多么棒! 😜 以前没有使用简单的叠加层向现有任务添加信息的意图,这一切始于1965年伊凡·萨瑟兰德(Ivan Sutherland)首次提出“最终显示器”并于1968年实现。这种头戴式显示器(HMD)的绰号是“达摩克利斯之剑” ,因为它必须悬挂在天花板上并悬挂在用户的头上。 它包括头部跟踪,三维移动自由度和透明光学元件。 因此,VR和AR诞生了! 作为理论概念……技术赶上了几十年,在1990年代,AR发现了自己的现实生活中的应用程序来协助工人进行室内组装和维护。 直到1999年,AR软件和硬件仅用于学术研究和开发,或者用于非常特殊的工厂设置,但是随着ARToolKit的发布,这种情况发生了变化。 它是第一个用于AR的开源软件平台,并具有一个使用黑白基准(也称为基准标记)的3D跟踪库,可以轻松地在常规激光打印机上进行打印。 基准是什么? 等一下,让我们重新考虑一下这个想法。 如果您熟悉条形码和QR码,知道基准标记没有什么不同也不会感到震惊。 所有这些都易于生成,可唯一识别的,机器可读的数据可视表示形式; 但是,条形码和QR码通常用于存储有关放置物品的信息(ID号,来源来源,相关的URL等),而基准点则用于建立相对于它们的位置,方向和比例。 您可能已经猜到了,基准标记被认为是AR的救星。 🙌仅依靠“简单”的计算机视觉算法和最少的真实世界入侵,即可非常轻松地将虚拟元素附加到物理世界对象上。 回到历史课 到1990年代末,已经有了可靠的网络摄像头,在2000年代初,我们目睹了移动设备的激增,因此,开发出首款具有AR功能的手持设备只是时间问题。 我们现在甚至还没有在谈论智能手机! 还记得PDA吗? 男孩,很久以前… 无论如何,手持设备突然变成了头戴式显示器的可靠替代品,不足为奇的是,近年来,它们已成为开发增强现实体验的最具成本效益的方式,更重要的是,使它们可用于更广泛的领域用户群。 如今,几乎所有智能手机都可以支持AR。 它所需要的只是一台摄像机,一台显示器和足够的计算能力,以确保与渲染的虚拟元素进行“实时”交互。 检查,检查和三重检查。 ✅ 因此,正如我们所看到的,AR的起源已经走了很长一段路,如今,它已经实现了惊人的壮举,但是如果您认为是这样,那么您最好坚持自己的袜子,因为您正在兜风! 🎢让我向您展示一下增强现实已经具备的功能以及未来的期望。 […]

ARKit 2简介-世界地图

按照系列,第二部分介绍ARKit 2中的World Mapping 。系列的其余部分如下: 影像追踪 世界地图 物体扫描 视觉整合(即将推出) 金属和反射性表面(即将推出) World Mapping是ARKit 2中一个了不起的新功能,它允许用户在以前的AR体验中保存的环境中进行保存和加载。 例如,您可以在后院的桌子周围移动,捕获尽可能多的东西,然后在桌子中间放一碗水果。 当天晚些时候,您可以将应用重新打开到同一张桌子。 该应用程序会自动检测到您之前保存的同一张桌子,然后重新加载之前的场景-在这种情况下,桌子上放着一碗水果。 物理3D映射 使用ARKit 2,您的应用程序将基本上能够以3D映射您的物理空间。 通过移动对象(如上表),您将为您的应用提供相同物理环境的多个视角。 这些观点通常称为锚点。 特征点 使用世界地图,您的设备还将扫描许多特征点,这些特征点将再次用于识别空间。 这些特征可以驻留在平面,拐角,点上,或者仅驻留在唯一的感兴趣的随机区域上。 分享经验 ARKit中的世界地图允许您与另一台设备共享地图,例如另一台具有ARKit 2(iOS 12或更高版本)的iPad或iPhone。 这样,您就可以进行实时交互并体验相同的事物,然后再次返回。 您还可以建立网络体验,并在诸如游戏之类的事物上同时互动。 Apple演示的一个示例(是开源的)是SwiftShot。 你可以在这里下载。 持久的AR体验 这样,您可以在关闭应用程序之前保存世界地图,然后在下次打开应用程序时将其加载。 如果在与保存时相同的物理空间中打开,则虚拟体验将继续。 一个示例用例是在墙上或桌子上加载并保存一个木板,该木板上有您需要记住的东西列表(非常乏味的示例,但无论如何)。 每次您在办公桌附近或与该板子在同一位置打开该应用程序时,它都会像从未离开过一样重新加载。 实例化和使用世界地图所需的主要方法是getCurrentWorldMap(completionHandler:) 。 这使您可以保存会话的世界地图。 然后,可以将其分配给配置的initialWorldMap属性,并使用run(_:options:)启动具有相同锚点和物理世界地图的另一个会话。 从会话对象中检索世界地图 会议。 getCurrentWorldMap {worldMap,错误 守卫 let worldMap = worldMap else { showAlert(错误) 返回 } return […]

ARKit飞机,3D文本和命中检测

在本系列的第2部分中,我们通过提供一些交互性并更加熟悉SceneKit来构建我们的AR场景。 我们还查看了渲染相机,并使用它的位置(即用户在现实世界中的位置)在我们的球体对象中驱动动画。 在本文中,我们将开始检测水平面,并将对象附加到这些平面上。 可以在以下位置找到本教程的代码:https://github.com/AbovegroundDan/ARTutorial_Part3 检测飞机 ARKit通过didAdd / didUpdate / didRemove节点回调提供了完整的生命周期回调,以用于何时检测到平面,何时更新平面以及何时移除平面。 需要注意的一件事是,当首次检测到飞机时,它似乎跳了一点。 这是ARKit改进其所见所见的准确性,并调整锚点。 如果继续扫描地板,将继续看到特征点,但是平面不会增长或以任何方式变化以填充新发现的空间。 这是因为我们没有响应来自渲染器的didUpdate调用。 我们可以通过跟踪锚点和属于它们的平面来改善实现。 如果收到didUpdate回调,我们将查找锚点,找到飞机,并使用该锚点的新信息调整飞机。 跟踪飞机 为了跟踪飞机,我们将使用一个简单的字典将锚点映射到飞机。 这为我们提供了一种查找和修改相应平面的简便方法。 在我们的视图控制器中,我们将添加字典定义: 现在我们知道了曲面的位置,我们可以开始添加锚定到其上的项目。 而不是像第1部分和第2部分中那样使用外部3D模型,我们将使用一些3D文本。 让我们开始创建一个给定任意文本的方法,该方法将为我们提供一个具有3D文本几何形状的SCNNode。 接下来,我们将添加一个方法来将此父节点添加到另一个节点。 文字看起来不错,但是是浮动的。 这是因为文本容器的枢轴点位于实际文本所在位置的左下角。 枢轴点描述了对象的原点。 如果旋转对象,则将旋转点用作旋转对象时的中心点。 如果按比例缩放,也将从该点开始。 这可以用来创建一些有趣的效果。 现在,让我们尝试“接地”文本对象,以使它看起来像是坐在飞机上,而不是漂浮在飞机上。 在我们的createTextNode方法中,就在我们返回节点之前,添加以下代码: 现在运行代码将为我们提供假定位置的文本。 我们可以看到我们的文字在那儿投射了一些阴影,但是由于透明的网格,我们看不到它的阴影。 我们可以在SceneKit中做一些技巧来使阴影更好地显示。 我们将在此处使用这些技巧之一,并创建一个不会渲染的平面,但它将接受从其他对象投射的阴影。 在2017年WWDC SceneKit:新增功能(https://developer.apple.com/videos/play/wwdc2017/604/)会话中对此技术进行了说明。 让我们转到定向光定义并向其中添加以下几行: 仅此而已。 如果您在该GIF中注意到,我们将分散文本。 为此,让我们看一下将文本放置在我们点击的位置,而不是平面锚点的当前位置。 为此,我们将一个新参数传递给addText调用,并带有我们希望对象所在的位置。 我们将从SCNHitTestResult对象获得此位置,该对象从我们的点击命中测试返回。 修改didTapScreen调用以获取水龙头的位置,并将该信息传递给addText调用: 现在就这样。 收到了您接下来要看的内容的请求? 让我们在评论中知道! 不要忘记关注s23NYC:工程博客,其中发布了耐克的数字创新团队的很多精彩内容。 AbovegroundDan / ARTutorial_Part3 通过在GitHub上创建一个帐户来为AbovegroundDan / ARTutorial_Part3开发做出贡献。 […]