ios arkit原理理解

一,视频效果

把虚拟的3d椅子放在了真实的世界里。
更多视频:

二,应用场景

1,模拟一辆车在马路上行驶的效果,卖车嘛
2,模拟房屋的装修
3,服装。
4,等你来无限脑暴.......

三,arkit的工作原理

1,打开摄像头开始构建3d场景
怎么构建的3d场景呢?
答:打开摄像头,初始化3d场景,以当前摄像头的位置为3d坐标系原点位置,也是rootNode;
初始化的坐标系是世界坐标系, ARKit里坐标系都是使用的右手坐标系。(关于坐标系后面会详细讲到)
摄像头前方z的负方向
摄像头右边x的正方向
摄像头上面y的正方向
附图(坐标系,和右手)
2,再把虚拟的3d模型添加到3d场景,与真实世界进行合适的交互。
arkit本身不提供虚拟3d模型的加载能力,而是由专门的3d绘制引擎来加载;市面上用的比较多的是
sceneKit,
unity3D 5.6.2以上,
Unreal 4.1.7以上
如果是做普通的商业应用,建议选择scenekit,原因:
1)sceneKit是系统动态库,对安装包不会有增量
2)sceneKit是OC写的,可以OCS
3)sceneKit虽然能力不如unity3d和Unreal,但是毕竟不是做一款很复杂的游戏,sceneKit完全够用了
3,摄像头在移动时,通过摄像头的位置,角度以及图像检测,实时的计算并渲染出当前的3d世界
ARKit 使用视觉惯性测距技术,对摄像头采集到的图像序列进行计算机视觉分析,并且与设备的运动传感器信息相结合。ARKit 会识别出每一帧图像中的特征点,并且根据特征点在连续的图像帧之间的位置变化,然后与运动传感器提供的信息进行比较,实现了一系列非常庞大的算法计算,最终得到高精度的设备位置和偏转信息,来建立一个非常准确的SLAM(simultaneous localization and mapping)系统,构建虚拟世界和现实世界之间的映射,所以原来添加在3d场景的物理模型相对于相机的真实矩阵位置就能被计算出来。
4,场景解析:目前开放了能力有平地捕捉,环境光估计,尺度估计,iphonex前置摄像头的人脸识别等;以后应该会开放更多能力
  • 平地捕捉:苹果为了让更多的iphone都能支持AR,选择了单目SLAM技术;但是苹果这次单目SLAM就做的非常好,不止能估计平面,还能识别边界。https://v.qq.com/x/page/d0511twrvrj.html该视频中小人跳出桌面的就是用的边界估计。
  • 尺度估计:这个就更厉害了。单目SLAM能非常准确估计尺度的,貌似没有其他公司能做到了。
  • 环境光估计:通过摄像头捕捉并计算捕捉到的场景中光的总量,来给虚拟物体施加正确的光照条件,渲染效果更加真实。
  • iphonex的人脸识别,并不是识别不同人的脸。而是从图像帧里找到一张3D脸;并且提取该脸上51个位置的特征值;将脸型以及脸部表情量化成数据。
AR系统的大致结构图,附图

四,scenekit重要类的介绍

SCNView:继承UIView,用来显示3D世界的。
SCNScene:可以从3d模型中加载一个3d场景(arkit没有这个能力,必须依赖scenekit去加载虚拟的3d模型)
SCNNode:一个scene的基本构成快,可以把摄像机,灯光,几何体附加到节点上。
SCNGeometry:三维几何体
SCNMaterial:材质,上色,贴图靠它
SCNLight:光源可以附加到节点上 http://www.itdadao.com/articles/c15a923684p0.html
一共有4种光源
  • 环境光(SCNLightTypeAmbient),这种光的特点,没有方向,位置在无穷远处,光均匀的散射到物体上.
  • 点光源(SCNLightTypeOmni),有固定的位置,方向360度,可以衰减
  • 平行方向光(SCNLightTypeDirectional),只有照射的方向,没有位置,不会衰减
  • 聚焦光源(SCNLightTypeSpot),光源有固定的位置,也有方向,也有照射区域 ,可以衰减
看文字太抽象了。
附图:
itdadao itdadao
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值