PLYモデルをUnityで使う
PLYフォーマット・・・スタンフォード大で1990年代に開発された3次元モデルのフォーマット。
以下のサイトで代表的なモデルのデータが配布されています。
かの有名なStanford Bunnyもこのフォーマットで公開されています。
The Stanford 3D Scanning Repository
現在あまり主流の3Dフォーマットではないですが、自分は仕事柄、今でもよく使っております。
センサ計測したデータに使われることが多いでしょうか?
という訳でこのフォーマットのモデルをUnityで読み込ませてみたいと思います。
Unityで読み込めるフォーマットはfbx、dae、obj、dxfか、
もしくは3DSMAXやMAYA、Blenderなどのメジャーな3Dアプリケーションの保存形式に対応しています(詳しくはここを参照)。
が、残念ながらPLYフォーマットは入っておらず。ではどうすればいいか。
方法1: 有料アセットを使う
Unity非対応の3Dフォーマットをインポート可能にするアセット。
お値段は$20。PLY以外にも20以上のフォーマットに対応しています。 Windowsのみのサポートのようです(一度インポートすれば他のプラットフォームで利用可能)。
方法2: MeshLabで対応形式に変換
無料の方法は無いのか?そんなときは別のアプリケーションで対応する形式に変換してやりましょう。 自分のおすすめはMeshLabです。
このページのDownload Latest Versionのリンクから自分のプラットフォームのインストーラをダウンロードしてインストールします。Win、Mac両対応です。
PLYファイルはとりあえず上のスタンフォードのページから適当なデータをダウンロードして解凍します。 ばらばらのレンジデータ(3Dセンサで計測した生のデータ)もありますが、 reconstructionとかreconstructedとか書いてあるのが完成したデータです。
MeshLabを立ち上げてPLYファイルをドラッグ&ドロップすれば読み込めます。
そんでもって[File]->[Export Mesh As...]で適当なフォーマットを選べばOKです。
Unityに対応しているのだとdaeかobjですね。
後は書き出したobjもしくはdaeファイルをUnityプロジェクトにインポートすればOKです。
できた。
大きいモデルをインポートするには
Bunnyくらいなら問題ないですが、あまりにデカいモデルだとUnityにインポートするのも表示するのも大変です。 スタンフォードのページにも面数が100万、1000万を超えるような大きなモデルが結構あります。 例えばAsian Dragonのモデルは面数は約700万あります。そんな大きいモデルはMeshLabで面数を減らしてやります。
[Filter]->[Remeshing, Simplification and Reconstruction]->[Quadric Edge Collapse Decimation] でダイアログが開きます。
このダイアログで減らした後の面数を指定するか、どのくらいの割合まで減らすかを0~1で指定してApply。 ここではとりあえずAsian Dragonの面数を1/10に減らしてみます。
これでこのモデルもインポートできました。
なんだかMeshLabの紹介のようになってしまいました。
MeshLabはPLY以外にも多くのフォーマットに対応してますし、面数の削減以外にも多数の便利機能がありますので、利用価値は高いと思います。
PLYファイルもスタンフォード大のページのように 高精細、高品質な文化財3Dデータを公開しているところがいくつかありますので、 大いに活用されるといいと思います(利用ライセンスの確認はお忘れなく)。