【備忘録】UE5に自作モデルをインポートする
これまでに作ったキャラクターモデルをUE5にインポートしていきます。
※これまでの作業工程
【備忘録】絵しか描けない人間がBlenderでモデルを自作してUE5で動かす
GameRigToolsでボーンを作っている場合はこの方法でできますが、別の方法でリギングしている場合はうまくいかないかもしれません。
【インポート先のフォルダを作る】
コンテンツブラウザ上で右クリックし、新規フォルダを作成します。
フォルダ上でF2を押してわかりやすい名前に変更しておきます。
【FBXをインポートする】
コンテンツブラウザ上にFBXファイルをドラッグ&ドロップします。
インポートオプションでスケルトンをSK_Mannequinに設定し、マテリアルのImportTexturesにチェックを入れた状態ですべてインポートをクリックします。
なんかエラーが出ますが無視して大丈夫です。
インポート先のフォルダはこのようになっています。
エクスポートするときに同じマテリアルを複数作っている場合、テクスチャが重複してしまうため、不要なものを削除します。
インポートしたスケルタルメッシュを開くとこんな感じです。
ここでマテリアルの設定が最初からうまくいっていたことがないです。
マテリアルの設定をしていきます。
ベースカラーとノーマルにそれぞれインポートしたテクスチャをつなぎます。
光沢を変えたい部分があるときはマテリアルを複製し、メタリックやスペキュラ、ラフネスの値を調整します。
目と髪のマテリアルの設定はこれまでの工程で説明しているのでそちらを参照してください。
【備忘録】絵しか描けない人間がBlenderでモデルを自作してUE5で動かす
すべてのマテリアルの設定が終わったら、スケルタルメッシュを開いてマテリアルを割り当てていきます。
アセット詳細の各エレメントを一つずつハイライトさせてどのエレメントがどのメッシュに対応しているか確認しながらマテリアルを設定していきます。
すべて設定し終えるとこんな感じになります。
これでようやくUE5で自作モデルを動かすことができます。
これまでに作ったキャラクターモデルをUE5にインポートしていきます。
※これまでの作業工程
【備忘録】絵しか描けない人間がBlenderでモデルを自作してUE5で動かす
GameRigToolsでボーンを作っている場合はこの方法でできますが、別の方法でリギングしている場合はうまくいかないかもしれません。
【インポート先のフォルダを作る】
コンテンツブラウザ上で右クリックし、新規フォルダを作成します。
フォルダ上でF2を押してわかりやすい名前に変更しておきます。
【FBXをインポートする】
コンテンツブラウザ上にFBXファイルをドラッグ&ドロップします。
インポートオプションでスケルトンをSK_Mannequinに設定し、マテリアルのImportTexturesにチェックを入れた状態ですべてインポートをクリックします。
なんかエラーが出ますが無視して大丈夫です。
インポート先のフォルダはこのようになっています。
エクスポートするときに同じマテリアルを複数作っている場合、テクスチャが重複してしまうため、不要なものを削除します。
インポートしたスケルタルメッシュを開くとこんな感じです。
ここでマテリアルの設定が最初からうまくいっていたことがないです。
マテリアルの設定をしていきます。
ベースカラーとノーマルにそれぞれインポートしたテクスチャをつなぎます。
光沢を変えたい部分があるときはマテリアルを複製し、メタリックやスペキュラ、ラフネスの値を調整します。
目と髪のマテリアルの設定はこれまでの工程で説明しているのでそちらを参照してください。
【備忘録】絵しか描けない人間がBlenderでモデルを自作してUE5で動かす
すべてのマテリアルの設定が終わったら、スケルタルメッシュを開いてマテリアルを割り当てていきます。
アセット詳細の各エレメントを一つずつハイライトさせてどのエレメントがどのメッシュに対応しているか確認しながらマテリアルを設定していきます。
すべて設定し終えるとこんな感じになります。
これでようやくUE5で自作モデルを動かすことができます。
PR
アンリアルエンジンで、何らかのキーを押すと握手などのNPCのボーンをターゲットにしたエモートを行えるようにする方法です。
詳しく説明する気力がないのでとりあえず下書き状態ですがノードを公開していきます。
【備忘録】IKを使ってNPCと握手する
こんな感じで、NPCとの距離に誤差があっても右手同士が接触するように設定していきます。
あんまり近いとプレイヤーとNPCの体がめり込むので適当にコリジョンを設定しておきましょう。
【ブループリントインターフェース】
Talkという関数を設定したブループリントインターフェース(以降BPI)を作成します。
このBPIを親となるNPCのインターフェースに設定しておきます。
これで子NPCを作成してNPCを複数設置することができます。
【アニメモンタージュの作成】
カーブを追加し、手を差し出して引っ込めるところの値が1.0になるようにします。
アニメーションはMixamoからダウンロードしました。
カーブの作り方は参考資料①を参照してください。
【プレイヤーのアニメBPの設定】
・イベントグラフ側
GetAllActorsOfClassに親NPCを設定し、子NPCの中から一番近いNPCを検索して、手のボーン位置を取得します。
アニメモンタージュのカーブの値をAlphaとして取得します。
・アニメグラフ側
FABRIKで制御するボーンを設定します。
手のボーン位置とアニメモンタージュのカーブ値を入力ピンに入れておきます。
FABRIKの使い方は参考資料の②を参照してください。
【NPCのアニメBPの設定】
・イベントグラフ側
プレイヤーの手のボーン位置を取得します。
※LookatLocationは先述の「近づくと見つめてくるアクタ」制作のための変数なので今回は設定しなくてOK
NPCのほうでもアニメモンタージュのカーブの値をAlphaとして取得します。
・アニメグラフ側
FABRIKで制御するボーンを設定します。
手のボーン位置とアニメモンタージュのカーブ値を入力ピンに入れておきます。
【プレイヤーBPの設定】
Enterを押すと近くのアクタを検索し、BPIが実装されていたらその中で一番近いアクタに対してイベントを実行するというものです。
BPIの詳細は参考資料③を参照してください。
試作ではアニメーションと会話を同時に行うようにしていたので余計なものがついていますが、呼び出すBPIはTalkだけでOKです。
【親NPCイベントグラフの設定】
長いし読みにくいけど頑張って読んでください…。
BPIを利用して、エンターを押すと、プレイヤーの操作を無効にして、プレイヤーとNPCが向き直って、握手のアニメーションを再生して、NPCの向きだけが元に戻って、プレイヤーが動けるようになる。
…という流れです。
大元から色々削ったり追加したりしていますが、この流れの作り方は参考資料④を参照してください。
まとめる気力がなかったので抜けがあるかも…。
気が向いたらちゃんと推敲して書き直します。
【主に参考にさせていただいた資料】
①Unreal Engine 5: CCDIK
②UE4 IKを使ってリアルタイムにボーンを制御してみる
③【UE4・UE5】〈Tips〉使わないのはもったいない!ブループリントインターフェースを日本一分かりやすく解説する試み
④RPGでよくある会話システムを作ろう!!キャラクター構成編[ UE TURORIAL ]
詳しく説明する気力がないのでとりあえず下書き状態ですがノードを公開していきます。
【備忘録】IKを使ってNPCと握手する
こんな感じで、NPCとの距離に誤差があっても右手同士が接触するように設定していきます。
あんまり近いとプレイヤーとNPCの体がめり込むので適当にコリジョンを設定しておきましょう。
【ブループリントインターフェース】
Talkという関数を設定したブループリントインターフェース(以降BPI)を作成します。
このBPIを親となるNPCのインターフェースに設定しておきます。
これで子NPCを作成してNPCを複数設置することができます。
【アニメモンタージュの作成】
カーブを追加し、手を差し出して引っ込めるところの値が1.0になるようにします。
アニメーションはMixamoからダウンロードしました。
カーブの作り方は参考資料①を参照してください。
【プレイヤーのアニメBPの設定】
・イベントグラフ側
GetAllActorsOfClassに親NPCを設定し、子NPCの中から一番近いNPCを検索して、手のボーン位置を取得します。
アニメモンタージュのカーブの値をAlphaとして取得します。
・アニメグラフ側
FABRIKで制御するボーンを設定します。
手のボーン位置とアニメモンタージュのカーブ値を入力ピンに入れておきます。
FABRIKの使い方は参考資料の②を参照してください。
【NPCのアニメBPの設定】
・イベントグラフ側
プレイヤーの手のボーン位置を取得します。
※LookatLocationは先述の「近づくと見つめてくるアクタ」制作のための変数なので今回は設定しなくてOK
NPCのほうでもアニメモンタージュのカーブの値をAlphaとして取得します。
・アニメグラフ側
FABRIKで制御するボーンを設定します。
手のボーン位置とアニメモンタージュのカーブ値を入力ピンに入れておきます。
【プレイヤーBPの設定】
Enterを押すと近くのアクタを検索し、BPIが実装されていたらその中で一番近いアクタに対してイベントを実行するというものです。
BPIの詳細は参考資料③を参照してください。
試作ではアニメーションと会話を同時に行うようにしていたので余計なものがついていますが、呼び出すBPIはTalkだけでOKです。
【親NPCイベントグラフの設定】
長いし読みにくいけど頑張って読んでください…。
BPIを利用して、エンターを押すと、プレイヤーの操作を無効にして、プレイヤーとNPCが向き直って、握手のアニメーションを再生して、NPCの向きだけが元に戻って、プレイヤーが動けるようになる。
…という流れです。
大元から色々削ったり追加したりしていますが、この流れの作り方は参考資料④を参照してください。
まとめる気力がなかったので抜けがあるかも…。
気が向いたらちゃんと推敲して書き直します。
【主に参考にさせていただいた資料】
①Unreal Engine 5: CCDIK
②UE4 IKを使ってリアルタイムにボーンを制御してみる
③【UE4・UE5】〈Tips〉使わないのはもったいない!ブループリントインターフェースを日本一分かりやすく解説する試み
④RPGでよくある会話システムを作ろう!!キャラクター構成編[ UE TURORIAL ]
2か月くらい前からUE5をはじめてます。
まずは簡単な習作を作ろうといろいろ調べていく過程で、思いついたことや試したことをネットの海に流していきます。
LookAtでプレイヤーを見つめてくるアクタの作り方は公式のドキュメントにも解説があるのですが、「ある程度近づくと見つめてくる」アクタの作り方は調べても見つけられなかったので試してみたものをメモしておきます。
【備忘録】近づくと見つめてくるアクタ
文章で説明するより実際のノードを見てもらうのが早いと思うので画像を貼っていきます。
【アニメBPイベントグラフの設定】
まずはアクタに設定するアニメBPのイベントグラフ。
下のほうは公式でも説明がある部分です。ここでプレイヤーの位置を取得します。
上のほうが今回のメイン「近づくと」を設定する部分です。
新しく「ActorPlayerDistance」という名前でfloat変数を作成し、IsValid?を挟んでセットします。
※IsValid?がないと動作はしますがエラーが出ます。
アクタとプレイヤーの距離を取得し、取得した値を割り算(divide)の下のピンにつなぎ、上の数値には「このくらいの距離まで近づいたら見つめてきてほしい」という値を設定します。
※例では100にしています。
割った値を「ActorPlayerDistance」としてセットします。
【アニメグラフの設定】
アニメグラフで設定した「LookAt」のAlphaに先ほど設定した「ActorPlayerDistance」をつなぎます。
例では頭・胸・腰の三か所にLookAtを設定しています。
【結果】
近づくと見つめてくるけど…
離れると視線を外す。
そんなアクタができました。
まずは簡単な習作を作ろうといろいろ調べていく過程で、思いついたことや試したことをネットの海に流していきます。
LookAtでプレイヤーを見つめてくるアクタの作り方は公式のドキュメントにも解説があるのですが、「ある程度近づくと見つめてくる」アクタの作り方は調べても見つけられなかったので試してみたものをメモしておきます。
【備忘録】近づくと見つめてくるアクタ
文章で説明するより実際のノードを見てもらうのが早いと思うので画像を貼っていきます。
【アニメBPイベントグラフの設定】
まずはアクタに設定するアニメBPのイベントグラフ。
下のほうは公式でも説明がある部分です。ここでプレイヤーの位置を取得します。
上のほうが今回のメイン「近づくと」を設定する部分です。
新しく「ActorPlayerDistance」という名前でfloat変数を作成し、IsValid?を挟んでセットします。
※IsValid?がないと動作はしますがエラーが出ます。
アクタとプレイヤーの距離を取得し、取得した値を割り算(divide)の下のピンにつなぎ、上の数値には「このくらいの距離まで近づいたら見つめてきてほしい」という値を設定します。
※例では100にしています。
割った値を「ActorPlayerDistance」としてセットします。
【アニメグラフの設定】
アニメグラフで設定した「LookAt」のAlphaに先ほど設定した「ActorPlayerDistance」をつなぎます。
例では頭・胸・腰の三か所にLookAtを設定しています。
【結果】
近づくと見つめてくるけど…
離れると視線を外す。
そんなアクタができました。
プロフィール
HN:
山乃 ゆぎと
性別:
非公開
カテゴリー
最新記事
(09/18)
(09/18)
(09/16)
(09/16)
(09/16)