Houdini Engine for Unityでコライダーを出力する

Houdini Engine for Unityでは、Houdini側でPrimitiveを特殊なグループに所属させることでコライダーを出力することができます。

詳細は公式ドキュメントを参照してください。
[Houdini Engine for Unity: Meshes](https://www.sidefx.com/docs/unity/_meshes.html)

## プリミティブコライダー

プリミティブコライダーを出力するには、以下のグループ名を使用します。

- `collision_geo_simple_box`
- `collision_geo_simple_sphere`
- `collision_geo_simple_capsule`
- `rendered_collision_geo_simple_box`
- `rendered_collision_geo_simple_sphere`
- `rendered_collision_geo_simple_capsule`

 グループ名の最後の`box`、`sphere`、`capsule`がそれぞれBox Collider、Sphere Collider、Capsule Colliderに対応しています。
グループ名の最初に`rendered`がある場合はメッシュとコライダーの両方が出力されますが、`rendered`がない場合はコライダーのみ出力されます。

例えば、Houdini側で以下のようなHDAを作り、`group1`ノードでPrimitiveにグループを指定するとします。
![houdini_rendered_sphere.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/282ac06f-b8bd-3cfc-79e9-07fd3afb3899.png)
グループ名が`rendered_collision_geo_simple_sphere`の場合、Houdini Engine for Unityでは以下のようにメッシュにSphere Colliderがついた状態で出力されます。
![unity_rendered_sphere.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/192aa41f-561e-34b9-aa87-ee57e0967ce0.png)

グループ名が`collision_geo_simple_sphere`の場合、メッシュがなくSphere Colliderだけが出力されます。
![unity_non_rendered_sphere.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/b5fe1862-7803-9369-3a17-6beac1500bb8.png)


## Mesh Collider

Mesh Colliderを利用するには、以下のグループ名を使用します。

- `collision_geo`
- `rendered_collision_geo`
- `convex_collision_geo`
- `rendered_convex_collision_geo`

プリミティブコライダーと同じで、`rendered`がある場合はメッシュにMesh Colliderがついた状態で出力され、`rendered`がない場合はMesh Colliderのみ出力されます。

以下は先ほどと同じネットワークでグループ名をそれぞれ`rendered_collision_geo`と`collision_geo`にしたときのHoudini Engine for Unityの出力になります。
![unity_rendered_geo.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/06c5e48c-3785-0cc4-1fef-2c5314683bfb.png)
![unity_non_rendered_geo.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/d61ce518-f7a7-3a32-5213-6318e0b44d9b.png)
グループ名に`convex`がついている場合、Mesh Colliderの`Convex`が有効化された状態になります。例えばグループ名を`rendered_convex_collision_geo`とした場合、次のような出力になります。
![unity_rendered_convex_geo.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/7df0c144-1abc-8ec2-4951-619406dccc81.png)

Houdini側を以下のようにすると描画用のメッシュとコライダー用のメッシュを分けることができます。ここではHoudini側であらかじめ255ポリゴンにローポリ化したConvex用のメッシュを作成しています。
![houdini_geo_custom.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/31b061c1-900e-1acd-6f64-8eb780cf4736.png)
![unity_non_geo_custom.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/1050e859-48e3-9359-6b72-6bb0db279326.png)

## Trigger

以下のようにグループ名に`trigger`をつけるとコライダーコンポーネントの`Is Trigger`を有効化した状態にすることができます。

- `collision_geo_simple_trigger_box`
- `collision_geo_simple_trigger_sphere`
- `collision_geo_simple_trigger_capsule`
- `rendered_collision_geo_simple_trigger_box`
- `rendererd_collision_geo_simple_trigger_sphere`
- `rendererd_collision_geo_simple_trigger_capsule`
- `convex_collision_geo_trigger`
- `rendered_convex_collision_geo_trigger`

例えば、最初のネットワークでグループに`rendered_convex_collision_geo_trigger`を指定した場合、Houdini Engine for Unityの出力は次のようになり、`Is Trigger`が有効化されています。
![unity_rendered_convex_geo_trigger.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/066f87f6-b536-a531-d035-ac3e49045c7d.png)