SceneKit 簡單的3D遊戲場景搭建
阿新 • • 發佈:2019-01-13
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