Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > 3Dでゲームを作ってみたい(#5)

3Dでゲームを作ってみたい(#5)

前回の記事#4よりSceneKitのチュートリアルを進めていきます。
改めてですが、Beginning Scene Kit TutorialにあるGetting Startedセクションの「starter pack」からダウンロードできる「CarbonVisualizer-Starter.zip」を利用しています。

目標

前回と同じく、以下のような四角がくるくる回る形の作成を検証してみます。 3Dゲームのサンプル画像 3Dゲームのサンプル画像

チュートリアル続き

SceneKitフレームワークはnode型のようで、親のSCNSCeneにSCNNodeをそれぞれ追加していく形です。SCNNodeにはそれぞれのカメラやライト、物質の機能が組み込まれているようでそれを多数利用することで複雑な3Dを使用できるようにしているようです。

3Dゲームのサンプル画像

Appleの公式サイトリファレンスより

基礎工事

まず、親となる土台のSNScenceを作成します。そこに、SCNNodeと関連させる物体のSCNBoxを追加します。その後に、StoryBoard上にあったSCNView(sceneView)と関連させます。このサンプルサイトには、
@IBOutlet weak var sceneView: SCNView! が宣言されています。


 override func viewDidLoad() {
   super.viewDidLoad()
    
    //まずは基本となるSCNSceneを追加します。これが無いと始まりません
    let scene = SCNScene()
    
    //SCNNodeを追加しますが、このSCNNodeに物体としてのSCNBoxを作成して関連づけます。
    let boxGeometry = SCNBox(width: 10.0, height: 10.0, length: 10.0, chamferRadius: 1.0)
    let boxNode = SCNNode(geometry: boxGeometry)
    scene.rootNode.addChildNode(boxNode)
    
    sceneView.scene = scene
    

3Dゲームのサンプル画像

まだ真っ白の表示のままです

SCNViewを見やすいようにする

上のコードにライティングを追加するには以下の一行でそれっぽく大変身。Photoshopのドロップシャドウの内側を実施したような感じになりました。 SceneViewの上に全体表示されたSCNBoxが画面一面に表示されているので平面に見えますが、箱を真横からみている状態です。


        sceneView.autoenablesDefaultLighting = true;
    

3Dゲームのサンプル画像

この状態でカメラ機能を追加してみる

たったこれだけですが、この状態でカメラ機能をコードで追加するだけでマウスカーソルにそってぐるぐる動き出します。


    sceneView.allowsCameraControl = true;
        

3Dゲームのサンプル画像

数行だけですが、ここまで簡単に3Dの四角がつくれるようでした。これを円にしたりライティングをあてたりすることも容易にできるようです。その際はあらためて Beginning Scene Kit Tutorialを確認すればサンプルソースも揃っています。私の方はここに顔と体をつけていきたいので、 「四角」をSwiftのSceneKitでくるくる回す目標は完了。次記事からこの表面に顔を表示する方法を考えてまいります。

↓こんな記事もありますよ!

SwiftでZipファイルの解凍や圧縮する方法

SwiftでZipの解凍・圧縮処理の解説です。標準ライブラリにZip2があるやら3rdパーティのSSArchiveのObjective-Cのライブラリを Swiftにブリッジして利用するのが良い等の記載がありましたので調査してみます。

メモリの動きとポインタ

Swiftとポインターはあまり縁がないのかなと思っていたのですが、開発を進めていると 時々このUnsafePointerの名前を見ることがあります。本日はこのPointerが何を表しているかを調査してみます。

AppleWatchをNSFileCoordinatorとKeychainでデータ交換

前回の記事(ナターシャさんのサンプルデモを元に解説)の続きです。今記事はNSUserDefaultではなく、 NSFileCoordinatorとKeychain sharingを利用しての解説です。ナターシャさんのサンプルに関して前記事をご参照ください。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!