ARKit-带你走进全新的世界(四:平面检测)

简介:

上篇回顾:

上篇文章中我们简单写了一个AR尺子测量距离的demo,计算距离的公式--> A(x1,y1,z1),B(x2,y2,z2),则A,B之间的距离为d=√[(x1-x2)^2+(y1-y2)^2+(z1-z2)^2],项目中有小伙伴们说道划线的代码,其实这段代码有点超出iOS的东西有用到openGL的东西,含金量还是蛮高的

func line(to vector:SCNVector3,color:UIColor) -> SCNNode {

let indices : [UInt32] = [0,1]//指数

let source = SCNGeometrySource(vertices: [self,vector]) // 创建一个几何容器(顶点)

let element = SCNGeometryElement(indices: indices, primitiveType: .line)//用线的方式来创造一个几何元素(线)

let geomtry = SCNGeometry(sources: [source], elements: [element])//几何

geomtry.firstMaterial?.diffuse.contents = color//渲染颜色

let node = SCNNode(geometry: geomtry)//返回一个节点

return node

}

本篇介绍:

AR应平面检测来说并不稀奇,首先我们来说一下锚点与节点,可以这样说对应锚点来说,可以是任意一个形态的事物,并且不局限于虚拟物件,比如说我们现实中的桌子、窗台、床等等都可以理解锚点,当然虚拟物件也可以,对于虚拟世界来说,万物节节点,比如说 ARKit-带你走进全新的世界(二:动画与光线处理)篇中的太阳、地球、月球包括黄道与白道,又或者说是 ARKit-带你走进全新的世界(三:追踪/距离感应/AR尺子)篇中的线与文字都可以理解为节点,ARKit为我们提供了一个代理方法"func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) "当我们检测到锚点的时候会去调用这个方法,一旦我们检测到平面锚点我们就可以去对之做一些可视化的东西,将整个平面的角度与格局展示出来,代理方法中Anchor也就是锚的意思

正文:

效果展示:

实现思路:

1.实现代理方法

2.创建几何

3.创建节点

4.渲染

5.添加几何到节点

步骤:

1.在检测到锚点的时候去搞事情

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

搞事情

}

2.创建平面几何

let plane = SCNPlane(width: CGFloat(planeAnchor.extent.x), height: CGFloat(planeAnchor.extent.z))

因为此时我们处在一个三维坐标中,此时我们要处理平面的宽高的话取得值也就是x值和z值如下图所示


3.创建节点

let planeNode = SCNNode()

注意:此时创建节点的时候,还不知道所添加的几何是怎样的一个几何,交由后面处理

4.渲染几何,还是老代码了,相信大家已经熟悉了

planeNode.position = SCNVector3(x: planeAnchor.center.x, y: 0, z: planeAnchor.center.z)

planeNode.transform = SCNMatrix4MakeRotation(-Float.pi/2, 1, 0, 0)

let gridMaterial = SCNMaterial()

gridMaterial.diffuse.contents = UIImage(named: "art.scnassets/grid.png")

plane.materials = [gridMaterial]

planeNode.geometry = plane

5.渲染完成后将几何添加为子节点

node.addChildNode(planeNode)

总结:

最后献上本文的demo地址demo,欢迎大家下载star,Xcode9正式版本可以运行,有兴趣可以加q群150731459交流学习

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程介绍 本套课程从技术理念到项目实践,教大家系统掌握ARKit技术开发,随心打造iOSAR增强现实应用。由一开始的开发环境搭建,到Unity ARKit Plugin、ARFoundation ARKit等不同时期技术的讲解。从平面模型放置、识别图片、手势交互、3D物体识别、面部AR贴纸、光照估计、环境探针、多人AR技术,甚至包含ARKit3.0的动作捕捉技术等。除了以上课程内容,更加入了随着技术更新与时俱进更新的ARKit连载技术教学内容。课程收益 轻松理解ARKit的技术原理,从零到一创建自己的第一个AR项目。学习UnityARKit Plugin经典技术,了解ARKit中的常见概念和原理。学会在 ARFoundation 中使用ARKit,进行企业级AR项目开发。学会如何在AR项目里播放模型动画,通过触屏手势交互实现模型的旋转和缩放。 了解ARKit的图片识别,掌握AR卡片、AR书籍的实现方法。 学会使用面部增强技术,实现热门短视频应用的AR贴纸效果,实现面部表情追踪。学会使用ARKit物体检测技术,实现3D物体识别,可以广泛应用于工业、建筑、古董、玩具手办、艺展览等不同场景。学习ARKit中的经典交互案例,优化AR项目的用户体验。熟练使用环境纹理、光照估计技术,让AR内容随当前现实场景自动变化调节,看起来更加真实。基于WorldMap、CollaborativeSession AR技术,实现AR场景的持久化及多人AR体验效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值