【備忘録】ブレンドシェイプで表情を付ける その②
UE5でキャラクターに表情を付けていきます。
今回はUE5編です。
Blenderでの作業手順は前回の記事を参照してください。
ブレンドシェイプで表情を付ける その①
…それにしても、ブレンドシェイプ、シェイプキー、モーフターゲット…呼び方が複数ありますがどう使い分けたらいいんでしょうね。
いまいちわからないまま説明を進めていくので言葉の使い間違いもあると思いますが、あしからずご了承くださいませ。
【シェイプキーを含めたFBXデータをインポートする】
ImportMorphTargetsにチェックを入れた状態でFBXデータをインポートします。
…ここで悲しいお知らせです。
こでまで最初にこの項目にチェックを入れていないと、再インポートではシェイプキーを追加でインポートできないようです。
なのでブレンドシェイプで表情を付ける予定のスケルタルメッシュをインポートするときは、なんでもいいので一つ変形を加えたシェイプキーを作ってからインポートしなければなりません。
一度シェイプキーを含めたデータをインポートしておけば、あとから再インポートした時にシェイプキーを増やすことは可能です。
はじめにシェイプキーを作っていなかった場合は、新規にインポートしたスケルタルメッシュにクロスシミュレーションや物理アセットをやり直さなければならない…、というわけではなく、次に説明する作業で何とかすることができます。
【スケルタルメッシュを新規にインポートした場合の対処】
スケルタルメッシュを新規にインポートした場合、クロスシミュレーションやリジッドボディなどの物理設定をシェイプキーをインポートする前のスケルタルメッシュからコピーすることができます。
①クロスシミュレーションのデータをコピーする
新規にインポートしたスケルタルメッシュを開き、クロスタブを選択します。
クロスを追加をクリックしてコピー元のスケルタルメッシュを選択します。
クロスデータにデータがコピーされます。
クロスを追加したいオブジェクト上で右クリックして、クロスデータを適応、追加したいクロスデータを選択します。
②物理アセットをコピーする
コンテンツブラウザで新規にインポートしたスケルタルメッシュに対応した物理アセットと、コピー元の物理アセットを同時に選択した状態で右クリックして、アセットアクション、リファレンスを置換を選択します。
コピー元のほうの物理アセット(設定を残したい方の物理アセット)を選択して結合アセットをクリックします。
新規にインポートしたほうの物理アセットが不要な場合は削除を選択します。
③その他BPのスケルタルメッシュを置換する
キャラクターBP、アニメーションBPなどのスケルタルメッシュを新規にインポートしたスケルタルメッシュに変更します。
※こんなことをしなくても古いほうのデータを削除する際にリファレンスを置換する方法もありますが、失敗した場合に取り返しがつかなくなる可能性があるので一つずつ作業したほうがいいでしょう。
これで物理設定をやり直さずに済みました。
気を取り直してブレンドシェイプの作業の続きに参りましょう。
【インポートした表情を確認する】
シェイプキー…UEではモーフターゲットと呼ぶようです。
モーフターゲットを確認します。
スケルタルメッシュを開いてモーフターゲットタブを選択します。
Blenderで作成したシェイプキーと同じパラメーターが並んでいます。
足りない場合は、Blenderに戻って足りないシェイプキーを作成したオブジェクトに、アーマチュア以外のモディファイアが設定されていないか確認してください。
アーマチュア以外のモディファイアが残っているとシェイプキーがインポートできないため、かならず適応してからエクスポートしたものを使います。
各パラメーターのウェイト値をドラッグすると表情を動かすことができます。
【アニメーションにブレンドシェイプを組み合わせる】
待機モーションにまばたきを追加してみましょう。
アニメーションシーケンスのMM_Idleを開きます。
※私の手順と同様にスケルタルメッシュを新規にインポートしなおした方は、PreviewMeshを新しいスケルタルメッシュのほうに変更しておきましょう。
カーブの横の▼をクリックして、カーブを追加、変更したいモーフターゲット名(今回はeye_close_L)を選択します。
カーブは複数選択することができます。
今回は左右のまぶたの動きを分けて作ったので、もう一度カーブを追加を選択してeye_close_Rのカーブを追加しましょう。
カーブ名の横の▼をクリックしてカーブを編集を選択します。
赤い再生バーを適当な位置で止めて線の上で右クリックして、キーを追加を選択します。
キーを3つ追加したら、真ん中の値を1.0にします。
再生ボタンを押して実際のアニメーションを確認しながら、キーとキーの間隔を変更してまばたきの速さを調整します。
カーブの角度が急なほど動きが早く、緩やかなほど遅くになります。
パチパチとせわしないまばたきにしたければ角度を急に、ゆっくりなまばたきにしたければ角度を緩くします。
これで片目のまばたきができました。
MM_Idleのタブに戻るとこんな感じになっています。
左目のカーブを右目にもコピーしていきましょう。
eye_close_Lの上で右クリックして、コピーを選択します。
eye_close_Rの上で右クリックして、クリップボードのデータをカーブにペーストを選択します。
これで右目と左目を同じタイミングで閉じることができました。
最後にこのアニメーションを保存し、ABPに組み込んで使用すれば待機中にまばたきをするキャラクターの完成です。
UE5でキャラクターに表情を付けていきます。
今回はUE5編です。
Blenderでの作業手順は前回の記事を参照してください。
ブレンドシェイプで表情を付ける その①
…それにしても、ブレンドシェイプ、シェイプキー、モーフターゲット…呼び方が複数ありますがどう使い分けたらいいんでしょうね。
いまいちわからないまま説明を進めていくので言葉の使い間違いもあると思いますが、あしからずご了承くださいませ。
【シェイプキーを含めたFBXデータをインポートする】
ImportMorphTargetsにチェックを入れた状態でFBXデータをインポートします。
…ここで悲しいお知らせです。
こでまで最初にこの項目にチェックを入れていないと、再インポートではシェイプキーを追加でインポートできないようです。
なのでブレンドシェイプで表情を付ける予定のスケルタルメッシュをインポートするときは、なんでもいいので一つ変形を加えたシェイプキーを作ってからインポートしなければなりません。
一度シェイプキーを含めたデータをインポートしておけば、あとから再インポートした時にシェイプキーを増やすことは可能です。
はじめにシェイプキーを作っていなかった場合は、新規にインポートしたスケルタルメッシュにクロスシミュレーションや物理アセットをやり直さなければならない…、というわけではなく、次に説明する作業で何とかすることができます。
【スケルタルメッシュを新規にインポートした場合の対処】
スケルタルメッシュを新規にインポートした場合、クロスシミュレーションやリジッドボディなどの物理設定をシェイプキーをインポートする前のスケルタルメッシュからコピーすることができます。
①クロスシミュレーションのデータをコピーする
新規にインポートしたスケルタルメッシュを開き、クロスタブを選択します。
クロスを追加をクリックしてコピー元のスケルタルメッシュを選択します。
クロスデータにデータがコピーされます。
クロスを追加したいオブジェクト上で右クリックして、クロスデータを適応、追加したいクロスデータを選択します。
②物理アセットをコピーする
コンテンツブラウザで新規にインポートしたスケルタルメッシュに対応した物理アセットと、コピー元の物理アセットを同時に選択した状態で右クリックして、アセットアクション、リファレンスを置換を選択します。
コピー元のほうの物理アセット(設定を残したい方の物理アセット)を選択して結合アセットをクリックします。
新規にインポートしたほうの物理アセットが不要な場合は削除を選択します。
③その他BPのスケルタルメッシュを置換する
キャラクターBP、アニメーションBPなどのスケルタルメッシュを新規にインポートしたスケルタルメッシュに変更します。
※こんなことをしなくても古いほうのデータを削除する際にリファレンスを置換する方法もありますが、失敗した場合に取り返しがつかなくなる可能性があるので一つずつ作業したほうがいいでしょう。
これで物理設定をやり直さずに済みました。
気を取り直してブレンドシェイプの作業の続きに参りましょう。
【インポートした表情を確認する】
シェイプキー…UEではモーフターゲットと呼ぶようです。
モーフターゲットを確認します。
スケルタルメッシュを開いてモーフターゲットタブを選択します。
Blenderで作成したシェイプキーと同じパラメーターが並んでいます。
足りない場合は、Blenderに戻って足りないシェイプキーを作成したオブジェクトに、アーマチュア以外のモディファイアが設定されていないか確認してください。
アーマチュア以外のモディファイアが残っているとシェイプキーがインポートできないため、かならず適応してからエクスポートしたものを使います。
各パラメーターのウェイト値をドラッグすると表情を動かすことができます。
【アニメーションにブレンドシェイプを組み合わせる】
待機モーションにまばたきを追加してみましょう。
アニメーションシーケンスのMM_Idleを開きます。
※私の手順と同様にスケルタルメッシュを新規にインポートしなおした方は、PreviewMeshを新しいスケルタルメッシュのほうに変更しておきましょう。
カーブの横の▼をクリックして、カーブを追加、変更したいモーフターゲット名(今回はeye_close_L)を選択します。
カーブは複数選択することができます。
今回は左右のまぶたの動きを分けて作ったので、もう一度カーブを追加を選択してeye_close_Rのカーブを追加しましょう。
カーブ名の横の▼をクリックしてカーブを編集を選択します。
赤い再生バーを適当な位置で止めて線の上で右クリックして、キーを追加を選択します。
キーを3つ追加したら、真ん中の値を1.0にします。
再生ボタンを押して実際のアニメーションを確認しながら、キーとキーの間隔を変更してまばたきの速さを調整します。
カーブの角度が急なほど動きが早く、緩やかなほど遅くになります。
パチパチとせわしないまばたきにしたければ角度を急に、ゆっくりなまばたきにしたければ角度を緩くします。
これで片目のまばたきができました。
MM_Idleのタブに戻るとこんな感じになっています。
左目のカーブを右目にもコピーしていきましょう。
eye_close_Lの上で右クリックして、コピーを選択します。
eye_close_Rの上で右クリックして、クリップボードのデータをカーブにペーストを選択します。
これで右目と左目を同じタイミングで閉じることができました。
最後にこのアニメーションを保存し、ABPに組み込んで使用すれば待機中にまばたきをするキャラクターの完成です。
PR
【備忘録】コントロールリグとシーケンサーを使用したアニメーションの改造
コントロールリグとシーケンサーを使ってUE5にもともと入っているアニメーションやMixamoでダウンロードしたアニメーションを改造します。
自作モデルを使用する場合は、UE5マネキンに対応したスケルトンで作成し、インポートするときにスケルトンをSK_Mannequinに設定している必要があります。
※それぞれの方法はこちら
UE5対応スケルトンの作成
UE5に自作モデルをインポートする
Mixamoからアニメーションをダウンロードする方法はこちらの動画を参考にしてください。
動画内で使用しているMixamoコンバータは使用しなくても大丈夫です。
【Mixamoアニメーションを自作モデルにリターゲットする】
ダウンロードしたアニメーションの上で右クリックして、アニメーションをリターゲットをクリックします。
ターゲットスケルタルメッシュに自作モデルを設定して、リターゲットしたいアニメーションを選択し、アニメーションをエクスポートをクリックします。
エクスポート先のフォルダを選択し、エクスポートをクリックします。
もう一度エクスポートをクリックします。
アニメーションが無事リターゲットされたことを確認します。
【レベルシーケンスを追加する】
レベル上に自作モデルのスケルタルメッシュをドラッグアンドドロップで追加します。
カチンコのマークをクリックしてレベルシーケンスを追加をクリックします。
レベルシーケンスを追加するフォルダを選択して保存をクリックします。
【シーケンサーにアクタ・アニメーション・コントロールリグを追加する】
新たに追加されたシーケンサーに、まずはアクタを追加します。
シーケンサーの追加ボタン、シーケンサにアクタを追加の順でクリックして右に出てくるリストから先ほどレベルに追加した自作モデルのスケルタルメッシュを選択します。
スケルタルメッシュの下にあるアニメーションの+マークをクリックして、改造したいアニメーションを選択します。
シーケンサーの緑の[(アニメーションの開始点)と赤い](アニメーションの終了点)をアニメーションの長さに合わせます。
赤い再生バーがアニメーションの始点にあるときに緑の[をクリックして、終点にあるときに赤い]をクリックします。
※アニメーションバーの長さはCtrlを押しながらスクロールで変更することができます。
シーケンサーの自作モデルのスケルタルメッシュ上で右クリックし、コントロールリグにベイク、CR_Mannequin_Bodyを選択します。
ベイクのオプションは特に変更せず作成をクリックします。
アニメーションを改造するためのコントロールリグが追加されました。
【コントロールリグでアニメーションを改造する】
①コントロールリグにセクションを追加する
元のアニメーションに別の動きを加算することでアニメーションを改造していきます。
コントロールリグ上で右クリックしてセクションを追加、Additiveを選択します。
Additiveバー をアニメーションと同じ幅になるように拡大しておきます。
②アニメーションの全体の姿勢を改造する
まずはこの猫背気味の姿勢を修正します。
先ほど作成したAdditiveセクションをクリックします。
各コントローラーを選択し、移動や回転で姿勢を修正します。
特にキーを打たずに修正を加えると、全体の動きが変更されます。
③部分的にアニメーションを改造する
今回はこのかがんだ時の手の位置を変えて、動物をなでているような動きに改造していきます。
腕を動かしやすいように、デフォルトのFKからIKで操作できるように切り替えます。
一番上の、最初にベイクしたコントロールリグを選択します。
▼マークを押してglobal_ctrlのタブを開きます。
下にスクロールしてarm_l_fk_ik_switch、arm_r_fk_ik_switch上のキーを全選択した状態でチェックボックスをオンにします。
※キーを選択した範囲だけIKに切り替わります。部分的にIKに変更したい場合はキーを部分的に選択してチェックを入れます。
①をもう一度実行して、全体の姿勢を改造した時に使用したのとは別のAdditiveセクションを追加します。
追加したセクションがわかりやすいようにセクションを右クリックして色合いを設定を選択し、異なる色に変更しておきます。
追加したセクションをクリックした状態でコントロールリグのハンドIKボックスをクリックします。
動きに変化を付け始める点、一番動きに変化を付けたい点、動きの変化を終える点でそれぞれキーを打ちます。
赤い再生バーをキーを打ちたい場所に動かして、Sを押すとキーを打つことができます。
※ここでキーを打ち忘れると、部分的ではなく、全体の動きが変更されてしまいます。
一番動きに変化を付けたい点でコントロールリグを修正します。
動画を添付していないのでわかりにくいですが、シーケンサーの再生ボタンを押すと動きが部分的に改造できていることが確認できます。
キーを増やすことで動きをもっと複雑にすることができます。
④レベルシーケンスを保存する
シーケンサーのフロッピーマークに米印がついているとシーケンサーが未保存の状態です。
フロッピーマークをクリックしてシーケンサーを保存します。
⑤アニメーションの編集を再開する
④でレベルシーケンスを保存しておくと、アニメーションの編集を途中から再開することができます。
レベルシーケンスを保存しているフォルダを開き、レベルシーケンスをダブルクリックで開くとアニメーションの編集を再開することができます。
【アニメーションをベイクする】
シーケンサーのスケルタルメッシュ上で右クリックして、リンクされたアニメーションシーケンスを作成を選択します。
エクスポート先のフォルダを選択してOKをクリックします。
アニメーションシーケンスオプションは特に変更せずアニメーションシーケンスをエクスポートをクリックします。
エクスポート先のフォルダにアニメーションシーケンスが追加されました。
開いてみると、無事アニメーションが作成されています。
今回説明したのはベースとなるアニメーションを改造する方法ですが、シーケンサーとコントロールリグ使用すると何もない状態からアニメーションを作成することもできます。
コントロールリグとシーケンサーを使ってUE5にもともと入っているアニメーションやMixamoでダウンロードしたアニメーションを改造します。
自作モデルを使用する場合は、UE5マネキンに対応したスケルトンで作成し、インポートするときにスケルトンをSK_Mannequinに設定している必要があります。
※それぞれの方法はこちら
UE5対応スケルトンの作成
UE5に自作モデルをインポートする
Mixamoからアニメーションをダウンロードする方法はこちらの動画を参考にしてください。
動画内で使用しているMixamoコンバータは使用しなくても大丈夫です。
【Mixamoアニメーションを自作モデルにリターゲットする】
ダウンロードしたアニメーションの上で右クリックして、アニメーションをリターゲットをクリックします。
ターゲットスケルタルメッシュに自作モデルを設定して、リターゲットしたいアニメーションを選択し、アニメーションをエクスポートをクリックします。
エクスポート先のフォルダを選択し、エクスポートをクリックします。
もう一度エクスポートをクリックします。
アニメーションが無事リターゲットされたことを確認します。
【レベルシーケンスを追加する】
レベル上に自作モデルのスケルタルメッシュをドラッグアンドドロップで追加します。
カチンコのマークをクリックしてレベルシーケンスを追加をクリックします。
レベルシーケンスを追加するフォルダを選択して保存をクリックします。
【シーケンサーにアクタ・アニメーション・コントロールリグを追加する】
新たに追加されたシーケンサーに、まずはアクタを追加します。
シーケンサーの追加ボタン、シーケンサにアクタを追加の順でクリックして右に出てくるリストから先ほどレベルに追加した自作モデルのスケルタルメッシュを選択します。
スケルタルメッシュの下にあるアニメーションの+マークをクリックして、改造したいアニメーションを選択します。
シーケンサーの緑の[(アニメーションの開始点)と赤い](アニメーションの終了点)をアニメーションの長さに合わせます。
赤い再生バーがアニメーションの始点にあるときに緑の[をクリックして、終点にあるときに赤い]をクリックします。
※アニメーションバーの長さはCtrlを押しながらスクロールで変更することができます。
シーケンサーの自作モデルのスケルタルメッシュ上で右クリックし、コントロールリグにベイク、CR_Mannequin_Bodyを選択します。
ベイクのオプションは特に変更せず作成をクリックします。
アニメーションを改造するためのコントロールリグが追加されました。
【コントロールリグでアニメーションを改造する】
①コントロールリグにセクションを追加する
元のアニメーションに別の動きを加算することでアニメーションを改造していきます。
コントロールリグ上で右クリックしてセクションを追加、Additiveを選択します。
Additiveバー をアニメーションと同じ幅になるように拡大しておきます。
②アニメーションの全体の姿勢を改造する
まずはこの猫背気味の姿勢を修正します。
先ほど作成したAdditiveセクションをクリックします。
各コントローラーを選択し、移動や回転で姿勢を修正します。
特にキーを打たずに修正を加えると、全体の動きが変更されます。
③部分的にアニメーションを改造する
今回はこのかがんだ時の手の位置を変えて、動物をなでているような動きに改造していきます。
腕を動かしやすいように、デフォルトのFKからIKで操作できるように切り替えます。
一番上の、最初にベイクしたコントロールリグを選択します。
▼マークを押してglobal_ctrlのタブを開きます。
下にスクロールしてarm_l_fk_ik_switch、arm_r_fk_ik_switch上のキーを全選択した状態でチェックボックスをオンにします。
※キーを選択した範囲だけIKに切り替わります。部分的にIKに変更したい場合はキーを部分的に選択してチェックを入れます。
①をもう一度実行して、全体の姿勢を改造した時に使用したのとは別のAdditiveセクションを追加します。
追加したセクションがわかりやすいようにセクションを右クリックして色合いを設定を選択し、異なる色に変更しておきます。
追加したセクションをクリックした状態でコントロールリグのハンドIKボックスをクリックします。
動きに変化を付け始める点、一番動きに変化を付けたい点、動きの変化を終える点でそれぞれキーを打ちます。
赤い再生バーをキーを打ちたい場所に動かして、Sを押すとキーを打つことができます。
※ここでキーを打ち忘れると、部分的ではなく、全体の動きが変更されてしまいます。
一番動きに変化を付けたい点でコントロールリグを修正します。
動画を添付していないのでわかりにくいですが、シーケンサーの再生ボタンを押すと動きが部分的に改造できていることが確認できます。
キーを増やすことで動きをもっと複雑にすることができます。
④レベルシーケンスを保存する
シーケンサーのフロッピーマークに米印がついているとシーケンサーが未保存の状態です。
フロッピーマークをクリックしてシーケンサーを保存します。
⑤アニメーションの編集を再開する
④でレベルシーケンスを保存しておくと、アニメーションの編集を途中から再開することができます。
レベルシーケンスを保存しているフォルダを開き、レベルシーケンスをダブルクリックで開くとアニメーションの編集を再開することができます。
【アニメーションをベイクする】
シーケンサーのスケルタルメッシュ上で右クリックして、リンクされたアニメーションシーケンスを作成を選択します。
エクスポート先のフォルダを選択してOKをクリックします。
アニメーションシーケンスオプションは特に変更せずアニメーションシーケンスをエクスポートをクリックします。
エクスポート先のフォルダにアニメーションシーケンスが追加されました。
開いてみると、無事アニメーションが作成されています。
今回説明したのはベースとなるアニメーションを改造する方法ですが、シーケンサーとコントロールリグ使用すると何もない状態からアニメーションを作成することもできます。
【備忘録】リジッドボディで揺れものを作る
リジッドボディは動物の尻尾やポニーテールなどを揺らすのに便利な機能です。
UE5でリジッドボディを適応する方法を説明します。
【追加ボーンを作成する】
まずはblenderで追加ボーンを作成します。
今回は前回クロスシミュレーションで揺らしたマントにリジッドボディを適応してみます。
UE5対応のスケルトンと接続するためにはこのままではボーンの軸が合わないため、ボーンの軸をUE5に対応する向きに変更します。
※UE5対応スケルトンの作成方法はこちら
UE5に対応したスケルトンを作成する
まず追加ボーンだけを選択し、Pで体のボーンから分離します。
分離したボーンだけを選択して一旦FBXでエクスポートします。
エクスポート設定で、アーマチュアのプライマリボーンをX軸、セカンダリボーンをY軸に設定してからFBXをエクスポートをクリックします。
先ほどエクスポートした追加ボーンをインポートします。
一旦すべてのメッシュと体のボーンとの親子関係をクリアしておきます。
マント、追加ボーンの順で選択し右クリックして、ペアレント、自動のウェイトでをクリックします。
必要に応じて編集モードやウェイトペイントモードでウェイト調整しておきます。
追加ボーン、体のボーンの順に選択し右クリックして、統合をクリックします。
このままでは追加ボーンと体のボーンがつながっていないので、ボーンを選択した状態で編集モードに入り、追加ボーンと体のボーンのペアレントを設定します。
追加ボーンの先頭のボーンを選択した状態でプロパティのボーンタブを開き、関係のペアレントの欄に追加ボーンの親となるボーンを入力します。
【コライダーを作成する】
UE5にインポートしたあと、物理アセットを開きます。
物理アセットがない場合はスケルタルメッシュを右クリックして作成する、物理アセット、作成をクリックします。
物理アセットを開いた後は作業しやすいように、キャラクター、ボーン、すべての階層を選択してすべてのボーンを表示します。
スケルトンツリーの歯車マークをクリックして、すべてのボーンを表示をクリックします。
追加ボーンをすべて選択した状態で右クリックして、形状を追加、カプセルを追加を選択します。
このようにカプセルコライダーが追加されました。
スケール・回転・位置を調整します。
作業しやすいようにスケルトンツリーの歯車マークをクリックして、ボーンを非表示をクリックします。
【コンストレイントを作成する】
コライダー同士をコンストレイントでつないでいきます。
このマントの場合、cape1_l_001~006を一続きにしたいので、コライダーを選択して右クリックし、コンストレイントを選択して次のコライダーを選択する、という作業を001~005まで繰り返します。
先頭のコライダーは体の一部にコンストレイントをつなぎます。
すべてのコライダーをつなぎ終えました。
リジッドボディを適応したいコライダーをすべて選択した状態で右クリックして、物理タイプ、シミュレート済を選択します。
コンストレイントをすべて選択し、AngularLimitsを設定します。
デフォルトではすべてFreeになっていて動きが不安定になっているので、Limitedを選択して適宜数値を入力します。
【コリジョンを有効にする】
接触判定を与えたいコライダー同士を選択した状態でコリジョンを有効にするをクリックします。
ひとつのコライダーを選択したときに青色に変わる部分が、選択したコライダーとコリジョンが有効になっているコライダーです。
体のコライダーとマントのコライダーの間でコリジョンを有効にしておかないとマントが体を貫通してしまいます。
【アニメーションブループリントでリジットボディを設定する】
キャラクターのアニメーションブループリントを開き、アニメーショングラフを開きます。
アニメーショングラフにRigidBodyノードを追加し、OverridePhysicsAssetに先ほど作成した物理アセットを設定します。
RigidBodyノードをつなぎ、コンパイルしておきます。
【課題点】
テストプレイしてみると。コライダーの隙間はすり抜けて体が貫通してしまっています。
コライダーのサイズを大きくしてコンストレイントの制限を強くしてみました。
貫通は少なくなりましたが、完全にはなくせませんでした。
マントのように広範囲の揺れものはクロスシミュレーションの方が適しているかもしれません。
リジッドボディは細い尻尾やポニーテールなどが適していそうです。
メッシュの形状によってリジットボディとクロスシミュレーションを適宜使い分けていく必要がありそうです。
【リジッドボディの活用の仕方】
尻尾やポニーテールの他に、イヤリングなどのアクセサリーの揺れものにリジッドボディは適しています。
リジッドボディは動物の尻尾やポニーテールなどを揺らすのに便利な機能です。
UE5でリジッドボディを適応する方法を説明します。
【追加ボーンを作成する】
まずはblenderで追加ボーンを作成します。
今回は前回クロスシミュレーションで揺らしたマントにリジッドボディを適応してみます。
UE5対応のスケルトンと接続するためにはこのままではボーンの軸が合わないため、ボーンの軸をUE5に対応する向きに変更します。
※UE5対応スケルトンの作成方法はこちら
UE5に対応したスケルトンを作成する
まず追加ボーンだけを選択し、Pで体のボーンから分離します。
分離したボーンだけを選択して一旦FBXでエクスポートします。
エクスポート設定で、アーマチュアのプライマリボーンをX軸、セカンダリボーンをY軸に設定してからFBXをエクスポートをクリックします。
先ほどエクスポートした追加ボーンをインポートします。
一旦すべてのメッシュと体のボーンとの親子関係をクリアしておきます。
マント、追加ボーンの順で選択し右クリックして、ペアレント、自動のウェイトでをクリックします。
必要に応じて編集モードやウェイトペイントモードでウェイト調整しておきます。
追加ボーン、体のボーンの順に選択し右クリックして、統合をクリックします。
このままでは追加ボーンと体のボーンがつながっていないので、ボーンを選択した状態で編集モードに入り、追加ボーンと体のボーンのペアレントを設定します。
追加ボーンの先頭のボーンを選択した状態でプロパティのボーンタブを開き、関係のペアレントの欄に追加ボーンの親となるボーンを入力します。
【コライダーを作成する】
UE5にインポートしたあと、物理アセットを開きます。
物理アセットがない場合はスケルタルメッシュを右クリックして作成する、物理アセット、作成をクリックします。
物理アセットを開いた後は作業しやすいように、キャラクター、ボーン、すべての階層を選択してすべてのボーンを表示します。
スケルトンツリーの歯車マークをクリックして、すべてのボーンを表示をクリックします。
追加ボーンをすべて選択した状態で右クリックして、形状を追加、カプセルを追加を選択します。
このようにカプセルコライダーが追加されました。
スケール・回転・位置を調整します。
作業しやすいようにスケルトンツリーの歯車マークをクリックして、ボーンを非表示をクリックします。
【コンストレイントを作成する】
コライダー同士をコンストレイントでつないでいきます。
このマントの場合、cape1_l_001~006を一続きにしたいので、コライダーを選択して右クリックし、コンストレイントを選択して次のコライダーを選択する、という作業を001~005まで繰り返します。
先頭のコライダーは体の一部にコンストレイントをつなぎます。
すべてのコライダーをつなぎ終えました。
リジッドボディを適応したいコライダーをすべて選択した状態で右クリックして、物理タイプ、シミュレート済を選択します。
コンストレイントをすべて選択し、AngularLimitsを設定します。
デフォルトではすべてFreeになっていて動きが不安定になっているので、Limitedを選択して適宜数値を入力します。
【コリジョンを有効にする】
接触判定を与えたいコライダー同士を選択した状態でコリジョンを有効にするをクリックします。
ひとつのコライダーを選択したときに青色に変わる部分が、選択したコライダーとコリジョンが有効になっているコライダーです。
体のコライダーとマントのコライダーの間でコリジョンを有効にしておかないとマントが体を貫通してしまいます。
【アニメーションブループリントでリジットボディを設定する】
キャラクターのアニメーションブループリントを開き、アニメーショングラフを開きます。
アニメーショングラフにRigidBodyノードを追加し、OverridePhysicsAssetに先ほど作成した物理アセットを設定します。
RigidBodyノードをつなぎ、コンパイルしておきます。
【課題点】
テストプレイしてみると。コライダーの隙間はすり抜けて体が貫通してしまっています。
コライダーのサイズを大きくしてコンストレイントの制限を強くしてみました。
貫通は少なくなりましたが、完全にはなくせませんでした。
マントのように広範囲の揺れものはクロスシミュレーションの方が適しているかもしれません。
リジッドボディは細い尻尾やポニーテールなどが適していそうです。
メッシュの形状によってリジットボディとクロスシミュレーションを適宜使い分けていく必要がありそうです。
【リジッドボディの活用の仕方】
尻尾やポニーテールの他に、イヤリングなどのアクセサリーの揺れものにリジッドボディは適しています。
【備忘録】アニメーションリターゲットとアニメーションブループリントの設定
今回は一番簡単にできるやり方でやっていきます。
【アニメーションのリターゲット】
Characters>Mannequins>Animationsフォルダの中にあるABP_Mannyを右クリックして、アニメーションをリターゲットを選択します。
リターゲットウィンドウが開かれます。
ターゲットに自作モデルのスケルタルメッシュを選択します。
ABP_Mannyを選択してアニメーションをエクスポートを選択します。
※立ち姿が男性のものより女性のもののほうがきれいなので、ABP_Mannyの他にMF_Idle、MF_Run_Fwd、MF_Walk_Fwd、BS_MF_Unamed_WalkRunも同時に選択してリターゲットします。
エクスポート先のフォルダを選択してエクスポートをクリックします。
もう一度エクスポートをクリックします。
すでに一度リターゲットしていて上書きしたいときは既存のファイルを上書きにチェックを入れておきます。
少し待つと自動でエクスポート先のフォルダに移動し、アニメーションの一覧が表示されます。
あとからわかりやすいようにABP_Mannyから適切な名前に変更しておきましょう。
また一度ABPを開いてコンパイルしておきましょう。
【MM_Landのエラー修正】
リターゲットしたアニメーションのうち、MM_Landだけリターゲット時に加算セッティングの値が正常にコピーされないために着地時のモーションにエラーが起きます。
着地と同時にメッシュが膨張し、エラーが表示されます。
MM_Landを開き、加算セッティングのAdditiveAnimTypeをLocalSpaceに、BasePoseTypeをFrame from this animationに、RefFrameIndexを26に設定するとエラーが起きなくなります。
【キャラクターブループリントの設定】
ThirdPerson>Blueprintsフォルダの中にあるBp_ThirdPersonCharacterを右クリックして複製します。
複製したファイルを適切な名前に変更しておきます。
BPを開き、AnimClasssを先ほど作成したABPに、スケルタルメッシュを自作モデルに設定します。
最後にコンパイルしておきましょう。
【操作キャラクターを変更する】
レベルビューでウィンドウ、ワールドセッティングを選択します。
右下にワールドセッティングタブが現れるのでデフォルトのボーンクラスを作成したキャラクターブループリントに設定します。
これで操作キャラクターの置き換えが完了しました。
この時点で、実際にキャラクターを動かしながらリターゲットしたアニメーションを確認します。
メッシュの貫通などがあればBlenderと行き来しながら修正していきます。
これがなかなか終わりのない作業です…。
今回は一番簡単にできるやり方でやっていきます。
【アニメーションのリターゲット】
Characters>Mannequins>Animationsフォルダの中にあるABP_Mannyを右クリックして、アニメーションをリターゲットを選択します。
リターゲットウィンドウが開かれます。
ターゲットに自作モデルのスケルタルメッシュを選択します。
ABP_Mannyを選択してアニメーションをエクスポートを選択します。
※立ち姿が男性のものより女性のもののほうがきれいなので、ABP_Mannyの他にMF_Idle、MF_Run_Fwd、MF_Walk_Fwd、BS_MF_Unamed_WalkRunも同時に選択してリターゲットします。
エクスポート先のフォルダを選択してエクスポートをクリックします。
もう一度エクスポートをクリックします。
すでに一度リターゲットしていて上書きしたいときは既存のファイルを上書きにチェックを入れておきます。
少し待つと自動でエクスポート先のフォルダに移動し、アニメーションの一覧が表示されます。
あとからわかりやすいようにABP_Mannyから適切な名前に変更しておきましょう。
また一度ABPを開いてコンパイルしておきましょう。
【MM_Landのエラー修正】
リターゲットしたアニメーションのうち、MM_Landだけリターゲット時に加算セッティングの値が正常にコピーされないために着地時のモーションにエラーが起きます。
着地と同時にメッシュが膨張し、エラーが表示されます。
MM_Landを開き、加算セッティングのAdditiveAnimTypeをLocalSpaceに、BasePoseTypeをFrame from this animationに、RefFrameIndexを26に設定するとエラーが起きなくなります。
【キャラクターブループリントの設定】
ThirdPerson>Blueprintsフォルダの中にあるBp_ThirdPersonCharacterを右クリックして複製します。
複製したファイルを適切な名前に変更しておきます。
BPを開き、AnimClasssを先ほど作成したABPに、スケルタルメッシュを自作モデルに設定します。
最後にコンパイルしておきましょう。
【操作キャラクターを変更する】
レベルビューでウィンドウ、ワールドセッティングを選択します。
右下にワールドセッティングタブが現れるのでデフォルトのボーンクラスを作成したキャラクターブループリントに設定します。
これで操作キャラクターの置き換えが完了しました。
この時点で、実際にキャラクターを動かしながらリターゲットしたアニメーションを確認します。
メッシュの貫通などがあればBlenderと行き来しながら修正していきます。
これがなかなか終わりのない作業です…。
【備忘録】クロスシミュレーション
クロスシミュレーションは布や髪を揺らすのに使える便利な機能です。
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になるとクロスシミュレーションしていないのと同じ状態になります。
【課題点】
自分の場合、クロスシミュレーションをするといつもこのように布がコライダーとコライダーの隙間に挟まって体を貫通したように見えてしまいます。
この解決方法はわかっていないので、アニメーションプロパティで布の動きの自由度を下げることで何とか貫通を減らしています。
解決方法を知っている方がいたらぜひ教えてください。
クロスシミュレーションは布や髪を揺らすのに使える便利な機能です。
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になるとクロスシミュレーションしていないのと同じ状態になります。
【課題点】
自分の場合、クロスシミュレーションをするといつもこのように布がコライダーとコライダーの隙間に挟まって体を貫通したように見えてしまいます。
この解決方法はわかっていないので、アニメーションプロパティで布の動きの自由度を下げることで何とか貫通を減らしています。
解決方法を知っている方がいたらぜひ教えてください。
プロフィール
HN:
山乃 ゆぎと
性別:
非公開
カテゴリー
最新記事
(09/23)
(09/22)
(09/18)
(09/18)
(09/16)