忍者ブログ

お知らせや近況報告

【備忘録】ベジエカーブで髪を作成する

【備忘録】ベジエカーブで髪を作成する



Blenderでの髪の作り方はいろいろありますが、一番楽でリアルに近くできるのがベジエカーブだと思います。
今回はこちらの動画と、


こちらの記事を参考にしています。
機械系エンジニアの備忘録

ただ…。
自分のやり方ではAAAゲームのモデルのようなリアルな髪にはできていません。
同じベジエカーブを使ってもっとリアルな髪を作れている人もいるので、試行錯誤が足りないのだと思います。
もしも改善点がわかる方がいらっしゃいましたら教えていただけますと幸いです。



【髪のマテリアルを設定する】
上記の動画を参考に4つのテクスチャを作成します。
参考動画では板ポリで作成するためのチュートリアルなので複数の髪の束を作っていますが、今回はベジエカーブでざっくり作っていくので一面均一な髪のテクスチャでOKです。


動画を参考にマテリアルを設定しておきます。




【髪の断面用のベジエ円を作成する】
ベジエ円を新規作成します。
オブジェクト名を「_髪断面1」としておきます。


オブジェクトモードのままベジエ円をキャラクターの頭上に持ってきます。
作業をしやすくするためなので見やすい位置であれば頭上でなくてもOKです。


カーブのプロパティでシェイプのプレビュー解像度を1、ベベルの解像度を0にしておきます。
(片方の設定しか影響してない気がしますが念のため)
解像度を大きくするほど断面の凹凸が細かく滑らかになりますが、その分メッシュ化した時に頂点数がものすごく多くなってしまうので少な目にしておく方がいいでしょう。


編集モードに入り、すべての頂点を選択した状態で右クリックをして細分化を選択します。
これで頂点数が増えて断面の形が成形しやすくなります。
 

全体を選択したままSを押して縮小します。


表示モードを頭上からの平行投影モードにしておいて、各頂点を動かして髪の断面の形にします。

断面を複数作成して髪の部位によって毛束の形を変えることもできます。



【ベジエカーブで髪を作成する】
ベジエカーブを新規作成します。


カーブのプロパティでシェイプのプレビュー解像度を3~5にしておきます。


ベベルでオブジェクトを選択し、オブジェクトを先ほど作成した_髪断面1に設定します。


そうするとベジエカーブの断面がベジエ円で作成した形状になります。


カーブのマテリアルに上記で作成したマテリアルを設定します。




【髪を配置する】
編集モードに入り、ベジエカーブを配置していきます。
カーブの頂点をGで移動、Rで回転させながら思い通りの位置に配置していきます。


髪にねじりを加えたいときはCtrl+T。


毛束の太さを変えたいときはトランスフォームの半径の数値を変えます。


頂点数が足りないときは頂点を複数選択した状態で右クリックし、細分化を選択します。


増やした頂点の位置や回転、ねじれ、半径を調整することでより詳細に作りこむことができます。


あとは毛束をShift+Dで複製して増やし、ひたすら髪をはやしていきます。
左右対称の部分はミラーで作ると楽です。

最終的にこのようになります。
後ろの毛がはみ出ていますが、布なしの差分も想定して作っているので今はこのままで大丈夫です。

このままではエクスポートできないので髪のオブジェクトをすべて選択した状態で右クリックして変換、メッシュを選択します。
※あとから修正を加えたいときのためにメッシュ変換する前のカーブオブジェクトを複製しておいておきましょう。


メッシュ変換後、先ほどはみ出ている部分を編集モードやスカルプトモードで修正して完成です。



【UE5でのマテリアル設定】
Blender上で複雑にマテリアルを組んでいるとそのままUE5にはインポートできないので、インポート後に自分でマテリアルを設定しなおす必要があります。

BlendModeをMasked、ShadingModelをTwoSidedFoliageにします。
TwoSided、UseMaterialAttributesにチェックを入れます。
ベースカラー、ノーマル、アンビエントオクルージョンには直接テクスチャをつなぎます。
アルファテクスチャからはノードを2本出し、1本は直接オパシティに、もう一本はDitherTemporaIAAノードを介してオパシティマスクにつなぎます。
メタリック、スペキュラ、ラフネスの値をお好みで調整しておきましょう。


実際に見てみるとこんな感じです。


作るのは楽なのですがリアルさはいまいちなんですよね。
改善点等、わかる方がいらっしゃったらぜひ教えてください。


【追記(2024/09/22)】
髪の断面のカーブの形を画像のようにして、髪を形成するベジエカーブの先端の半径を0にせず太めにしておくと多少リアルな見た目になりました。
PR

【備忘録】リアルな目のマテリアルをテクスチャ化する

【備忘録】リアルな目のマテリアルをテクスチャ化する

Blenderでのリアルな目の作り方はいろいろな方が作り方をアップしてくれています。
自分が参考にしたのはこちらの動画です。


ただ、Blenderでリアルな目を作っても、そのままUEには持っていけない…。
UEはUEで、メタヒューマンやパラゴンモデルに使われている目のマテリアル設定の仕方があるようですが、初心者が理解するのはハードルが高いです。
そういうわけで、今回は肌や服と同じように、ベイクしてテクスチャ化してしまうことにしました。

他の皆はどうやってUEでどうやってリアルな目を表現しているのか…。
もしかしたら正しいやり方があるのかもしれません。メタヒューマンの目だけを自作モデルに持ってくるとか。
たぶん十中八九それが正しそうなのですが、自分はその方法にたどり着けなかったので…。
こんな間に合わせの方法じゃなくてもできる正しい方法を知ってる方がいたらぜひ教えてください。

しかしひとまずは正しい方法にたどり着けなさそうなので、間に合わせのやり方でやっていきます。



【目のオブジェクトを作る】
動画の中ではがんがんサブディバイドしていて、その通りに作ると片目だけで頂点数が千とか万とかいってしまうので、ゲーム内で使用するオブジェクト用に少ない頂点数で作成していきます。
今回はセグメント数16,リング数12で作っていきます。


上の画像のように編集モードで角度を90度回転させてサイズを調整したら、オブジェクトモードに戻ってこのオブジェクトをコピーします。

一つ目のオブジェクト名を「目の表面」、二つ目のオブジェクト名を「網膜」としたら、「網膜」のオブジェクトを選択した状態で編集モードに入り、「網膜」が「目の表面」よりも少しだけ小さくなるように縮小します。


「目の表面」オブジェクトの一部を突出させます。


次に「網膜」オブジェクトの虹彩部分をくぼませます。




【UV展開】
「網膜」のオブジェクトをUV展開します。
下の画像のようにシームを入れるとわかりやすいかと思います。




【マテリアルの設定】
オブジェクトモードに戻って「網膜」オブジェクトをさらにコピーし、コピーしたオブジェクトを「虹彩」と名付けておきます。

この記事の最初に紹介している動画に倣って、目のマテリアルを設定してください。
ただし動画では一つのオブジェクトに網膜・虹彩二つのマテリアルを割り当てていますが、今回は「網膜」オブジェクト、「虹彩」オブジェクトにそれぞれ目のマテリアルを設定してください。

「網膜」オブジェクトはこのように。


「虹彩」オブジェクトはこのようになっていたらOKです。




【マテリアルをベイクする】
設定したマテリアルのカラーとノーマルをベイクします。
こういう時はTexToolsが非常に便利ですね。

「網膜」オブジェクト、「虹彩」オブジェクトをコピーしてそれぞれ名前を「網膜.lp」「網膜.hp」「虹彩.lp」「虹彩.hp」に変更します。
この4つのオブジェクトを選択した状態でTexToolsを開き、「BaseColor」を選んで「Bake×2」を押します。


下のように2種類の画像が得られます。
それぞれ名前を付けて保存しましょう。


最終的に必要なのは網膜と虹彩の部分だけなので、他の画像編集ソフトで下の画像のように編集しておきます。


ノーマルも同じようにベイクします。


こちらは「虹彩」だけでOK。




【オブジェクトを整理する】
このままUEに持っていくとベイク用、マテリアルの設定用の余計なオブジェクトが含まれてしまうので、必要なオブジェクト以外は削除するかレンダリングしないようにします。
UEに持っていくのは「網膜」オブジェクトと「目の表面」オブジェクトだけです。(「虹彩」オブジェクトはいりません。)
UEでは日本語の名前があるとエラーが起きるらしいので、FBXとしてエクスポートする前に、「網膜」は「eyes」、「目の表面」は「surface」など、英語の名前に変換しておきましょう。



【UEでのマテリアル設定】
「eyes」と「surface」にそれぞれマテリアルを設定します。

「eyes」のマテリアル設定は、ベースカラーとノーマルにBlenderでベイクした画像を張り付けるだけです。
詳細タブのShadingModelをClearCoatにすると光沢のある瞳になります。


「surface」にはテクスチャがないので、ベースカラーには適当に白をつないでおきましょう。
メタリックを1.0、ラフネスを0.0、オパシティはお好みで0.05~0.1くらいに設定します。


詳細パネルのマテリアルのブレンドモードをtranslucent、透過処理のLightingModeをSurfaceTranslucencyVolumeにしておきます。





そうすると「Surface」オブジェクトがこんな透明な球体になります。
これが「eyes」オブジェクトを包む構造になっているので…。


こんな感じの目が出来上がります。

メタヒューマンやパラゴンの目と比べると微妙ですね。
でも自分のようにUEでリアルな目の設定の仕方がわからない場合はこのやり方で何とか代用できるんじゃないかと思います。
でもできれば間に合わせの代用方法じゃなくてちゃんと正しい方法で目を作りたいので、UEでの目の作り方を知ってる方がいたらぜひ教えてくださいね。

ちょっと進化した

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


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

現在はこのモデルをUEで動かせるようにいろいろ試行錯誤中です。

【備忘録】絵しか描けない人間がBlenderでモデルを自作してUE5で動かす

絵が少し描けるくらいの自分が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 ]

プロフィール

HN:
山乃 ゆぎと
性別:
非公開

最新コメント

[09/06 グリペン]
[07/03 くらげ]
[04/30 NONAME]