見出し画像

iOSでARにチャレンジしました

こんにちは。iOSエンジニアの高橋です!
今回は、以前より気になっていたARに挑戦してみました。作ってみたものはとてもシンプルで、オブジェクトをただ表示するだけになります。チュートリアル的に触ってみましたので、紹介していければと思います。

地球を作ってみる

ARブログ

1. プロジェクト作成

スクリーンショット 2020-10-28 19.30.39

今回は、SceneKitを選択して作成していきます。
RealityKitの方が新しくAR開発しやすいという記事をよく見ましたが、まだSceneKitよりもできることが少なそうなので今回は見送りました。
ただ、iPhone12 Pro/ Max に搭載されて話題になったLiDARスキャナと組み合わせることができる機能などWWDC20で発表されているので、RealityKitは今後も大注目です。

2. いざ実装

といっても、プロジェクト立ち上げた時点でほとんど準備ができてるので、あとは以下の作業を行うだけになります。

1. テクスチャを用意
2. viewDidLoad内でオブジェクトを追加

2-1. テクスチャを用意

検索エンジン等で「earth 3d texture」などで検索をすると、いくつか画像がヒットするので、今回はこちらを使用させていただきました。

2-2. オブジェクトを追加

球体オブジェクトを生成して、用意したテクスチャを設定していきます。

// 球オブジェクトを生成
let sphere = SCNSphere(radius: 0.1)
// 外見を設定
let material = SCNMaterial()
// ダウンロードしたテクスチャを設定
material.diffuse.contents = UIImage(named: "art.scnassets/earth.jpg")
// 設定を適用
sphere.materials = [material]

あとは、表示位置を設定してオブジェクトを追加します。

// 表示位置情報を付与
let node = SCNNode(geometry: sphere)
node.position = SCNVector3(0, 0.4, -0.3)
// 表示追加
sceneView.scene.rootNode.addChildNode(node)

表示座標についてこちらの記事が分かりやすくまとめられていました。

全体で見ると以下の様になります。

override func viewDidLoad() {
   super.viewDidLoad()
   
   // Set the view's delegate
   sceneView.delegate = self
   // Show statistics such as fps and timing information
   sceneView.showsStatistics = true
   
   // 以下を追加する
   // 球オブジェクトを生成
   let sphere = SCNSphere(radius: 0.1)
   // 外見を設定
   let material = SCNMaterial()
   material.diffuse.contents = UIImage(named: "art.scnassets/earth.jpg")
   sphere.materials = [material]
   
   // 表示ポジションを設定
   let node = SCNNode(geometry: sphere)
   node.position = SCNVector3(0, 0.4, -0.3)
   
   sceneView.scene.rootNode.addChildNode(node)
}

3. まとめ

簡単ではありますが、ARの世界に少しだけ足を踏み入れることができました。まだ、数%も活用できていないので学習を進めて面白いものを作れればと考えております。

この記事が気に入ったらサポートをしてみませんか?