0 支持
(140 ポイント)

ルームに入ったとき各入室者のwebカメラの映像を表示しようとしています。
入室者のwebカメラ映像を映すpanelは生成されますが、webカメラの映像が映りません。
ウェブカメラの映像を同期する方法はありますでしょうか?
ご存じの方いらっしゃいましたら、お助けいただけると幸いです。
Panelには同期用のコンポーネントを付けてプレハブ化しています。
・Monobit View (Script)
・Monobit Animator View (Script)
・Monobit Transform View (Script)
・Monobit Player Mode Templete (Script)//panelを表示する
System.Random r = new System.Random();
MonobitEngine.MonobitNetwork.Instantiate("Plane", new Vector3(r.Next(-20, 20), 0, 10), Quaternion.Euler(90, 180, 0), 0);
//webカメラを接続する
campanel.GetComponent<WebCam>().WebCamStart();webカメラ映像表示は
https://hk-ryukyu.club/hideto/archives/23#toc5
の方法で行っています

回答 1

0 支持
(3.8k ポイント)
編集
ごく当たり前な話ですが、"AnimatorView"はアニメーション、"TransformView"は姿勢を同期するためのものであって、WebCameraのテクスチャ画素情報は同期させません。

同期させるのであれば「テクスチャ画素情報を取得して送信する処理」と、「受け取った画素情報をテクスチャに反映させる処理」を組み込む必要があります。

もっともテクスチャの画素情報はRawImageのままですとサイズが膨大になるかと思いますので、満足した結果が得られない可能性も高いです。

・送信側ではTexture2D.EncodeToPNG() などで低画素&PNG圧縮したバイナリデータをRPCで送信する
      var Tex = new Texture2D(128, 128, TextureFormat.RGBA32, false);
      Graphics.ConvertTexture(webCamTexture, Tex);
      Tex.ReadPixels(new Rect(0, 0, 128, 128), 0, 0);
      Tex.Apply();
      monobitView.RPC("Foo", MonobitTargets.Others , Tex.EncodeToPNG());

・受信側では受け取ったバイナリデータを Texture2D.LoadImage() で反映させる
    [MunRPC]
    public void Foo(byte[] png) {
      var Tex = new Texture2D(0,0,TextureFormat.RGBA32, false);
      Tex.LoadImage(png);
      Tex.Apply();
      GetComponent<Renderer>().material.mainTexture = Tex;
   }

などの工夫が必要になるかと思います。
(140 ポイント)
テクスチャの変化部分はアニメーションの一部だと思い込んでおりました。
テクスチャの取得送信反映の処理が必要なのですね、頂いたコメントを元に進めていきます。
ご返信ありがとうございます。
...