なる自習室こもりますこの広告は、90日以上更新していないブログに表示しています。.Unityはじめに前回は、Unity上でシンプルなデプス画像を生成し、矩形にテクスチャとして貼り付けて表示しました。見られるような、取得したデプスデータを空間的に配置するビューワを作ってみます。できあがりは以下のような感じです。ポイントクラウド風に表示すること自体はゲームでの利用や解析上は余り意味がなさそうですが、表現としてはカッコいいですよね。この手の表現を使ったもので好きなPV作品に、以下の様な物があります。これらの表現ではデプス画像に色を加えた上に、わざとノイズを加えて揺らしたり、ばらばらにして次のフレームに繋ぐ様な表現を加えてあって素敵です。利用については、前記事で触れました。得られたデータを使ってポイントクラウド風に表示する手順は大まかに以下の3ステップになります。関数を使って、3次元空間上のポイントに座標変換する3次元空間上のポイントをUnityのParticleSystemのParticleとして利用する素敵に描画する座標変換まず事前にKinectのCoordinateMapperが何をしているのかを整理した上で、今回行っている処理について説明します。ついての理解Kinectが出力・利用する座標系として以下の三つがあります。デプスカメラによって射影された、DEPTH画像の座標系これらの理解のためにこちらの記事を参考にさせていただきました。クラスで与えられます(便利!)。射影する変換が必要になります。RGB画像の上にCanvasなどで重ねて描画すれば、人とボーンのCGがきれいに重なります。クラスの関数の一覧はこちら。Methodsデプス画像をUnityで使える3次元座標に変換するさて上記を踏まえてここでは、Unityの世界にポイントクラウドを配置するために、(レンズを通ってカメラで射影された)DepthSpaceのデプス情報をCameraSpaceに変換します。変換された座標が配列として格納されます。3次元空間上のポイントをUnityのParticleSystemのParticleとして利用する多数の点群をUnity上で一気に描く極力Unityらしい手法として、ParticleSystemに外部から点群を指定することが出来れば良いのじゃないか?と思い調べてみたところ、以下のページが非常に参考になりました。UnityのParticleSystemを利用しています。Tutorialここで行っていることをざっくりまとめると以下の様な感じです。するコードは最後にまとめて記載します。素敵に描画するParticleSystemに唯一残したRendererで、描画の指定を行います。各ParticleをBillboardで表示する際に、一つ一つの矩形にマテリアルを貼り付けます。シェーダに暗めの緑色を指定しておくと、重なったところが白くサチって、発光している様な雰囲気になります。見た目の調整のために、インスペクタからパーティクルの色と大きさをコントロールできるようにしておきました。}}また、デプス情報を適用してポイントクラウドを描くParticleSystemオブジェクトのインスペクタは下のような感じになります。内で読み込めるように指定する点にお気をつけください。した結果、ウィンドウサイズやParticleの大きさ次第でモアレが発生します。これは、座標変換の結果、元々グリッド状に均一に整列してたピクセルが、所々不均一に並べ直されるために発生します。本来平面な部分に顕著なようです。Updateごとにデプス画像を取得しているので遅延が蓄積するようなことはありませんが、スピードを重視する場合は、先にデプス画像を間引きしてからParticleSystemに食わせるようにした方が良いかもしれません。><アート的な方面に活用したい今回はただポイントを描画して終わりましたが、もう少しアートっぽいことにもチャレンジしてみたいです。自力でビルドして、C++やUnityで使う@Windows基本的な導入に関してやったことのメモ。同一ソリューション内ライブラリ参照と、ライブラリプロジェクトへの静的リンクライブラリのリンクの仕方。3はてなブログをはじめよう!AMANEさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。