美文网首页
iOS开发-ARKit

iOS开发-ARKit

作者: izsm | 来源:发表于2017-10-09 15:57 被阅读0次

    工具

    Xcode9

    iOS 11

    新建工程

    关键词和关键类

    关键词和关键类

    关键词:场景视图,场景,几何,节点,渲染器(都是直译过来的,根据类名自行理解)

    关键类:ARSCNView 、 SCNScene、 SCNGeometry、 SCNNode 、 SCNMaterial

    如何在空间中放一个平面?

    创建场景视图ARSCNView,设置代理

    创建一个场景SCNScene,给场景视图绑定场景

    创建一个平面几何形状SCNPlane (继承于SCNGeometry )

    基于几何形状创建一个节点SCNNode

    创建一个渲染器SCNMaterial, 用其对平面几何进行渲染

    添加节点到场景的根节点中

    - (void)viewDidLoad {

        [superviewDidLoad];

        self.sceneView= [[ARSCNViewalloc]initWithFrame:self.view.bounds];

        [self.viewaddSubview:self.sceneView];

        // 1.设置场景视图的代理

        self.sceneView.delegate=self;

        // 是否显示fps 或 timing等信息

        //self.sceneView.showsStatistics = YES;

        //2. 创建场景

        SCNScene*scene = [SCNScenescene];

        //2.1给场景视图绑定场景

        self.sceneView.scene= scene;

        //3.创建一个平面几何图形,高为0.1米,宽为0.1米

        SCNPlane*plane = [SCNPlaneplaneWithWidth:0.1height:0.1];

        plane.cornerRadius=0.05;

        //4.基于几何图形创建节点

        SCNNode*node = [SCNNodenodeWithGeometry:plane];//节点的创建不仅仅是基于平面,根据SCNGeometry头文件里 可见,长方体、圆球、圆锥、圆环、金字塔形 等等都可以创建。有兴趣的可以换着尝试一下。

        //5.创建渲染器

        SCNMaterial*material = [SCNMaterialmaterial];

        UILabel*label = [[UILabelalloc]initWithFrame:CGRectMake(0,0,100,100)];

        label.text=@"123456687900";

        label.backgroundColor= [UIColororangeColor];

        material.diffuse.contents= label;//渲染器可以决定怎样渲染,这个 contents 属性可以设置很多东西,UILabel,                UIImage,甚至 AVPlayer 都可以

        node.position=SCNVector3Make(0,0, -0.3);

        //5.5. 用渲染器对几何图形进行渲染

        plane.materials=@[material];

        //6. 为场景的根节点添加节点

        [scene.rootNodeaddChildNode:node];

    }

    - (void)viewWillAppear:(BOOL)animated {

        [superviewWillAppear:animated];

        // Create a session configuration

        // ARWorldTrackingConfiguration 可以追踪设备姿态和位置,通过设备的摄像头可以探测到真实世界的表面

        ARWorldTrackingConfiguration*configuration = [ARWorldTrackingConfigurationnew];

        //

        //// Run the view's session

        [self.sceneView.sessionrunWithConfiguration:configuration];

    }

    - (void)viewWillDisappear:(BOOL)animated {

        [superviewWillDisappear:animated];

        // Pause the view's session

        [self.sceneView.sessionpause];

    }

    相关文章

      网友评论

          本文标题:iOS开发-ARKit

          本文链接:https://www.haomeiwen.com/subject/sxdpyxtx.html