メタルプレートっぽいBoxを表示するiPhoneアプリのサンプルコードを描いてみます。
import UIKit
import SceneKit
class ViewController: UIViewController, SCNSceneRendererDelegate {
weak var sceneView : SCNView?
var count = 0
override func viewDidLoad() {
super.viewDidLoad()
setupScene()
createBox(SCNMatrix4Identity)
createCamera()
}
func setupScene() {
let sv = SCNView(frame: view.bounds)
sv.scene = SCNScene()
sv.backgroundColor = UIColor.blackColor()
sv.autoenablesDefaultLighting = true
sv.allowsCameraControl = true
sv.delegate = self
view.addSubview(sv)
sceneView = sv
}
func createBox(transform : SCNMatrix4) {
let text = SCNText(string: “BOX”, extrusionDepth: 0.4)
text.font = UIFont.boldSystemFontOfSize(10)
let m1 = SCNMaterial()
m1.diffuse.contents = UIColor.darkGrayColor()
let m2 = SCNMaterial()
m2.diffuse.contents = UIColor.lightGrayColor()
text.materials = [m1, m1, m2, m2]
text.chamferRadius = 0.1
text.flatness = 0.1
let textNode = SCNNode(geometry: text)
textNode.pivot = SCNMatrix4MakeTranslation(10, 4, 0)
textNode.transform = SCNMatrix4Mult(textNode.transform, transform)
sceneView?.scene?.rootNode.addChildNode(textNode)
}
func createCamera() {
let camera = SCNNode()
camera.camera = SCNCamera()
camera.position = SCNVector3(x: 0, y: 0, z: 50)
self.sceneView?.scene?.rootNode.addChildNode(camera)
}
func renderer(aRenderer: SCNSceneRenderer, updateAtTime time: NSTimeInterval) {
count++
if (count % 10 == 0) {
createBox(SCNMatrix4MakeTranslation(0, 0, Float(count / 10) * 0.4))
}
}
}