简介:

上篇回顾:

上篇文章中我们简单写了一个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交流学习

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

  1. 【密码学】一万字带您走进密码学的世界(下)

    引文 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学:应用于破译密码以获取通信情报的,称为破译学,总称密码学. 在<一万字带您走进密 ...

  2. 【密码学】一万字带您走进密码学的世界(上)

    引文 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学:应用于破译密码以获取通信情报的,称为破译学,总称密码学. 为了使读者对密码学有一个整 ...

  3. 带你走进rsync的世界

    导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录.rsync共有3种使用方 ...

  4. 冷链冷库|果蔬保鲜储藏冷链冷库 海格里斯带你走进果蔬冷库世界

    冷链行业涵盖冷冻加工,冷藏贮藏,冷链运输和冷链销售全过程.冷链行业的主要设施包括冷库或低温物流中心.生鲜食品加工中心(包括中央厨房).冷藏运输车.超市陈列柜等.而冷链行业景气度的提升则会带动冷库,冷藏 ...

  5. 轻松带你走进shiro的世界

    2019独角兽企业重金招聘Python工程师标准>>> 1.10分钟带你轻松入门shiro Shiro是apache旗下的一款轻量级的Java安全框架,它可以提供如下服务: Auth ...

  6. vLive带你走进虚拟直播世界

    虚拟直播是什么? 虚拟直播是基于5G+实时渲染技术,在绿幕环境下拍摄画面,通过实时抠像.渲染与合成,再推流到直播平台的一种直播技术.尽管这种技术早已被影视工业所采用,但在全民化进程中却是困难重重,面临 ...

  7. ARKit-带你走进全新的世界(二:动画与光线处理)

    简介: 上篇回顾: ARKit初探篇(链接)中写到怎样开启一个AR项目,包括开发环境,建立项目,及基础代码实现,在git的demo添加了手势的处理,简单实现点击球体实现图片轮换 本篇介绍: 将虚拟世界 ...

  8. 大白话5分钟带你走进人工智能-第十四节过拟合解决手段L1和L2正则

                                                                     第十四节过拟合解决手段L1和L2正则 第十三节中,我们讲解了过拟合的情 ...

  9. ARKit-带你走进全新的世界(三:追踪/距离感应/AR尺子)

    from: http://blog.csdn.net/Oboe_b/article/details/78009568 简介: 上篇回顾: 在ARKit(光线与动画处理),使用Objective-C在一 ...

最新文章

  1. 取值范围_从int取值范围谈起
  2. 【CNN结构设计】无痛的涨点技巧:ACNet
  3. python点名代码_基于python tkinter的点名小程序功能的实例代码
  4. 前端学习(1042):todoList存储
  5. snipaste安装和使用_snipaste替代品 amp; linux截图解决方案-截图、贴图工具Flameshot...
  6. kubernetes相关命令
  7. 如何在 Flink 1.9 中使用 Hive?
  8. Github copilot: AI协助编程尝试
  9. 安卓玩java模拟器_安卓系统智能手机玩JAVA游戏!JAVA模拟器让你痛快地玩!
  10. Excel鼠标所在行列填充颜色
  11. jlink怎么调试linux程序_Ubuntu12.10 使用JLink连接开发板用arm-gdb调试ARM程序
  12. word方框内插入对勾
  13. java毕业设计_基于web的游泳馆管理系统的设计与实现
  14. arduino 蓝牙示例_(转载)HC-05蓝牙模块使用教程[Arduino]
  15. 脑部 CT 图像处理
  16. “泰迪杯” 挑战赛 - 利用协同过滤与卷积神经网络为电视产品制订智能化营销推荐
  17. emeditor正则表达式_掌握EmEditor正则表达式语法,大大提升工作效率
  18. UART和SPI简介
  19. 荣耀v40和小米10哪个好 小米10和荣耀v40的区别
  20. Android10相机,方向错了?一亿像素只是噱头?小米10pro硬刚相机评测

热门文章

  1. 阿里云mysql管理_阿里云数据库数据管理工具解读
  2. [Lpp]PHP正则表达式
  3. 2020年计算机能力挑战赛C/C++初赛题解
  4. CutPaste:Self-Supervised Learning for Anomaly Detection and Localization 论文解读(缺陷检测)
  5. turtlebot+rplidar,安装所遇问题及解决方法
  6. 15条经典的英语绕口令
  7. 机器学习之KNN原理与代码实现
  8. 没有规定的iOS或者安卓的 - app图标 怎么办
  9. 》技术应用:macOS big sur电脑怎样查看已连接的Wi-Fi密码(转载)
  10. 复杂网络:平均场方程于动力学微分方程