SceneKit Training for OSX by Swift (1): Display Cube
Xcode 6.1 が release されてswiftがMac OSXでも動くようになった。 あんまりチュートリアルもなさそうなので、SceneKit勉強したログを残します。
ベースプロジェクトの作成
Xcode -> New -> Project -> OSX -> Game
実行
デフォルトだとAirPlaneが表示される。
空シーンを指定する
ViewControllerをまっさらな状態に直す。
import SceneKit
import QuartzCore
class BasicObjectSceneController: NSViewController {
@IBOutlet weak var baseView: BaseView!
override func awakeFromNib () {
let scene = SCNScene()
self.baseView!.scene = scene
self.baseView!.allowsCameraControl = true
self.baseView!.showsStatistics = true
}
}
実行
背景色をつける
SceneKitというかViewの機能ですが、backgroundColorのpropertyにアクセスして変更する。
override func awakeFromNib () {
let scene = SCNScene()
self.baseView!.scene = scene
self.baseView!.allowsCameraControl = true
self.baseView!.showsStatistics = true
self.baseView!.backgroundColor = NSColor.blueColor()
}
Cubeを表示する
SCNSceneをextendしてカスタムシーンを作ります。
import SceneKit
class BaseObjectScene: SCNScene {
init(named name: String) {
super.init()
let cube = createCube()
rootNode.addChildNode(cube)
}
required init(coder aCoder: NSCoder) {
super.init(coder: aCoder)
}
func createCube() -> SCNNode {
let cube = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0)
let cubeNode = SCNNode(geometry: cube)
let rotateDegree : CGFloat = CGFloat(M_PI_4) / 2
cubeNode.transform = SCNMatrix4MakeRotation(1.0, rotateDegree, rotateDegree, 0)
return cubeNode
}
}
呼び出しの変更
+ let scene = BaseObjectScene(named: "cube scene")
- let scene = SCNScene()
実行