【UE100日チャレンジ】マテリアルやVFXを作成!ゲームのビジュアルを作りこむ
初学者がUnreal Engineによるゲーム制作に100日取り組んで、どこまでプロの開発者に近づけるのかという本企画。今回は第8弾となります。
『Unreal Engine 5で極めるゲーム開発』で学習を進め、今回の記事で学習を終えました。今回はマテリアルやアニメーション、VFXなど、ゲームの見た目を決める要素について学びました。
Unreal Engine企画第8弾!
Unreal Engine100日チャレンジに挑戦している、Neruです。
この企画は、Unreal Engineの初学者である筆者が、100日間の学習でどれだけのものを作れるのかというチャレンジ企画です。
初回の記事で、この企画の詳細と、筆者の経験値がどの程度なのかを説明しています。
前回は、AIの作り方と、オブジェクトの動かし方について学び、こちらを追いかけてくる敵や、ブロックパズルなど、ゲームとして楽しめる要素を作成しました。
今回は、Unreal Engineの中でも、特にゲームのビジュアルを左右する要素について学びました。
オブジェクトの見た目を左右する「マテリアル」や、炎や光、煙などの特殊効果を作成できる「パーティクルシステム」などを深堀りしています。
それぞれの要素について解説し、アウトプットもお見せするので、ぜひ参考にご覧ください。
今回学習したこと
今回学習したことは、「マテリアル」、「パーティクルシステム」の2つです。
「マテリアル」とは、3D物体の見た目を司る要素。ゲームにおいてのビジュアル面で、非常に大きな役割を果たします。
「パーティクルシステム」とは、光や炎といった、ビジュアルエフェクトを制作できるシステムです。Unreal Engineでは「Niagara」というシステムが導入されており、水しぶきやほこりなどの自然現象や、火花などのアクション要素、魔法やUIなどの空想表現など、作るのが難しそうな要素でも、ある程度直感的に作ることができます。
マテリアルを作って、ものの見た目を変える!
マテリアルとは?
マテリアル(Material)とは、「素材」を表す英単語ですが、Unreal Engineにおいては専門用語で、「ものの見た目を決める要素」を指します。
Unreal Engine では、ものの「形」を決めるのは、「メッシュ(Mesh)」と言われる要素です。メッシュは好きな形に成形できますが、デフォルトでは色や質感などの見た目に関わる要素はなく、白と黒の格子状の模様(デフォルトパターン)となっています。
Unreal Engineでは、このメッシュに「マテリアル」を設定することで、ものの見た目を好きなように変えることができます。
「マテリアル」は専用のエディタで作りこむことができ、さまざまな質感を作り出すことができます。
基本的な色調を決められるだけでなく、光の反射具合を金属質にすることもできますし、質感を操作して、つるっとした質感にしたり、逆にマットな質感にもできます。発光する物質も作ることができます。
#UnrealEngine100日チャレンジ 50日目!!!
— GAMEMO|Web3とメタバースのインタビューメディア (@Gamemo2con) October 2, 2024
本日はマテリアルについて学習しました!
マテリアルとは、ゲーム内の物体の素材のことで、物体の見た目を左右するものです。
数値をいじることで、色だけでなく、金属質な感じや、つるつるorざらざらした質感を出すことができます。 pic.twitter.com/bJAxiPBd8I
さらに、「テクスチャマッピング」という技法を使えば、シールをものの表面に貼るようにものの見た目を変えることができます。これを使用することで、より細かい模様や、部位による色や質感の違いを表現できます。
ただ、この方法では「テクスチャ」という2Dの絵を用意しなければならないため、そのぶんのハードルの高さはあります。直感的に分かりづらいテクスチャ素材を制作しているデザイナーさんはすごいなと感じました。
実際にマテリアルを作ってみた
マテリアルを制作する際は、以下のような専用のエディタを使って編集します。ブループリントにも似た画面で、色や光沢などの数値を演算することもできます。
マテリアルエディタは、ブループリントと似た画面になっていて、操作方法もほぼ共通しているので、操作しやすいと思いました。
色や質感を、数値で編集していくのは初めての経験でしたが、マテリアルの見た目を左上で確認できるので、直感的な操作ができます。
マテリアルを作り、見た目を作り直したマップのビフォーアフターが以下の図です。
マテリアルの見た目を入れ替えるだけでも、自動的にやることは難しく、一つ一つの要素を手作業で置換する必要があります。マップ作りの難しさを感じました……。
UEのパーティクルシステム、「Niagara」を使う!
次に、Unreal Engine独自のビジュアルエフェクト作成システム、「Niagara」を学習しました。これを使って、エフェクトなどを作成しました。
Niagaraで何ができる?
「Niagara」では、ビジュアルエフェクトに関係するさまざまなことが表現できます。Epic Games公式の説明動画を以下に添付します。
動画からも分かる通り、「Niagara」では、光や炎、煙といった視覚効果を作ることができます。こういった視覚効果は作ることが難しそうな印象を受けますが、「Niagara」は比較的簡単、かつ直感的に制作を進められることが強みです。
実際に触ってみて、視覚効果を簡単に制作できて驚いた要素もある一方で、やはり難しいと感じた部分もあるので、その両面を紹介できればと思います。
Niagaraの便利なところ、難しいところ
まず便利なのは、「Niagara」はノーコードで制作できるということと、リアルタイムでどんなエフェクトになっているのかを確認できることです。
ノーコード制作が可能な点は、Unreal Engine のメインシステムである「ブループリント」と同じ強みです。コードを書くことなしでプログラミングができるため、プログラミング言語を書く能力がなくとも、複雑な仕組みを作ることができます。
コードを使わずにどうやって動的な仕組みを作るのかというと、専用のエディタを使って設定していきます。以下は実際の「Niagara」のエディタ画面です。
エディタ画面の中央にあるのが、「エミッタ」というもので、ここから各種設定を追加していくことができます。
「エミッタ」とは、エフェクトの粒子(パーティクル)を生成し、それに動きや見た目の変化を加えるためのパーツで、設定ごとに新しい「モジュール」を追加できます。緑や赤の+マークをクリックすることで、モジュールを追加できます。
各モジュールは、VFXに様々な影響を与えます。例えば、「Spawn BurstInstantaneous」は、瞬間的に特定の数のパーティクルを一度に生成するモジュールで、パーティクルの「数」や「生成時間」を操作することができます
パーティクルの数を3つにすれば、以下のようなVFXですが……
10まで増やせば、以下のようにたくさんの星を一度に出すことができます。
このように、モジュールを追加していくことで、どんどんVFXを変えていけるのは、触っていてわかりやすいと感じた点です。
また、モジュールを追加したり変数を変えている間も、左の「プレビュー」パネルでは繰り返しVFXが再生されるため、出来栄えを確認しながら作成ができます。専門的な知識がなくても、リアルタイムでシミュレーションをしながらVFXを作っていけます。
VFXなんてどう作っているのか見当もつかない初学者の私でもVFXを触ることができ、またある程度の作りこみができたことには驚きました。
ただ、難しいと感じたところは、「エミッタ」の設定と、モジュールごとの機能の違いです。
エディタを見ればわかる通り、エミッタの設定には「エミッタの更新」、「パーティクルのスポーン」などいくつかの項目があり、項目ごとに追加できるモジュールが違います。モジュールを追加しようとした際、項目を間違えてしまい、目的のモジュールが見つからないといったケースにも遭遇しました。エミッタの設定の項目ごとの違いを認識しておかないと、思うような設定がしづらいです。
また、追加できるモジュールには相当な数があり、どのモジュールがどのように作用するかを把握するには、やはり経験が必要だと思いました。
ただ、VFXの場合は実際に成果を視覚的に見ながら学習ができるので、手を動かしながら覚えられる点は良いと感じました。
書籍を参考にしながら、実際に作ったVFXが、以下のものになります。
パーティクルシステムの「Niagara」について学びました!
— GAMEMO|Web3とメタバースのインタビューメディア (@Gamemo2con) November 1, 2024
パーティクルシステムと言っても何のことやらですが、炎や光、煙などのVFXを作ることができるシステムです。
今回は、①キャラクターが走ると煙が出る②コインを取ると星がポップする③ロスト時に星が散らばるという3つのVFXを作りました。 pic.twitter.com/ytHYKTFwXM
作ったVFXはブループリントを利用して、特定のタイミング、条件で、任意の場所に発生させることができます。以下は、実際に組んだブループリントで、キャラクターがロストした際に演出が入るような設定になっています。
テキストを読了!しかし、新たな壁が……
マテリアルやパーティクルシステムなど、ゲームのビジュアルに関する事項を学習しました。これまで学習してきた「Unreal Engine 5で極めるゲーム開発」の内容を読了し、長かったインプットもこれでひと段落です。
しかし、ここでグラフィック関連を作りこんだ影響で、新たな壁にぶつかってしまいました。グラフィックが複雑になった影響でGPUの負荷が増え、些細な操作ですぐエディタがクラッシュするようになってしまったのです。
それだけではなく、負荷が上昇したことで、プロジェクトを起動した直後にエディタがクラッシュするようになってしまいました。つまり、プロジェクトを開くことができなくなってしまったのです。
これまでの苦労が水の泡になるのか?と、その時は途方にくれました。
ただ色々工夫をして、今はなんとかエディタを起動するところまではたどり着けました。
次回の記事では、「プロジェクトが起動できない」という問題を、どのように解決したのかを記事にしてお届けします。
アンリアルエンジン100日チャレンジもいよいよインプットが終了しました。問題解決の記事を出したあとは、いよいよアウトプットに挑戦していきます。
これまで読んでくださりありがとうございます。引き続きよろしくお願いします。
テクスチャマッピングによって作ったコイン。マテリアルを設定するだけでは、漢字の模様が再現できない。