Apple Engine

Apple, iPhone, iOS, その周辺のことについて

iOS で SceneKit を試す(Swift 3) その21 - ビルトインジオメトリ SCNBox(立方体)

立方体のジオメトリ。角を丸くすることができる。

f:id:x67x6fx74x6f:20170711170201p:plain

 

Scene Editor でのパラメーター

オブジェクトライブラリの Box を Scene Editor にドラッグ&ドロップして、Attributes Inspector を開く(Command + Option + 4)

1番上の Box の項目で設定値が変更できる

f:id:x67x6fx74x6f:20170711170219p:plain

 

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

f:id:x67x6fx74x6f:20170711170922p:plain

 

シェーダーでジオメトリをいじる際に使用するものだと思われる。
また、各面で分割できるため、隣接する各面は繋がっておらず、6面の平面が独立している。

 

Chamfer Segment Count

角丸のポリゴンの分割数を指定する。 初期値は 10 で Int 型。

 

値 2 にしたもの

f:id:x67x6fx74x6f:20170711170856p:plain

 

コード

// シーン設定
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)}

 

今回はここまで。