iOS で SceneKit を試す(Swift 3) その27 - ビルトインジオメトリ SCNSphere(球)
球のジオメトリ。
Scene Editor でのパラメーター
オブジェクトライブラリの Sphere か GeoSphere を Scene Editor にドラッグ&ドロップして、Attributes Inspector を開く(Command + Option + 4)
1番上の Sphere の項目で設定値が変更できる
Sphere と GeoSphere の違いは、 ジオメトリの名前と、geodesic にチェックがついているか否か。
Dimensions
Radius
球の半径で初期値は 1。 半径であるため、ジオメトリは倍の大きさになる。
Segment Count
X軸とY軸方向での外周での分割数。 初期値は 24。
Geodesic のチェックが入っていると正20面体からの分割数となる。
Geodesic
チェックすると三角ポリゴンを均等に麺が構成される。
下記の画像参照。
Geodesic: false(デフォルト)
分割数 16
Geodesic: true
分割数 16
コード
// シーン設定 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) // SCNSphere let sphere = SCNSphere(radius: 1) /* sphere.radius = 1 sphere.isGeodesic = true */ sphere.segmentCount = 16 sphere.firstMaterial?.diffuse.contents = UIColor.black // ワイヤーフレームを見やすくするため黒色に。 let node = SCNNode(geometry: sphere) scene.rootNode.addChildNode(node)
今回はここまで。