拡張現実を用いた ar...

18
平成 28 年度 卒業研究中間レポート 拡張現実を用いた AR コンシェルジュ制作 AR レオパリス君と暮らす賃貸生活 近畿大学工学部 情報学科 学籍番号 1310990099 藤井健太

Upload: others

Post on 05-Sep-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

平成 28年度 卒業研究中間レポート

拡張現実を用いた ARコンシェルジュ制作 ARレオパリス君と暮らす賃貸生活

近畿大学工学部 情報学科

学籍番号 1310990099 藤井健太

1

目次 1. 研究の背景と目的

1.1. 背景 1.2. 拡張現実と仮想現実について

1.2.1. 拡張現実について 1.2.2. 仮想現実について

1.3. 目的 2. 研究計画

2.1. 研究計画 2.2. 役割分担

3. 研究内容 3.1. 使用ソフト

3.1.1. Unityとは 3.1.2. Metasequoiaとは 3.1.3. MMDとは 3.1.4. softalkとは 3.1.5. PMDエディタとは

3.2. ARコンシェルジュ企画書 3.3. 研究課程

3.3.1. Andriod向けにビルド 3.3.2. Vuforiaを使用した AR球体の表示 3.3.3. SmartARについて 3.3.4. 3Dモデル「てくたま」の制作 3.3.5. MMDで振付を付加 3.3.6. MMDで作成したモーションデータを Unityへインポート 3.3.7. てくたまの移動 4. 今後の予定・課題 5. 参考文献・参考サイト

2

1.研究の背景と目的

1.1背景 拡張現実を用いたビジネスは近年急激に増加してきた.拡張現実の技術を用いた製品

が登場したのは 1960 年代であるが最近になって拡張現実のことをよく耳にするようになったのはなぜか.様々な理由が推測されるが,一番の理由は「ARToolkit」などの拡張現実を開発するためのライブラリが公開されたことだと私は考える.充実したライブラリ

が公開されたことにより,以前より容易に拡張現実を開発できるようになった.また,

スマートフォンなどの誰でも所持している端末で拡張現実を実現できるようになったこ

とも大きな要因である. 拡張現実を応用されている事例を見てみる.

上記の画像は食べ物などのポスターをターゲットと認識することで端末にコンピュー

タで処理された画像を表示している[1].これにより,メニューを見なくとも画像をスラ

イドするだけでどんな料理がどの価格で販売されているのか知ることができる[1].また,

料理をタッチすることでオーダーを自動的にとることも可能である.上記の画像はまだ

実験用のコンテンツだが,近い将来実用化されると思われる.いまだ発展途上の拡張現

実に新たなビジネスモデルの可能性を見出し卒研の方向を拡張現実に決定した. 他にも道案内の矢印を ARで表示させるアプリや空をカメラで移すことにより,雨雲の

分布などが AR表示されるアプリも存在する.手軽に持ち運びができてかつ保有率が高いスマートフォンのアプリが増加している.

平成 27 年度版の情報通信白書によれば,日本での個人の PC 保有率は 86.9%,iphone

や Androidなどのスマートフォンは 53.5%,タブレットは 17.3%となっており,現在様々な人がネットワーク機器を保有しネットに接続している状況にある.また,人によって

は個人で複数台もの端末を保有している人も少なくない.そのような状況の中で,近年

急激にユーザーを増やしだしたのがスマートフォンである.

3

上記の画像の通り,平成 22年から 26年の 4年間でスマートフォンの普及率が 9.7%から 64.2%まで急激に上昇にしている事が分かる.約 9倍である.手軽に持ち運ぶことができ,様々なセンサーを搭載したスマートフォンが普及したことによって,カメラを利

用したアプリや加速度センサーを使用したゲーム,スマートフォンならではのアプリが

続々登場した.その中でも現在注目されているのが拡張現実と仮想現実である.拡張現

実と仮想現実については 1.2で記述する. コンピュータの情報と現実世界を重ね合わせて表示させる AR でユーザーに様々な場

面で新たな価値を与えられるのではないかと考えた. 今回,株式会社レオパレス 21 との合同ミーティングを行ったので内容を以下に記述

する.株式会社レオパレスは現状の課題を以下であると述べた. 1 入居者の減少 2 住居者の継続的顧客満足度の低下

以上の内容を踏まえ,株式会社レオパレス 21の賃貸アパートで扱うことのできる AR コンシェルジュアプリを開発することを研究テーマとして決定した.このアプリは 20

~30 代の独身者をターゲットとしている.独り身の住居者に一人暮らしの不安感の払拭やニュースなどの情報の提供などを行い,快適な賃貸生活を確保する. 本アプリの制作目的は以下である.

1 新規入居者の獲得 2 住居者の継続的顧客満足度の獲得 3 話題性の獲得 使用ソフトはマルチプラットフォームでビルドできることや物理挙動などが容易に設

定可能ということで「Unity」を採用した. 1.2拡張現実と仮想現実について 1.2.1 拡張現実(Augmented Reality)について

拡張現実(以下 AR)とは現実世界の環境から視覚や聴覚,触覚などの知覚に与えられた情報をコンピュータによる処理で追加あるいは削減,変化させる技術の総称である. コンピュータがカメラやマイク,GPS,各種のセンサーなどで得たその場所や周囲の

平成 27年度情報通信白書 情報通信端末機器の普及状況[2]

4

状況に関する情報を元に,現実世界から得られた画像や映像,音声などに加工を施して

利用者に提供するシステム.データグローブなど身体に装着する機器を用いて触覚に働

きかけることも可能. 実装例として,現在社会現状となっているポケモン GOが ARである.GPSと同期さ

せたマップに出現したポケモン(モデル)をタッチすることで現実世界にカメラをかざ

すとポケモンが現実世界に重ねて表示される.一見すると,本当に現実世界にポケモン

が存在するように見える. ARアプリには大きく分けて 2つの種類が存在する. 1 ビジョンベース型(マーカー&マーカーレス型) 画像認識・空間認識などの技術を応用して直接目の前にある環境を認識・解析す

る.ターゲットとなるマーカーや特徴点を認識することで情報や 3DCG を表示する.

2 ロケーションベース型

GPS などから取得可能な位置情報を利用し,紐付けして情報を表示する.また磁気センサによる方位や加速度センサによる傾きなどと併せて,情報を提示する位

置を決定する.

本研究ではビジョンベース型を採用する.レオパレス 21 に常設されている家具をマーカーとし,空間認識を利用し部屋の中にレオパレス 21 のイメージキャラクター「レオパリスくん」を表示させる.

1.2.2 仮想現実(Virtual Reality)について

仮想現実(以下 VR)とは,人間の感覚器官に働きかけ,現実ではないが実質的に現実のように感じられる環境を人工的に創造する技術である. 身体に装着する機械や,コンピュータにより合成した映像・音響などの効果により,

3 次元空間内に利用者の身体を投影し,空間への没入感を生じさせる.空間内では移動や行動が可能で,利用者の動作に応じてリアルタイムに変化や応答が得られる対話性を

備えている.間隔へのフィードバックはディスプレイ装置やスピーカー,ヘッドフォン

を用いた視聴覚へのものが主になるが,身体に装着する装置で接触や圧迫を行い触覚に

働きかけたり,味覚や嗅覚へ人工的に働きかける技術の研究も行われている. 具体的な方式には様々なものがあるが,頭部にすっぽりと視界を覆う HMD(HEAD-

5

Mount Display)を用いた手法が特に主流である.

1.3 目的 今後,様々な可能性を秘めた AR の技術を利用し,株式会社レオパレス 21 との合同ミーティングにより発案された「AR コンシェルジュアプリ」を完成させることを目的とする.具体的には, 1 家具をターゲット(マーカー)に設定し,3D モデル「レオパリスくん」を表示する. 2 空間認識を利用し,部屋の中だけに表示する.壁にも当たり判定を付加する. 3 あたかも生きているかのような挙動・動作を付加. 4 天気情報やニュースなどの情報をピックアップし音声&コメントで表示させる. 5 レオパリスくんとゲーム(ホッケーゲームを予定)をできるようにする 以上,5点を実現させることを目的とする.

2. 研究計画 2.1. 研究計画

年間スケジュール

4月 VR/ARの概要及び開発方法の修業開始. 様々なプラットフォームに対応した 3Dアプリケーションを制作することができるので使用ソフトを「Unity」に決定.「Unity」での開発環境の設定. 使用プログラミング言語を C#に決定.C#の開発環境及び枠組みの修業を開始. 卒研テーマを検討.

5月 Unity の世界構築,AndroidAR の既存アプリの共通技術,オブジェクトをコントロールするための C#を参考書「Unity5 入門」,「完全版 究極の C#プログラミング新スタイルによる実践的コーディング」及び,インターネットで修業. Unityで使用する AR用のライブラリ「Vuforia」を使用しモデルをターゲットに生成. 卒研テーマを検討.

6月 修業して得た知識をもとに AndroidARアプリを作成. 空間認識が可能であるため,Unity で使用する AR 用のライブラリを SONY の「smartAR」に変更. smartARの利用方法など修業. AR で出現させる 3D モデルを作成すべく,3D モデル制作ソフト「Metasequoia」の使用方法を修業. 3Dモデルをパーツ毎に動作させるソフト「MMD」の使用方法を修業. 株式会社レオパレス 21 との合同ミーティングにより,卒研テーマ「AR コンシェルジュ」を仮決定.3Dモデル「てくたま(アイティーちゃん)」をMetasequoiaで完成. 今後の ARアプリ作成の参考のため,既存の ARアプリについての調査.

7月 「ARコンシェルジュ レオパリスくん」の企画書を作成. MMDにより,てくたまに動作を付加. てくたまに内部プログラミングを付加.

6

株式会社レオパレス 21の看板キャラ「レオパリスくん」の 3Dモデル作成開始. 中間レポート作成. 既存の ARアプリについて調査.

8月 3Dモデルレオパリスくんの完成. 家具を特徴点とし空間認識を利用し,モデルを表示. MMDでレオパリスくんの振付を付加. レオパリスくんを AR で表示し,「歩く」,「しゃべる」,「お辞儀する」機能をプログラミングで付加させる.

9月 空間認識による部屋でのエアホッケーをできるようにする. ネット情報を読み取り,読み取った結果をレオパリスくんに喋らせるようにプログラミ

ングを付加する. 10月

11月 実用できるくらいまで完成. 製作物の調整. 製作物のテスト・評価

12月 製作物の調整. 卒論作成.

1月 卒論完成. 卒研発表の準備・練習.

2月 卒研発表の準備・練習. 卒研発表.

2.2. 役割分担 同じ Unity を使用し,VR のアプリを制作している同研究室の片山と協力し研究を 進めている.週 1回の発表を聞き,直面している問題をアドバイスしつつ,されつつ 課題を解決している.例としては,私は ARで表示させたモデルの移動のスクリプト に悩んでいたが,片山の研究過程で得た知識を本にアドバイスしてくれ,無事移

動するスクリプトを完成.また,片山が Unity でシーン移動した際のオブジェクト の位置情報の保持・継承悩んでいたが,私のアドバイスで無事解決し,シーン移動

した際でもオブジェクトの位置情報が失われないスクリプトを完成させた. 3. 研究内容 3.1. 使用ソフト ①Unity ②Metasequoia ③MMD ④Softalk ⑤PMDエディタ 3.1.1. Unityとは Unity とは統合開発エンジンでゲームとインタラクティブな 3D コンテンツ制作のた

めの常識にとらわれない強力な機能を提供する.Android や iOS,web プレイヤーなど 様々なプラットフォームに対応している.グラフィックやサウンドの準備ができたら Unityにインポートするだけ.キャラクターやステージに物理演算を付加し,ビルドすることな

く実行が可能である[3]. 一般的な処理は,スクリプトの処理中にオブジェクトを生成し,オブジェクトを制御す

る形式であるが,Unity の実行手順としては,Unity で生成したゲームオブジェクにスクリプトを貼り付け,オブジェクトを制御する.オブジェクトには様々なコンポーネントと呼

ばれる機能をアタッチすることが可能である.

7

オブジェクトはツリー構造になっており,シーングラフによって処理される.オブ ジェクトを入れ子にすることにより,親オブジェクトと子オブジェクトを設定できる.

上記の画像の Hierarchyには Directional light,SmartAR Target,perfect,SmartAR Camera,

Canvas,EventSystemの 6つのゲームオブジェクトが存在している.perfectオブジェクトはSmartAR Targetの子オブジェクトである.イメージ図にすると下記のようになる.

Unityでの Hierarchyは上記のルートノードで構成されている. Unityの座標系は左手座標になっており,Z軸にプラスは奥である.また Unityの座 標に

はローカル座標,ワールド座標,スクリーン座標,ビューポート座標が存在す る[4]. ① ローカル座標とは,親オブジェクトを原点とした座標である. ② ワールド座標とは,3D空間内の座標のことを指す.特定のオブジェクトを配置す 際はなどに指定する.

③ スクリーン座標とは,画面解像度と一致する.1920×1200の場合,左が 0で右が 1920であり,上が 0で下が 1200である.ピクセルパーフェクトで座標を指定した い場合や OnGUIはこの値が基本となる.マウスの座標はスクリーン座標で取得す るため,マウス座標の値をワールド座標やビューポート座標に変換する場合もこ の座標が基本となるとなる.

④ ビューポート座標とは,スクリーン座標の値を 0~1にした座標.マルチレゾ リューション環境下で左下や右下といった座標を指定する際に便利. 3.1.2. Metasequoiaとは

Metasequoiaとはモデリングに特化した日本産の 3DCGソフトウェアである.リーで利用できる 3DCG ソフトウェアとして「Blender」があるが,違いは Metasequoia の場合モデリング重視であることが挙げられる.Blender はモデリングからスキニングまで可能なのに対し,Metasequoia は基本的にモデリングのみとなっている.その分操作は癖がなく比較的直観的な操作が可能で初心者でも扱いやすい仕様になっている.有償版にすると,スキニン

グも可能である. 3.1.3. MMDとは

ROOT

perfect

Directional light SmartAR Target SmartAR Camera EventSystem Canvas

8

MMDとはMikuMikuDanceの略でセットされたキャラクターの 3Dモデルを操作し コン

ピュータアニメーションを制作する 3DCGソフトウェアである.3Dモデルにボーンを設定することで細部まで振付を付加することが可能である.

3.1.4. Softalkとは

Softalkとは合成音声によるテキスト読み上げソフトである.打ち込んだテキストを 選択した音声で読み上げる.windows8以降のバージョンであれば,マイクロソフトの SAPI5対応の音声合成エンジン「Microsoft Haruka Desktop」なども音声として選択可能である.音程・速度・音量が調節でき,wavファイルで保存が可能.

3.1.5. PMDエディタとは

モデルファイル(pmd)を編集することのできるアプリケーションソフトウェアである.ボーンの挿入やテクスチャの貼り付けなどが設定可能.Metasequoiaで設定し たテクスチャはMMDでは使用できないので,PMDエディタで再度テクスチャを設 定する必要

がある. 3.2. ARコンシェルジュ企画書

9

10

3.3. 研究課程 3.3.1. Android向けにビルド

Unityを使用するにあたって,環境設定をする必要があった.Android用にビルドす るために AndroidSDKと JDKをダウンロードし PATHを設定した.

PATH を設定することにより Android 向けにビルドすることが可能になった.動作確認の

ためビルドを実行し,生成された apkファイルを Android端末に移動させ,インストールを試みた.無事インストールされ,Android にアプリをインストールすることは可能となった.

11

Unity のマルチプラットフォームの原理はいまだ理解できていないが研究中に判明させようと考えている.プラットフォーム依存の部分をプラットフォーム別に記述するようにして,

1 つのソースから各プラットフォーム用ににビルドできるように書くことは普通のことだが,仕組みの部分については調べても全く検出されないのでさらに深く調査する必要がある.

Unity での使用言語を今後の人生でも使用する可能性のある C#に決定.javascript は Unity

用に改造されているため使用を回避. 3.3.2. Vuforiaを使用した AR球体の表示

AR 用ライブラリを Vuforia に決定.会員登録をし,マーカーの登録を行う.Unityで扱うパッケージをダウンロードし Unityにインポート.中には AR 用のカメラとマーカーを検出した際に表示するオブジェクトを設定するためのパッケージが入っている.

上記の画像に表示されている ARCameraと ImageTargetを Hierarchyにドラッグし, 表示

させたいオブジェクトを ImageTargetの子オブジェクトに設定. ARカメラに Vuforiaで登録したマーカー画像を設定.そして,会員を判別しデータベース

を取得するためのキーを web サイトで取得し ARCamera に打ち込むことで,Android でVuforia のアプリを使用することが可能になる.結果,近畿大学の校章をマーカーに設定し,校章の上に球体を表示させることに成功した.

マーカーの検出はカメラで取得した画像をグレースケール画像化し,閾値によって あら

かじめ登録したマーカー画像と比較し閾値が一致している場合,オブジェクトを表示させる

仕組みになっている.ゆえに閾値がはっきりしない画像はマーカーに向いていない.

12

3.3.3. SmartARについて

SmartARとは Androidや iOSを対象としたマルチプラットフォーム対応の ARアプリケーション開発環境である.SDKが提供する ARI群を使用することにより,ARSmartARで容易に開発することが可能.空間認識などに長けているので,使用ライブラリを Vuforia からSmartARに変更.SmartARの処理系は以下である.

SmartAR のマーカー登録は dictool という辞書データを作成するためのツールを使用する.SmartAR で利用可能な認識対象物は,平面上の画像(ポスターや写真)などであり,複雑なテクスチャが含まれていたり,コーナー点が多く含まれるものは認識に適している.私の手

だけの画像や机のみの画像は認識物の点数評価が低かった.

dictoolの使用方法はコマンドラインに dictool.exe build -image マーカーにしたい画像名.画像の拡張子

と入力することで辞書データにマーカー画像が登録される.登録された辞書データを

Unity のプロジェクトの中に移動させて,ARCamera に登録することにより,マーカー画像として使用可能になる.

3.3.4. 3Dモデル「てくたま」の制作

表示させる AR モデルが球体では面白みがないので近畿大学工学部のイメージキャラクターてくたまのアイティーちゃんを Metasequoia で制作開始.主に基本図形の球体を駆使して,製作.てくたまの形状は単純だが,マウスケーブルに限ってはモデリングに苦労した.基本

図形には紐や縄といった形状のものはなく,円柱を細長くし,ナイフで切断面を入れ滑らか

に曲がっているケーブルをモデリングした. パーツごとにてくたまを動かせるため,モデルにボーンを挿入する.Metasequoia にテン

プレートで用意されている Humanoid ボーンを生成し,腕や足などてくたま重ね合わせていく.設定し終えたら,ボーンを動かした際のパーツの動きのウェイトを入力する.このとき

パーツの編集をロックしておくとウェイトの入力ができなくなるので注意が必要である.以

下の画像はボーンを設定したてくたまの画像である.

13

ボーンを設定し終えたら,MMDで振付作業を行うので PMDファイルで保存する必 要がある.また,Metasequoia内のテクスチャはMMDで反映されないのですべての テクスチャを画像ファイルで保存する必要がある.また,Metasequoiaでのモデルの移動は 3D空間で移動させるのではなく,正確にモデルを移動させることができるので x 軸面・y 軸面・z 軸面で移動させるほうが良い.

3.3.5. MMDで振付を付加

ボーンを追加したモデルをMMDにインポートする.このとき,Metasequoiaで追加 したボーンが欠如する事態が起こった.原因は不明だが,PMDエディタでボーンを 追加することによりカバーした.MMDでフレーム毎に動きを登録していく.MMD では開始と終了の動きを登録すると中間の動きも登録してくれる.振付が完了した ら,全フレームを

選択するか,保存したいフレーム間を選択してモーションデータ として保存する.

下図は歩いているような振付を作成したものである.

3.3.6. MMDで作成したモーションデータを Unityへインポート

作成したモーションデータを Unity用に変換するため,MMD4Mecanimというパッ ケー

14

ジを Unityへインポートする.このパッケージは Unity内で 3Dモデルとモーションデータを合成し,1 つの fbx 形式のモデルに変換するものである.変換が完了したら,プロジェクト内に変換されたモデルが生成される.モデルの中にあるモーションデータを再生し,モデル

が動いたら変換成功である.

3.3.7. てくたまの移動 Unityでの処理手順は基本的にまずワールドを生成し,次に各オブジェクトが生成 され

る.そしてオブジェクトの生成が完了した後にスクリプトの処理が行われる.Unity のイベント関数の実行順は以下の通りである.

15

変換したてくたまのモデルを移動させるためのスクリプトを作成.以下はスクリプトの内

図スクリプトライフサイクルフローチャート[5]

16

容である[6]. using UnityEngine; using System.Collections; public class move : MonoBehaviour { // Use this for initialization void Start () { transform.Translate(600,0,0); } // Update is called once per frame void Update () { transform.Translate(0, 0, -50); transform.Rotate(new Vector3(0, 5, 0), Space.Self); } }

Start 関数はオブジェクトの生成が完了した瞬間に一度だけ実行される関数である.toransform.Translate とはゲームオブジェクトを指定した座標に移動させるメソッドである.x軸に 600移動させている.これは,オブジェクトを移動させマーカーの周りを周回させるために記述した.

Update関数とは毎フレームごとに呼び出される関数である.Unityは 1秒間で約 60フレーム処理される.約 0.016秒間に 1度呼び出されるのである.Toranslateメソッドで z 軸に-50移動させる.そして Rotateメソッドで y軸に 5度回転させる.Vector3とは Unity全体の 3Dでの移動や回転を指定するために用いる.Space.Self は回転の座標の種類を指定している.この場合はローカル座標である.Update関数に記述しているので 1フレーム呼び出す毎に z軸に-50 移動し,y 軸に 5 度回転する.72 角形型に移動させることにより円形歩行を実現した.

4. 今後の予定・課題

1 現実の物体と 3D モデルの干渉を行うために,空間認識の機能を追加させ,モデルを部屋から出ないようにする.

2 音声認識を付加させ,話しかけると反応するようにする. 3 ネットワーク言語を使用し,ネットの情報を参照可能にする.

5. 参考文献・参考サイト [1] SONY 「Sony Japan|ニュースリリース|統合型拡張現実感技術"SmartAR (スマート AR※1)”を開発」 <http://www.sony.co.jp/SonyInfo/News/Press/201105/11-058/> [2] 総務省 「総務省|平成 27年度」

<http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h27/html/nc372110.html>( 2016/8/5 アクセス) [3] 荒川巧也・浅野祐一 「Unity5入門-最新開発環境による簡単 3D&2D ゲーム制作」SB Creative出版 (2015) [4] 「Unityが使う座標を勉強してみた」<http://letsunity.wpblog.jp/2015/06/18/post-230/> (2016/8/5アクセス)

17

[5] Unity 「Unityマニュアル」 <http://docs.unity3d.com/ja/current/Manual/index.html>(2016/8/2 アクセス) [6] 川俣 晶 「[完全版]究極の C#プログラミング ~新スタイルによる実践的コーディング」 技術評論社 (2009/5/22)