第2章 ARKit 堤 修一/@shu223


SCNBillboardConstraintを用いる方法

 ARKitにおけるカメラの取り扱い(ARCamera)の解説のため、「2.7.2 デバイスの移動に対するインタラクション」ではベクトルや角度の計算を行いましたが、実は「特定軸の回転だけを許可しつつ、ノード(SCNNode)を常にカメラの方に向かせる」という目的だけでいえば、SCNBillboardConstraintを用いてもっと簡単に実現できます。

let billboardConstraint = SCNBillboardConstraint()
billboardConstraint.freeAxes = SCNBillboardAxis.Y
virtualNode.constraints = [billboardConstraint]

これで仮想オブジェクトのノードに、y軸に対する回転だけを自由にして、常にカメラの方を向くような制約が付加されます。

 ここまでで、AR機能を実現するための要素となる実装方法を解説してきました。ここからはARKitを用いた具体的なアプリケーションの実装手順を解説します。

 ARKitが発表されて間もない2017年6月25日、YouTubeに、ARKitを使って現実空間の長さを測定するアプリのデモ動画が投稿され、話題となりました。

図2.13 AR Measure App Demo - Augmented reality tape measure

 静止画では何をしているか分かりづらいかもしれませんが、図2.13 において上側にあるのが現実のメジャー(巻尺)で、下側にあるのがARKitで計測した長さに合わせて描画している仮想メジャーです。数値がほぼ一致しており、かなり良い精度で測定できていることがわかります。

 このようなアプリが実現可能なのは、ARKitは現実のスケール(距離や大きさ)も推定しているためです。本節では、ARKitの関連する仕様について解説するとともに、このような現実空間の長さを測るアプリの実現方法を検討してみます。

サンプルコード: 07_ARMeasure

iOS 11 Programming

  • 著者:堤 修一,吉田 悠一,池田 翔,坂田 晃一,加藤 尋樹,川邉 雄介,岸川 克己,所 友太,永野 哲久,
  • 製本版,電子版
  • 続きを読む