ARKit从入门到精通(5)-ARScnView介绍

翻译 2017年06月13日 01:20:38
@interface ARSCNView : SCNView

/**
代理
 */
@property (nonatomic, weak, nullable) id<ARSCNViewDelegate> delegate;

/**
AR会话
 */
@property (nonatomic, strong) ARSession *session;

/**
场景
 */
@property(nonatomic, strong) SCNScene *scene;

/**
是否自动适应灯光
 */
@property(nonatomic) BOOL automaticallyUpdatesLighting;

/**
返回对应节点的锚点,节点是一个3D虚拟物体,它的坐标是虚拟场景中的坐标,而锚点ARAnchor是ARKit中现实世界的坐标。
 */
- (nullable ARAnchor *)anchorForNode:(SCNNode *)node;

/**
返回对应锚点的物体
 */
- (nullable SCNNode *)nodeForAnchor:(ARAnchor *)anchor;

/**
根据2D坐标点搜索3D模型,这个方法通常用于,当我们在手机屏幕点击某一个点的时候,可以捕捉到这一个点所在的3D模型的位置,至于为什么是一个数组非常好理解。手机屏幕一个是长方形,这是一个二维空间。而相机捕捉到的是一个由这个二维空间射出去的长方体,我们点击屏幕一个点可以理解为在这个长方体的边缘射出一条线,这一条线上可能会有多个3D物体模型
point:2D坐标点(手机屏幕某一点)
ARHitTestResultType:捕捉类型  点还是面
(NSArray<ARHitTestResult *> *):追踪结果数组  详情见本章节ARHitTestResult类介绍
数组的结果排序是由近到远
 */
- (NSArray<ARHitTestResult *> *)hitTest:(CGPoint)point types:(ARHitTestResultType)types;

@end

//代理
#pragma mark - ARSCNViewDelegate


//代理的内部实现了SCNSceneRendererDelegate:scenekit代理 和ARSessionObserver:ARSession监听(KVO机制)
@protocol ARSCNViewDelegate <SCNSceneRendererDelegate, ARSessionObserver>
@optional

/**
自定义节点的锚点
 */
- (nullable SCNNode *)renderer:(id <SCNSceneRenderer>)renderer nodeForAnchor:(ARAnchor *)anchor;

/**
当添加节点是会调用,我们可以通过这个代理方法得知我们添加一个虚拟物体到AR场景下的锚点(AR现实世界中的坐标)
 */
- (void)renderer:(id <SCNSceneRenderer>)renderer didAddNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor;

/**
将要刷新节点
 */
- (void)renderer:(id <SCNSceneRenderer>)renderer willUpdateNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor;

/**
 已经刷新节点
 */
- (void)renderer:(id <SCNSceneRenderer>)renderer didUpdateNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor;

/**
 移除节点
 */
- (void)renderer:(id <SCNSceneRenderer>)renderer didRemoveNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor;

@end

ARKit从入门到精通(1)-ARKit初体验

ARKit从入门到精通(1)-ARKit初体验转载请标注出处:http://blog.csdn.net/u013263917/article/details/72903174,以及版权归属黑马程序员:...
  • u013263917
  • u013263917
  • 2017-06-07 19:37:04
  • 75115

SCNNode类

//  SCNNode.h
  • AngusShyang
  • AngusShyang
  • 2016-11-15 16:28:13
  • 1874

ios 3D引擎 SceneKit 开发(4) --关于旋转的几点问题(1)

旋转模型是经常遇到了,我们之前用CABasicAnimation 可以旋转一个view,其实它也可以旋转一个SCNNode。首先我们要明白一个概念,每个SCNNode 都有自身的三维坐标系,用CABa...
  • pzhtpf
  • pzhtpf
  • 2016-05-06 22:55:27
  • 8041

ios 3D引擎 SceneKit 开发(1) --起始篇

hello ,大家好,我是Roc.Tian,最近一直在研究苹果自家的3D 引擎 SceneKit ,适当写写博客,总结一下,与大家分享一下,也希望跟大家交流,共同进步。 SceneKit 是一个O...
  • pzhtpf
  • pzhtpf
  • 2015-12-15 14:09:49
  • 18875

SCNView如何灵活使用DAE文件

上一篇文章讲述了如何切换相机位置的问题,今天在之前的基础上讲述下自定义移动,手动转动以及点击模型中的子模型等操作。直接讲述代码以及流程问题。首先我们需要将DAE文件拖到xcode中,还是放到scene...
  • u011864410
  • u011864410
  • 2017-01-23 17:15:21
  • 2572

SCNView切换相机视角

前一篇文章讲述了几个刚接触SceneKit的三个小问题,今天准备稍微深刻一点。 在3D模型中,实际的项目中并不会像demo中的那样只有一个模型(飞机模型),如果有多个模型组合成的一个大模型,我们如何完...
  • u011864410
  • u011864410
  • 2017-01-04 17:03:08
  • 3879

ARKit 最简单的一个Demo

AR最简单的一个Demo参考了苹果官网关于搭建一个最基本的AR效果,然后这里把demo讲一下,由于有很多概念没有理解完全,所以有些地方有纰漏的话,可以拍砖一起讨论。这里一定要注意,开发环境为Xcode...
  • sinat_31807529
  • sinat_31807529
  • 2017-06-30 17:16:55
  • 2879

iOS中AR开发的初步认识

AR是什么鬼?AR(Augmented Reality)叫做增强现实技术,这种技术早在1990年就被提出,是一种实时地计算摄影机影像的位置、角度,并加上相应的图像、视频、3D模型的技术。这种技术的目标...
  • potato512
  • potato512
  • 2017-09-02 01:03:10
  • 510

ios 3D引擎 SceneKit 开发(8) --SCNShape 的使用

博客写的没有系统性,真是想到那写到那。 前天有小伙伴问: 如何将一个2D的图案转化成具有深度的3D模型其实很简单,用SCNShape 就可以实现了,看到SCNShape,我们就会立刻想到CA...
  • pzhtpf
  • pzhtpf
  • 2016-10-23 15:10:10
  • 4068

SceneKit一个加载3D模型的神奇框架

由于我们的项目需要使用3D模型,将3D模型展示到客户端,如果用OpenGL太麻烦,...
  • u011864410
  • u011864410
  • 2016-12-23 10:46:36
  • 4293
收藏助手
不良信息举报
您举报文章:ARKit从入门到精通(5)-ARScnView介绍
举报原因:
原因补充:

(最多只允许输入30个字)