SceneKit初步了解

2017-09-26  本文已影响0人  傍观者

在了解ARKiT框架时,突然看到demo中有SceneKit引擎,由于都是在写应用app,没有涉及于是就拿来看看了。

SceneKit是一个高性能的渲染游戏引擎,他能够将3D模型文件,用很简单的方式渲染出来。底层实践是Metal和OpenGL。

在Xcode9中构建新的VR应用中会有引擎选择,一开始没有没有VR的应用,所以将其放置在普通应用中。

Demo

插入SceneKit框架

#import <SceneKit/SceneKit.h>

构建一个用来展示的view

@property (nonatomic,strong)SCNView *scnView;

_scnView = [[SCNView alloc]initWithFrame:self.view.bounds];
_scnView.backgroundColor = [UIColor clearColor];
[self.view addSubview:_scnView];

因为sceneView中默认没有secene所以我们需要创建一个场景

_scnView.scene = [SCNScene scene];

tips:secene的用处就相当于一个摄影棚,里面放着所有的几何模型,灯光,摄像机和其他的属性,如果不加入场景那么,所有的元素将没有地方展示。

添加摄像机,将元素展现在观众眼中

//添加摄像机
    SCNCamera *camera = [SCNCamera camera];
    SCNNode *cameraNode = [SCNNode node];
    cameraNode.camera = camera;
    cameraNode.position = SCNVector3Make(-10,0,50);
    [_scnView.scene.rootNode addChildNode:cameraNode];

这里要介绍一下SCNNode

当我们把摄影棚搭建好之后,我们需要放置灯光,摄影机,模型等道具,但是这些东西不会自己放置,也不知道放置的位置,这时我们就要给他一个坐标来告诉摆放人,这个该放置在哪里。SCNNode就是起到坐标点的作用。同时这个坐标点中又可以放置其他的坐标点。
在里面加入模型

SCNBox *snow = [SCNBox boxWithWidth:with height:height length:0 chamferRadius:0];
snow.firstMaterial.diffuse.contents = [UIImage imageNamed:@"snow.png"];
SCNNode *snowNode = [SCNNode node];
snowNode.position = SCNVector3Make(postionX,postionY , 0);
snowNode.geometry = snow;
[_scnView.scene.rootNode addChildNode:snowNode];

当然我希望将❄️动起来,于是我在demo中添加SCNAction

SCNAction *rotation = [SCNAction rotateByAngle:10 aroundAxis:SCNVector3Make(0, 0, 1) duration:speed];
SCNAction *moveDown = [SCNAction moveTo:SCNVector3Make(moveX, moveY, 0) duration:speed];
SCNAction *moveUp = [SCNAction moveTo:SCNVector3Make(0, moveUpY, 0) duration:0];

demo执行效果

雪花.jpeg

用SceneKit写动画只是微不足道一部分,以后随着以后深入还会记录更多SceneKit的用法。顺带挖一个利用BaseAnimation动画的坑,这个是以前的学习的,为了防止忘记,抽空补全上来。

附Demo地址:https://github.com/rickierYun/SceneKitDemo

上一篇下一篇

猜你喜欢

热点阅读