SwiftのARkitを試してみたくて下記のUILのコードを写経してみました。
[iOS 11][ARKit] 平面の検出について #WWDC2017
すごくシンプルなコードだったのったので8割型なんとなく何を行なっているのかわかったのですが、一部一体何を行なっているのかわからないところがあったので質問させてください。
わからなかった部分はARとして追加をするPlaneNodeのクラスです。
Swift
1 init(anchor: ARPlaneAnchor) { 2 super.init() 3 4 geometry = SCNPlane(width: CGFloat(anchor.extent.x), height: CGFloat(anchor.extent.z)) 5 let planeMaterial = SCNMaterial() 6 planeMaterial.diffuse.contents = UIColor.white.withAlphaComponent(0.5) 7 geometry?.materials = [planeMaterial] 8 SCNVector3Make(anchor.center.x, 0, anchor.center.z) 9 transform = SCNMatrix4MakeRotation(-Float.pi / 2, 1, 0, 0) 10 }
まず初期化の部分ですが、geometryという変数?を宣言無しに使えています。宣言元をみに言ったところopenという識別子を使って書かれていたのでググってみたところ、下記の記事に行き当たりました。
[Swift 3.0] アクセス修飾子にopenとfileprivateが追加された話
これはARkitの持っているメンバ変数をプログラマが自由に使えるってことなんでしょうか?
2つ目に色を設定したあとの2行が何をやっているのかよくわからないです。
Swift
1 SCNVector3Make(anchor.center.x, 0, anchor.center.z) 2 transform = SCNMatrix4MakeRotation(-Float.pi / 2, 1, 0, 0)
SCNVector3Makeの説明を見るとReturns a new three-component vector created from individual component values.このような記述があり、ベクトルを戻り値として返しているようなのですが、関数を読んだだけで戻り値を受けていないので、なぜ呼んでいるのかわかりませんでした
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/06 10:52