请选择 进入手机版 | 继续访问电脑版
开启辅助访问
 找回密码
 注册VR兔账号

手机号码,快捷登录

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

737

主题

958

帖子

2962

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2962

突出贡献

2017-8-24 22:10:05 | 显示全部楼层
  • AR视图,在第一小节笔者介绍过,ARKit/' target = '_blank' style = 'color: #00F;'>ARKit支持3D的AR场景和2D的AR场景,ARSCNView是3D的AR场景视图
  • API介绍

@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 *)anchorForNodeSCNNode *)node;/**返回对应锚点的物体 */- (nullable SCNNode *)nodeForAnchorARAnchor *)anchor;/**根据2D坐标点搜索3D模型,这个方法通常用于,当我们在手机屏幕点击某一个点的时候,可以捕捉到这一个点所在的3D模型的位置,至于为什么是一个数组非常好理解。手机屏幕一个是长方形,这是一个二维空间。而相机捕捉到的是一个由这个二维空间射出去的长方体,我们点击屏幕一个点可以理解为在这个长方体的边缘射出一条线,这一条线上可能会有多个3D物体模型point:2D坐标点(手机屏幕某一点)ARHitTestResultType:捕捉类型  点还是面(NSArray<ARHitTestResult *> *):追踪结果数组  详情见本章节ARHitTestResult类介绍数组的结果排序是由近到远 */- (NSArray<ARHitTestResult *> *)hitTestCGPoint)point typesARHitTestResultType)types;@end//代理#pragma mark - ARSCNViewDelegate//代理的内部实现了SCNSceneRendererDelegate:scenekit代理 和ARSessionObserver:ARSession监听(KVO机制)@protocol ARSCNViewDelegate <SCNSceneRendererDelegate, ARSessionObserver>@optional/**自定义节点的锚点 */- (nullable SCNNode *)rendererid <SCNSceneRenderer>)renderer nodeForAnchorARAnchor *)anchor;/**当添加节点是会调用,我们可以通过这个代理方法得知我们添加一个虚拟物体到AR场景下的锚点(AR现实世界中的坐标) */- (void)rendererid <SCNSceneRenderer>)renderer didAddNodeSCNNode *)node forAnchorARAnchor *)anchor;/**将要刷新节点 */- (void)rendererid <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
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 注册VR兔账号

本版积分规则

在线客服
QQ 1071570005
客服电话
4008-517517
官方微信
发布 快速回复 返回顶部 返回列表