0.環境
UE5.5
Windows11
※Alembic形式でインポートしたGroomを使用しており、他形式のGroomはうまく動かない可能性があります
大体これに乗ってる内容です
1.Physicsを制御しているNiagaraをコピーする
Groomの重力などの揺れはNiagaraで制御されています
Niagara SolverをCustom Solverに変更します
デフォルトのStableSpringsSystemをブラウズすると
/All/EngineData/Plugins/HairStrands/Emitters
に移動します
GroomSpringSystemとSetupGroomPhysicsを自分のフォルダのわかりやすいところにコピーしておきます。わかりやすいように名前も変えておいてください。
コピーしたGroomSpringSystemにSolverを入れ替えておきます。
ついでにEnable Simulation(物理をシミュレーションするかどうか) にもチェックを入れておきます。
2.Niagara Moduleに風の項目を追加する
コピーしたSetupGroomPhysicsを開きます。
InputMapにつながるMapGetにVectorを追加していい感じに命名します
追加したらSet the forces propertiesのMap SetのAir Velocityにつなげます
これで風の力の入力ができるようになりました
3.Niagaraのモジュールを入れ替える
先ほどコピーしたGroomSpringSystemのほうを開きます。
もとからあったSetupGroomPhysicsを無効にして、先ほど編集したSetupGroomPhysics(コピー版)を追加します。
詳細に先ほど追加した風用のVectorが表示されているはずです。
ここに数字をいれるだけで、すでにGroom側で毛がはためいている様子を確認できます。カーブなどで自動ではためくようにしてもいいですね。
このVectorは、Groomが回転しようがGroomComponentが回転しようが、常に一定方向から吹きます。回転しても重量が反転しないように風の方向は変わりません。べんりやなあ
今回はBPで制御したかったのでユーザー変数を追加しておきます。
4.BPで風を制御する
Groom用のNiagaraのユーザー変数はレベル上に置かれたGroomから直接触ることはできませんが、BPに配置されたGroomComponentから取得することでアクセスができます
でけた