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动画的坑,这个是以前的学习的,为了防止忘记,抽空补全上来。