はじめに
初めまして、株式会社GENEROSITYの奥田です。
Houdiniを使用して作成したリッチなアニメーションを他のプラットフォームで使用したいとなった際に、みなさんはどのようなデータ形式を選択しますか?
今回、Hoduiniで作成した簡単なデータを用いて、どのようなデータ形式を使用するのが最適か調査を行いました。
本記事では調査結果のみ記述しておりますので、データの書き出し方や作り方の記載はありません。
不十分な点も多くあると思いますが、こちらの記事が何かお役に立てればと思います。
検証概要
今回は下記データ形式・プラットフォームで検証を行いました。
それぞれの書き出したファイルの形式やアトリビュート情報、データ量などまとめ、
私個人の意見として★5つのうちどの程度おすすめかを表しています。
Houdiniに関してはHoudini FXで20.5.332を使用しています。
検証したデータ形式
検証したプラットフォーム
- Blender 4.2
- UE5.4.4
- Nitantic Studio
Houdiniで作成したデモデータ
※ptnumはポイント番号のアトリビュート
※testアトリビュートは高さが0より大きいときに1となるように設定した任意のアトリビュート
→他のプラットフォームでも使用できれば、どんなアトリビュートでも持っていけると仮定できます。
Alembic
Alembic はビジュアルエフェクトやアニメーションの専門家に使用されるコンピュータグラフィックスのための互換ファイルフォーマット
ジオメトリ(ポリゴンメッシュと細分割されたサーフェス)、カメラ、マテリアル、ライトなど、いくつかのエンティティを含めることができる
<参考>
■HoudiniからBlender
★★★★☆
連番であるため大きいデータだと重くなる可能性があります。
Houdiniで書き出す際フレーム番号を入れていたため連番ファイルになってしまっていたことがわかりました。
ファイル名に$F(フレーム番号)をいれないようにすれば問題なく一つのファイルに書き出すことが可能です。
■HoudiniからUE5
Houdini上で連番alembicでしか書き出せなかったため、Houdini→Blender→UE5の手順を踏んでアニメーション付きalembicを一つのデータにまとめました。
★★☆☆☆
連番ファイルであるため大きいデータだと重くなってしまうため進んで使用することはなかなかなさそうです。
FBX
Autodesk製品で使われるファイルフォーマット(古い)
FBXファイルには、カメラ、ライト、ジオメトリ、ボーンなど、アニメーションを作成するために使用するフル3Dシーンのデータが保存される
業界標準のゲームエンジンやVFXおよびゲーム業界の次世代のDCC(デジタルコンテンツ作成)ツールと互換性がある
<参考>
作ったモデルをベイクすることでモデル自体はインポートできました。
また連番fbxも書き出し可能ですが、Blenderに読み込む術がないという問題が挙げられます。
アニメーションと色情報を書き出す方法を調べたところ詳しく書いている人がいない(ここで躓く人がいないのかも)ためBlenderへの読み込みは失敗とします。
FBXという形式を調べる中で、FBXの使い勝手の悪さを知りました。(詳しく知りたい方は下記記事をご覧ください。)
FBX形式は使い勝手が悪いのため、これ以上の深堀は中止します。
<参考>
Niantic Studioの仕様上、FBXをインポートしたとき自動でglbデータに変換されて表示されます。
そのため最初からglbを使っておいたほうが良いと思います。
またインポート自体はできるもののHoudiniの法線情報が特殊であるためか、形状が破綻しました。
OBJ
OBJファイル形式は、3Dジオメトリのみを表現する単純なデータ形式
スケルトンやアニメーション情報を扱うことができない
<参考>
■Houdiniからの書き出し
連番objファイルでのみ書き出し可能(obj形式はアニメーション情報やカメラ、ライトの情報を持つことができないため)
OBJ連番ファイルをすべて読み込んだ画像
1 プロンプトから連番ファイルを読み込む方法
<参考>
→失敗(エラー)
2 アドオンをし使用して読み込む方法
<参考>
→失敗
アドオン自体が私の使用しているBlender4.2に対応していないため失敗したと考えられます。
■HoudiniからNiantic Studio
OBJ拡張子は未対応のため→失敗
glb
FBXのような形式のオープンソース版、ロイヤリティフリー版として提供されるポリゴンファイル形式。
静的モデル、アニメーション、動きのあるシーンをサポートしている。
最新のファイル形式の1つ、シェーディングとマテリアル定義の最新のメソッドをサポートしている。更新された2.0バージョンでは物理ベースレンダリング(PBR)の材質をサポートしている。
<参考>
■HoudiniからBlender
★★★★☆
位置情報以外の変化するアトリビュートが保持できなかったため色やtestアトリビュートが適切に反映されませんでした。
■HoudiniからUE5
→失敗
■HoudiniからNiantic Studio
読み込めたもののモデルが破壊されて表示されました。
備考
昔にtripo AIで作った3dモデル(glbデータ)を入れたところ綺麗に表示されました。そこからHoudiniのファイル形式または法線情報等が、Niantic Studioの読込形式と合っていない可能性が考えられます。
Tripo AIはこちらから使用できます。
USD
元々Pixarが開発したポリゴンファイル形式ですが、現在はオープンソースになっている。
この形式は、3Dモデル、マテリアル、および複数の独自のコンテンツ作成ツールにおける相互運用性に対する最新の概念を表している。
ジオメトリ、マテリアル、シーン、アニメーションのデータが含まれ、シーン全体のデータを効率よく保存できるため、多くの点でファイル形式に対して通常期待されるレベルを上回っている。
<参考>
■HoudiniからBlender
★★★★★
最も使いやすく感じました。
備考
Houdiniと同じようにtestアトリビュートも変化する値として保持していたため、ラフネスに繋げてみました。
アトリビュートをHoudiniから持ち出せるのでBlenderでもプロシージャルにモデルを変更することが可能になります。
■HoudiniからUE5
★★★★★
USDのプラグイン(最初から入っているのでチェック入れる)を使用することでUSD拡張子をクリック&ドロップで置くことができるようになります。
※設定が難しく詳しいことを全く理解していませんが、下の記事を読みながらアニメーション含めモデルを表示させることができました。
■HoudiniからNiantic Studio
usd拡張子は未対応のため→失敗
対応拡張子
'jpg'、'jpeg'、'png'、'svg'、'ico'、'gif'、'hdr'、'mp4'、'm4a'、'mp3'、'glb'、'gltf'、'spz'、'splat'、'ply'、'hcap'、'tvm'、'ttf'、'woff'、'woff2'、'otf'、'fnt'、'eot'、'spz'、'splat'、'ply'、'css'、'scss'、'sass'、'html'、'vue'、'js'、'ts'、'tsx'、'jsx'、'json'、'md'、'txt’
Houdini Engine for Unreal Engine
Houdiniで作成したモデルをHDA化し、UE上でパラメータを変更しながら使用できる方法。
※アニメーションは使用できません
HDA化
Unity、Unreal Engine、Mayaに、SOP(Surface Operators: 頂点情報を計算で変化させていく演算処理およびその結果)のパラメータを公開した上でエクスポートできる機能。
<参考>
今回はグリッドのサイズ、ノイズの振幅、高さのブラーの3パラメータを作成しました。
★★★★★
アニメーションを使用しない、且UE5にプロシージャルモデルを持っていきたい場合は一番使い勝手が良いと思います。
まとめ
データ形式の比較
- Alembic
Blenderでの互換性は高いものの、UE5では手間がかかります
- FBX
Houdini書き出し段階で問題があり、使い勝手も悪いため調査を深堀を中止しました。
- OBJ
連番ファイルのみ書き出しが可能ですが、Blender・UE5ともに読み込みに問題があります。
- GLB
Blenderではアトリビュート変化に問題があるものの互換性は高いです。UE5では使用不可。Niantic StudioはGLB形式一択と言っても良いと思います。
- USD
BlenderとUE5でどちらも最高の互換性を示し、アトリビュートの保持も優れています。
プラットフォーム別の互換性
- Blender
USDが最も優れた互換性を示し、アトリビュートも保持できます。
- Unreal Engine 5
USDとHoudini Engine for UEが高い互換性を持ちます。
- Niantic Studio
GLBファイルとFBXファイルが対応していますが、Houdiniで作成したモデルの表示には課題が残ります。