美文网首页
IOS 学习AR(1)( 3D引擎 SceneKit 学习

IOS 学习AR(1)( 3D引擎 SceneKit 学习

作者: 升哥_d84b | 来源:发表于2018-04-11 14:01 被阅读0次

    hello ,大家好。最近接触到AR项目,对于我来说,是一窍不通,现在开始学习,并开始记录学习过程,以防止忘记(本是自学,如有不对,欢迎指正)。

    废话少说,直接来说说怎么开始学习吧。 学习主要掌握ARkit(现实环境场景),SceneKit(3d引擎),SpriteKit(2d引擎)三个类。我的学习思路是先SceneKit,在SpriteKit的学习,最后把他们放在ARkit(现实环境场景)中展示。那么ar项目就能基本完成了。

    现在开始学习单独学习SceneKit框架吧(使用xcode8.0以上)。先熟悉下SceneKit的三维坐标系:右手坐标系(笛卡尔坐标系)

    了解下面这几个非常重要的类:

    SCNView :类似UIView,用来显示 SceneKit 的内容,定义了一些代理方法,可以用 addSubView 方法添加到UiView 中

    SCNScene:SceneKit 内容的容器. 你可以从3D建模工具生成的.dae文件中加载一个场景,或者用代码创建一个 ,然后把它显示在视图上

    SCNNode:一个场景的基本构建块,你可以把摄像机,灯光,几何体附加到节点上

    SCNGeometry:一个可以连接到一个节点的三维物体。一个几何体(有时称为模型或网格)只定义了一个可见物体的形状。要定义对象的表面颜色图案,你必需要给几何体要附加材料。然后给材料贴图,或者上色,这个几何体表面才会有颜色,或者图案。

    你可以从3D建模工具生成的.dae文件中加载一个几何体,也可以用代码创建,SceneKit 提供了几种常见几何体,是SCNGeometry 的子类,比如长方体,球,圆柱球等等,后面我们会写一个demo会把官方提供的几何体给大家列出来,给大家一个直观的感受。 当然我们也可以用三维坐标,法向量自定义几何体,也可以讲一个2D 图案转化成一个具有深度(厚度)的三维几何体。后面应该专门有一篇会讲到利用贝塞尔曲线将一个2D 图案转化成一个具有深度(厚度)的三维几何体。

    SCNMaterial:材质,由于在3D建模工具中呈现球形,所以也叫材质球。上色,贴图全靠它。

    SCNLight:光源可以附加到节点上,在渲染场景中提供着色

    SCNCamera:虚拟摄像机可以附加到节点上,提供了一个场景的视图。

    以上需要学习的几个重要类。接下来我将从实际项目中实践展示怎么运用。

    然后在导入模型。

    没有模型可以网上找找,或者创建一个AR模型然后直接把里面的模型拷出来

    好了,一切准备工作完成。我们来实现吧。

    1.初始化场景

       self.scnView = [[SCNView alloc]initWithFrame:self.view.frame];

       [self.view addSubview:self.scnView];

       self.scnView.backgroundColor = [UIColor blackColor];

       self.scnView.scene = [[SCNScene alloc]init];

    简单介绍下,SCNView是试图,基于UIView。

    2.初始化节点

        self.node = [SCNScene sceneNamed:@"art.scnassets/plane/ship.scn"].rootNode;

        [self.scnView.scene.rootNode addChildNode:self.node];

    //设置虚拟摄像头(后期会介绍)

        SCNNode *camersNode = [SCNNode node];

        camersNode.camera = [SCNCamera camera];

        [self.scnView.scene.rootNode addChildNode:camersNode];

        self.scnView.allowsCameraControl = YES;

        camersNode.position = SCNVector3Make(0, 0, 2);

    3.旋转节点

        SCNAction *customAction = [SCNAction rotateByX:0 y:1 z:0 duration:1];

        SCNAction *repeatAction = [SCNAction repeatActionForever:customAction];

        [self.node runAction:repeatAction];

    基本效果出现了:会旋转的飞机模型

    总结:才开始学习SceneKit。先一步一步来吧。第一节就这样基本实践SceneKit。接下来将具体介绍SceneKit。

    相关文章

      网友评论

          本文标题:IOS 学习AR(1)( 3D引擎 SceneKit 学习

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