2012年02月29日

[Unity] WebCamTextureの設定で元々のカメラ解像度を使いたい

[Unity] Unity3.5新機能 WebCamTexture をAndroid端末で試してみた の記事で、
WebCamTextureを使ってAndroidのカメラ画像を取得しています。

以前の記事で使用したプログラムを一部抜粋すると

----------------------------------------
var webcamTexture : WebCamTexture = WebCamTexture(320, 240, 12);
----------------------------------------

というように、
320x240、12FPSと指定された状態で読み込んでしまいます。
これだと、機種によってカメラの解像度が異なる場合に対処できません。

ということで、
もとのカメラ解像度ってどうやって取得するんだろうとリファレンスを調べていました。
リファレンスでは、パラメーターがなくてもWebCamTexture()が使えるということがわかりました↓

Unity リファレンス:
http://unity3d.com/support/documentation/ScriptReference/WebCamTexture.Play.html

パラメーター指定無しだと元々の解像度で取得できそうです。
ということで、実験してみました。
----------------------------------------
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("カメラを検出できませんでした。");
}
.
. 省略
.
}
----------------------------------------
これでオリジナルの解像度の1/2でカメラ画像を取得できるようになりました。
ただ、WebCamTexture() を連続で実行するのはどうかな……と思うところもあります。

より効果的な方法をご存知の方は、ぜひコメントください!
posted by be-style at 19:26| Comment(0) | Unity
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]