web-dev-qa-db-ja.com

Unityでライブカメラフィードを表示する

Unityについて質問があります。私はこれが以前に答えられていないことを望みます。カメラ(HDカムなど)をコンピューターに接続したいのですが、ビデオフィードがUnityシーン内に表示されます。カメラが見ているものをリアルタイムで表示する仮想テレビ画面のように考えてください。これどうやってするの?グーグルは私を正しい方向に向けなかったが、たぶん私はクエリを正しく得ることができないだけだ;)

私が何をしようとしているのか理解していただければ幸いです。

7

はい、それは確かに可能であり、幸運なことにUnity3Dは箱から出してすぐにそれをサポートします。 WebCamTexture を使用して、Webカメラを検索し、テクスチャにレンダリングできます。そこから、もちろん仮想テレビ画面を含め、3Dシーンのあらゆるものにテクスチャをレンダリングすることを選択できます。

それはかなり自明に見えますが、以下のコードはあなたを始めるはずです。

検出した接続デバイスを一覧表示して印刷します。

var devices : WebCamDevice[] = WebCamTexture.devices;
for( var i = 0 ; i < devices.length ; i++ )
    Debug.Log(devices[i].name);

接続されたWebカメラに接続し、画像データをテクスチャに送信します。

WebCamTexture webcam = WebCamTexture("NameOfDevice");
renderer.material.mainTexture = webcam;
webcam.Play();
16
S.Richmond

役立つ場合は、上記の承認済みの回答に基づいて、C#スクリプトとして記述された回答を投稿します(承認済みの回答はJavaScriptでした)。このスクリプトをレンダラーがアタッチされているGameObjectにアタッチするだけで、機能するはずです。

public class DisplayWebCam : MonoBehaviour
{
    void Start ()
    {
        WebCamDevice[] devices = WebCamTexture.devices;

        // for debugging purposes, prints available devices to the console
        for(int i = 0; i < devices.Length; i++)
        {
            print("Webcam available: " + devices[i].name);
        }

        Renderer rend = this.GetComponentInChildren<Renderer>();

        // assuming the first available WebCam is desired
        WebCamTexture tex = new WebCamTexture(devices[0].name);
        rend.material.mainTexture = tex;
        tex.Play();
    }
}
2
Lee Stemkoski