忍者ブログ
最近ブログには上げていなかったBlender進捗。


今回は実際に人物の写真を参考にしながら顔をリアル寄りに作りこんでます。
それど前回までの習作では体のスカルプト~リトポロジーでしぬほどやる気が削られたので、そこは素材に頼ることにしました。
MakeHumanという3Dモデル制作ソフトですが、リトポロジー、リギング・スキニング済みのテクスチャ付きモデルを出力してくれるので、それを自分で作った顔のモデルにかぶせて素体を作りました。
一人で何体もモデル作ろうとしているので、その辺は楽をさせてもらうことにしました。

現在はこのモデルをUEで動かせるようにいろいろ試行錯誤中です。
PR
絵が少し描けるくらいの自分がBlenderで自作モデルを作ってUE5であれこれするまでのノウハウをまとめていきます。
同じようにイラストクリエイターから3Dを始めたい方の一助になれば幸いです。




使用しているバージョンはBlender4.0、UnrealEngine5.4です。

ちなみにこちらでまとめているのは我流のモデル作成手法になります。
自分は一から十まで自力で作らず、体のモデリングはMakeHumanというソフトを利用しているので、全身のモデリングとリトポロジーも自力でやりたい方はその部分だけご自身で調べてくださいね。
MakeHumanを使用している理由は、体のモデリングとリトポロジーも全部ひとりでやっていたら時間がかかりすぎるしモチベーションが持たないから…。
あと単純にリトポロジーが苦手だからです。

大まかな作成の流れを説明していく予定ですが、BlenderとUEの基本操作や用語解説はありません。基本操作・各用語についてはそれぞれ調べてみてください。
外部にすでに優れたチュートリアルがある場合はそちらへのリンクで済ませているものもあります。
記事ができ次第以下のリストにリンクを追加していきます。
目次は記事を書いているうちに増減するかもしれないです。





【備忘録】Blenderでモデルを自作してUE5で動かす

①モデリング
 ∟スカルプト
 ∟リトポロジー
 ∟髪のモデリング
 ∟目のモデリング
 ∟眉毛とまつげのモデリング
 ∟服のモデリング
 ∟UV展開

②質感・細部の制作
 ∟マテリアル設定
 ∟シワなどのディティールの作成
 ∟ディティール・マテリアルのベイク

③リギング・スキニング
 ∟UE5対応スケルトンの作成
 ∟ウェイトペイント

④エクスポート・インポート
 ∟Blenderからエクスポート
 ∟UE5にインポート

⑤物理設定
 ∟物理アセット
 ∟クロスシミュレーション
 ∟リジッドボディ

⑥アニメーション
 ∟アニメーションリターゲットとアニメーションブループリントの設定
 ∟コントロールリグとシーケンサを使用したアニメーションの改造
 ∟ブレンドシェイプで表情を付ける その①
 ∟ブレンドシェイプで表情を付ける その②

⑦ブループリント(おまけ)
 ∟IKを使ってNPCと握手する
 ∟近づくと見つめてくるアクタ
アンリアルエンジンで、何らかのキーを押すと握手などの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 ]
2か月くらい前からUE5をはじめてます。
まずは簡単な習作を作ろうといろいろ調べていく過程で、思いついたことや試したことをネットの海に流していきます。

LookAtでプレイヤーを見つめてくるアクタの作り方は公式のドキュメントにも解説があるのですが、「ある程度近づくと見つめてくる」アクタの作り方は調べても見つけられなかったので試してみたものをメモしておきます。

【備忘録】近づくと見つめてくるアクタ
文章で説明するより実際のノードを見てもらうのが早いと思うので画像を貼っていきます。



【アニメBPイベントグラフの設定】
まずはアクタに設定するアニメBPのイベントグラフ。


下のほうは公式でも説明がある部分です。ここでプレイヤーの位置を取得します。
上のほうが今回のメイン「近づくと」を設定する部分です。

新しく「ActorPlayerDistance」という名前でfloat変数を作成し、IsValid?を挟んでセットします。
※IsValid?がないと動作はしますがエラーが出ます。
アクタとプレイヤーの距離を取得し、取得した値を割り算(divide)の下のピンにつなぎ、上の数値には「このくらいの距離まで近づいたら見つめてきてほしい」という値を設定します。
※例では100にしています。
割った値を「ActorPlayerDistance」としてセットします。



【アニメグラフの設定】
アニメグラフで設定した「LookAt」のAlphaに先ほど設定した「ActorPlayerDistance」をつなぎます。


例では頭・胸・腰の三か所にLookAtを設定しています。



【結果】
近づくと見つめてくるけど…


離れると視線を外す。


そんなアクタができました。

blender進捗。
二人目ができました。
一人目は調べながら、何度もやり直しながらだったので2~3か月かかりましたが今回は1週間くらいでここまでできました。



まとまった時間が取れなかったので出力やアニメーション、UEのダウンロードはまだできていませんが、次はUEを触っていきたいなあと思っています。
プロフィール
HN:
山乃 ゆぎと
性別:
非公開
最新コメント
[09/06 グリペン]
[07/03 くらげ]
[04/30 NONAME]

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