1
. 参考网址:
1. http://www.jianshu.com/p/c97b230fa391 // 简介
2. http://www.jianshu.com/p/93173062ebb4 // apple 翻译
3. http://www.jianshu.com/p/d4febec89180 // 模型创建
4. http://www.cgtsj.com/
5. http://www.jianshu.com/p/f854246ec690
6. http://yiweifen.com/html/news/WaiYu/98946.html //iOS - SceneKit显示与交互3D建模
7. AR 现状分析: http://www.cocoachina.com/apple/20171128/21319.html
-
demo 实例:
应用: 视+,幻视,招商银行,掌上生活(搜索AR)
demo
描述:增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动
所谓的增强现实 (Augmented Reality, AR),指的是向设备摄像头产生的实时动态视图中,添加 2D 或者 3D 元素,然后用某种方法让这些元素看起来就处于现实世界当中,所产生一种用户体验。ARKit 提供了设备动作追踪、相机场景捕获和高级场景处理,并让 AR 元素的展示变得极为便利,从而大大简化了建立 AR 用户体验的工作难度。
-
一个最简单地AR场景实现所需要的技术以及步骤包含如下:
多媒体捕捉现实图像:如摄像头
三维建模:3D立体模型
传感器追踪:主要追踪现实世界动态物体的六轴变化,这六轴分别是X、Y、Z轴位移及旋转。其中位移三轴决定物体的方位和大小,旋转三周决定物体显示的区域
坐标识别及转换:3D模型显示在现实图像中不是单纯的frame 坐标点,,而是一个三维的矩阵坐标。这基本上也是学习AR最难的部分,好在ARKit帮助我们大大简化了这一过程。
除此之外,AR还可以与虚拟物体进行一些交互。
开发环境介绍
Xcode版本:Xcode9及以上
.iOS系统:iOS11及以上
iOS设备:处理器A9及以上(6S机型及以上)
MacOS系统:10.12.4及以上(安装Xcode9对Mac系统版本有要求)
-
ARKit框架工作流程:
ARSCNView加载场景SCNScene
SCNScene启动相机ARCamera开始捕捉场景
捕捉场景后ARSCNView开始将场景数据交给Session
Session通过管理ARSessionConfiguration实现场景的追踪并且返回一个ARFrame
给ARSCNView的scene添加一个子节点(3D物体模型)
demo 讲解
SCNView : 抗锯齿:antialiasingMode
SCNScene:游戏场景,游戏场景 主要是有几何模型,灯光,相机,和其他的属性组成,SCNScene 包含 3D场景,和场景中的内容.作用:添加各种元素到场景,读取场景文件,讲场景写入文件......
SCNNode:在SCeneKit 中节点是一个抽象概念,节点是看不见摸不着的东西,没有几何形状,但是有位置,及其自身坐标.在长江中创建一个节点后,就可以在这个节点上放游戏元素了.比如任务模型,灯光,摄像机等.节点上可以添加节点
SCNLight: 灯光.光源分为四种: 1. 环境光(SCNLightTypeAmbient),这种光没有方向,位置在无穷远处,光均匀的散射在物体上2.点光源(SCNLightTypeOmni):有固定位置,方向360度,可以衰减4. 平行方向光(SCNLightTypeDirectional):只有照射的方向,没有位置,不会衰减 5.聚焦光源:(SNCLightTypeSpot):光有固定位置,也有方向,也有照射区域,可以衰减
-
SCNAction: 行为动画
- 移动,旋转,缩放,透明度,隐藏或者不隐藏,等待,节点删除
-
SCNGeometry: SCeneKit 游戏框架中的几何对象.将几何对象绑定到节点上,显示到view
- 系统包含的,正方体,平面(SCNPlane),金字塔,球体,圆柱体,圆锥体,管道,换面,地板(SCNFloor),立体字,自定义形状(通过贝塞尔曲线)创建SCNShape ,然后赋值给Node 节点
SCNPhysicsWorld: 物理世界对象,作用: 控制全局属性(比如重力和其他类型的力,还有它的速度),间接修改或者注册场景中的物理身体的连接等行为,管理物理身体的碰撞行为,执行特殊的接触测试(如发射,扫射)
粒子系统: SceneKit 提供的粒子系统:(fire,confetti(五彩纸屑),bokeh(散景),rain(雨),Reactor(反应堆),smoke(烟),star(星))
-
物理行为(SCNPhysicsBehavior,抽象类,要研究他的子类): 物理行为定义: 定义一个或者多个物理组织的高级行为,行为包括连接多个物体的关节,可以让他们一起移动,也可以定义车轮这种行为,让身体像骑车一样滚动.
- SCNPhysicsHingeJoint: 连接两个物体,并允许他们在一个单一的轴上围绕对方旋转
- SCNPhysicsBallSocketJoint: 连接两个物体,并允许他们在任何方向上围绕对方旋转
- SCNPhysicsSliderJoint: 连接两个物体,并允许他们彼此之间滑动或者旋转,滑块关节像电机一样工作,在两个物体之间施加力或转矩.
- SCNPhysicsVehicle: 组合物理身体成为类似汽车底盘的东西,你可以控制汽车的驾驶,刹车和加速,使用SCNPhysicsVehicleWheel 对象定义车轮的外观和物理属性.
SCNConstraint : 约束