1
0
hugo/content/blog/2024-07-20-vrm.md
2024-12-21 21:03:10 +09:00

63 lines
3.9 KiB
Markdown

+++
date = "2024-07-20"
tags = ["ue","ue5", "vrm"]
title = "ue5でキャラを切り替える"
+++
<video controls style="width:100%;"><source src="/m/post/ue/ue5_2024-07-20_01.mp4"></video>
## キャラの切り替え
キャラの切り替えは`Widgets/GameAnimationWidget`の一部を使用します。具体的には`EUW_CharacterSelectButton`を以下のように書き換えれば使用できるでしょう。
<img src="/m/post/ue/ue5_2024-07-19_02.png">
<iframe src="https://blueprintue.com/render/7z9nt-bi/" scrolling="no" width="100%" height="450px" allowfullscreen></iframe>
これらは`editor utility`なのでcook(package build)に含まれません。もし切り替えボタンをbuild後も表示したければ、EUW(editor utility widget)をやめてWP(widget)で作成しましょう。またここで使われているblueprintアイコンはbuild時は真っ黒になります。画像を用意しましょう。
## アイの変身に難儀している
three-vrmを触っていた時代に衣装を作ったわけですが、ue5では思ったように動かないことがあります。
これは衣装の作り方に問題があるわけですが、かつてthree-vrmでよく見える衣装を試行錯誤して作ったやつを修正する時期が来たと思ったので、modelを全面的にupdateしました。
- 服の揺れで内部に入り込むので衣装を作り直した
- 腕輪を作り直した
- 輪っかをSMにしてmodelと分離した
- 瞳の中のマークを完璧な形状にした
- 靴のデザインを少し変更した
<img src="/m/post/ue/ue5_2024-07-19_01.png">
腕輪に関してはデザインとモデル、マテリアルに改善の余地があります。これもSMにして光沢化すればうまくいきそうですが、モデリングは苦手です。
基本的にアイの変身は複数のmodelを切り替えることで実装していました。
しかし、今回の衣装の変更ですべてのmodelを更新するのが非常にめんどくさいので、materialを切り替える方針に変更しました。
つまり、黒髪にしたいなら髪の毛のelementに黒髪のmaterialをsetします。今まではmodelそのものをsetしていました。
ですがこれも非常にめんどくさいことになるのですが、例えば、他のキャラと切り替えるとき、SMをすべてdisableにしなければなりません。そうでないとSMが残ってしまいます。
これは`BP_VrmOutlineComponent`や`VrmPoseableMesh_translucent`, `SM`などをmesh下に追加するときに起こります。
`set visibility`のoptionにチェックをいれることで全体化できますが、そうではなく現在キャラ切り替えは`CBP_SandboxCharacter`で行っています。
変更するたびに`CBP_SandboxCharacter`でvisibility:disableを設定しなければなりません。そうでないとアイのmodelに入れたやつが表示されてしまいます。
頻繁に変更しないならいいのですが、キャラが多くなってくるとアイのmodelを修正するたびに非常にめんどくさいことになります。
逆に`CBP_SandboxCharacter`をアイにしておかないと、blueprintが書きづらく、castする必要が出てきます。今のところmeshをぱっと参照できる方がいい。また、シーケンサで作ったムービー(モーション)が動かなくなります。
## 衣装に問題が発生した
その後、衣装に問題が発生しました。
現在、ロングコートをベースに衣装作成を行いましたが、胸の部分の隙間が開いてしまっており、これをワンピースベースにする必要があると感じました。
色々と書き換えていますが、納得できるものを完成させられていません。
ずっと使うものですから、ここでいいものを作っておきたい。