データの修正/変換
「Kinect Fusion Explorer-WPF」で作成した3Dモデルは、背景など不要なポリゴンも含まれているため、そのままでは「椅子」の3Dモデルとしては使えません。また3DゲームやARのために、スマートデバイスやWebブラウザから扱うにはサイズが大きすぎることも問題になりそうです。そのため、作成した3Dモデルに対して以下のような修正をしました。
- 不要な部分の削除
- データサイズの縮小
- 中心座標の設定
- Three.js用のデータフォーマットに変換
今回は、3Dモデルの修正/変換には、以下のツールを使用しています。
- Meshlab:3Dモデルの合成や不要な部分の削除、ポリゴンリダクションのために使用
- Blender:中心座標の設定やThree.js用のデータ変換のために使用
それでは順番にデータの修正方法を見ていきましょう。
不要な部分の削除
Kinect Fusionで作成した3Dモデルをみると、不要な背景などが写り込んでしまっています。また、データのサイズを確認したところ、174Mbyteありました。Webブラウザで表示することを考えるとさすがに大きすぎますね。
まずは、3Dモデルに写り込んでしまっている不要なポリゴンを、Meshlabを使って削除しましょう。
削除したい箇所を選択し、「削除」アイコンを押下します。
この作業を繰り返すことで、不要なポリゴンを削除できます。
以下の図のように、不要なポリゴンをすべて削除してください。
ここで一度サイズを確認してみましょう。編集したデータをエクスポートします。今回は、色情報や法線の情報は不要なためエクスポート対象から外しました。サイズを確認した結果は、35.9Mbyteでした。まだ大きいですね。
データサイズの縮小
不要なポリゴンを削除しただけでは、サイズを減らしきれませんでした。引き続きMeshLabを利用して点(Vertex)や面(Face)をFilter機能を使用し、サイズを縮小していきます。
不要な点や面の除去
「Filters」→「Cleaning and Repairing」配下にある「Remove Duplicate Face」、「Remove Duplicate Vertex」、「Remove Unreferenced Vertex」などを実行します。
今回のデータでは、「Remove Duplicate Vertex」を実行すると、Vertexの数が「938,181」から「159,918」になりました。この時点でのデータサイズは11.4Mbyteになっています。まだかなり大きいですね。
ポリゴンリダクション
最後に面を減らします。
「Filters」→「Remeshing,Simplification and Reconstruction」→「Quadric Edge Collapse Decimation」を選択します。
Target number of facesを設定し、「Apply」ボタンを押下します。今回は1/10になるように値を設定しました(Faceの数 312667→31265)。
また、「Quality threshold」を「1」にしています。初期設定の「0.3」では穴だらけになってしまいました。
サイズを確認したところ1.07MByteになっています。まだファイルサイズは大きいですが、なんとか実用に耐えるサイズまで縮小することができました。