iOS で SceneKit を試す(Swift 3) その21 - ビルトインジオメトリ SCNBox(立方体)
立方体のジオメトリ。角を丸くすることができる。
Scene Editor でのパラメーター
オブジェクトライブラリの Box を Scene Editor にドラッグ&ドロップして、Attributes Inspector を開く(Command + Option + 4)
1番上の Box の項目で設定値が変更できる
Size
width、height、length で設定する。
初期値は1。
名称 | 意味 |
---|---|
width | 幅 |
height | 高さ |
length | 奥行き |
Chamfer radius
角丸の半径の値でデフォルトは0。
width、height、length が 1 で Chamfer radius 1 の場合は球体になる。
Segment Count
面のポリゴンの分割数を width、height、length で設定する。
初期値は 1 で Int 型。
初期値 1 と width、height、length、すべての値 4
シェーダーでジオメトリをいじる際に使用するものだと思われる。
また、各面で分割できるため、隣接する各面は繋がっておらず、6面の平面が独立している。
Chamfer Segment Count
角丸のポリゴンの分割数を指定する。 初期値は 10 で Int 型。
値 2 にしたもの
コード
// シーン設定 let scnView = self.view as! SCNView scnView.showsStatistics = true scnView.allowsCameraControl = true scnView.debugOptions = .showWireframe // ワイヤーフレーム表示 let scene = SCNScene() scene.background.contents = UIColor.white scnView.scene = scene // カメラ設定 let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(2.372,1.473,2.399) cameraNode.eulerAngles = SCNVector3(-Float.pi * 0.125,Float.pi * 0.25,0) scene.rootNode.addChildNode(cameraNode) // ライト設定 let lightNode = SCNNode() let omniLight = SCNLight() omniLight.type = .omni lightNode.light = omniLight lightNode.position = SCNVector3(0,5,0) scene.rootNode.addChildNode(lightNode) // SCNBox let box = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.1) /* box.width = 1 box.height = 1 box.length = 1 box.chamferRadius = 0.1 */ box.widthSegmentCount = 4 box.heightSegmentCount = 4 box.lengthSegmentCount = 4 box.chamferSegmentCount = 10 let node = SCNNode(geometry: box) scene.rootNode.addChildNode(node)}
今回はここまで。