AppsJapan バーチャルテレポート メッシュ処理(概要編) interop17


バーチャルテレポートのメッシュ処理を簡単にまとめています。

まずはメッシュ処理全体の説明です。

network.png

  1. 深度カメラを使ったセンサーデバイスで、3Dの立体情報をリアルタイムにスキャン
  2. 3D情報を、2つのデバイスに同時に表示(ピラミッド状ディスプレイと、MRデバイス)
  3. 3D情報の送信には、2つの通信方式を利用(WebRTCのデータ通信DataChannelと、WebSocket)

深度カメラ

点群の取得には、Intel RealSense R200を利用しました。
複数の深度カメラから同時に点群を取得でき、赤外線パターンが干渉せずに利用できるステレオ方式のカメラです。

camera_area.png

Realsenseの構造はこのようになっています。

camera_detail.png

メッシュ生成

4方向の深度カメラから取り込んだ点群は下記になります。

Chair_full.gif

  • 640x480 x 4台の深度カメラで撮影
  • 全体で点は122万Pt、椅子だけで17万Pt

Chair.gif
ここから椅子の点群だけを切り出し、メッシュを生成していく流れを説明します。


① Z軸(奥行)をカット
② 密な点群を削減
17万Pt -> 1万6000Pt (所要時間: 30ms)


③ 離れた点群の除去
④ 細かな凹凸の点群を表面へ移動
1万6000Pt -> 1万5000Pt (所要時間: 120ms)


⑤三角探索(点から面を生成)
2万6000Polygon (所要時間: 330ms)


⑥メッシュの穴を埋める
⑦ポリゴンの数を削減
2万6000Polygon -> 5500Polygon (所要時間: 150ms)

上記のようにして、扱いやすい大きさまでデータを加工しております。

Source Project

今回の開発に利用したライブラリは下記になります。

C++

Unity

謝辞

ここまで読んでいただきありがとうございます。
ブログのキーワードにご興味のある方がおられましたら会場で色々と質問いただければ幸いです。
更に詳しい内容は下記の記事をご覧ください。

当日はAppsJapanでもよろしくお願い致します。