Apple Engine

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

iOS で SceneKit を試す(Swift 3) その29 - ビルトインジオメトリ SCNTube(チューブ型)

チューブ型のジオメトリ。

f:id:x67x6fx74x6f:20170712161450p:plain  

Scene Editor でのパラメーター

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

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

f:id:x67x6fx74x6f:20170712161504p:plain

 

Dimensions

Inner radius

チューブ内側の円の半径。
初期値は 0.5。

Outer radius と同じするとチューブの厚さがなくなる。  

Outer radius

外周の半径。
初期値は 1。

Inner radius と同じするとチューブの厚さがなくなる。

 

Height

ジオメトリの高さ
初期値は 1。

 

Segment Count

Radial

外周の分割数。
初期値は 48。

 

Height

高さの分割率。
初期値は 1。

 

外周を 16、高さを 4 の分割数に設定したもの。

f:id:x67x6fx74x6f:20170712161513p: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)

// SCNTube
let tube = SCNTube(innerRadius: 0.5, outerRadius: 1, height: 1)

/*
tube.innerRadius = 0.5
tube.outerRadius = 1
tube.height = 1
*/

tube.radialSegmentCount = 16
tube.heightSegmentCount = 4


tube.firstMaterial?.diffuse.contents = UIColor.black // ワイヤーフレームを見やすくするため黒色に。

let node = SCNNode(geometry: tube)
scene.rootNode.addChildNode(node)

 

今回はここまで。