Houdini x Unity : VAT関連Tips & 備忘録

この記事はHoudiniアドベントカレンダー2022　1日目の記事です。
よろしくお願いします。
本記事は、表題の通り Houdini x Unity におけるVAT関連のTipsや備忘録的な記事となります。

# introduction

様々な業界で、昨今の諸々の事情的にUnityでもVATを扱う機会が増えてきたかと思います。
自分もその中の一人として  Houdini x Unity で VAT を扱う機会が増えてきているのですが、VAT3.0 がUnity2020・Unity2021環境だと不安定なことが多く、「じゃあどのバージョンや組み合わせが一番安定して使えるんだろう？」と思って検証致しました。
本記事は、この時に得られた知見やTipsの備忘録的な情報の共有となります。

:::note info
そもそもVATとは何だろうという方はこちらをご覧ください。
https://houdinifx.jp/blog/vertex-animation-texture/
https://ikatnek.blogspot.com/2021/07/vertex-animation-texture-3.html
:::

# 検証環境

Houdini18.5～19.5.303までの各プロダクションビルド

Unity2020.3.1f1 : HDRP / URP
Unity2021.2.11f1 : HDRP / URP
Unity2021.3.1f1 : HDRP / URP

VAT / 2.0 / 2.1 / 3.0



# 検証結果

**簡易まとめ**
* 先に簡単に結論をまとめると下記の通りです。
  * VAT3.0はどのバージョン・組み合わせでも検証環境では安定動作しませんでした。
  * その場合、現状作業効率やクオリティを考慮するとVAT2.1を使うのが無難でした。
  * ただしHoudini19.5の当該SideFXLabsノードのバージョンを下げてVAT2.1を書き出そうとするとエラーになることが多々ありました。
  * その場合、色々と試した結果Houdini18.5.462を使用してSaideFXLabsも同じバージョンにするのが最安定で確実でした。
  * VAT2.1を使用する場合は、2022年12月時点で検証環境と同じようなツール構成で作業する場合は`Houdini18.5.462` `SaideFXLabs18.5.462`の使用をお奨めします。
---
 **VAT2.1でFluidVAT・RigidVAT・SoftVAT・SpriteVATを書き出した例**
* 下記gif画像は`Houdini18.5.462` `SaideFXLabs18.5.462`で基本4種類のVATを書き出し、UnityURPに読み込んで動作チェックをした例です。どのVATもきちんと動作しており、上述の通りこのバージョンが一番安定して使用できました。
![vat_220831_main_c01_02_h.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/9e982f5f-d292-411e-4999-f861f5c51036.gif)

---
**Houdini x Unity : VAT2.1 詳細設定**

:::note info
* より詳細な情報は下記のyoutube動画及びArtstationのリンク先にまとめてあります。必要に応じてご覧ください。
:::

https://youtu.be/HR3e0UQNLM0

https://www.artstation.com/artwork/r9GnNG



# 各種設定・Tips

**HoudiniとSideFXLabsの推奨バージョン**
* 前述した通りではございますが、VAT2.1をエクスポートする際のHoudiniの推奨バージョンは18.5.462です。SideFXLabsも同じバーションが推奨です。
![221124_10_sc.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/af914357-121a-079d-e8b2-eaf34c70776f.png)



----

**Unityでのテクスチャ設定**
* UnityでのVATテクスチャ設定の推奨設定は下記の通りです。

:::note warn
下記設定以外でもしれっと動作したりします。ただし、それ故に描画エラー時に灯台下暗しでテクスチャ設定は見過ごしやすいので注意が必要です。
:::

![221124_11_sc.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/85f8616c-67df-8569-fddf-2912d5a76b57.png)

----
**ループ素材作成時のTips**
* ClothSimulation等のループは、Houdini19以降で行った方が結果が安定します。
* その場合、Houdini19以降でループ処理を行い、Houdini18.5でも読めるようなアトリビュート整理を行ってキャッシュを作成し、Houdini18.5でそのキャッシュを読んでVATをエクスポートする事で、Houdini19以降で作成した素材を安定してVAT2.1でエクスポートする事ができます。
![221124_12_sc.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/f57d871c-f424-944c-c4c6-03f3efd22175.png)

----

**汎用注意事項**
* どのバージョンのVATを使用するにせよ、必要なアトリビュート以外が残っているとVATの描画エラーが起こる場合があります。
* 特にシミュレーションを要する素材の場合、シミュレーション用のアトリビュートが残っている場合が多いので、可能な限りデータを整理してオプティマイズすることをお奨めします。
![221124_13_sc.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/fde559ef-f512-ccca-ed07-01d6203ee4ec.png)



# VATのバージョン毎の違いについて
2022年12月時点では、VATのバージョンは主に2.0・2.1・3.0辺りがが混在しているかと存じます。
「それぞれ何が違うのか？」と思われる方もいらっしゃると思いますので、各バージョンを使用して得た個人的な所感を下記に記載致します。

* **VAT2.0**
  * 今となっては過渡期のVATのバージョン。とりあえず動作はしますが、Houdini・Unity共にこの頃の仕様のものをそのまま使用するとposmin・posmaxのような座標の手打ち入力が必要等の間接的な手数が多いので、使用の際にはある程度TA等に相談して自動化した方が作業ストレスも少なく効果的です。      
* **VAT2.1**
  * この頃からUnity向けのShaderをSideFX社側がShadergraphで作成してくれており、アーティスト単位でもVATが扱いやすくなりました。当然Shaderの拡張も可能です。
  * 今まで手打ちしないといけなかったposmin・posmaxのような値を指定のデータフォーマットを使用する事で自動で入力してくれるようになり、個人的にはこの頃からVAT使用が実用的になったと思っています。  
* **VAT3.0**
  * VAT2.1の頃から更にデータ構造の安定化や設定の煩雑さ解消が図られています。検証した感じだとUE5ではそこそこ安定して使用できますが、Unityでは現状不安定です。Unityバージョン2021.20b3以上、URPバージョン12.0.0以上では一応使用できるとされていますが、推奨バージョン以上でも上手く動作しないことがよくあります。 


# おわりに
如何だったでしょうか？
現状VATはバージョンも環境も混在しており、色々と困る事もあるかと存じます。　
私自身、業務で主に使用しているHoudini x Unityのバージョンで安心して使用できるVATのバージョンや仕様の検証と、オープンな場で確認・共有できる資料が必要だと感じたので、本記事の執筆を行いました。
少しでも皆様のお役に立てたのなら幸いです。

最後までお目通し頂きありがとうございました。