1. 程式人生 > >SceneKit 簡單的3D遊戲場景搭建

SceneKit 簡單的3D遊戲場景搭建

                       

SceneKit是Apple用來開發休閒3D遊戲的框架,不同於底層的OpenGL庫,你僅僅需要很少的程式碼就可以快速看到實際的3D場景效果.下面簡單的聊聊搭建一個3D遊戲場景需要做的事情.

首先你必須用其他3D建模工具生成你需要的3D模型,字尾為dae或者scn,應該還附帶一張紋理圖片.

可以將3D模型檔案連同紋理圖片匯入Xcode,以下是一個例子

這裡寫圖片描述

可能有些童鞋不知道如何開啟場景圖(scene graph)的介面,只要點選上圖最下一行local按鈕左邊的方框按鈕即可:

這裡寫圖片描述

你在場景圖介面中可以新增光源,攝像頭等附屬在SCNNode上的元素:

這裡寫圖片描述

SceneKit中也自帶一些簡單的3D幾何圖形類,比如球體,圓錐體等等.你可以將他們組合成更加複雜的3D形體放到3D場景中.稍後我也會給出一些例子.

下面我們可以將3D場景匯入到檢視中來:

let mainScene = SCNScene(named: "art.scnassets/hero.scn")let sceneView = self.view as! SCNViewsceneView.scene = mainScene sceneView.showsStatistics = true
sceneView.allowsCameraControl = true
  • 1
  • 2
  • 3
  • 4
  • 5

好玩起見,我們再新增幾個簡單幾何體到場景中去:

func BoxNode()->SCNNode{        let box = SCNBox(width: 10, height: 10, length: 10, chamferRadius: 1)        let boxNode = SCNNode(geometry: box)        boxNode.geometry
?.firstMaterial?.diffuse.contents = UIColor.brownColor()        boxNode.position = SCNVector3(x: 0, y: 10, z: -20)        return boxNode    }mainScene.rootNode.addChildNode(BoxNode())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

類似的還有其他幾個簡單幾何體,設定都大同小異.

最後我們SceneKit還內建了可以直接將字串變為3D幾何體的類SCNText,我們可以方便的在遊戲場景中生成3D文字

func createStartingText()->SCNNode{        let startText = SCNText(string: "大熊貓豬侯佩", extrusionDepth: 5)        startText.chamferRadius = 0.5        startText.flatness = 0.3        startText.font = UIFont(name: "Copperplate", size: 30)        startText.firstMaterial?.specular.contents = UIColor.blueColor()        startText.firstMaterial?.diffuse.contents = UIColor.yellowColor()        startText.firstMaterial?.shininess = 0.4        let textNode = SCNNode(geometry: startText)        textNode.scale = SCNVector3(x: 0.75, y: 0.75, z: 0.75)        textNode.position = SCNVector3(x: 0, y: 50, z: -50)        return textNode    }
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

最後執行App看看效果:

這裡寫圖片描述

這裡寫圖片描述

還是蠻讚的,不是嗎 ;]

           

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://blog.csdn.net/jiangjunshow