WebCamTextureを使ってAndroidのカメラ画像を取得しています。
以前の記事で使用したプログラムを一部抜粋すると
----------------------------------------
var webcamTexture : WebCamTexture = WebCamTexture(320, 240, 12);
----------------------------------------
というように、
320x240、12FPSと指定された状態で読み込んでしまいます。
これだと、機種によってカメラの解像度が異なる場合に対処できません。
ということで、
もとのカメラ解像度ってどうやって取得するんだろうとリファレンスを調べていました。
リファレンスでは、パラメーターがなくてもWebCamTexture()が使えるということがわかりました↓
Unity リファレンス:
http://unity3d.com/support/documentation/ScriptReference/WebCamTexture.Play.html
パラメーター指定無しだと元々の解像度で取得できそうです。
ということで、実験してみました。
----------------------------------------これでオリジナルの解像度の1/2でカメラ画像を取得できるようになりました。
function Start () {
.
. 省略
.
// カメラを取得
var devices : WebCamDevice[] = WebCamTexture.devices;
if (devices.length> 0) {
// オリジナル用
var webcamTextureOrg : WebCamTexture = WebCamTexture(devices[0].name);
// 解像度をオリジナルの1/2にしてみる
webcamTexture = WebCamTexture(devices[0].name,
webcamTextureOrg.width * 0.5,
webcamTextureOrg.height * 0.5, 12);
// テクスチャを変更
renderer.material.mainTexture = webcamTexture;
// 読み込み開始
webcamTexture.Play();
Debug.Log(webcamTexture.width + ", " + webcamTexture.height);
} else {
Debug.LogError("カメラを検出できませんでした。");
}
.
. 省略
.
}
----------------------------------------
ただ、WebCamTexture() を連続で実行するのはどうかな……と思うところもあります。
より効果的な方法をご存知の方は、ぜひコメントください!