Libraryだけだとちょっと味気ない。Libraryだと視点を動かす時は点群の更新が止まっちゃうし。何でUnityで点群を扱いたいかというと、お察しの通り、Kinectで取得した点群をカッコよく表示したいのです。Libraryでゴリゴリ頑張るよりも、Unityで他のAssetと組み合わせてサクッとリッチなコンテンツに仕上げたいのだ。Unityプラグインには、サンプルとしてKinectのColorとDepthをMesh化して表示するScriptコードが付属しているんだけど、無理やりMesh化して表示してるからちょっと汚らしい。packages“のリンクから。V2から取得した点群を4分の1の量にダウンサンプリングしてから、それらを頂点としたポリゴンメッシュ化してリアルタイム表示している。217,088だけど、Unityには「1つのMeshオブジェクトが持つ三角形の数は最大65,535まで」という制限があるため、ダウンサンプリングで頂点の数を減らしてMesh化してるんだと思う。このサンプルでは解像度をダウンサンプリングする代わりに、Depth値を近傍ピクセルの平均から求めたりもしてるんだけど、結果として表示されるMeshがあんまりきれいじゃない。2017.3から解消されたようです。いうことで、Unityで「面」ではなく「点」の描画を実現する方法を調べてみた。Toolsというものがすでにあるようだ。以下サポートページに詳細が載っている。Unityこのツールはファイル読み込み用なので、どうやら動的にKinectの情報を表示はできなさそう。読み込んだファイルを自動でUnityのポリゴン制限数で分割して表示と、バイナリデータへの保存ができるようだ。Kinectの点群をリアルタイムで表示するにはやっぱり自分でScriptを書くしかなさそうなので点の描画方法を調べてみたら、ドンピシャなブログ記事を見つけた。them.スポンサーリンクソースコードも全部載せてくれている。PointをEnableにして、Shader側で受け取ってやるってことね。上記の記事だけだとShaderへのパラメータ渡しの記述が欠けてるけど、以下のフォーラムの記事に全部載っている。Sizeの指定が描画に反映されないことについて話題になっている。要するに、残念ながらOpenGL環境でしか動かない仕様っぽい。Scriptのサンプルコード。}}点を受け取って描画するShaderのコード。}初めて知ったけど、UnityのMeshってMeshTopologyを指定すれば三角形じゃなくてもいけるのね。リアルタイムで動く点群をグリグリできると、スターウォーズに出てくる立体映像みたいでカッコイイね。PM参考にさせていただきました。ありがとうございます。PSIZE;};に書き換えたところ動きました。PMすみません、書き間違えてました。確かに、sizeはベクトルじゃなくてスカラー値ですよね。本文のコードも修正しました。コメントデータの処理方法の詳細はこちらをご覧ください。toProfileNegativeMind都内で働くソフトウェア系エンジニア・リサーチャー。大学・大学院では3DCGのレンダリングアルゴリズムを研究してた。Mayaを使って映像制作もできるようになった。特撮・模型趣味も再燃。最近はPhotogrammetryや機械学習について勉強中。