[SceneKit專題]1-Hello-SceneKit

說明

本系列文章是對<3D Apple Games by Tutorials>一書的學習記錄和體會,完整版請購買正版書籍node

此書對應的代碼地址git

SceneKit系列文章目錄github

更多iOS相關知識查看github上WeekWeekUpProjectswift

系列文章目錄

  1. Hello SceneKitapp

  2. physics物理效果編輯器

  3. Render Loop渲染循環工具

  4. Particle Systems粒子系統oop

  5. 3D空間的觸摸事件post

  6. Scene Editor場景編輯器學習

  7. Cameras相機

  8. Lights燈光

  9. Basic Collision Detection碰撞檢測基礎

  10. Materials材質

  11. Reference Nodes引用節點

  12. Shadows陰影

  13. Intermediate Collision Detection碰撞檢測中級

  14. Motion Control運動控制

  15. Transitions轉場

  16. Actions動做

  17. Audio音頻

  18. Mac經常使用3D工具

  19. MagicaVoxel的使用,3D體素網格建模

  20. 仿水果忍者小遊戲Geometry Fighter

  21. 3D打磚塊遊戲Breaker

  22. 3D平衡球遊戲Marble Maze

  23. 跨平臺遊戲(macOS,tvOS,watchOS)

  24. 體素風格過馬路遊戲Mr. Pig

  25. 如何製做一個像Can Knockdown的遊戲

  26. 如何製做一個像Stack的遊戲


Scenes:SCNScene

自帶一個定義了座標系的root node(根節點),使用scene gragh來組織場景,能夠向內部增長樹狀結構的內部節點(node),例如 lights光源, cameras相機, geometry幾何體, particle emitters粒子發射源. 須要放到SCNView的實例中呈現,SCNView在OSX(macOS)中是NSView的子類,在iOS中是UIView的子類;

左側樹狀結構

QQ20170402-175546@2x.png

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

QQ20170402-180815@2x.png

Nodes:SCNNode

遊戲中的每一個元素都被稱爲node(節點),存放在樹狀結構scene gragh中,例如 lights光源, cameras相機, geometry幾何體, particle emitters粒子發射源.每一個scene graph中包含一個特殊的基礎節點:root node(根節點),能夠把其餘節點添加到節點下面,變成它的子節點.

添加到scene中的node,默認在(x:0, y:0, z:0),即相對於父節點的位置.要想調整節點在父節點的位置,應該調整local coordinates(本地座標系),而不是調整world coordinates(世界座標系).

注意 默認狀況下,若是一個場景中沒有任何改變時,Scene Kit會進入"paused"(暫停)狀態,爲了防止這種狀況,須要在建立SCNView實例時設置playing屬性爲true如

scnView.playing = true
複製代碼

camera

攝像機的顯示範圍控制,小於zNear不顯示,大於zFar不顯示.添加到一個空節點的camera屬性裏

QQ20170402-204457@2x.png

func setupCamera() {
  // 1.建立空的節點
  cameraNode = SCNNode()
  // 2.建立相機,添加到節點中
  cameraNode.camera = SCNCamera()
  // 3.設置相機節點的位置
  cameraNode.position = SCNVector3(x: 0, y: 0, z: 10)
  // 4.添加到根節點中
  scnScene.rootNode.addChildNode(cameraNode)
}
複製代碼

primitives geometry(原生幾何體)

系統自帶了不少基礎的幾何體,添加到一個空節點的geometry屬性裏 第一排從左起:cone(圓錐體), torus(圓環體), capsule(膠囊體), tube(管道) 第二排從左起:pyramid(四棱錐), box(長方體), sphere(球體), cylinder(圓柱體)

QQ20170402-211703@2x.png

SCNView內置屬性

// 1.顯示統計數據
scnView.showsStatistics = true
// 2.打開相機控制
scnView.allowsCameraControl = true
// 3.自動啓用默認光源
scnView.autoenablesDefaultLighting = true
複製代碼

1.showsStatistics在底部顯示一個實時的統計條,左側+號點擊可展開;
2.allowsCameraControl容許使用簡單手勢控制相機
-單指滑動:旋轉相機;
-雙指滑動:移動相機;
-雙指捏合:縮放;
-雙擊:若是有兩個相機則切換,一個相機則返回原始狀態;
3.autoenablesDefaultLighting建立一個通用的全方向光源;

fps:幀率,每秒渲染的畫面數
◆:每幀畫面渲染的總物體數,多光源照射同一物體時會渲染屢次
▲:每幀畫面渲染的多邊形總數量
✸:可見的光源總數(影響物體的光源), Scene Kit推薦不要同時使用3個以上光源

QQ20170402-214534@2x.png

QQ20170402-215145@2x.png
相關文章
相關標籤/搜索