說明
本系列文章是對<3D Apple Games by Tutorials>一書的學(xué)習(xí)記錄和體會
更多iOS相關(guān)知識查看github上WeekWeekUpProject
系列文章目錄
Scenes:SCNScene
自帶一個定義了坐標(biāo)系的root node(根節(jié)點),使用scene gragh來組織場景,可以向內(nèi)部增加樹狀結(jié)構(gòu)的內(nèi)部節(jié)點(node),例如 lights光源, cameras相機(jī), geometry幾何體, particle emitters粒子發(fā)射源.
需要放到SCNView的實例中呈現(xiàn),SCNView在OSX(macOS)中是NSView的子類,在iOS中是UIView的子類;
左側(cè)樹狀結(jié)構(gòu)

坐標(biāo)系,屏幕外是+Z方向,坐標(biāo)使用向量表示,示例SCNVector3(x: 0, y: 5, z: 10)

Nodes:SCNNode
游戲中的每個元素都被稱為node(節(jié)點),存放在樹狀結(jié)構(gòu)scene gragh中,例如 lights光源, cameras相機(jī), geometry幾何體, particle emitters粒子發(fā)射源.每個scene graph中包含一個特殊的基礎(chǔ)節(jié)點:root node(根節(jié)點),可以把其他節(jié)點添加到節(jié)點下面,變成它的子節(jié)點.
添加到scene中的node,默認(rèn)在(x:0, y:0, z:0),即相對于父節(jié)點的位置.要想調(diào)整節(jié)點在父節(jié)點的位置,應(yīng)該調(diào)整local coordinates(本地坐標(biāo)系),而不是調(diào)整world coordinates(世界坐標(biāo)系).
注意
默認(rèn)情況下,如果一個場景中沒有任何改變時,Scene Kit會進(jìn)入"paused"(暫停)狀態(tài),為了防止這種情況,需要在創(chuàng)建SCNView實例時設(shè)置playing屬性為true如
scnView.playing = true
camera
攝像機(jī)的顯示范圍控制,小于zNear不顯示,大于zFar不顯示.添加到一個空節(jié)點的camera屬性里

func setupCamera() {
// 1.創(chuàng)建空的節(jié)點
cameraNode = SCNNode()
// 2.創(chuàng)建相機(jī),添加到節(jié)點中
cameraNode.camera = SCNCamera()
// 3.設(shè)置相機(jī)節(jié)點的位置
cameraNode.position = SCNVector3(x: 0, y: 0, z: 10)
// 4.添加到根節(jié)點中
scnScene.rootNode.addChildNode(cameraNode)
}
primitives geometry(原生幾何體)
系統(tǒng)自帶了很多基礎(chǔ)的幾何體,添加到一個空節(jié)點的geometry屬性里
第一排從左起:cone(圓錐體), torus(圓環(huán)體), capsule(膠囊體), tube(管道)
第二排從左起:pyramid(四棱錐), box(長方體), sphere(球體), cylinder(圓柱體)

SCNView內(nèi)置屬性
// 1.顯示統(tǒng)計數(shù)據(jù)
scnView.showsStatistics = true
// 2.打開相機(jī)控制
scnView.allowsCameraControl = true
// 3.自動啟用默認(rèn)光源
scnView.autoenablesDefaultLighting = true
1.showsStatistics在底部顯示一個實時的統(tǒng)計條,左側(cè)+號點擊可展開;
2.allowsCameraControl允許使用簡單手勢控制相機(jī)
-單指滑動:旋轉(zhuǎn)相機(jī);
-雙指滑動:移動相機(jī);
-雙指捏合:縮放;
-雙擊:如果有兩個相機(jī)則切換,一個相機(jī)則返回原始狀態(tài);
3.autoenablesDefaultLighting創(chuàng)建一個通用的全方向光源;
fps:幀率,每秒渲染的畫面數(shù)
◆:每幀畫面渲染的總物體數(shù),多光源照射同一物體時會渲染多次
▲:每幀畫面渲染的多邊形總數(shù)量,
?:可見的光源總數(shù)(影響物體的光源), Scene Kit推薦不要同時使用3個以上光源

