書いた人:田中(エンジニア)
こんにちは。Zooops Japan(ズープス ジャパン)・エンジニアの田中です(社内ではYTって呼ばれています)。弊社ブログ初の投稿なので、軽く自己紹介をします。 新卒でZooops Japanに入ってエンジニア歴は2年目。仕事では、Unityを使用したアプリケーション開発やWebシステムの開発をメインにしています。Webに関しては、PHPフレームワークのLaravelが多めです。 2018年秋も様々なイベントがありましたね。一つは「ハロウィン」。もう一つは、AppleによるiOS12のリリース、それに伴って「ARKit2」も正式にリリースされました。 私も先日、北海道斜里町で開催された「第三回しれとこハロウィン2018」に参加してきました(しれとこハロウィンの様子は、しれとこハロウィンさんのFacebookでご覧ください)。 と言うのも弊社はTech企業として子どもたちに最新技術でワクワクしてもらうために、催し物としてARハロウィンゲームを作成・提供したからです(私はこのメイン開発者として参加しました。キリッ)。 アプリの紹介動画は同じくしれとこハロウィンさんのFacebookにあがっていますので是非ご覧ください。 というわけで、今回記事にするのは「ハロウィン×AR」についてです。「ARKit」って何?
今回、ARアプリの開発で使用したのが、「ARKit」ですが、あまり馴染みのない人のために最初に簡単に説明します。 「ARKit」とは、Appleが提供する開発者向けARフレームワークです。平面検出やポジショントラッキングといったAR機能をARKit側で吸収してくれるので、開発者側は簡単に検出された平面座標や自己位置などを取得することができます。 ARKitは現在Version2にまでアップデートされており、物体認識や空間情報の保存など様々な機能が追加で実装されています。 ますますAR開発の幅が広がり激アツですね!(もっと知りたい方は、以下を参考にしてみてください) ● Apple公式サイト https://developer.apple.com/jp/arkit/ ● アプリエンジニアのための技術情報サイト「ギャップロ」の紹介記事 https://www.gaprot.jp/gaprot-x-chogiken/xr/arkit_position_tracking ●「Qiita」の紹介記事 https://qiita.com/k-boy/items/d935b76fed67e11b9fb2今回の開発概要
今回行った開発概要を簡潔にまとめると、以下の通りです。開発概要 ●アプリについて AR機能を使用 子供向けハロウィンアプリ 知床の良さを取り入れたアプリ ●バージョン Unity 2018.2.6f1 .NET 4.x
設計の話からしようと思ったのですが、かなり分量が多くなりそうだったので今回は残念ですが(涙)、はしょります。アプリ全体として、UniRxをゴリゴリに使用して、イベント駆動で開発を進めました。 この記事では、ハロウィンアプリの最大のコンセプトであるAR機能について、今回は「Unity-ARKit-Plugin」を使用しましたのでそれに関する話と、あとは子どもたちに視覚的に楽しんでもらうために「シェーダ」を所々に用いましたのでその一部を紹介しようと思います。「Unity-ARKit-Plugin」
「Unity-ARKit-Plugin」とは、ARKitのネイティブインターフェースに対応したScripting APIを提供するUnity公式プラグインです。これを使用することで、ARKitの機能を簡単に利用することができます。 制作で利用したARKitの主な機能は6自由度(以降6DOFと略)の「ポジショントラッキング」と「平面検出」のみですが、利用例を簡単に紹介します(Unity-ARKit-Pluginのバージョンは、ARKit2をサポートした以降のものを使用しています)。ポジショントラッキング(6DOF)
ポジショントラッキングを実現するためには、「UnityARCameraManager.cs」をアタッチしたゲームオブジェクトをシーン上に配置する必要があります。
平面検出

‗600_876.jpg)
「シェーダ」
続いては「シェーダ」です。ここでは、非現実感を醸し出すために実装した「お化けシェーダ」と「墓のダンスシェーダ」を紹介します。お化けシェーダ
まずは、こちらの動画をご覧ください(音がでますよ)。 うーむ、我ながらお化け的な雰囲気が出ているではありませんか。 このお化けは間違って偽物カボチャをタッチしてしまったときに出現させます。 以下が実装コードです。_600_1072.jpg)
墓のダンスシェーダ
次に、こちらの動画をご覧ください(音がでますよ)。 実装の途中で、墓をそのまま置いているだけでは物足りない感じがし、揺らすことにしました。 揺らしたほうが、非現実的で楽しい気分になってきませんか?(ね、ね?)お墓_600_1117.jpg)