Cascadeur で武器をアタッチする

Cascadeur エディタ内で武器（プロップス）をアタッチする方法について記載。

![295466499969f90296fdda3272036bf3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/51c4f4b9-d9e3-280e-b566-d2692402144e.png)
今回は `UE5 SKIM Quinn Simple` を使います。
![ebe22ccb713f6586a91a5b49cfdc8a4c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/3311b13c-2c28-eeae-c070-93601a31d225.png)
`File` `Import Fbx/Dae` `Model` を開き、事前に用意した FBX ファイルを読み込みます。
![af6ec625e5406d262f732ca9644e73ce.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/639a673a-4beb-4444-233d-1dc0b335c855.png)
アウトライナに Mesh Object がインポートされます。
![0295713fbe2d049864599cb514aa95f7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/3fbea405-d7c0-f836-0abb-3bbe2c24dfdc.png)
ドラッグしてアタッチするボーンの下に移動します。
![908db37649bdddac1b416d7562606a71.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/e98fcec0-cf51-3982-e052-852779c7f2d0.png)
位置や回転を調整します。`Object properties` 詳細欄から `Local position` `Local rotation` を 0 にリセットしてから始めるとよいかもしれません。
![ede7972ba2c173a1f0e296b579eda1e1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/5cf351c9-41f1-d56d-aa12-f7fbc94ae744.gif)
以上！

## UE5 からメッシュを FBX 形式でエクスポートする
FBX が手元になく、マーケットプレイスなどで購入したアセットを持っていきたい場合。
![15278ac6f939569448d0372fd96cdebd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/a515252d-9afc-acc6-0e8d-afe75f8b9347.png)
アセットを右クリック、`アセットアクション` `エクスポート` を実行。
![971ed6973d975f006103b69a92ab83df.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/fee1c7e4-0264-0f35-e202-6f01bcc08f07.png)
今回の用途では必要ないので `LOD` や `コリジョン` その他はチェックを外します。`エクスポート` を実行すると FBX ファイルが出力されます。

# その他
ワークフロー的にこうするとよさそうのメモ書き。

## 武器コントローラーを作る
上記ではアタッチした位置を調整していますが、この場合は武器メッシュのプロパティを編集しているので、モーションとしては出力に含まれません。実際にエディタで扱う際、同様にトランスフォームを調整する必要があります。モーション毎に調整したい、例えば再生中に武器を動かしたい場合など、**ソケットと武器の間には武器用途のボーンを一つ挟んでおく**のをオススメします。
UE5 の `SKM_Manny` や `SKM_Quinn` には `weapon_r` が存在するので、それに合わせて Cascadeur でもボーンを追加しましょう。

:::note warn
`SKM_Manny_Simple` `SKM_Quinn_Simple` にはこれらのボーンは存在しません。
:::

### Cascadeur エディタでボーンの追加
![62f499a3889e3f0fd295348afe76a35b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/cbea4af3-069b-76d0-e61e-cd8d6b0285d6.png)
`Commands` `Add` `Joint` から Joint を追加する。
![905309510eb3544b5d0a0f4023d59966.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/4a6d5512-8d84-8062-0912-bd60bed44293.png)
`joint(0)` がアウトライナに追加されるので、`hand_r` にドラッグで移動します。`Name` を `weapon_r` に変更します。先ほど追加した武器メッシュも `weapon_r` の下に移動して調整しましょう。

https://cascadeur.com/help/rig/advanced_rigging/adding_objects/adding_props

公式ドキュメントに詳しく書いてあった。完。
武器のリグも追加するとよさそうですね。

### UE5 で武器がアタッチされないときは
![5f1b5aefa2e0dc7357ffcf3c574bef68.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/6b17980b-5d6c-44fa-1dd6-4e44fdc8c4e7.png)
`AttachComponentToComponent` でアタッチしたけど、武器がついていかない。そんなときは、`SKM_Manny_Simple` `SKM_Quinn_Simple` を使っている場合があります。スケルタルメッシュを `SKM_Manny` `SKM_Quinn` に変更してみてください。

## 武器メッシュの Pivot を変更する
![87fe345b85b2f43c4fef046fc19a7e62.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/57a96375-1890-fe40-9496-989a9b714a9e.png)
マーケットプレイスなどで購入した場合、アセットによってレギュレーションがまちまちだったりします。アタッチ時にトランスフォームを調整するでもよいですが、最初から Pivot を揃えておいた方が、別々のアセットを付け替えするときに楽になりそうです。

### UE5 のモデリングモードで編集する
**そう、UE5 ならね**。エディタ内で簡単に出来るようになりました。
適当なレベルを開いて、編集したいメッシュを配置します。
![25ba64a0e9c61ed2821347b950868be3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/00cbf640-0388-2564-8bce-daead28ada36.png)
ビューポートはデフォルトの `パースペクティブ` から `平行投影` に切り替えた方がやりやすいかと思います。
![484554e0cbe078bf8661521379e95aa4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/d3e17a80-79bc-dcc8-9351-dec12b046459.png)
モデリングモードに切り替えてメッシュを選択し、
![e64581d5bfc7f7c29b8bb4060e23e81e.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/79684095-86bb-0c06-1e49-1b885bc12d0a.png)
`モードツールバー` から `Pivot` を選択します。
![af0e17ea2e178ba7d2de47a532c5873c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/de29802b-0741-9105-ad8c-6466124563e9.png)
イイ感じに調整できたら `承諾` を実行。アセットが変更されるので、保存してください。