2017-07-31 10 views
-1

kinectを介してホロレンスにエクスポートされるホログラムを作成したいと思います。しかし、それは非常に遅いです。Kinect v1 with unityへの処理

私はthisチュートリアルを使用してポイントクラウドデータを収集し、thisライブラリを使用して、データを3Dオブジェクトとして.obj形式でエクスポートします。 objが輸出するライブラリはポイントを受け入れないので、小さな三角形を描かなければなりませんでした。自分のローカルxamppに.obj .pngと.mtlファイルを保存します。

次に、ファイルとWWWオブジェクトを1つずつダウンロードします。私はまた、実行時に3Dオブジェクトを作成するために、ユニットのアセットストアからRuntime OBJ Importerを使用します。

最後の部分はホロレンスのユニティアプリをエクスポートすることです。 (私はそれを次にします)。

しかしその前に、 プロセスは動作していますが、非常に遅いです。私はホログラムを流動的にしたい。多くの時間が無駄になる:Kinectの

  • エクスポートデータの

    • テイクの深さとRGBデータをOBJ PNGとMTLファイルへ
    • レンダリング
    • できるだけ頻繁に団結上のファイルをダウンロードファイル

    私はストリーミングを考えていますが、統合するためには完全なobjファイルが必要ですか?私が.pngを.jpgに圧縮すると、少し時間がかかりますか?

    私に手伝ってくれるポインタがありますか?

  • +0

    FYI:機能的なコードを持っているようですが、それはあなたが望む性能レベルに達していないようです。機能コードのレビュー(そして明示的なパフォーマンス)は[codereview.se]のトピックです。しかし、あなたは実際にあなたのコードを質問に入れなければなりません(これは一般的にここでも要件です)。 – Makyen

    +0

    ありがとう、私は言及したライブラリとチュートリアルを使用しているコードは非常に基本的であるとしましょう。しかし、私の問題は戦略と知識です。 –

    答えて

    0

    現在のところ、あなたの質問の表現方法は混乱しています。後でUnityでロードしてレンダリングするポイントクラウドを記録したいのか、整列したRGBテクスチャを何らかの形でストリームクラウドにストリームしたい統一

    初期の処理では処理が使用されています。

    データの記録に関しては、深度とRGBデータの両方を.oniファイルに記録できるSimpleOpenNI libraryを使用することをお勧めします(RecorderPlay exampleを参照)。

    レコーディングが完了したら、各フレームをループし、フレームごとにファイルに頂点を格納することができます。

    .objに保存するには、ポイントクラウドをメッシュに変換する必要があります(3Dの頂点を三角形分割する)。

    もう1つの選択肢は、.plyのような形式でポイントクラウドを保存することです。 あなたがデータをストリーミングに関してはthis answer

    の処理で.plyファイルへの書き込みについての詳細情報を見つけることができ、これは複雑になる。

    • あなたは、それはそれはたくさんのだすべての頂点をストリーミングする場合データ:さらに多くのデータになる深度(11ビット640x480)とRGB(8ビット640x480)の両方の画像をストリーミングすると、最大921600浮動小数点((640×480 = 307200)* 3)
    • 深さと全体的なスキップポイントを持つ頂点のみを送信するオプションがあります(たとえば、3点ごとに送信)。データを送信するという点では、あなたがユニティでポイントを獲得すると、ネットワークパフォーマンスの面で理想的である何render a point cloud in Unity

      にできるはずですOSC

    を試すことができますコーデック(圧縮/伸張)であります深度データについては、私はそれまでこれを使用していませんでしたが、迅速に私はthis one(非常に日付)のようなオプションが表示されます。 あなたは少しの研究を行い、kinect v1の深層ストリーミングライブラリがすでにそこにあるかを見て、あなたのシナリオに適したものを試してみる必要があります。 理想的には、ライブラリがC#で書かれている場合、それを使って受信したUnityをデコードすることができます。

    +0

    ありがとう、ありがとう、 はい私はホログラフィックでホログラムを見るためにリアルタイム伝達が欲しいです。 私はShiffmanのライブラリを最初に使用していました。単純なopenniが高速であることを意味しますか? ObjExporterを使用していますが、ポイントで動作しないため、.objファイルをテクスチャと.mtlに保存するための小さな三角形を作成する必要があります。 .plyアプローチがより良いと思いますか? 私はボトルネックを見つけようとしています。それは私の考えですか、UnityかProcessingかです。私はまだ学んでいる、非常にあなたのポインタのために非常にありがとう。 –

    +0

    私がSimpleOpenNIを推奨していた唯一の理由は、組み込みシリアライズのためです:深度+ RGBストリームを簡単に保存/ロードする機能。あなたがリアルタイムでこれを必要とするなら、本当の理由はありません。あなたは、KinectP5ライブラリを使ってポイントクラウドのデータをうまく利用しています。有効なポイントクラウドの解像度の低いバージョンをストリーミングしてUnityでレンダリングしてみてください(頂点として、三角メッシュとしてではなく)。パフォーマンスがどのようなものかを確認してください。ビジュアル/パフォーマンスの点では、テクスチャ(すべてのもの、または低解像度の3Dポイントの値のリスト)をストリーミングしてみてください –

    +0

    ...そうでなければ、デプスマップコーデックあなたがまだ学んでいるならもう少しハードコアなネットワーク上で使うことができますが、コーデックのポイントは彼らがデータの圧縮/解凍に対処することです。答えが役に立つのであれば、自由に投票してください。 –

    関連する問題