ARKit 3.5更新文档翻译

终于等到清明节假期可以来更新点内容了,ARKit 3.5是11天前发布的,也拖的够久的了。废话不多说,正文开始。 如何查看Apple文档的更新? 以ARKit文档为例,虽然我们知道了苹果更新了ARKit 3.5,但是我们如何找到更新的内容呢?我们先看一下默认的界面: 根本啥也看不出来啊,感觉跟之前是一样的。先别急,我们可以看一下右上角的“API Changes: Show”字样,点击一下,看看会有什么变化: 这样文档就把新版本文档的修改内容展示出来了,具体的修改、增加和废弃条目的数量也会展示出来。这个数量只是表示当前页面的数量,具体各层级文档的修改数量要到各个层级页面去查看。接下来继续看看ARKit 3.5究竟更新了哪些文档吧。 修改内容

  • Gunner
    Gunner
12 min read

ARKit 3.5发布

ARKit 3.5简介ARKit 3.5通过在iPad Pro上使用新的LiDAR扫描器和深度感知系统,使得AR体验到达了前所未有的真实度。新的场景几何API(Scene Geometry API),让你拥有实时捕捉3D世界的能力,并为虚拟物体赋能了物体遮挡和真实世界的物理规则。所有基于ARKit的应用体验都会自动受益新的AR放置功能(AR placement)和进阶的动作捕捉(Motion Capture)与人体遮挡(People Occlusion)。场景几何场景几何允许你创建你所处空间的拓扑地图,并为地板、墙壁、天花板、窗户、门和座椅打上标签。这项对于真实世界的深度认知技术,解锁了虚拟物体的物体遮挡和应用真实世界物理规则的能力,并能为你提供更多的信息来增强你的AR工作流。评: 这个功能蛮牛逼的,

  • Gunner
    Gunner
4 min read

从0到1用ARKit创建图像识别应用

0. 准备工作ARKit要求iOS设备的处理器不低于A9。ARKit是无法在iOS模拟器中运行的Xcode苹果开发者账号(688人民币/年)1. 创建项目通过Xcode的 File->New->Project进入项目创建界面选择Single View App,并点击Next按钮。这里为什么不选择Augmented Reality App,是因为该项目会自动包含一套demo进去,我们目前需要的是一个干净的项目。输入项目名称,并选择签名团队,之后点击Next按钮 再选择项目创建的目录位置,就可以完成项目的创建了 2. 创建ARSCNView用来展示内容在storyboard的view中添加ARSCNView,这里是要把选中的控件拖入到对应的View下面。接下来我们通过“按住Ctrl + 拖拽” 将新添加的ARSCNView关联到代码的ViewController中,完成IBOutlet的创建,

  • Gunner
    Gunner
4 min read

如何申请服务商“小程序直播”

昨天(3.1日)看到了新闻“小程序直播”已经开放公测了,所以今天尝试来申请一个开发服务商试试。为什么不直接为已有的小程序添加直播功能,因为根据官方的原文,商家的小程序独立集成直播应该是在满足准入要求后通过邀请制的,没有收到邀请就没办法开。商户准入要求满足以下条件的电商平台、自营商家,即有机会被邀请到小程序直播公测中来:(同时满足以下1、2、3条件,加上4、5、6条件的其中之一即可。)1. 满足小程序18个开放类目(包括:电商平台、商家自营-百货、食品、初级食用农产品、酒/盐、图书报刊/音像/影视/游戏/

  • Gunner
    Gunner
4 min read
视频号暂停申请,但是伴随微信更新有了些小变化
微信

视频号暂停申请,但是伴随微信更新有了些小变化

1. 暂停申请 上一篇文章之后,有读者在文章下面留言说视频号无法申请了,我亲自尝试了一下,果然提示“视频号暂停申请,请等待下次开放”。 我在网上搜索了一下相关信息,发现并没有什么有用的,所以我猜测是视频号的第一波内测用户已经招募完毕了,等待内测优化之后再全面开放申请。没有申请到的朋友们也不用着急,估计很快就会继续开放申请了,欢迎大家点击屏幕最上方的 GunnerTalk > 关注公众号,后续我会第一时间在这里更新。 2. 视频号的违规 昨天收到了视频号给我发的一个官方消息,让我很纳闷,消息的内容是: 简介违规被清空 由于违反视频号运营规范,视频号简介被清空,继续违规会升级处罚。 甚是吓人,心想我这好不容易申请的视频号可不能被封了啊。问题应该出在“视频号简介”上,

  • Gunner
    Gunner
4 min read
ARKit

ARKit翻译-在AR体验中检测图像【代码】

对用户环境汇总的2D图像做出反应,并使用其位置展示AR内容。代码下载概述许多AR体验可以通过 使用已知的用户环境特性来触发虚拟内容的展示 的方法来增强体验。例如,一个博物馆的app在用户将他们的设备指向一副绘画时显示出一位虚拟馆长。或者在桌游中,当玩家将设备指向桌游板时会看到虚拟的物件。iOS11.3之后,你可以通过启用ARKit的图像检测来添加这些特性到你的APP中: 首先你需要提供已知的2D图像,接下来ARKit将会告知你在AR会话中这些图像曾经出现在何时何地。这个示例app会查找在app的资源目录(asset catalog)中所有的关联图像。当ARKit检测到这些图片中的一张时,app将会显示一条识别到图像的消息和一个简短的展示其场景中位置的动画。重要实例中包含的图像是为了符合多种苹果设备而专门设计的。为了使用这些图像来尝试该应用,选择一个适用于你的其他设备的图片,并将图片全屏展示在该设备上。接下来在一个不同的设备上运行示例代码项目,并将该设备的摄像头指向展示图像的设备。另外,你可以添加你自己的图片;查看下面的提供你自己的相关图片笔记ARKit要求iOS设备的处理器不低于A9。ARKit是无法在iOS模拟器中运行的启用图像检测图像检测是世界追踪AR会话的一个附加特性。(更多细节参见Tracking and Visualizing

  • Gunner
    Gunner
8 min read

ARKit翻译-追踪与变换图像【代码】

在用户环境中找到的矩形形状上创建图像,并增强其展现代码下载概述为了阐述通用的图像识别,这个示例app使用Vision来在用户环境中检测矩形图形,这些矩形图像很有可能是艺术品或照片。在iPhone或者iPad上运行这个app,并将设备的摄像头指向一个电影海报或者挂在墙上的相框。当app检测到一个矩形形状时,你从摄像头信息流中提取出图形定义的像素数据并创建一个图像。示例app通过应用一个Core ML模型来改变图像的外观从而实现风格变化。为了重复这个动作,你需要使用一个训练过的神经网络来实现实时图像处理。为了完成在用户环境中增强一个图像,你会用到ARKit的图像追踪特性。ARKit可以保持一个变化后的图像稳定的负载在原始图像上,即使用户在他们的环境中移动设备。当被追踪的图像自主移动时,ARKit同样会继续追踪,例如当app识别到公交车侧面的广告后,公交车开走了。这个示例app通过使用SceneKit来渲染图像在用户环境中检测矩形形状如下所示,你可以使用Vision实时检测摄像头信息流中的矩形。通过使用RectangleDetector来管理一个重复的计时器,其参数updateInterval为0.1秒,来实现每秒检测10次的操作。init() { self.updateTimer = Timer.scheduledTimer(withTimeInterval: updateInterval,

  • Gunner
    Gunner
9 min read

ARKit翻译-放置物体并处理3D交互【代码】

在真实世界平面上放置虚拟物体,并通过手势让用户可以与虚拟内容交互。代码下载概述AR体验的关键方面是能够混合虚拟和现实世界中物体的能力。一个平整的表面是放置虚拟物体的最好位置。为了辅助ARKit找到表面,应告知用户移动他们的设备来帮助ARKit准备该体验。ARKit提供了一个视图来为用户显示引导信息,引导他们移动手机视图到app需要的表面上。为了让用户可以通过点击屏幕放置虚拟物体到真实世界表面上,ARKit整合了射线投射功能,该功能提供了一个与平面点击位置相对应的物理空间中的3D位置。当用户旋转或移动他们放置的虚拟物体时,你应该对每个手势进行相应并将该输入关联到物理环境中的虚拟内容的展示情况上。笔记ARKit要求iOS设备的处理器不低于A9。ARKit是无法在iOS模拟器中运行的设置指导用户移动的目标为了让你的用户可以检测真实世界的表面,你需要使用世界追踪的配置项。为了ARKit可以建立追踪流程,用户必须实体移动他们的设备来让ARKit获取透视的场景。为了与用户沟通该需求,可以通过ARKit提供的展示了教学图和语言指导的视图,即ARCoachingOverlayView 。例如,当你启动app的时候,用户看到的第一件事就是指导叠加视图的信息和动画来告知他们重复性的左右移动他们的设备,为开始做准备。为了让用户可以在水平的表面放置虚拟物体,你需要对应的设定指导叠加视图的目标。func setGoal() { coachingOverlay.goal = .horizontalPlane }指导叠加视图将会根据你选择的目标呈现出指导信息。

  • Gunner
    Gunner
10 min read

ARKit翻译-通过SceneKit提供3D虚拟内容

使用SceneKit来添加真实3D物体到AR体验概述因为ARKit自动将SceneKit场景匹配到真实世界,所以要放置一个虚拟物体并保持其在真实世界的位置,只需要正确的设置该物体的SceneKit位置即可。举例来说,使用默认配置项,以下的示例代码完成了将一个10厘米的立方体放置在摄像头初始位置前20厘米的位置:let cubeNode = SCNNode(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)) cubeNode.position = SCNVector3(0, 0, -0.2) // SceneKit/AR coordinates are

  • Gunner
    Gunner
2 min read

ARKit翻译-ARSCNView

可以让你通过SceneKit来展示AR体验的视图声明class ARSCNView : SCNView概述ARSCNView类提供了最简单的创建增强现实体验的方法,该体验将虚拟3D内容与摄像头中的真实世界进行融合。当你运行视图提供的ARSession对象时:视图自动渲染来自设备摄像头的实时视频流作为场景的背景 视图的SceneKit场景的世界坐标系直接回应通过会话的配置项建立的AR世界坐标系 视图自动移动它的SceneKit摄像头来匹配真实世界设备的移动 因为ARKit自动将SceneKit场景匹配到真实世界,所以要放置一个虚拟物体并保持其在真实世界的位置,只需要正确的设置该物体的SceneKit位置即可。参见(Providing 3D Virtual Content with SceneKit)使用ARAnchor 类来追踪添加到场景中的物体并不是必要的,但是通过实现ARSCNViewDelegate 方法,你可以添加SceneKit内容到ARKit自动检测到的任意锚点。主题必要概念Providing 3D Virtual Content with SceneKit 通过SceneKit来添加3D物体到AR体验中var session: ARSession AR会话管理视图内容的运动追踪和摄像头图像处理var

  • Gunner
    Gunner
3 min read

ARKit翻译-ARView

一个可以让你通过RealityKit来展示AR体验的视图声明@objc class ARView : ARViewBase概述视同一个ARView实例来为用户展示渲染好的3D图形。你通常会添加一个单一视图到你的app的storyboard,然后会在你的代码里为这个视图添加outlet。或者,你可以通过编程在运行时创建并添加一个视图到你的视图层级,同样适用于其他视图。一个视图拥有一个单一Scene 实例,你可以通过只读的scene 属性来访问这个实例。你通过添加一个或多个AnchorEntity 实例来告知视图的AR会话如何将虚拟内容拴在真实世界的某物体上。对每个锚点来说,你通过附加一些列层级的其他Entity 实例便构建了场景的内容。此外,你同样可以使用视图来做如下事情:配置渲染选项,环境特征,和摄像头模式 处理平台适用的用户交互,交互形式如鼠标、键盘或者手势输入 在视图的指定点找到实体 通过访问数据统计和成像来帮助你调试你的app 主题创建一个视图(### Creating a View)

  • Gunner
    Gunner
11 min read

ARKit翻译-ARCoachingOverlayView

ARCoachingOverlayView一个展示用来引导用户的可视化视图声明class ARCoachingOverlayView : UIView概述这个视图提供给你的用户一个标准化的自带流程。你可以在会话初始化和受限的追踪条件下配置这个视图来自动展示,当给予用户明确的引导时,ARKit的世界追踪也会达到最好的体验。如下图片展示了用于水平和垂直平面的叠加视图,告知用户应该开始移动设备:这些图片展示了叠加视图的含义,即用户应该继续移动手机或者改变他们移动的速度:当你启动你的app时,指导叠加视图会要求用户通过移动设备来帮助ARKit建立追踪。当你选择一个特定的目标,例如找到一个平面,该视图便会将对应的引导显示出来。在指导叠加视图确定目标已经实现并且不需要更多的指导之后,它将会从用户的视图中隐藏。使用了指导叠加视图的示例app,可以参见Placing Objects and Handling 3D Interaction 。支持自动指导默认情况,activatesAutomatically 是开启的,因此你应该重写coachingOverlayViewWillActivate(_:) 来决定指导是否应该存在与进程中。通过协调你的行动来帮助用户关注这些引导,举例来说,通过在会话重新初始化时隐藏任何无关的UI。在终端之后重定位如果重定位被启用(

  • Gunner
    Gunner
4 min read

ARKit翻译-追踪并可视化平面

追踪并可视化平面检测物理环境中的表面并在3D空间中可视化其形状和位置。概述这个示例代码运行了通过在SceneKit视图中展示内容的一个ARKit世界追踪会话。为了展示平面检测,这个app可视化的表现了每一个检测到的ARPlaneAnchor 对象的预估形状,和一个关于它的边界矩形。在支持的设备上,ARKit可以识别多种真实世界的表面类型,所以app可以为每一个检测到的平面打上标识文字的标签。记录ARKit要求iOS设备的处理器不低于A9。ARKit是无法在iOS模拟器中运行的配置并运行AR会话ARSCNView 类是一个SceneKit视图,该视图包含了管理运动追踪和图像处理的 ARSession 对象,而这些都是创建一个AR体验所需要的。然而,为了运行一个会话,你必须提供一个会话配置项。ARWorldTrackingConfiguration 类提供了高准确度的运动追踪和内置特性来帮助你在真实世界表面上防止虚拟内容。为了开始一个AR会话,创建一个会话配置项对象,并设置你需要的可选项(例如平面检测),接下来在ARSCNView 实例的session 对象上调用run(_:options:) 方法:let configuration = ARWorldTrackingConfiguration(

  • Gunner
    Gunner
6 min read

ARKit翻译-ARAnchor

ARAnchor物理环境中某个关注物体的位置和方向声明class ARAnchor : NSObject概述为了追踪与摄像头相关的真实或者虚拟物体的静态位置和方向,创建锚点对象并通过add(anchor:) 方法将其添加到你的AR会话中。提示添加锚点到会话中可以帮助ARKit来优化锚点附近的世界追踪的准确性,因此虚拟物体江湖出现并停留在真实世界中的相关位置。一些ARKit特性将会自动添加特殊的锚点到会话中。当你开启相应的特性时,世界追踪会话便会添加ARPlaneAnchor, ARObjectAnchor, 和 ARImageAnchor 对象;人脸识别会话将会添加ARFaceAnchor 对象。子类相关如果你要额外创建你自己的ARAnchor实例来追踪你的虚拟内容在真实世界的位置时,你可以同样将ARAchor子类化来将自定义数据和你创建的锚点关联起来。当ARKit更新帧或者在一个ARWorldMap 中保存和加载锚点时,请确保你的锚点类工作正常:锚点子类必须满足ARAnchorCopying 协议的所有需求。ARKit调用init(anchor:) (通过一个后台线程)来从每一个ARFrame 拷贝你的锚点类到下一个。你的初始化方法的实现需要拷贝你添加的子类的所有自定义属性的值。 锚点的子类必须同样采用NSSecureCoding 协议。通过重写encode(

  • Gunner
    Gunner
4 min read

ARKit翻译-理解世界追踪

发现构建一个很棒的AR体验的支撑概念、特性和最佳实践概述一个AR体验的基本需求,也是ARKit的关键特性,就是创建并追踪 用户所处的真实世界空间 和 你可以建模虚拟内容的虚拟环境 之间的一致性。当你的app将虚拟内容和摄像头实时图像一起展示时,用户便体验到了增强过的现实: 即你的虚拟内容是真实世界的一部分的假象。在所有的AR体验当中,ARKit所使用的世界和摄像头坐标系都沿用右手公约: Y轴指向上方,Z轴(相关时)指向观察者,X轴指向观察者的右侧。通过会话的配置项,可以改变相对于现实世界的坐标系的原点和方向(详见worldAlignment)。AR会话中的任意一个锚点定义了他自己的坐标系,同样沿用右手,Z轴指向观察者公约;举例来说,ARFaceAnchor 类定义了一个用来定位面部特性的坐标系。世界追踪如何工作为了创建真实和虚拟空间的一致性,ARKit使用了一个叫做视觉惯性测距的技术。这个过程结合了 iOS设备的运动传感硬件 和 设备摄像头可见场景的计算机视觉分析

  • Gunner
    Gunner
4 min read

ARKit翻译-ARWorldTrackingConfiguration

ARWorldTrackingConfiguration监控iOS设备的位置和方向的配置,用来增强用户前方的环境声明class ARWorldTrackingConfiguration : ARConfiguration概述所有的AR配置项都是为了建立一个设备所处的真实世界和一个可以对虚拟内容建模的3D坐标空间的一致性。当你的app将虚拟内容混合与一个实时的摄像头图像中时,用户将会体验到你的虚拟内容是真实世界的一部分这样的一种幻觉。创建和维护这样一种空间之间的一致性需要追踪设备的运动。ARWorldTrackingConfiguration类通过6个自由角度(6DOF)来追踪设备运动: 具体来说就是,三个转动轴(滚动,缩放和摇摆)和三个坐标轴(x, y 和 z轴的移动)。这类的追踪可以创建混合的AR体验: 一个虚拟物体可以出现并停留在与真实世界相关的同样的位置,即使用户倾斜设备来从上方或下方观察物体,或者围绕着物体转动设备来观察物体的旁边和背后。图1 6DOF追踪使得无论设备旋转还是移动都可以维持AR成像世界追踪会话同样为你的app提供了一些列方法来识别或者与摄像头可见的真实世界场景中的元素互动:通过planeDetection 方法来找到真实世界水平或者垂直的平面,并将他们作为ARPlaneAnchor 对象的形式添加到会话中。 通过detectionImages 方法来识别和追踪已知的2D图像的运动,并将他们作为ARImageAnchor 对象添加到场景中。

  • Gunner
    Gunner
4 min read

ARKit翻译-ARConfiguration

ARConfiguration一个用来定义 在某个时间你在会话中启用的某些ARKit特征 的对象声明class ARConfiguration : NSObject概述ARConfiguration为AR体验可以拥有的一系列不同可选项定义了一个基类。你无法自己分配一个ARConfiguration对象;你只能实例化它的一个子类。选择你的配置为了实现你的AR体验的特性,你需要创建如下子类并通过run(with:)方法在会话上运行。一个会话同一时间只能运行一个配置项,所以你需要选择一个最有利于实现预期AR体验的配置项。ARWorldTrackingConfiguration 追踪与ARKit通过后置摄像头可能找到并追踪的任何平面、人或者已知图像或者物体相关的设备的位置和方向。 ARBodyTrackingConfiguration 让你可以通过设备的后置摄像头追踪一个人、平面和图像。 AROrientationTrackingConfiguration 通过设备的后置摄像头只追踪设备的方向。 ARImageTrackingConfiguration 通过设备的后置摄像头只追踪通过trackingImages 提供的已知图像。 ARFaceTrackingConfiguration 通过设备的自拍摄像头只追踪人脸,包括他们的移动和面部表情。 ARObjectScanningConfiguration 通过设备的后置摄像头在运行时收集关于你希望你的app后续识别的指定物体的高保真数据。 ARPositionalTrackingConfiguration 在3D空间中只追踪设备的位置。 选择帧的特性一些配置项支持与会话的帧相关的子特性。你可以通过设置在配置项的frameSemantics

  • Gunner
    Gunner
3 min read

ARKit翻译-ARSession

ARSession控制AR体验的主要对象声明class ARSession : NSObject概述ARSession对象协调了ARKit为你创造增强现实体验的主流程。这些流程包括了从设备的运动传感硬件读取数据,控制设备内置摄像头,和对摄像头捕获的图像进行图像分析。会话通过结合这些结果,来实现设备所处的真实世界与创建AR内容建模的虚拟世界的一致性。创建一个会话任何一个AR体验都需要一个ARSession。如果你实现了一个自定义的渲染器,你就需要自行实例化会话。let session = ARSession() session.delegate = self如果你使用了任何一个标准的渲染器(例如ARView, ARSCNView或者ARSKView),渲染器便会为你创建一个会话对象。当你想要与你的app的会话进行交互时,直接通过app的渲染器访问即可。let session = myView.session运行一个会话运行一个会话需要一个配置项。ARConfiguration的一系列子类决定了ARkit如何追踪设备的位置和相对真实世界的移动,因此它也决定了你创建AR体验的类型。例如,ARWorldTrackingConfiguration可以让你通过设备的后置摄像头增强用户对周围世界的视野。主题1. 配置和运行一个会话func run(

  • Gunner
    Gunner
9 min read

ARKit翻译 - 必要概念1

选择哪个摄像头来进行增强现实可以通过前置或者后置摄像头来增强用户的环境概述iOS设备都会配备两个摄像头,但是针对ARKit会话,你需要选择哪个摄像头的信息流来进行增强。从ARKit3开始,你可以通过ARKit同时从两个摄像头获取数据,但是在同一时间内你仍然需要选择一个摄像头信息流来展现给用户。通过后置摄像头来实现现实增强最常见的AR体验,是将虚拟内容增强于iOS的后置摄像头获取的影像中,从而赋予用户一个观察周围世界、与周围世界互动的新方式。ARWorldTrackingConfiguration 提供了这样的体验:ARKit追踪用户生活的真实世界,并将其与坐标空间对应起来,因此你便可以在坐标空间中放置虚拟内容。世界追踪同时通过提供更多的特性使得AR体验更加沉浸化,例如识别用户环境中的物体和图像,并可以应对真实世界中的不同光照条件。通过前置摄像头来实现现实增强针对拥有TrueDepth摄像头的iOS设备,通过 ARFaceTrackingConfiguration 提供的关于用户人脸的姿势和表情的实时追踪,你可以增强前置摄像头的信息流。根据这些信息,举例来说,你可以在相机界面中展现用户的脸庞,并为之提供一个逼真的虚拟面具。你同时可以忽略相机界面,使用相机的面部表情数据来生成虚拟角色动画,就像我们再iMessage中看的Animoji应用。

  • Gunner
    Gunner
2 min read

ARKit翻译 - 必要概念2

验证设备支持和用户权限检查你的app在运行时是否可以使用ARKit以及是否尊重用户的隐私概述ARKit要求操作系统版本不低于iOS 11.0, 同时设备的处理器不低于A9。一些ARKit特性需要更高的iOS版本和指定机型。ARKit同时需要使用设备的一个摄像头,所以你需要配置iOS隐私控制,从而使得用户可以授权你的app有权限使用摄像头。如何处理设备的兼容性要看你的app如何使用ARKit:如果你的app的基础功能就需要使用AR(使用后置摄像头): 在你的app的Info.plist文件的UIRequiredDeviceCapabilities 区域添加arkit key。通过使用这个key, 你的app将只提供给ARKit兼容的设备。 如果增强现实是你的app的次要功能: 通过测试相应的ARConfiguration子类的isSupported属性,来确认当前的设备是否能够满足你需要的AR配置。 如果你的app使用人脸追踪AR: 人脸追踪需要iPhone X上的TrueDepth前置摄像头。你的app同样会提供给其他的设备,所以你必须检测ARFaceTrackingConfiguration.isSupported 属性来决定人脸识别功能是否支持当前设备。 Tip在你的app的界面提供AR功能之前检测isSupported属性,因此用户在使用不被支持的设备的时候就不会因为使用不了这些功能而感到失望了处理用户同意和隐私当你的app想要使用ARKit时,用户必须显式的授权app摄像头的使用权限。ARKit将会在第一次运行AR会话时向用户请求摄像头权限。iOS要求你的app提供一条在请求用户摄像头或麦克风权限时展示的静态信息。你的app的Info.

  • Gunner
    Gunner
2 min read

ARKit翻译 - 必要概念3

管理会话生命周期和追踪质量无论是在当前的会话状态还是从中断中恢复都能够保证用户得到通知概述世界追踪的AR会话使用了一个称为视觉惯性测距(visual-inertial odometry) 的技术。这个过程通过将摄像头的图像进行计算机视觉分析与运动传感器数据相结合,来追踪设备在真实世界中的位置和方向,也被称为姿态(pose),并在ARCamera transform属性中表述出来。为了得到最好的结果,世界追踪需要持续不断的传感器数据和具有视觉复杂度或者可识别特征的摄像头图像。当你开始一个会话的时候,ARKit需要花一点时间来收集足够的数据来对设备姿态进行建模。在一个会话中,影响世界追踪质量的条件会发生变化。可以使用ARSessionObserver代理方法和ARCamera属性来跟踪这些变化。基础生命周期和AR会话下图展示了当你开始运行AR会话时追踪状态的变化不可用 受限(初始化中) 正常当你刚刚运行一个会话的时候,对于提供的帧的追踪状态是ARCamera.TrackingState.notAvailable , 表示ARKit还没有收集到可以预估设备姿态的足够信息。处理一些帧之后,追踪状态将变为ARCamera.TrackingState.limited(_:) , 表示设备姿态可用,但是准确性不确定。受限的状态一般都包含一个原因就是较低的追踪质量;在这个例子中,

  • Gunner
    Gunner
7 min read

ARKit 翻译

通过整合iOS设备的摄像头和运动特性,在你的app或者游戏中提供增强现实体验综述增强现实(Augmented reality - AR)描述一种将2D或者3D元素通过一个设备的摄像头添加到实时影像当中的用户体验,这种方法使得这些元素毫无违和感的出现在真实世界中。ARKit整合了动作追踪(motion tracking),摄像头场景捕捉(camera scene capture),高级场景处理(advanced scene processing)和为了简化构建一个AR体验任务的便捷显示。你可以使用这些技术通过iOS设备的前置或后置摄像头来创造多种多样的AR体验。主题必要概念{} 选择哪一个相机来实现增强(既可以通过前置摄像头也可以通过后置摄像头来增强用户所处的环境) {} 验证设备支持和用户权限(检查你的app在运行时是否可以使用ARKit以及是否尊重用户的隐私) {} 管理会话(Session)生命周期和跟踪质量(无论是在当前的会话状态还是从中断中恢复都能够保证用户得到通知) class ARSession (用来控制AR体验的主要对象)

  • Gunner
    Gunner
8 min read

The Yiddish Policemen's Union 犹太警察工会

一天逛书店,在科幻区看了一本卖相还不错的书,随即就买回来看了。本来我是冲着科幻小说去的,结果这书还真就不是传统意义上的科幻,然而读后却带来了很多不一样的感觉。先谈谈科幻小说?首先看这封面上获的奖: 雨果奖 星云奖 轨迹奖 侧面奖,我一寻思得这些奖的都是啥?阿西莫夫的《神们自己》《基地边缘》 弗兰克·赫伯特的《基地》 威廉·吉布森的《神经漫游者》 亚瑟·克拉克的《与拉玛相会》 刘慈欣的《三体》 等等,侧面奖好像没听说过,唉,应该都差不多吧再看这封面的设计风格,多多少少有点赛博朋克元素吧,又有警察元素,

  • Gunner
    Gunner
7 min read
Mac 升级 Catalina 后 SSH到服务器后中文乱码问题
mac

Mac 升级 Catalina 后 SSH到服务器后中文乱码问题

先检查一下本地的语言设置,在命令号中输入locale,如果返回的是如下图所示:那么就说明是LC没有进行相关的设置。2. 接下来在终端对应的配置文件中加上export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 即可。bash的配置文件路径为: ~/.bashrc 或者 ~/.bash_profilezsh的配置路径为: ~/.zshrc3. 如果用的是fish,那么就要修改~/.config/fish/config.fish,在文件最后添加set -x LANG zh_

  • Gunner
    Gunner
1 min read
LEGO宠物店(10218)改装加灯+树莓派+HomeKit控制
lego

LEGO宠物店(10218)改装加灯+树莓派+HomeKit控制

准备工具涉及到的工具如下:带灯配件(购于淘宝)USB扩展器----------如果不需要自动控制,下面的工具就不需要了------树莓派继电器杜邦线(导线)剪线钳螺丝刀镊子绝缘胶布焊台、焊锡和松香(可选,如果想让接线更牢固,建议使用)改装加灯原始状态官方原图参考购买链接: 京东网上商城带灯配件我是直接在淘宝上搜的乐高宠物店灯,找到的一家店。买过来的配件会自带安装说明书,每一步讲的都很详细。另外如果不需要用树莓派自动控制,直接配一个USB HUB就可以亮起来了!开始改装加灯因为说明书里面会讲的很详细,我这里就不赘述了,简单的放几张过程图。上来先测一下灯都是OK的开始拆解左侧楼装完一层外墙灯盖上二楼盖上三楼通电测试拆解右侧楼一层待安装灯状态一层安装好灯后状态右侧外墙灯通电测试安装完外墙灯、室内灯和路灯后的整体通电测试。到这一步,就完成了改装加灯过程,不需要自动控制的,通过控制USB HUB开关就可以了。继电器接线输出端接线参考图中所示,我们将USB线的其中一根线剪短,分别接到继电器的"公共端"

  • Gunner
    Gunner
6 min read