UnityでAndroidスマホのカメラ映像を使いたい…
WebCamTextureの使い方がわからない…
こんな疑問を解決するために勉強してきたことをまとめていきます。
今回はWebCamTextureを使ってAndroidスマホのカメラ映像をUnity上のGameObjectに投影してみました。
Androidスマホのカメラ映像を使うことができれば、AR(Augmented Reality)やVR(Virtual Reality)の開発に生かせそうですよね。
以下では、僕が学んだことをまとめていきます。
結論から言いますと、WebCamTextureを使えば、カメラ映像を簡単にオブジェクトに投影することができます。
Unity上のメッシュのあるオブジェクトになら、おそらくなんにでも投影できるので、Plane(板)に投影したり、Sphere(球)にもカメラ映像を移したりできます。
この記事内でもいろいろ検証しているので、ぜひ参考にしてみてください!
なお、カメラ映像はアプリとして実用を想定してAndroidスマホのカメラ映像を使っています。Webカメラでは持ち運びしずらいですからね。
Androidスマホのカメラ映像を取得する際には、Androidビルドすることが必須となりますので、まだAndroidビルドの設定を行っていない方は、こちらの記事を参考に設定してきてください。
■WebCamTextureでAndroidスマホのカメラ映像をGameObjectへ投影する
それではさっそく、WebCamTextureを使っていきます。
前提として「Androidビルドの設定を完了していること」が必須です。まだ設定をしていない方は、以下の記事を参考に設定してきてください。
・カメラ映像取得のためのコーディング
カメラ映像を投影するために必要最低限のコードは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 |
using UnityEngine; public class CamScript : MonoBehaviour { void Start() { WebCamTexture webCamTexture = new WebCamTexture(); Renderer renderer = GetComponent<Renderer>(); renderer.material.mainTexture = webCamTexture; webCamTexture.Play(); } } |
<Start()内のコードについての説明>
1~3行目で、WebCamTextureの変数webCamTextureを生成し、RenderにwebCamTextureします。
その後、4行目のPlay()メソッドでカメラを再生させます。
このコードをカメラ映像を投影させたいオブジェクトに設定し、スマホをUSB接続してAndroidビルドすることで、Android実機でカメラ映像を取得することができます。
ここで僕がハマったポイントについて報告。
AndroidスマホをUSB接続し、Unity Editor上のPlayボタンを押して再生するだけではAndroidのカメラは応答しません。
USB接続したWebカメラなどは、おそらく再生できると思います。しかしAndroidスマホのカメラを利用するには、Androidビルドが必須となるので注意してください。
・【実例】いろいろなオブジェクトに投影してみた
上のコードを使って、いろいろなオブジェクトにカメラ映像を投影してみました。
<Sphereに投影>
<Cubeに投影>
<Planeに投影>
こんな感じで、簡単に投影することができました。
以下では他にもあるWebTextureの機能を実装するコードについて紹介していきたいと思います。
■WebTextureで使えるコードを紹介
・カメラの再生・停止・一時停止のコード
1 2 3 4 5 6 7 |
WebCamTexture webCamTexture = new WebCamTexture(); //一時停止 webCamTexture.Pause(); //停止 webCamTexture.Stop(); //再生 webCamTexture.Play(); |
Pause、Stop、Playと文字通りの意味合いを持ちます。
再生・停止・一時停止を切り分けることで、必要な時だけカメラを動かすことができそうですね。
■まとめ
今回は以上となります。
まだまだできることは多そうなので、随時追加していく予定です。
以下のUnityドキュメントを参考にすれば、ほかの機能も実装できると思うので、興味のある方はぜひ参考にしてみてください。
https://docs.unity3d.com/ja/current/ScriptReference/WebCamTexture.html
最後まで読んでいただきありがとうございました。