SceneKitの初歩的な理解

2150 ワード

ARKiTフレームワークを知っていたら、ふとdemoにSceneKitエンジンが入っていて、アプリアプリを書いているので触れずに持ってきました.
SceneKitは高性能のレンダリングゲームエンジンで、3 Dモデルファイルを簡単にレンダリングすることができます.基本的な実践はMetalとOpenGLです.
Xcode 9で新しいVRアプリを構築するにはエンジン選択があり、最初はVRのアプリがなかったので、普通のアプリに置いておきます.

Demo


SceneKitフレームの挿入
#import 

展示用の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