てきとうなさいと べぇたばん

【ARCore】UnityでARCoreを使い、3Dモデルをスマートフォンに表示させ、スクリーンショット

てきめんちゃんと外にでて一緒に遊んだよ さいしょのプロット AR上で表示させて、スクリーンショットを取ったてきめんちゃん

てきめんちゃんモデルを作った

自分のドット絵を、ボクセルに変換して過去に作ったモデルの顔にはめたところ、なかなかいい感じにかわいいのができた。

というわけで、スマホでも愛でたいので、ARCoreを使って3Dモデルを表示させたい。

ただの日記になってしまった。内容がないと思う

ARCore

Googleが作ってるARプラットフォーム。

https://developers.google.com/ar/discover/

これを使えば、自分で作った3Dモデルをスマホに表示できるはずである。

どう使うか

Javaから(Android)使うか、Unityから使うか、UnrealEngineから使うかなどいろいろ選べるらしいけれども、自分にとってUnityがやりやすいことがわかった。

今日知ったけど、Javaでのチュートリアルあったのか。https://ktaka.github.io/codelab/sceneform-ar-ja/#0 よさそう。

Unityで使う

Unity で使うので、ARCoreのunitypackageをダウンロードしてインポート。Quick Start for Androidページを読んで、どう動かすのか理解する。

サンプルをいじる

droidくんが使われているので、それをてきめんちゃんモデルに変える。とりあえず表示させることができた。

モーションを加える

そのままだとT字型なので、立ち姿と走り姿を加える。しかし、ここで問題が発生した。というのは、てきめんちゃんモデルのボーンがおかしかったのか、なにか変なポーズになっていたのだ。

ボーンの修正

blenderでボーンを修正することにした。腕と肩の位置調整が主。fbxでエクスポート。

ARCoreで表示させる

  • 移動できるようにPlaneをおき、その上にてきめんちゃんを置く。
  • CrossPlatformInputで移動できるようにした。
  • カメラを撮るようにした

カメラを撮るようにした

カメラを撮るといっても、スクリーンショットを撮るのと同義としているので、Unityでスクリーンショットを撮るときのプラクティスを調べて撮影し、PNGファイルをスマホ内に保存させた。

スクリーンショットを保存する方法としては以下があるらしい。

  • ScreenCapture.ScreenShot
  • Texture2Dを作成し、Rectを呼び出してスクリーンをTexture2D.ReadPixels

どちらでも、まずスクリーンショットを取りたいとき、余計なコントローラー部分が表示されてほしくないので、SHOOTが押されたら非表示になってほしい。

そこで撮影して、撮影が終わったらコントローラーを表示させれば撮影となる、とした。

あとやりたいこと

ARCoreのObject Manipulationを使って、てきめんちゃんを拡大・縮小の操作ができるようにしたい

参考