首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ARKit:增强现实技术在美团到餐业务的实践

此外,还可以探测到预设的 52 种丰富的面部动作,如眨眼、微笑、皱眉等等。...但如官方文档所言,它也有两个致命的缺点: 受环境光线质量影响 受剧烈运动影响 由于在追踪过程中要通过采集图像来提取特征点,所以图像的质量会影响追踪的结果。...ARKit 坐标系同样以米为单位,因而可以直接确定商家的水平坐标(x, -z)。...借助 UIGraphics 中的一些方法可以将绘制好的 UIView 渲染成一个 UIImage 对象。根据这张图片创建 SCNPlane,以作为 SCNNode 的外观。...卡片大小 ARKit 中的物体都是近大远小。只要固定好 SCNPlane 的宽高,ARKit 会自动根据距离的远近设置 SCNPlane 的大小。

2.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ARKit示例 - 第2部分:平面检测+可视化

    SCNNode实例是ARKit创建的SceneKit节点,它有一些属性设置,如方向和位置,然后我们得到一个锚实例,这告诉我们使用有关已找到的特定锚的更多信息,例如大小和中心飞机 锚实例实际上是一个ARPlaneAnchor...渲染飞机 通过上述信息,我们现在可以在虚拟世界中绘制SceneKit 3D平面。为此,我们创建一个继承自SCNNode 的Plane类。...所以我们还需要更新Plane SceneKit已经渲染。...我在SCNPlane几何体中添加了Tron样式的网格纹理,我在这里省略了它,但你可以查看源代码。...提取结果 下面是我走过房子的一部分,从上面的视频中检测到的飞机的一些屏幕截图: 这是我厨房里的一个小岛,ARKit很好地找到了范围并正确定位了飞机以匹配凸起的表面 image.png 这是一个看着地板的镜头

    2.9K20

    iOS版 使用ARKit和Swift创建交互式Domino游戏

    将以下变量添加到类的顶部: var dominoes: [SCNNode] = [] 最简单形式的命中测试是确定用户触摸的屏幕的2D位置是否与现实世界中的任何虚拟对象或在我们的情况下与平面相交。...在我们的例子中,我们想告诉SceneKit我们的多米诺骨牌应该相互碰撞和地板。 为此,我们必须在节点中添加所谓的“ 物理体 ”。将物理主体添加到节点会告诉SceneKit将该节点包含在物理模拟中。...目前在SceneKit中,只有两种类型的灯支持阴影: 点光源  - 照亮锥形区域的光源 方向光源  - 具有均匀方向和恒定强度的光源。这个位置被忽略了,只有它的方向很重要。...我们添加到场景中的地板是不透明的,因此应用到它上面的任何阴影都是不可见的。如何在保持隐形的同时为地板添加阴影?自iOS 11以来,SceneKit已经添加了一个新策略来实现这一目标。...当在SceneKit中首次创建光源时,它默认指向-Z方向(直线向前)。我们想要旋转光源,使其朝向地板向下倾斜。 定向灯本身使我们的场景非常暗。环境光从各个方向照亮场景中的所有对象。它将减轻整体场景。

    2.3K30

    苹果的增强现实框架:ARKit

    重点是它包含了苹果检测的特征点,通过rawFeaturePoints可以获取,不过只是特征的位置,具体的特征向量并没有开放。 ARCamera 场景中的摄像机,用来控制模型视图变换和投影变换。...(这个我一般是用OpenGL的shader去做,我想苹果工程师是说将图像用Metal转成位图后,根据坐标去获取RGB值。但特征点不多的话,直接在CPU中利用公式计算一下不就行了吗?...答:ARKit通过图像的环境来设置模型的环境光强度,而环境光是不产生阴影的。 (我猜苹果应该是通过像素值来确定环境光的,如果用高级一点的方法完全可以添加直射光。...(这次的wrokShop,苹果大量提到他们的特征点,如果他们真的足够重视的话,应该开放特征检测的过程与特征向量,希望后期能够开放吧) 10 . 如何连接两个不同 ARKit 世界?...ARKit会将提取到的特征点映射的空间中,也就是说特征点是由三维坐标的,我们可以利用特征点来确定图像中物体的远近。实测效果不错,误差在分米级别。

    3.4K00

    SceneKit_大神03_3DTitle

    _中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit...SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字 让学习成为一种习惯 学习内容 教你如何在IOS中制作NavigationBar 上的3D-Title...实战讲解 效果图如下: 帅吧,一起来学习 第一步 创建工程(略) 第二步 布局界面 一定要自己动手 第三步 在.m 文件中弱引用一下这些控件 若引用 第四步 引用框架SceneKit/SceneKit.h...场景中的文字 self.inputTextField.delegate = self; // 代理事件 -(BOOL)textFieldShouldReturn:(UITextField *)textField...= [SCNText textWithString:textField.text extrusionDepth:3]; self.text.font = [UIFont fontWithName:@"苹果

    76530

    ARKit 进阶:材质

    Scenekit lights and materials 光照与材质,是决定3D世界中的模型如何渲染的关键参数。许多时候模型的渲染对与不对,往往只是一种视觉的感受。...Materials 材质指定了引擎如何在渲染阶段对几何体的每个像素着色。...SceneKit 中,每个SCNMaterial有八个决定视觉感官的属性(SCNMaterialProperty),其实就是3D建模时的光照贴图,当然每个属性也可以设置成纯色。...visual properties 当渲染材质时,由材质的光照模型lightModel确定要用到的视觉属性(diffuse/specular/normal),再配合场景中的光照,计算出每个点的颜色。...Configuration of materials 除了设置材质的视觉属性和光照模型,我们还需要确定材质渲染到场景中的规则。

    3.4K01

    ARKit和CoreLocation:第一部分

    image.png ARWorldTrackingConfiguration:用于跟踪设备方向,位置和检测相机记录的特征点(如相机记录的表面)的配置。...您不一定需要使用ARAnchor该类来跟踪添加到场景中的对象的位置,但通过实现ARSCNViewDelegate方法,您可以将SceneKit内容添加到ARKit自动检测到的任何锚点。...每个数字是向量的“维度”。 简单地说,我们的向量使用2乘1矩阵。让我们给它一个x = 1的值。矢量(1,0)的图形看起来像: ?...image.png 我们可以在一个非常简单的矩阵中表达相同的向量(1,0): !...imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 如上所述: 向量只是一个数字数组 如您所见,矩阵看起来类似于数字数组。

    2.3K20

    ARKit 进阶:物理世界

    写在前面 ARKit的渲染能力是由其他框架实现的,除了苹果的SceneKit, Unity3D、UE, 或者其他自定义的OpenGL、Metal渲染引擎都可以与ARKit相结合。...Demo 视频内容 视频内容 关于物理模拟 虽然物理引擎都具有真实的物理变量,如质量、重力、摩擦力等,但当我们说道物理模拟,不是要真的去用真实世界的数值去模拟物理行为,事实上那样反而会失真。...适合场景中物理引擎可以完全接管的类型,如掉落的石块。 static: 不受碰撞、力影响,且不能移动。适合场景中地面、墙体等。 kinematic: 不受碰撞、力影响,但移动的时候会影响其他body。...这里吐槽以下苹果的命名。...scene test SceneKit与ARKit中共有以下几种scene test,用以观察世界中的物体关系,作用类似UIKit的 hitTest: 方法。

    2.9K70

    平面检测-搜索真实世界的表面

    水平平面检测 首先,我们需要打开配置的平面检测属性并将其设置为水平,以检测平面(如地板或桌子)。...import SceneKit import ARKit 延期 这个文件将作为ViewController类的扩展,这里的代码将成为该类的一部分。...let plane = SCNPlane(width: CGFloat(planeAnchor.extent.x), height: CGFloat(planeAnchor.extent.z)) 在这里...但是你看文档,y向量不存在,而z是要使用的。 您应该看到推荐的修复程序出现错误。只需单击Fix即可将Float类型的x extent值转换为CGFloat。为y做同样的事情。...您现在正在学习如何在代码中应用它。 飞机位置 所以,就像我们为手表所做的步骤一样,我们需要定位它。将平面节点放在检测到的曲面的中心。

    2.9K30

    SwiftShot:为增强现实创建游戏

    GameManager类的更新的游戏状态为SceneKit渲染每个循环过程(以每秒60帧)。在每一个上update,它按照添加顺序从队列中删除命令,并在游戏世界中为每个命令应用结果效果(如启动球)。...枚举可以包含特定于每个游戏动作的附加信息(如弹弓抓取的状态或球发射的速度)作为每个枚举案例的相关值,这意味着您不需要在别处编写代码来确定哪些信息是相关的为哪个行动。...SceneKit仅在一个设备上模拟物理,因此SwiftShot需要确保会话中的所有玩家看到相同的物理结果,同时仍然提供逼真的平滑动画。...例如: Position是32位浮点值的三分量向量(总共96位),但游戏被限制在80个单位宽,高和深的空间。应用此约束提供仅48位(每个组件16位)的编码位置。...方向可以表示为始终为正的幅度的单位四元数,而后者又可以写为四分量向量。另外,单位四元数的一个分量总是取决于其他三个,并且这些组件的值总是在从范围-1/sqrt(2)到1/sqrt(2)。

    1.7K30

    ARKit 简介

    ARKit 简介 苹果在AR一直布局VR,最近的苹果开发者大会上,果家终于放出大招:iOS移动端ARKit平台以及VR兼容新桌面操作系统macOS High Sierra。...处理器A9及以上(6S机型及以上) 实现步骤 一个简单的AR场景实现所需要的技术和实现步骤如下: 1.多媒体捕捉现实图像:如摄像头 2.三维建模:3D立体模型 3.传感器追踪:主要追踪现实世界动态物体的六轴变化...其中位移三轴决定物体的方位和大小,旋转三周决定物体显示的区域。 4.坐标识别及转换:3D模型显示在现实图像中不是单纯的frame坐标点,而是一个三维的矩阵坐标。...// Set the scene to the view //设置ARKit的场景为SceneKit的当前场景(SCNScene是Scenekit中的场景,类似于UIView)...//创建节点(节点可以理解为AR将要展示的2D图像) SKLabelNode *labelNode = [SKLabelNode labelNodeWithText:@" 修改模型 在苹果的例子中

    2.5K60

    ARKit介绍

    免责声明:我使用SceneKit玩过一次,所以我对它有一些基本的了解。...如果您没有这些知识或任何3D渲染,如Metal,OpenGL或Unity,那么我建议您在使用ARKit之前查看其中一个,因为它将帮助您理解我将呈现的代码(例如,矢量和矩阵等3D概念以及可以对它们执行的一般操作...这将给出结果向量的长度,它与说明相同:距节点A和节点B的距离。...在苹果公司的ARKit演示实现了一个方形指示器,我认为它可以使用该sceneView.debugOptions属性,但事实并非如此。 ?...平面检测在行动中 平面检测在行动中 所以,我FocusSquare从Apple的演示中借用了这个课程。 最后,最后一个问题:如何将节点放在最近的平面上?

    2.3K20

    iOS图形处理概论:OpenGL ES,Metal,Core Graphics,Core Image,GPUImage,Scene Kit (3D) ,Sprite Kit (2D),OpenCV

    Graphics & Quartz 2D 传统跨平台图形框架 -- OpenGL ES 苹果最新力推的图形框架 -- Metal 适合图片的苹果滤镜框架 -- Core Image 适合视频的第三方滤镜方案...苹果封装的图形框架 -- Core Graphics & Quartz 2D Core Graphics Core Graphics是一套C-based API, 支持向量图形,线、形状、图案、路径、剃度...3)数学运算库,提供向量、矩阵、四元数的实现和矩阵堆栈操作等OpenGL ES 1.1功能。 4)Effect效果类提供标准的公共着色效果的实现。...CIContext 表示上下文,如 Core Graphics 以及 Core Data 中的上下文用于处理绘制渲染以及处理托管对象一样,Core Image 的上下文也是实现对图像处理的具体对象。...3D渲染 -- SceneKit SceneKit 专为休闲 3D 游戏而设计,可让开发者渲染 3D 游戏场景。

    3.6K41

    iOS ARKit教程:用裸露的手指在空中画画

    虽然Google Glass解决了可用性问题,但它仍然只是在空中绘制的2D图像。 像微软,Facebook和苹果这样的科技巨头心中学到了这个苛刻的教训。...那么,让我们从这个示例代码开始,先解释其中的要点,然后为我们的项目修改它。 首先,我们应该确定我们将使用哪种引擎。ARKit可以与Sprite SceneKit或Metal一起使用。...在Apple ARKit示例中,我们使用的是Apple SceneKit,这是Apple提供的3D引擎。接下来,我们需要设置一个可以渲染3D对象的视图。...接下来,在SceneKit的渲染器回调函数中,我们将使用相同的PointNode类绘制一些像笔尖点一样的指示器。...随着计算机视觉的进步,以及为小工具(如深度相机)添加更多AR友好的硬件,我们可以访问我们周围越来越多的物体的3D结构。

    2.2K30

    ARKit 初探

    今天主要介绍 SceneKit进行渲染。 什么是特征点 AR 的目标是往真实世界中的特定点插入虚拟内容,并且在真实世界中移动时还能对此虚拟内容保持追踪。...ARKit 从视频帧中获得某张图片的特征后,就可以从多个帧中追踪这些特征。随着用户在真实世界中的移动,就可以利用相应的特征点来估算 3D 姿态信息。...ARSCNView ARSCNView 继承自 SceneKit 中的 SCNView。ARSCNView是一个非常复杂的类,它不仅拥有SCNView的功能,而且它还管理着 ARSession。...ARKit.png SceneKit 的主要作用是将虚拟物体展示在3D场景中。...重点是它包含了苹果检测的特征点,通过rawFeaturePoints可以获取,不过只是特征的位置,具体的特征向量并没有开放。

    2.4K20

    大模型如何提升信息检索效率:语义检索与向量数据库的结合

    通过引入大模型的语义理解能力,检索系统能够更好地理解用户意图,而向量数据库则能够高效地存储和检索高维向量数据。本文还提供了一个可运行的示例 Demo 代码模块,展示了如何在实际应用中实现语义检索。...与传统的词袋模型(Bag of Words)不同,大模型能够捕捉文本中的上下文信息,从而更好地理解用户的查询意图。例如,当用户输入“苹果公司”时,大模型能够理解用户指的是科技公司,而不是水果。...向量数据库的优化策略索引构建:通过构建高效的索引结构(如IVF、HNSW等),加速相似度搜索。分布式存储:利用分布式存储技术,支持大规模向量数据的存储和检索。...例如,用户查询“苹果公司”时,传统方法可能会返回与水果“苹果”相关的结果,而无法理解用户指的是科技公司。Q2: 向量数据库如何提升检索效率?...本文还提供了一个可运行的示例代码模块,展示了如何在实际应用中实现语义检索。随着大模型和向量数据库技术的不断发展,信息检索的效率和准确性将进一步提升。

    13810

    《揭秘AI语音助手:从“听”到“说”的智能之旅》

    在当今数字化时代,AI语音助手已成为我们生活和工作中的得力伙伴。无论是苹果的Siri、亚马逊的Alexa,还是国内的小爱同学、小度等,它们能轻松执行指令,如查询天气、播放音乐,甚至陪我们聊天解闷。...比如在嘈杂的街道上使用语音助手,预处理能让语音更清晰,便于后续处理。 接着是特征提取环节,语音信号被转换为特征向量,这些向量就像语音的独特“指纹”,能反映语音的声学特征。...之后,声学模型登场,它利用深度神经网络,如卷积神经网络(CNN)或循环神经网络(RNN),将特征向量映射到语音单元,比如音素。...首先是分词,将文本分解成有意义的单词或短语,比如“我喜欢苹果”,会被分成“我”“喜欢”“苹果”。词性标注为每个单词确定词性,是名词、动词还是形容词等。...例如“我明天去北京”,会标注出“明天”的重音位置。 语音合成是核心步骤,基于声学模型和语音库生成语音信号。传统TTS有“拼接法”和“参数法”。

    11210

    ARKit示例 - 第4部分:现实主义 - 照明和PBR

    - SceneKit 环境  - 模拟从各个方向撞击物体的等量光。...这是一个有方向(如方向)但也有位置的灯。如果要根据几何体与光源的距离执行光的强度计算,这非常有用。...听起来不错,但据我所知它没有做任何事情,将其与其他属性设置为各种组合似乎没有做任何事情,不确定这是SDK的这个版本中的错误还是我做错了什么(更有可能),但这并不重要,因为我们可以通过另一种方式获得估计照明...avihay/amazing-physically-based-rendering-using-the-new-ios-10-scenekit-2489e43f7021 因此,从这个图像中获取几何体的光照...,考虑将几何体周围的图像作为背景投影,然后SceneKit使用此背景来确定几何体是如何被照亮的。

    1.2K30

    iOS ARKit教程:赤手在空中绘画

    我们可以确定AR的第一次真正的开发是在开发人员从网络摄像头获取个人轮廓的时候。那时的应用通常是用来改变你的脸的。...所以,让我们从这个例子开始,先解释一下它的要点,然后把它修改成我们的项目。 首先,我们应该确定使用哪种引擎。ARKit可以与Sprite SceneKit或Metal配合使用。...在Apple ARKit的例子中,我们使用的是iOS SceneKit,由Apple提供的3D引擎。接下来,我们需要设置一个渲染3D对象的视图。这是通过添加ARSCNView类型的视图来完成的。...这样做的原因是为了确保物体的底部总是在y=0处,这样它就会出现在平面上。 接下来,在SceneKit的呈现器回调函数中,我们将使用相同的PointNode 类,绘制一些类似钢笔尖点的指示符。...检测用户的指尖 苹果在iOS 11中引入的一个很酷的库是Vision Framework。它以相当方便和有效的方式提供了一些计算机视觉技术。特别是,我们将使用对象跟踪技术。

    1.8K10
    领券