Houdiniで作ったデータをUEにインポートする

<b>Houdini Advent Calendar 2024 4日目の記事です。</b>
<br>
皆さんはHoudiniからUnreal Engineにデータを持っていくと聞いた時、どんなデータ形式を想像されるでしょうか？
職種や業務内容（リアルタイム, プリレンなど）によって様々だと思います。

私はリアルタイム畑にいるので、FBXやテクスチャ形式を利用する事が多いのですが、
普段使っているデータ形式以外でどんなものがあるのだろうと思い調べてみました。

| もくじ |
|:-|
| [Filmbox (.fbx)](#filmbox-fbx) |
| [Alembic (.abc)](#alembic-abc) |
| [Wavefront OBJ (.obj)](#wavefront-obj-obj) |
| [OpenVDB (.vdb)](#openvdb-vdb) |
| [Universal Scene Description (.usd)](#universal-scene-description-usd) |

※ 時間がなかったので、VAT(.fbx .exr), .hbjson, .bgeo.scに関しては取り上げません。

<br>

:::note warn

注意事項
1. 今回紹介するものの中にはベータ版としてリリースされていたり、
<b>不具合が残っているものがあります。</b>
_
2. UEは基本的に単位が <b>センチメートル（cm）</b> です。
Houdiniは <b>メートル（m）</b> なので、データを出力する際はご注意ください。
:::

# Filmbox (.fbx)
### ■ Houdiniからファイル出力する方法
ROP FBX Output Sop, Filmbox FBX Driverノードなどを使います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/aa2162aa-6048-b274-7bd3-13141eaeffe2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/7c03c4b3-f433-5671-41f7-e7161bb5be43.png)

#### <INS>おすすめ設定</INS>
<b>Normalアトリビュート</b> を追加し、<b>Compute Smoothing Groups</b> にチェックを入れます。
（理由は後述します）
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/5812996b-a3ba-cdbb-600c-2ccd6d986e4c.png">

<b>Convert Units</b> にチェックを入れると単位がセンチメートル（cm）になり、
事前にスケールを100倍する必要がなくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/54e749f5-6285-29b1-f9b4-a9d401ae138e.png)
<br>

* * *
### ■ UEにファイルを読み込む方法
Content Browser もしくは Content Drawer にファイルをドラッグ＆ドロップします。
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/4915afe6-acef-ec24-c738-1812fb743dba.png">
<br>

※ FBX Import Options でインポート時の設定が変更できます。（ドキュメントは[こちら](
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/fbx-import-options-reference-in-unreal-engine)）
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/8a2a6b5d-a0af-845c-f18c-054573b82128.png">

<font color="Red"><b>※ インポート時に下記のメッセージログが出る場合は、[こちらの設定](#おすすめ設定) を行ってください。</b></font>
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/1985948d-123e-c259-d7b0-4e065536821c.png">
```VEX:Message Log
No smoothing group information was found in this FBX scene.  Please make sure to enable the 'Export Smoothing Groups' option in the FBX Exporter plug-in before exporting the file.  Even for tools that don't support smoothing groups, the FBX Exporter will generate appropriate smoothing data at export-time so that correct vertex normals can be inferred while importing. 
```
<br>

# Alembic (.abc)

### ■ Houdiniからファイル出力する方法
ROP Alembic Output Sop, Alembic Driverノードを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/74666936-e075-7ae5-1bf4-23573cd57dda.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/13e678af-08e9-29ea-834a-40ca487b3f7b.png)
<br>

* * *

### ■ UEにファイルを読み込む方法
Content Browser もしくは Content Drawer にファイルをドラッグ＆ドロップします。
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/baf24531-f18e-b35a-d7eb-b18f4840444f.png">
<br>

※ Alembic Cache Import Options でインポート時の設定が変更できます。
　（ドキュメントは[こちら](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/alembic-file-importer-in-unreal-engine)）
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/50ba1614-c5ce-deaf-72f5-237693fc6cd8.png">
<font color="Red"><b>※ Import Type を Geomery Cache か Skeltal にするとアニメーションも読み込みます。</b></fong>
<br>

# Wavefront OBJ (.obj)
### ■ Houdiniからファイル出力する方法
ROP Geometry Output Sop, Geometry Driverノードを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/79bbb089-9426-ba84-493e-6a32c1e8d099.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/ffa40757-8176-f8f3-d135-0a89bebbd4dd.png)
<br>
* * *

### ■ UEにファイルを読み込む方法
Content Browser もしくは Content Drawer にファイルをドラッグ＆ドロップします。
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/95e662c6-2c35-bf31-58ce-cf5f96ad6a2f.png">
<br>

※ Interchange Pipeline Configuration でインポート時の設定が変更できます。
　（ドキュメントは[こちら](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/importing-assets-using-interchange-in-unreal-engine?application_version=5.5)）
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/8c3e958a-ecc6-0b20-1e6e-e764d4f0b226.png">
<br>

# OpenVDB (.vdb)
### ■ Houdiniからファイル出力する方法
ROP Geometry Output Sop, Geometry Driverノードを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/16e232e8-f0cb-e149-4c1a-33c174885a37.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/6cb3966d-16e7-8b93-0cf6-62797be53daf.png)
<br>
* * *

### ■ UEにファイルを読み込む方法

Content Browser もしくは Content Drawer にファイルをドラッグ＆ドロップします。
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/6c66f098-55f1-7163-25eb-f18a54d5f531.png">
<br>

※ OpenVDB Import Options でインポート時の設定が変更できます。
　（ドキュメントは[こちら](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/sparse-volume-textures-in-unreal-engine#vdb%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8Bs)）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/042742ba-6ed6-bbd1-21e3-b3494efda836.png)
<br>
* * *

### ■ Volumeのレンダリングについて

VDBはインポートしただけでは、シーンに配置することが出来ません。
詳しくは私が昨年書いた記事をご覧ください。（情報が古かったらすみません）

##### <INS>Houdini使いの為のリアルタイムVolume入門</INS>
https://qiita.com/70_cg_art/items/1fde1ab063f7f078f10a


<br>

# Universal Scene Description (.usd)
### ■ Houdiniからファイル出力する方法
Usd Export Sop, File Cache Lop ノードなどを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/99978346-d02e-747e-346e-4a78ba516afe.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/3939bdf7-17d4-6305-07fc-493f565870f4.png)
<br>
* * *

### ■ UEにファイルを読み込む方法

1 USD Import プラグインを有効にします。
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/25ce1378-7f50-e0f1-badc-40eef5b19d8f.png">

2 Content Browser もしくは Content Drawer にファイルをドラッグ＆ドロップします。
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/62e6b13d-0355-73da-ab8f-be591154a022.png">

※ USD Import Options でインポート時の設定が変更できます。
　（ドキュメントは見つからなかったです、Python用ドキュメントは[こちら](https://dev.epicgames.com/documentation/en-us/unreal-engine/python-api/class/UsdStageImportOptions?application_version=5.5)）
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526231/decba748-7559-0385-8f94-e8b9e4fe8ff1.png">
<br>

# 最後に
如何だったでしょうか？ 
Houdiniから色んな形でUnreal Engineにデータを渡せることが分かったと思います。

今回紹介することが出来なかった、VAT(.fbx .exr), .hbjson, .bgeo.sc についても、
とても便利なデータ形式ですので、興味のある方はぜひ調べてみてください。

最後まで読んでいただき、ありがとうございました！
<br>