zoukankan      html  css  js  c++  java
  • ARKit从入门到精通(9)-ARKit让飞机跟着镜头飞起来

    • 1.1-ARKit物体跟随相机移动流程介绍 

    • 1.2-完整代码 

    • 1.3-代码下载地址

      ARKit从入门到精通(9)-ARKit让飞机跟着镜头飞起来 ARKit教程 第1张

    • 废话不多说,先看效果 

    ARKit从入门到精通(9)-ARKit让飞机跟着镜头飞起来 ARKit教程 第2张

    1001.gif 

     

    1.1-ARKit物体跟随相机移动流程介绍 

     

     

    • 1.点击屏幕添加物体,已经在第三小节ARKit从入门到精通(3)-ARKit自定义实现中介绍 

    • 2.监听ARSession的代理 

      • 相机的移动是由AR会话来监听的 

    • 3.在ARSession的相机移动代理中获取相机的当前位置,修改物体的位置与相机位置一致,即可实现物体跟随相机移动而移动 

    • 核心代码介绍 

    #pragma mark -ARSessionDelegate //会话位置更新(监听相机的移动),此代理方法会调用非常频繁,只要相机移动就会调用,如果相机移动过快,会有一定的误差,具体的需要强大的算法去优化,笔者这里就不深入了
    - (void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame{ NSLog(@"相机移动");
      if (self.arType != ARTypeMove) { return; } //移动飞机 if (self.planeNode) {
      //捕捉相机的位置,让节点随着相机移动而移动 //根据官方文档记录,相机的位置参数在4X4矩阵的第三列
        self.planeNode.position =SCNVector3Make(frame.camera.transform.columns[3].x,frame.camera.transform.columns[3].y,frame.camera.transform.columns[3].z);
       }
    }

     

     

     

     

    1.2-完整代码 

     

     

    #import "ARSCNViewViewController.h" //3D游戏框架
    #import <SceneKit/SceneKit.h> //ARKit框架
    #import <ARKit/ARKit.h>
    @interface ARSCNViewViewController ()<ARSCNViewDelegate,ARSessionDelegate> //AR视图:展示3D界面
    @property(nonatomic,strong)ARSCNView *arSCNView; //AR会话,负责管理相机追踪配置及3D相机坐标
    @property(nonatomic,strong)ARSession *arSession; //会话追踪配置:负责追踪相机的运动
    @property(nonatomic,strong)ARSessionConfiguration *arSessionConfiguration; //飞机3D模型(本小节加载多个模型)
    @property(nonatomic,strong)SCNNode *planeNode;
    @end
    @implementation ARSCNViewViewController
    - (void)viewDidLoad {
       [super viewDidLoad];
      // Do any additional setup after loading the view.
    }
    - (void)back:(UIButton *)btn{
       [self dismissViewControllerAnimated:YES completion:nil];
    }

     

     

  • 相关阅读:
    MS SQL 数据库状态为SUSPECT(可疑)的处理方法
    根據名稱查找文件,并移動
    deploy war to weblogic via script(shell)
    maven打包时包含所有依赖的jar
    随笔
    如何在Oracle SQL Developer對Procedure除錯
    git常用命令和記錄
    英語筆記
    IDEA設置
    mysql常用命令和记录
  • 原文地址:https://www.cnblogs.com/sunfuyou/p/7792623.html
Copyright © 2011-2022 走看看