Unity3D 内のプロジェクトに取り組んでおり、大量のデータをクライアント コンピューターからマスター/サーバー コンピューターに送信する必要があります。
各クライアント コンピューターには、Kinect センサーが接続されています。Kinect データの一部は、何らかの形でローカライズされたマスター コンピューターに送信される予定です。
私の質問は、これを行う最善の方法は何ですか? 現在、Unity3D 内の C# で RPC ネットワーク プロトコルを使用しています。私は基本的に、クライアントコンピューターでクライアントUnityを実行し、kinectからデータを取得し、バイトに変換して、LAN経由でサーバーに送信します(別のUnityプログラムによって取得されます)。
ただし、1 つのクライアントを使用するだけで 10Mb/s のダウンロード/アップロード速度が使用され、約 30 秒のストリーミングの後、ネットワークが停止したように見え、クライアントを再起動するまでデータの送信を拒否します。
私はネットワーク手順に精通していません。しかし、私は使用するより良い方法があるかどうか疑問に思っていますか?
ノート:
すべてのクライアントとマスター コンピューターは、実際には同じ部屋にあります (つまり、すべてがローカルです)。
私の計算によると、各クライアントは約 10Mb/s を処理する必要があります。お客さんはだいたい6人くらい。合計 60Mb/s のストリームを意味します。ネットワーク ルートを正しく使用する場合、問題にならないのはどれですか? (すべてローカルであるため)。
ストリームは必ずしも Unity3D 内で発生する必要はありませんが、マスター側で Unity に実際にデータを取得できる限りはそうです。
データ自体は 1 秒間に約 30 回送信されます (「10Mb/s」が考慮されます)。
ありがとう。
- - アップデート - -
私は何をやっている?
アイデアは、すべてのクライアント (Kinect が接続されている) からマスターに 3D 深度データをストリーミングできるようにすることです。次に、マスターはこのすべてのデータを処理し、すべての Kinect が面している部屋の中心の 3D 表現を (点群を使用して) 構築します。
これはリアルタイムで行われます (状況によっては、可能な限りリアルタイムで行われます)。
私は確かに有線LANを使用しています(すべてギガビットイーサネットを備えた新しいルーターを介して接続します)-すべてローカライズされ、すべて互いに10フィート以内です。
マスター コンピューターは 2.3 GHz Intel Core i7 であるため、10Mbs のストリームを受信できるはずです。
先に述べた「動かなくなった」問題は、私が知る限り、Unity の RPC システムが原因である可能性があります?! :/
私は、Kinect データをマスター IP にストリーミングし、Unity がそれを取得する小さな Windows プログラムを書きたいと思っています (どういうわけか - それを達成する方法がわかりません - より論理的に思えますよね?)
ありがとう。