SfMによる3Dモデルの作成(3)

この記事は1年以上前に書かれました。
内容が古くなっている可能性がありますのでご注意下さい。


SfM/MVS(フォトグラメトリ)による3Dモデル作成を始めて4ヶ月あまり経ち、Wikimedia Commonsで公開している石造物の3Dモデルも7件になりました。作成手順も試行錯誤を重ねて改善し、初期に作成した五神名地神塔は粗が目立つようになったため再作成しました。そこで、現時点での3Dモデル作成手順についてまとめます。

五神名地神塔(横浜市旭区)

主な流れは以下の通りです。

  1. VisualSfMで写真から点群を作成
  2. MeshLabで背景などの余分な点群を削除
  3. CloudCompareでメッシュを作成(穴埋め)
  4. MeshLabでSTL形式に変換し、メッシュ数を削減してファイルサイズを縮小
  5. Blenderで余分な頂点を溶解

ツールの評価を兼ねて試行錯誤しているため、4種類ものソフトウェアを使い分けることになってしまいましたが、処理内容によっては必ずしもそのソフトウェアでなければならないという訳ではありません。

手順1と2は、連載の第1回に記した通りです。五神名地神塔の再作成には、197枚の写真を使用しました。

手順3は、当初はMeshLabを使用していましたが、現在はCloudCompareを使用しています。最近は写真撮影のコツが分かってきたため穴が空いてしまうことは少なくなりましたが、それでも以下の画像で青線で囲んだ部分は点群が欠けてしまっています。
CloudCompareの[プラグイン]メニューから[PoissonRecon]を選択します。

ダイアログボックスではOctree depthの値を12に設定しています。この場合、処理は数分で完了しますが、値を大きくするとさらに処理に時間がかかってしまいます。

追記:後日、生成されるファイルが大きすぎて次の作業ができない場合が生じたため、その後はOctree depthの値に11を使用するようになりました。

手順4は、連載の第1回第2回に記した通りです。
メッシュ削減における目標メッシュ数は、比較的単純なモデルで1,000,000、複雑なモデルでは1,500,000を設定しています。ファイルサイズは50Mbから75Mb程度になります。

手順3でサーフェスを作成すると、元々点群のなかった底の部分が盛り上がってしまうことがあります。

そこで、手順5では底の部分の余分な頂点を削除してフラットな面にします。
ここで使用するBlenderは、3Dモデルの作成からアニメーションなどのコンテンツ制作まで可能なオープンソースのソフトウェアです。高機能なため使い方が分かりにくいという難点がありますが、MeshLabにはないUndo機能があるため、失敗を恐れずに編集作業をすることができます。
BlenderにSTLファイルをインポートし、[オブジェクト]→[編集モード]で編集モードに移行します。

不要な頂点を選択します。

[メッシュ]→[削除]→[頂点を溶解]を選択します。

単純に頂点を削除してしまうと、その頂点に接する辺や面も削除されて穴が空いてしまいますが、溶解をすると、削除される頂点の周囲の面が結合されるので穴が空きません。
これを何度か繰り返すと、余分な曲面を平面にすることができ、頂点数の削減によってファイルサイズも縮小することができます。

上記手順で再作成した五神名地神塔はWikimedia Commonsで公開しています。

五神名地神塔(横浜市旭区)

SfMによる3Dモデルの作成 123