http://yugito.bangofan.com/unrealengine5%E5%82%99%E5%BF%98%E9%8C%B2/%E3%80%90%E5%82%99%E5%BF%98%E9%8C%B2%E3%80%91%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3【備忘録】クロスシミュレーションで揺れものを作る
                     
                                                            
                                            【備忘録】クロスシミュレーション
クロスシミュレーションは布や髪を揺らすのに使える便利な機能です。
UE5でクロスシミュレーションを適応する方法を説明します。
とはいえ自分がわかっている範囲なのでもっと詳しく知りたい方はご自身でもいろいろ調べてみてください。
【クロスデータを作成する】
まずキャラクターのスケルタルメッシュを開きます。
 
 
クロスデータを作成したいメッシュを右クリックして、セクションからクロスデータを作成、作成を選択します。
この時スケルタルメッシュから物理アセットが作成されていると、コリジョンのPhysicsAssetに自動で割り振られているのですが、ここが空白の場合は自分で設定するか、まだ物理アセットを作成していない場合は作成してから作業を続けましょう。
※物理アセットの作成方法はこちら
キャラクターモデルの物理アセットを作成する
 
 
【クロスペイント】
クロスタブを開いてクロスデータを先ほど作成したものを選択します。
 
 
クロスペイントを有効にするをクリックします。
 
 
メッシュがピンク色になるのでここにクロスペイントを行っていきます。
 
 
クロスタブの下のほうのクロス値とブラシサイズを調整します。
クロス値は0~100で、値が大きいほど大きくはためき、0だとはためかなくなります。
 
 
クロスシミュレーションさせたい場所を塗っていきます。
クロス値が100だと真っ白になります。
 
 
試しにクロス値を50に下げると、
 
50で塗ったところは少しグレーになります。
 
色の変化が微妙でわかりにくいときはカーソルを頂点上に合わせると左に選択中の頂点のクロス値が表示されます。
 
クロス値の変化を滑らかにしたいときはクロスタブのツールをブラシからスムージングに変更します。
 
スムージングブラシを塗った場所のクロス値の変化が滑らかになります。

ちなみにフィルはクリックしたところをすべて同じ値で塗る(バケツ塗り)機能です。
グラディエントは使い方がわかりませんでした。
すべて塗り終えたらクロスペイントを無効にするをクリックします。
 
【クロスデータを適応する】
クロスペイントを終えたメッシュの上で右クリックして、クロスデータを適応、先ほどクロスペイントを行ったアセット名を選択します。
 
無事にクロスシミュレーションが適応されました。
 
【クロスコンフィグを変更する】
クロスコンフィグでクロスシミュレーションの詳細を設定できるようです。
すべての機能を理解できていないので、とりあえず自分が使っている機能だけ紹介します。
①マスプロパティ
なんか布の硬さを変えられるっぽい機能です。
数値が大きいほど固く、小さいほど柔らかくなります。
Density以外を選択しても何がどう変わるのかよくわからなかったのでとりあえず布の硬さを変えたい場合はDensityの数値を変えるだけでいいと思います。
 ②コリジョンプロパティ
②コリジョンプロパティ
CollisionThicknessは布に見えない厚みを追加します。
FrictionCoefficientはコライダーに触れた時にどれくらいの摩擦があるかを設定します。
数値が大きいほどコライダーに引っかかりやすくなり、数値が小さいほどスルンと引っかからなくなります。
 ③環境プロパティ
 
③環境プロパティ
布がどれくらい空気抵抗を受けるかを設定できるようです。
DragとLiftのloの値をデフォルトより大きくすると布が空気抵抗を受けてふわっと緩やかにはためくようになります。
またGravityScaleを変更すると布を重くしたり無重力にしたりできます。
 
 
Drag0.035、Lift0.035(デフォルト)
 
 
Drag0.3、Lift0.3
 
 
GravityScale-1
 ④アニメーションプロパティ
 
④アニメーションプロパティ
シュミレートした布がどの程度元のアニメーションの動きを保つかを設定します。
AnimDriveStiffnessとAnimDriveDampingのloの値を0以上にすると布の動きが元のアニメーションに従ってある程度制限されます。
数値が大きいほど元のアニメーションの動きに近づき、1になるとクロスシミュレーションしていないのと同じ状態になります。
 
【課題点】
自分の場合、クロスシミュレーションをするといつもこのように布がコライダーとコライダーの隙間に挟まって体を貫通したように見えてしまいます。

この解決方法はわかっていないので、アニメーションプロパティで布の動きの自由度を下げることで何とか貫通を減らしています。
解決方法を知っている方がいたらぜひ教えてください。                                                    
                
PR