この記事では、Instant Meshesというフリーソフトを使って、頂点数の多い3Dモデルの頂点数を減らす「リトポロジー」の作業を自動で行う手順をご紹介します。
リトポロジーとは
フォトグラメトリやスカルプトを使って3DCGモデルを生成すると、どうしても頂点数が多くなってしまい、重くて扱いにくいモデルになってしまいがちです。
そこで「リトポロジー」と呼ばれる方法を使って、形をできるだけ維持しながらローポリゴンのモデルに置き換えます。
リトポロジーは手動でもできますが、アドオンやソフトウェアを使うとより効率的に行えます。
Instant Meshesのダウンロード
Instant Meshesはチューリッヒ工科大学の研究室が研究開発している技術を使ったオープンソース(フリー)のソフトウェアです。
Windows、Mac、Linuxに対応しています。
プロジェクトページは以下にあります。
https://igl.ethz.ch/projects/instant-meshes/
ダウンロードするには、以下のGitHubページを開きます。
https://github.com/wjakob/instant-meshes
下のほうにスクロールしていくと、Pre-compiled binaries という項目が見つかるので、自分の使っているPCに合わせてzipファイルをダウンロードしてください。
zipファイルを解凍後、exeファイルをクリックするとソフトウェアが起動します。
使い方
Instant Meshesの操作
今回は3Dスキャンした以下のモデルをお借りし、作業を行います。
Blenderで確認すると、頂点数は49,998でした。
「Open Mesh」クリック後に表示されるフォルダアイコンをクリックし、3Dモデルを読み込みます。
対応形式は.plyと.objです。
3Dモデルが読み込まれました。読み込まれた3Dモデルにはテクスチャがつきません。
リトポロジー後、新たにテクスチャをベイクする必要があります(この手順は文末の記事をご参照ください)。
これより先は左側のメニューを上から順番に設定していくだけです。
まず、「Remesh As」の項目から、仕上がりを三角形メッシュ(Triangles)にするか四角形メッシュ(Quads)にするかを選択できます。
「Target vertex count」からリトポロジー後の頂点数を指定します。
「Orientation field」の 「Solve」ボタンをクリックします。
すると以下のように、生成される予定のメッシュの流れが線になって表示されます。
メッシュの流れが違うと思ったら、櫛のアイコンをクリックしてマウスでモデル上に線を引くと、その方向に向くように再計算されます(以下は首から真下に線を伸ばした場合)。
「Position field」の 「Solve」ボタンをクリックします。
すると生成される予定のメッシュが表示されます。
この状態から、前の手順に戻ってメッシュの流れを整えることもできます。
調整が完了したら、出力をします。
「Export mesh」をクリックすると出力メニューが表示されます。
全て四角ポリゴンにしたい場合はPure quad meshにチェックを入れます。
チェックを入れると「Target vertex count」で設定した頂点数より多くなるので注意してください。
Smoothing iterationsでスムージングの繰り返し回数を設定します。
「Extract mesh」をクリックします。
すると以下のように、最終的なメッシュが表示されます。
「Save」を選択後、以下のエラーが出た場合は保存するファイル名に日本語を使用していないことを確認する。
また、保存ファイル名に「.obj」を付けて保存(例、「xxx.obj」)すると上手くいきます。
Blenderで確認
元のモデルとリトポロジー後のモデルをBlenderで読み込んで比較すると以下のようになります。
細かいところを除けば形はほぼそのままで、頂点の数が減っていることがわかります。
リトポロジー後のモデルの頂点数は3,049でした。
リトポロジー後のモデルを編集モードに切り替えて表示すると、全ての辺が水色になっています。
「シャープ」が適用されている状態です。
シャープは「辺」メニューの「シャープをマーク」でオン、「シャープをクリア」でオフにできます。
なお、今回は最後にPure quad meshのチェックを入れていないので、以下のように三角形や多角形のポリゴンも混ざっています。
リトポロジー結果の比較
途中のオプションを変更するとどのように結果が変わるのかを検証してみました。
メッシュ形状の比較
「Remesh As」の項目を変更しました。
上からTriangles、Quad(2-RoSy, 4-Posy)、Quad(4-RoSy, 4-Posy)のデフォルト出力結果になります。
Configuration detailsオプション
続いてはConfiguration detailsのオプション項目をみていきます。
これらの設定項目はそれぞれ
- Extrinsic: 形状の特徴線に沿うようにスムージング
- Align to boundaries: 入力メッシュが閉じていない場合は、境界線を保存する
- Sharp creases: 入力表面メッシュの法線が不連続な場合は、スムージングしない
という意味を持ちます(参考元:方向場による再メッシュ – Mesh Wiki)。
「Extrinsic」オンオフ結果を並べてみました。
「Extrinsic」をオフにした場合はモデルの形状に沿わず、ただ直線的にメッシュが引かれているのがわかります。
続いて「Sharp creases」のオンオフ結果を並べてみました。
「Sharp creases」をオンにすると、リトポロジー後のメッシュは滑らかに補正されることなく元の形状に忠実に配置されます。
STYLYにアップロードする
リトポロジー後の3DモデルをSTYLYにアップロードする方法は、以下の「取り込めるアセットを理解しよう」記事の「Upload」の章をご参照ください。
リトポロジー後の3Dモデルにテクスチャをベイクする
リトポロジー後のモデルは、テクスチャがない状態です。
元のモデルと違うUV配置を持つことになるので、元のモデルのテクスチャをそのまま適用してもうまくいきません。
ベイクという機能を使って、元のモデルのテクスチャをリトポロジー後のモデルのテクスチャに焼き付ける方法は以下の記事で紹介しております。