忍者ブログ
【備忘録】クロスシミュレーション

クロスシミュレーションは布や髪を揺らすのに使える便利な機能です。
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
【備忘録】キャラクターモデルの物理アセットを作成する
クロスシミュレーションやリジッドボディを作成する前に物理アセットが必要になります。
また、物理アセットを作成することでラグドールや物理アニメーションを適応することができます。



【物理アセットを新規作成する】
キャラクターモデルをインポートした時に自動で新規作成されています。


もしも作成されていない場合は、スケルタルメッシュを右クリックして、作成する、物理アセット、作成を選択してください。




【物理アセットを編集する】
作成したばかりの状態ではこのように、コライダーの大きさもコンストレイントの角度も適切な状態ではありません。
カプセル型の体の部位ごとにコリジョンを設定するものがコライダー、コライダーとコライダーの間をつなぐ扇形のものがコンストレイントです。


このまま物理シミュレーションを行ってラグドール化すると、関節の可動域を超えてぐにゃぐにゃになって糸の切れたマリオネットのようになってしまいます。

※上のメニューの右のほうにシュミレートボタンがあります。

これを編集で整えていきます。


【コライダーの編集】
①コライダーの大きさ・位置・角度を整える
大きさを変えたいコライダーを選択して、大きさ・位置・角度を調整します。
スペースを押すとスケールモード・移動モード・回転モードを切り替えられます。


②コライダーを左右対称にする
このようにコライダーが左右非対称になってしまった場合、


正しい位置にある方のコライダーを右クリックして、Mirrorをクリックすると左右対称になります。




③コライダーを追加する
上の画像を見ると上腕にはコライダーがありますが前腕にはありません。
こういう時はまずスケルトンツリーの歯車をクリックして、すべてのボーンを表示を選択します。


ボーンの一覧からコライダーを追加したいボーンを選んで右クリックして、形状を追加、カプセルを追加を選択します。


無事コライダーが追加されるので、大きさや位置を整えます。


最終的にこのような形になりました。
すべてのボーンにコライダーを設定する必要はありません。
あとから参考にするUE5マネキンよりコライダーの数が少ないですが、これでも十分機能します。



【コンストレイントの編集】
①コンストレイントの値を調整する
コンストレイントの値はその関節の可動域を決める値です。
Swing1、Swing2、Twistの3つの値で制御します。
制限なく揺れさせたい場合はFreeを、固定したい場合はLockedを選択します。
この値を調整してラグドール化した時に関節が不自然な曲がり方をしないようにします。

ひとつひとつシミュレーションしながら値を調整するのは大変なので、UEマネキンの物理アセットを参考に数値を決めていきましょう。
自分の作り方ではUE5マネキンよりコライダーの数が少ないですが、コライダーを省略している部分は一番近い部位のコンストレイントを参考にすると良いです。

②コンストレイントをコピーする
左右のコンストレイントを同じにしたいときなどは、コンストレイントをコピーすることができます。
このように右肩に設定したコンストレイントの数値を左肩にもコピーしたいときは、


右肩のコンストレイントの上で右クリックしてプロパティをコピーを選択します。


左肩のコンストレイントの上で右クリックして、プロパティを貼り付けを選択します。


一つ一つコピーしなくても一括で設定する方法もあります。
このようにグラフエリアで同じ数値に設定したいコンストレイントを一括選択しておくと、一括でコンストレイント値を設定することができます。


③コンストレイントを追加する
このように胴体から腕へのコンストレイントが足りない場合、コンストレイントを追加します。


胴体のコライダーの上で右クリックして、コンストレイント、upperarm_lを選択します。
もう一度右クリックしてupperarm_rを選択します。


するとこのようにコンストレイントが追加されます。



最終的にこのような形になります。


この状態でシュミレートすると関節の可動域が自然な感じになります。



これで物理アセットの設定が完了したのでクロスシミュレーションやリジッドボディの設定を行うことができます。
【備忘録】UE5に自作モデルをインポートする
これまでに作ったキャラクターモデルをUE5にインポートしていきます。
※これまでの作業工程
【備忘録】絵しか描けない人間がBlenderでモデルを自作してUE5で動かす

GameRigToolsでボーンを作っている場合はこの方法でできますが、別の方法でリギングしている場合はうまくいかないかもしれません。



【インポート先のフォルダを作る】
コンテンツブラウザ上で右クリックし、新規フォルダを作成します。
フォルダ上でF2を押してわかりやすい名前に変更しておきます。




【FBXをインポートする】
コンテンツブラウザ上にFBXファイルをドラッグ&ドロップします。
インポートオプションでスケルトンをSK_Mannequinに設定し、マテリアルのImportTexturesにチェックを入れた状態ですべてインポートをクリックします。


なんかエラーが出ますが無視して大丈夫です。


インポート先のフォルダはこのようになっています。
エクスポートするときに同じマテリアルを複数作っている場合、テクスチャが重複してしまうため、不要なものを削除します。


インポートしたスケルタルメッシュを開くとこんな感じです。
ここでマテリアルの設定が最初からうまくいっていたことがないです。


マテリアルの設定をしていきます。
ベースカラーとノーマルにそれぞれインポートしたテクスチャをつなぎます。


光沢を変えたい部分があるときはマテリアルを複製し、メタリックやスペキュラ、ラフネスの値を調整します。


目と髪のマテリアルの設定はこれまでの工程で説明しているのでそちらを参照してください。
【備忘録】絵しか描けない人間がBlenderでモデルを自作してUE5で動かす

すべてのマテリアルの設定が終わったら、スケルタルメッシュを開いてマテリアルを割り当てていきます。
アセット詳細の各エレメントを一つずつハイライトさせてどのエレメントがどのメッシュに対応しているか確認しながらマテリアルを設定していきます。


すべて設定し終えるとこんな感じになります。


これでようやくUE5で自作モデルを動かすことができます。
【備忘録】BlenderからUE5に向けてFBXをエクスポートする
これまでに作ったキャラクターモデルをUE5にインポートできるようにFBXでエクスポートします。
※これまでの作業工程
【備忘録】絵しか描けない人間がBlenderでモデルを自作してUE5で動かす

GameRigToolsでボーンを作っている場合はこの方法でできますが、別の方法でリギングしている場合はこの設定でエクスポートするとボーンの向きがおかしくなってしまうので注意です。



【エクスポート用のボーンとペアレントする】
前回リギングとウェイトペイントの記事に従って進めている方は、まずGameRigToolsの変形ボーンとペアレントしている状態からUnrealボーンとのペアレントに変更します。
まずは変形ボーンとすべてのメッシュを選択した状態で右クリックしてペアレント、親子関係をクリアを選択します。


GameRigToolsのタブで長押しボーン、変形ボーンを非表示にしてUnrealボーンだけを表示します。


すべてのメッシュ、Unrealボーンの順に選択した状態で右クリックし、ペアレント、アーマチュア変形を選択します。




【エクスポート準備】
UE5では日本語表記のファイルがあるとエラーが生じるらしいので、念のためオブジェクト名をすべて半角英数字にしておきます。

また、クロスシミュレーションを適応したいメッシュや光沢をもたせたいメッシュはマテリアルを分けておきます。
今回はマントにクロスシミュレーションを適応したいのと、首飾りに光沢をもたせたいので、マントと首飾りのマテリアルの横にある数字をクリックして、それぞれ「マテリアル名.001」「マテリアル名.002」としておきます。
※光沢についてはノーマルと同じようにベイクできるようなのですが、うまくできなかったのでマテリアルを分けるという方法をとっています。





【エクスポート】
エクスポートしたいオブジェクトをすべて選択して、ファイル、エクスポート、FBXの順で選択します。


オペレータープリセットの設定を変更します。
選択したオブジェクト、変形ボーンにチェックを入れ、リーフボーン追加のチェックを外してFBXをエクスポートをクリックします。
何度も使う設定になるので、オペレータープリセットの横にある+をクリックし、プリセットに名前を付けて保存しておきます。



これでUE5にインポートする準備が整いました。
【備忘録】ウェイトペイント

Blenderでのウェイトペイントの方法を説明します。
いろいろありますが、自分が普段よく使う手法を紹介します。
基本操作はだいぶ省略しているので、基本操作がまだできない方は適宜他のチュートリアルを探してくださいね。



【自動のウェイトでペアレントする】
※自分はMakeHumanの素体を使用しているので普段この工程はしないのですが、ご自身で体もモデリングする方はこの工程が必要になります。
まずShiftを押しながらボーン、メッシュの順番で選択し、右クリックします。
ペアレント、自動のウェイトでを選択します。
先述の記事でGameRigToolsを使用している方は、変形ボーンにペアレントしてください。


これだけでもかなりきれいにウェイトがつけられますが、細かいところは次に紹介するウェイトペイントモードや編集モードで調整してください。



【データ転送で服にウェイトを転送する】
体から服にウェイトを転送することで、服のウェイト調整が楽になります。
服のメッシュにデータ転送モディファイアを追加し、ソースに体のオブジェクトを設定し、頂点データにチェックを入れ、頂点グループ、最近接頂点を選択したあと、データレイヤーを生成をクリックしてから適応します。


そのままではまだ一部のメッシュがはみ出したりと調整が必要なので、次に紹介するウェイトペイントモードや編集モードで調整してください。



【ウェイトペイントモードでウェイトを塗る】
Shiftを押しながらボーン、メッシュの順番で選択し、ウェイトペイントモードに入ります。


Altを押しながら各ボーンを選択し、Rでぐりぐり動かしながらうまくウェイトがついていないところに色を塗っていきます。
ドローブラシでウェイトをつけて、ぼかしブラシで境界を滑らかにしていきます。




動かしたボーンを元に戻すときはボーンを選択してポーズモードに入り、すべてのボーンを選択⇒右クリックしてユーザーのトランスフォームをクリアを選択します。



【編集モードでウェイトを調整する】
編集モードで選択した頂点にウェイトをつけて行きます。
ウェイトを付けたい頂点を選択して、プロパティのデータタブを開きます。
頂点グループから目的のボーンを選択し、割り当てをクリックします。
※頂点グループが制作されていない場合はプラスボタンを押し新しいグループを作成してからグループ名を目的のボーンに変更します。




また、ウェイトペイントモードで不自然なとんがりができてしまう場合、


編集モードに入って頂点ウェイトの値を適当に調整すると滑らかにできます。



かなりざっくりとした説明ですが、よく使う方法はこのあたりかと思います。
ボーンを一つずつ動かしながら細かく調整していけばいつかは終わる作業ですので頑張ってください。
プロフィール
HN:
山乃 ゆぎと
性別:
非公開
最新コメント
[09/06 グリペン]
[07/03 くらげ]
[04/30 NONAME]

Template by Emile*Emilie
忍者ブログ [PR]