ARKit从入门到精通(3)-ARKit自定义实现

#pragma mark -搭建ARKit环境

//懒加载会话追踪配置

  • (ARSessionConfiguration *)arSessionConfiguration

{

if (_arSessionConfiguration != nil) {

return _arSessionConfiguration;

}

//1.创建世界追踪会话配置(使用ARWorldTrackingSessionConfiguration效果更加好),需要A9芯片支持

ARWorldTrackingSessionConfiguration *configuration = [[ARWorldTrackingSessionConfiguration alloc] init];

//2.设置追踪方向(追踪平面,后面会用到)

configuration.planeDetection = ARPlaneDetectionHorizontal;

_arSessionConfiguration = configuration;

//3.自适应灯光(相机从暗到强光快速过渡效果会平缓一些)

_arSessionConfiguration.lightEstimationEnabled = YES;

return _arSessionConfiguration;

}

//懒加载拍摄会话

  • (ARSession *)arSession

{

if(_arSession != nil)

{

return _arSession;

}

//1.创建会话

_arSession = [[ARSession alloc] init];

//2返回会话

return _arSession;

}

//创建AR视图

  • (ARSCNView *)arSCNView

{

if (_arSCNView != nil) {

return _arSCNView;

}

//1.创建AR视图

_arSCNView = [[ARSCNView alloc] initWithFrame:self.view.bounds];

//2.设置视图会话

_arSCNView.session = self.arSession;

//3.自动刷新灯光(3D游戏用到,此处可忽略)

_arSCNView.automaticallyUpdatesLighting = YES;

return _arSCNView;

}


1.3-开启AR扫描


  • 我们只需要先将AR视图添加到当前UIView中,然后开启AR会话即可开始我们的AR之旅

  • ***这里需要特别注意的是,最好将开启ARSession的代码放入viewDidAppear而不是viewDidLoad中,这样可以避免线程延迟的问题。开启ARSession的代码可不可以放入viewDidLoad中呢?答案是可以的,但是笔者不建议大家那么做***

@implementation ARSCNViewViewController

  • (void)viewDidLoad {

[super viewDidLoad];

// Do any additional

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值