初めまして!
COYOTE 3DCG STUDIO COYOTE 3DCG STUDIO テクニカルチーム所属 TAの田島です。
Havok Clothブログも、ついに第5回を迎えました!
今回からは、Havok ClothのデータをUnreal Engineにインポートする手順を、前後編に分けて詳しく解説していきます。
まずは【前編】として、第1回~第4回で作成したHavok Clothのデータを、Unreal Engine用にエクスポートする手順を解説します。
あわせて、Havok Clothツールの具体的な使い方や、Unreal Engineとの連携時に押さえておきたいポイントについても詳しくご紹介します。
この手順を押さえれば、すぐにでもUnreal Engineへのエクスポートに活用できます!
最後までよろしくお願いします!
目次
- Unreal Engineの使用バージョンとHavok Cloth統合環境について
- 事前準備
- エクスポートするメッシュをまとめる
- FBXデータをエクスポートする
- HKTデータをエクスポートする
- まとめ
※使用モデル
ワトソン・アメリアさん
※使用モーションデータ
博衣こよりさん /シアワセ√コヨリニウム © 2016 COVER Corp.
Unreal Engineの使用バージョンとHavok Cloth統合環境について
本記事では、Unreal Engineバージョン「5.5」 にHavok Clothを統合した環境で検証・作業を行っています。
事前準備
UEへエクスポートするデータを作成する前に事前準備としてMayaデータの編集を行います。
後々、エラートラブルに見舞われないためにも重要な作業です。
①メッシュフェースを三角に分割する
Havok Cloth及びUEで使用するメッシュは全ての面が三角形である状態が望ましいです。
UEにFBXをインポートすると自動で全ての面が三角形に分割されますが、
正しくメッシュの形状を認識してくれない可能性があります。
意図しないエラーに繋がりますので、必ず事前に三角形に割っておきましょう。
②アニメーションをベイクする
FBX書き出しをする際、コンストレイント等の情報を持っていくことが出来ません。
アセットがスキンジョイントとリグジョイントで分かれている構造の場合、アニメーションのベイク処理を行う必要性があります。
ベイク手順
①ベイクのオプションを開く
「アニメーション」メニューセットから「キー」を選択します。
またその中から「シミュレーションのベイク処理」のオプションを開きます。
②オプションの変更
階層のオプションで「下位」を選択します。
③ベイク処理を実行
「Rootジョイント」を選択し、「ベイク処理」をクリックします。
エクスポートするメッシュを用途別にまとめる
Unreal Engine で Havok Cloth を実装するには、シミュレーションを適用するメッシュを正しい形式で FBX データとして書き出す必要があります。
そのための準備として、書き出すメッシュを「FBX」と「HKT」の2種類のセットにまとめます。
これは、Havok が提供するツール 「Havok Cloth Toolkit」 に含まれる 「Export Unreal Engine FBX」 機能を使用するためです。
今回はこの機能を用いて FBX の書き出しを行います。
①「FBX」セットを作成する
- 表示用のメッシュ
- スキンジョイント
で構成された選択セット、”FBX”を作成します。
ここで作成されたセットに含まれているものをFBXとして書き出すことになります。
メッシュごとにマテリアルが統一されているモデルの場合
- 「表示用メッシュ」
- 「スキンジョイントのRootジョイント」
をそれぞれ選択します。
一つのメッシュに複数のマテリアルが使用されている場合
一つのメッシュに複数のマテリアルがアサイン(ファセットアサイン)されているモデルを使用する場合はやや変則的なワークフローでセットを作成します。
本来であれば個別のマテリアル設定や分割メッシュで対応する事が一般的です。
今回使用しているモデルはファセットアサインを前提とした構造のため、本手順を採用しています。
- 「まとめたグループノード(display_mesh)」
- 「スキンジョイントのRootジョイント(watson_Root)」
のみを選択します。
アウトライナ上で右クリックします。
「セット」から「セットの作成」を選択します。
セットの名前を「FBX」にします。
必ず名前は「FBX」に設定してください。
「Export Unreal Engine FBX」では、名前が「FBX」である選択セットを自動的に認識し、その中に含まれるオブジェクトをFBXデータとして書き出します。
そのため、選択セットには必ず「FBX」という名前を使用してください。それ以外の名前では、ツールが正しく動作しません。
②「HKT」セットを作成する
このセットに含まれるオブジェクトに対してHavok Clothのセットアップデータ(hkt)が適用されます。
選択に漏れがあったり余計なオブジェクトが含まれていたりすると、Unreal Engine上でのセットアップがうまくいかない可能性があります。
- 「Havok Clothで使用しているメッシュ」
- 「コリジョン」
- 「スキンジョイント」
をそれぞれ選択します。
アウトライナ上で右クリックします。
「セット」から「セットの作成」を選択します。
名前を「HKT」に変更します。
「FBX」セット同様に今回もツールの仕様上必ず名前を「HKT」にする必要があります。
FBXデータをエクスポートする
「Havok Cloth Toolkit」に含まれる 「Export Unreal Engine FBX」を使用してFBXエクスポートを行います。
①「Export Unreal Engine FBX」を開く
「Havok Cloth Toolkit」を開きます。
「Export Unreal Engine FBX」をクリックしてFBXエクスポートを行います。
この時点で前工程のセット作成過程で命名等の不備がある場合は、エラーとして知らせてくれます。
②スムージンググループにチェックを入れる
「選択項目の書き出し」ウィンドウが自動で開きます。
オプション…>ファイルタイプ特有のオプション>ジオメトリにあるスムージンググループにチェックを入れます。
Unreal Engineの仕様でスムージンググループにチェックが入っていないメッシュはインポートが出来ないようになっています。
スムージンググループは、3Dモデルの面と面のつながりの滑らかさを制御するための情報です。
これがあることで、ポリゴンの境界が「カクカク」なのか「なめらか」なのかが判断されます。
また、エクスポートしたくないデータ等がありましたら適宜オプションの変更をしておきましょう。
「Export Unreal Engine FBX」を使用するメリット
「Export Unreal Engine FBX」を使用することのメリットは、命名エラー等のデータ不備が見つけやすくなる以外にも存在します。
それは、Unreal Engine側でのアセット統合時の誤結合や、マテリアルリファレンスの混同を避けることが可能になる点です。
別々のオブジェクトでも同一のマテリアルがアサインされていると、UEでは同じオブジェクトとしてみなされ、結合されてしまうことがあります。
「Export Unreal Engine FBX」を使用することで上記のエラーを回避することが出来ます。
このツールではエクスポートするそれぞれのメッシュに対し、固有のマテリアルをアサインし直してくれます。
例:
Mayaの標準エクスポートを使用した場合はA、Bに同じマテリアルが適用されています。
この状態だと同一オブジェクトとしてUE側に認識される危険性があります。
「Export Unreal Engine FBX」を使用した場合は新規マテリアルが生成されます。
そして、それぞれのメッシュに違うマテリアルがアサインされます。
HKTデータをエクスポートする
次にHavok ClothのセットアップデータをHKTにエクスポートします。
このファイル内にこれまでのブログで設定したHavok Clothのデータが入ります。
①「Havok Clothフィルターマネージャー」を開く
シェルフタブを「Havok」に切り替えます。
左から二番目にあるアイコンをクリックして開きます。
②プリセットを変更する
「Preset Configurations>C:/Program Files/…Maya>UECharacterClothForceFrontX.hko」を選択します。
Maya と Unreal Engine では、正面を表す軸方向が異なります。
軸の違いは下記画像を参照してください。
上記で適用したプリセットは、モデルの正面軸をUnreal Engineの正面軸である +X 方向 に合わせることを目的としています。
なお、プリセットを変更すると 既存の設定は上書きされて破棄されるため、必要に応じて事前に保存しておきましょう。
③「Enviroment Up-Axis」の設定を確認する
Configuration setの中から「Setup Cloth」をクリックします。
Enviroment Up -Axisのタブが「UE」になっていることを確認してください。
④hktファイルをセットする
Configuration setの中から「Setup Cloth」をクリックします。
「Scene File」の右横の「...」をクリックします。
これまでのブログで作成した、hktファイルをセットします。
⑤xcfgファイルをセットする
「Cloth Setup Config」右横の「...」をクリックします。
これまでのブログで作成した、xcfgファイルをセットします。
⑥「Havok Cloth Setup Tool」を開く
「Launch Cloth Setup Tool」をクリックし、「Havok Cloth Setup Tool」を開きます。
⑦「Sim Cloth」の”Gravity”の数値を編集する
これまでのブログで作成した各Sim Clothの”Gravity”のYの値とZの値を入れ替えます。
これは上述した、MayaとUnreal Engineの軸の違いに対応するためです。
重力は下に向かって働いてほしいので、UEに合わせてYとXの値を変更する必要があります。
⑧xcfgデータに保存する
メニューバーにある「File」から「Save Cloth Setup As」を選択し、任意の名前を付け保存します。
⑨保存したxcfgデータをセットする
「Havok Clothフィルターマネージャー」に戻ります。
⑧で保存したxcfgファイルを「Cloth Setup Config」にセットします。
⑩作成するhktデータの名前を決定する
Configuration setの中から「Write to Platform」をクリックします。
Filenameの右横にある「...」をクリックし、任意の名前を決定して保存します。
⑪「Run Configuration」を押し、hktデータを保存する
⑩で設定した名前のhktデータが保存されます。
まとめ
これでHavok Clothの「UEへエクスポート編」は終了です!
次回の「UEへインポート編」は、今回の内容を踏まえたものになります。
この工程をしっかりと押さえておくことで、後の作業が格段にスムーズになります!
また、TECH COYOTEブログには他にも様々な記事を掲載しています。
お時間のあるときに、ぜひそちらもチェックしてみてください。
次回、6月17日投稿予定の「UEへインポート編」もお楽しみに!
お疲れ様でした!
※使用モデル
ワトソン・アメリアさん
※使用モーションデータ
博衣こよりさん /シアワセ√コヨリニウム © 2016 COVER Corp.