【Unity2018】オブジェクトにWebCameraの映像を貼り付ける
はじめに
UnityでPlaneにウェブカメラの映像を貼り付ける方法についてです。
映像にエフェクトをつけたり3Dキャラを走らせたり夢を広げるための下準備です。
Let’s プログラミング
では、実際にプログラムを書いていきましょう。
スクリプトの作成
ウェブカメラの映像を取得して、テクスチャにセットするスクリプトを作成していきます。
ProjectウィンドウのAssetフォルダ内で右クリックしてCreate>C# Scriptを選択します。
新しく作成したC#スクリプトのファイル名をWebCamController.csにします。
作成したスクリプトに以下のプログラムを記述します。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class WebCamController : MonoBehaviour { public int width = 640; public int height = 480; public int fps = 30; WebCamTexture webCamTexture; // Use this for initialization void Start() { WebCamDevice[] devices = WebCamTexture.devices; for (var i = 0; i < devices.Length; i++) { Debug.Log(devices[i].name); } if (devices.Length > 0) { webCamTexture = new WebCamTexture(devices[0].name, this.width, this.height, this.fps); GetComponent<Renderer>().material.mainTexture = webCamTexture; webCamTexture.Play(); } } }
このプログラム内容は以下の通りです。
1. devices
にWebCamTexture.devicesで取得したカメラデバイスの配列情報を格納する。
大抵のパソコンにはカメラは一つしかないので、devices[0]に格納されます。
スマホの場合、外カメと内カメがあるので、取得したいカメラの要素数を確認してください。
2. webCamTexture
に、取得したいカメラの画像データを受け渡す。
パラメータとして設定した幅、高さ、フレームレートが選択されたカメラにサポートされていない場合、最も近い使用可能な値が返される。
3. アタッチされたオブジェクトのマテリアルに設定されたmainTexture
にウェブカメラのセットします。
4. ウェブカメラを再生します。
スクリプトのアタッチ
Hierarchyビュー上で右クリックして3D Object > Plane
を作成します。
Planeに作成したスクリプトをD&Dすれば完成です。
映像が上下もしくは左右反転している場合
Plane>Transform>Scale
の値をマイナスにして反転させる。
映像が暗い場合
ProjectウィンドウのAssetフォルダ内で右クリックしてCreate>Material
を選択。
作成したマテリアルを選択し、Inspectorビュー>Shader>Unlit/Texture
に変更。
Planeに適用する。
参考文献
こちらの記事がわかりやすいです。 nn-hokuson.hatenablog.com