Mutableのわからんことしらべてみた
MutableはUE5.5からリリースノートに乗るようになったキャラクターのカスタマイズを適用したスケルタルメッシュをランタイムまたは静的に作成するプラグインです!
まだまだできる事を把握しきれていないMutableですがいくつか個人的な疑問点についてしらべてみました。
2024のアドカレ用に作成した記事ですが、アドカレのスロットをうまく予約できていなかったので供養のために放流しますw
リンク
- 公式ドキュメント
https://github.com/anticto/Mutable-Documentation/wiki - 「Mutableをさわってみよう」@ docswell
https://www.docswell.com/s/EpicGamesJapan/KYDVLL-2024-12-09-095042
用語集
- CO = CustomizableObject
- COI = CustomizableObjectInstance
- CSC = CustomizableSkeletalComponent
- SMC = SkeletamMeshComponent
疑問点
その1 : SkeletalMeshComponent(SMC)に対して一つのCustomizableSkeletalComponent(CSC)を設定するべき?
CSCにはComponentNameに指定されたノードを親のSMCに自動設定する機能があります。
一つしかMeshComponentノードが無い場合には問題ありませんが、二つ以上のMeshComponentノードを持ったCOがあるときどうなるのでしょうか?
↓こんな感じ
下のコンポーネント構成のようにCSCはそれぞれのSMCに対して作成するべきなんでしょうか?
もしかするとComponentNameに設定されたメッシュだけが賢くインスタンス化されている可能性もゼロではないと思いました。
アンサー
各CSCはComponentNameに指定されていないSkeletalMeshも生成します。
上の例だと2つのSMCにぶら下がったそれぞれのCSCが2つのメッシュを生成するので、合計4つのメッシュが生成されますが、ComponentNameが一致していないメッシュは自動的には使われません。
生成したSkeletalMeshを無駄なく利用するために利用したいCOIに対して一つのCSCがあるべきです。
その2 : 生成したスケルタルメッシュの取り出し
GetComponentMeshSkeletalMeshを使って生成されたSkeletalMeshにアクセスします。
※プロジェクトの仕様が決まっているならForLoopを回す必要はありません。
その3 : アニメーションブループリントを扱えるの?
SkeletalMeshノードにはアニメーションブループリントをセットするプロパティがあります
このアニメーションブループリントは親のSkeletalMeshComponentに自動設定されません。
そのため自分でABPを取り出して設定する必要があります。
ブループリントで処理するなら、以下のようなノードが使えると思います。
ComponentIndexは複数のMeshComponentがあるのであればループを回す必要があるかもしれません。
5.5の時点ではGetAnimBPやForEachAnimInstanceはComponentIndexを要求しますが、5.5のMutableではCSCのComponentIndexはDeprecatedにマークされていて、ComponentName版を使うようになっているのでおそらく今後インターフェイスが変更される気がします。。。
その4 : SkeletalMeshに設定されたPostProcessABPはどう扱われる?
MeshComponentノードに設定されたReferenceSkeletalMeshのPostProcessABPがデフォルトで設定されます。
必要あらばその3のGetAnimBPを使ってオーバーライドしましょう。
今後調べたいこと
- テクスチャベイクの動作
- UVEditorとは テクスチャアトラスの扱い方
- グルームの扱い
- クロスの扱い
- タグやパラメータのような汎用的なデータも出力できるのか