[SceneKit專題]7-Cameras相機

蘋果API搬運工發表於2017-12-25

說明

本系列文章是對<3D Apple Games by Tutorials>一書的學習記錄和體會

此書對應的程式碼地址

SceneKit系列文章目錄

準備工作SCNFloor

建立前需要做一些準備工作,要建立一個可見的內容來展示.比如用floor地板 floor node地板節點是有特殊特性的節點.floor是一個向四方無限延伸的平面,無限大,而且還可以用做反射面.比如鏡子,水銀,水面.

QQ20170404-142607@2x.png

拖動一個floor到場景中,更改名稱為Floor,設定位置等

QQ20170404-142651@2x.png

  • Identity(身份標識):Name是惟一的,決定性的,這樣當使用程式碼就可以拿到該物件.
  • Position(位置):決定節點的擺放位置,相對於父節點.
  • Euler Angles(尤拉角角度):決定節點相對於父節點的旋轉.pitch(俯仰), yaw(偏航) 和 roll(滾轉).
  • Scale(縮放比例):對節點及其子節點應用全域性的縮放,也是相對於父節點.

QQ20170404-142702@2x.png
屬性檢查器是和型別相關的,下面是floor的屬性

  • Reflectivity(反射率):控制表面反射,1.0完全鏡面反射,0.0不反射.
  • Falloff Start/End:控制反射的漸變,從哪裡開始和結束.當Scene Kit渲染地板上的反射時,用了一個透明度漸變,它可以根據物體距離地板的距離使部分反射逐漸褪色.近的物體將渲染出銳利的反射,遠距離的物體則更模糊的反射.
  • Resolution Factor(解析度):決定反射解析度的馬賽克程度.1.0會有1:1畫素級精確反射,而0.1將會看到粗糙,馬賽克的反射.這些計算對效能消耗很大,所以犧牲一些反射的質量可以讓你的遊戲執行更流暢.理解這個引數能讓你在效能優化時更方便.

QQ20170404-142714@2x.png
地板沒有顏色很難被看到,所以選擇材料檢查器,點選Diffuse選擇顏色

相機有兩種:perspective(透視相機) orthographic(正交投影相機).

Perspective camera透視相機

在第一人稱射擊遊戲中很常見,產生近大遠小的深度知覺

QQ20170404-133542@2x.png

  • Projection(投影):xy視場範圍決定相機視野範圍.當xy都設定為0時,系統預設把垂直方向設定為60度,並根據螢幕比例來自動調整水平視野
  • Z Clipping Range(Z軸裁剪範圍):決定了平頭截體深度範圍,小於Near和大於Far的物件將會被裁剪不渲染.
  • Depth of Field(景深):控制相機光圈大小,可以聚集到某一點上產生虛化背景,但是會帶來很高的效能消耗.
  • Category Bitmask(類掩碼):允許設定遮蔽物件,只看某些特殊的東西.

Orthographic Camera正交投影相機

遠近物體一樣大,比如吃豆人遊戲中

QQ20170404-133905@2x.png

  • Projection(投影):因為物體不管無管遠近都一樣大,所以當需要放大或縮小視場時不能通過改變距離調整,而要通過scale來放大或縮小視場.
  • Z Clipping Range(Z軸裁剪範圍):決定了平頭截體深度範圍,小於Near和大於Far的物件將會被裁剪不渲染.
  • Depth of Field(景深):控制相機光圈大小,可以聚集到某一點上產生虛化背景,但是會帶來很高的效能消耗.
  • Category Bitmask(類掩碼):允許設定遮蔽物件,只看某些特殊的東西.

相關文章