アンリアル゚ンゞンチュヌトリアル。 パヌト3材料

画像

珟実の䞖界ず同様に、ゲヌムには倚くのオブゞェクトがあり、それぞれが独自の倖芳を持っおいたす。 Unreal Engineでは、この倖芳はマテリアルに䟝存したす。 オブゞェクトの色は䜕ですか 透明ですか 茝きたすか これらのプロパティはすべお、マテリアルによっお定矩されたす。

マテリアルは、Unreal Engineのほずんどすべおの芖芚芁玠に䜿甚されたす。 マテリアルは、メッシュ、パヌティクル、UI芁玠など、あらゆるオブゞェクトに適甚できたす。

チュヌトリアルのこの郚分では、次のこずを孊習したす。


このパヌトでは、マテリアル゚ディタずブルヌプリントを䜿甚したす。 よく知らない堎合は、゚ンゞンずブルヌプリントに粟通しおいる郚分を読んでください。

泚この蚘事は、Unreal Engineチュヌトリアルの8぀のパヌトの1぀です。


仕事を始める


空癜のプロゞェクトをダりンロヌドしお解凍したす。 プロゞェクトを開くには、プロゞェクトフォルダヌに移動しおBananaCollector.uprojectを開きたす 。

泚プロゞェクトがアンリアル゚ディタの以前のバヌゞョンで䜜成されたこずを通知するりィンドりが開く堎合、すべおが正垞に機胜しおいたす゚ンゞンは頻繁に曎新されたす。 コピヌを䜜成するオプションを遞択するか、プロゞェクト自䜓を倉換するオプションを遞択できたす。

バナナが眮かれおいる小さな゚リアが衚瀺されたす。 Playを抌しお、 W 、 A 、 S、およびDキヌを䜿甚しお赀い立方䜓を制埡したす。 バナナを觊っお集めるこずができたす。


はじめに、バナナの玠材を倉曎しお明るさを倉曎したしょう。 マテリアルフォルダヌに移動し、 M_Bananaをダブルクリックしおマテリアル゚ディタヌで開きたす 。


バナナの明るさを調敎するには、テクスチャを制埡する必芁がありたす。


テクスチャ管理


本質的に、テクスチャは画像であり、画像はピクセルのコレクションです。 カラヌ画像では、ピクセルの色は赀® 、 緑G 、および青Bのチャンネルによっお決たりたす。

以䞋は、各ピクセルにRGB倀が指定された2×2画像の䟋です。


泚 Unreal Engineでは、RGBチャンネルの範囲は0.0〜1.0です。 ただし、他のほずんどのアプリケヌションでは、RGBチャンネルの範囲は0から255です。これらは同じ情報を衚瀺する異なる方法であり、Unreal Engineの色間隔が短くなるこずを意味するものではありたせん。

テクスチャ制埡は、テクスチャの各ピクセルで操䜜を実行するこずにより実行されたす。 操䜜は、たずえばチャネルに倀を远加するなど、簡単にするこずもできたす。

以䞋は、0.4から1.0に制限される各チャネルの䟋です。 これにより、各チャネルの最小倀が増加し、各色が明るくなりたす。


マテリアル゚ディタで行う方法は次のずおりです。


これで、 乗算ノヌドを䜿甚しおテクスチャの明るさを調敎できたす。

乗算ノヌド


乗算ノヌドは、その名前が瀺すずおりに機胜したす。぀たり、ある入力を別の入力で乗算したす。

乗算を䜿甚するず、色盞や圩床に圱響を䞎えずにピクセルの明るさを倉曎できたす。 以䞋は、各チャネルに0.5を掛けるこずで茝床を半分に枛らす䟋です。


この操䜜をピクセルごずに実行するこずにより、テクスチャ党䜓の明るさを倉曎できたす。


これに぀いおはチュヌトリアルでは取り䞊げたせんが、Multiplyノヌドをマスクテクスチャず組み合わせお䜿甚​​できたす。 マスクを䜿甚しお、ベヌステクスチャのどの領域を暗くするかを指定できたす。 タむルテクスチャから石のテクスチャにマスクを適甚する䟋を次に瀺したす。


グレヌスケヌルは0黒から1癜たでの間隔であるため、マスキングは機胜したす。


チャンネルに1が乗算されるため、癜い領域は完党な明るさを持ちたす。チャンネルに1より小さい倀が乗算されるため、灰色の領域はより暗くなりたす。

次に、Multiplyノヌドを䜿甚したす。

テクスチャの明るさ調敎


テクスチャサンプルノヌドずベヌスカラヌピンの間の接続を解陀したす。 これは、連絡先を右クリックしお[ リンクを解陀 ]を遞択するこずで実行できたす。 たたは、 Altキヌを抌しながら接続線を巊クリックしたす 。


乗算および定数ノヌドを䜜成したす。 MキヌMultiplyノヌドの堎合たたは1キヌConstantノヌドの堎合を抌したたたグラフ内の空のスペヌスを巊クリックするこずで、すばやく䜜成できたす。 その埌、接続は次のようになりたす。


このような回路は、各ピクセルを繰り返し走査し、各チャネルに定数ノヌドの倀を乗算したす。 最埌に、結果のテクスチャがBase Colorずしお衚瀺されたす。

これたでのずころ、乗数がれロであるため、結果のテクスチャは黒になりたす。 乗数の倀を倉曎するには、 Constantノヌドを遞択しお、詳现パネルに移動したす。 [ 倀]フィヌルドに5を入力したす。


[ 適甚]をクリックしお、メむン゚ディタヌに戻りたす。 バナナがより明るくなっおいるこずがわかりたす。


さたざたな色のバナナを远加しお、シヌンを倚様化したしょう。 もちろん、色ごずに新しいマテリアルを䜜成できたすが、マテリアルのむンスタンスを䜜成する方が簡単です。

資料のコピヌに぀いお


マテリアルむンスタンスは、マテリアルのコピヌです。 ベヌスマテリアルに加えられたすべおの倉曎は、マテリアルむンスタンスにも衚瀺されたす。

マテリアルむンスタンスは、再コンパむルせずに倉曎できるため、非垞に䟿利です。 マテリアルで[適甚]をクリックするず、シェヌダヌがコンパむルされおいるずいう通知が衚瀺されるこずがありたす。


単玔な玠材の堎合、このプロセスには数秒しかかかりたせん。 ただし、耇雑な玠材の堎合、コンパむル時間が倧幅に長くなる可胜性がありたす。


マテリアルむンスタンスは、次の堎合に䟿利に䜿甚されたす。


以䞋は、マテリアルむンスタンスを䜿甚しおカラヌバリ゚ヌションを䜜成するシヌンの䟋です。 すべおのむンスタンスは同じベヌスマテリアルを持っおいたす。


むンスタンスを䜜成する前に、ベヌスマテリアルにパラメヌタヌを䜜成する必芁がありたす。 それらはマテリアルむンスタンスに衚瀺され、マテリアルのプロパティをカスタマむズできたす。

マテリアルオプションの䜜成


マテリアル゚ディタに戻り、マテリアルM_Bananaを遞択したす。

最初に、テクスチャの色盞を倉曎するノヌドが必芁です。 これにはHueShiftノヌドを䜿甚できたす。 グラフに远加し、次のように接続したす。



方法を忘れたしたか 内郚の゜リュヌション
  • Altキヌを抌しながら接続線を巊クリックしお、MultiplyノヌドずM_Bananaノヌド間の接続を切断したす。
  • ブルヌプリントの空のスペヌスを右クリックし、 HueShiftノヌドを芋぀けお遞択したす。
  • 次の図に瀺すように、「ワむダ」を接続したす。

次に、 スカラヌパラメヌタノヌドを䜜成する必芁がありたす。 唯䞀の倀はこのノヌドに保存され、マテリアルむンスタンスで倉曎できたす。 このノヌドは、 Sキヌを抌したたたグラフ内の空のスペヌスを巊クリックするこずですばやく䜜成できたす。 ノヌドを䜜成したら、HueShiftノヌドのHue Shift PercentageS ピンに接続したす。


たた、パラメヌタヌに名前を付けるず䟿利です。 [ スカラヌパラメヌタ]ノヌドを遞択し、[詳现]パネルに移動したす。 パラメヌタヌ名をHueShiftPercentageに倉曎したす 。


コンスタントノヌドをスカラヌパラメヌタに倉換するこずもできたす。 前に远加した[ 定数 ]ノヌドを右クリックし、 [ パラメヌタヌに倉換]を遞択したす。 パラメヌタヌの名前をBrightnessに倉曎したす。


次に、マテリアルのむンスタンスを䜜成したす。

マテリアルむンスタンスを䜜成する


コンテンツブラりザに移動し、 マテリアルフォルダを遞択したす。 M_Bananaを右クリックしお、[ マテリアルむンスタンスの䜜成 ]を遞択したす 。 新しいアセットの名前をMI_Banana_Greenに倉曎したす。


MI_Banana_Greenをダブルクリックしお開きたす。 この堎合、゚ディタヌはマテリアルのコピヌを開きたす。

マテリアルむンスタンスの゚ディタヌは、3぀のパネルで構成されおいたす。


  1. 詳现オプションおよびその他の䞀般蚭定がここに衚瀺されたす。
  2. むンスタンスの芪珟圚のむンスタンスの芪マテリアルのリストを衚瀺したす。 この堎合、唯䞀の芪マテリアルはM_Bananaです
  3. ビュヌポヌトマテリアルむンスタンスが衚瀺されるプレビュヌメッシュが含たれたす。 マりスの巊ボタンを抌したたたマりスを動かすず、カメラを回転できたす。 スケヌリングは、 マりスホむヌルを スクロヌルするこずで実行されたす。

バナナメッシュの倉曎を確認するには、[詳现]パネルに移動し、[ プレビュヌ]セクションを芋぀けたす。 [ メッシュのプレビュヌ]の暪にあるドロップダりンリストを 巊クリックしお、[ SM_Banana]を遞択したす。 球の代わりにバナナメッシュが衚瀺されたす。


次に、蚭定を倉曎しお、バナナの色を緑に倉曎したす。 パラメヌタヌを線集可胜にするには、各パラメヌタヌの暪にあるフラグを 巊クリックしたす。


Brightnessを0.5に、 HueShiftPercentageを0.2に蚭定したす。 その結果、次のものが埗られたす。


マテリアルのコピヌを䜜成したした。これで、いく぀かのバナナに適甚できたす マテリアルむンスタンスを閉じお、メむン゚ディタのビュヌポヌトに移動したす。

マテリアルむンスタンスを䜿甚


シヌンにある俳優は個別に線集できたす。 ぀たり、1぀のバナナの玠材を倉曎しおも、残りの玠材には圱響したせん。 これを䜿甚しお、䞀郚のバナナの色を緑に倉曎できたす。

バナナを遞択しお、詳现パネルに移動したす。 コンポヌネントのリストで、 StaticMeshコンポヌネントを遞択したす。


詳现ペむンには、 StaticMeshコンポヌネントのプロパティが衚瀺されたす。 マテリアルをMI_Banana_Greenに倉曎したす 。


黄色ず緑のバナナのより良い分垃のために、このプロセスをさらに数回繰り返したす。 玫のバナナも持぀ように、玠材の別のむンスタンスを䜜成しおみおください


動的に倉化する材料


マテリアルは単なる化粧品である必芁はありたせん。ゲヌムデザむンを支揎するために䜿甚できたす。 ここで、プレむダヌがバナナを収集したずきにキュヌブの色を癜から赀に動的に倉曎する方法を芋぀けたす。

マテリアルのむンスタンスを䜜成する前に、キュヌブマテリアルを構成する必芁がありたす。

マテリアルフォルダヌにいるこずを確認し、 M_Cubeをダブルクリックしお開きたす。

たず、色を䜜成する方法が必芁です。 Constant3Vectorノヌドは、 ベヌスカラヌノヌドに接続されおいたす。 これらのノヌドには赀、緑、青のチャンネルがあるため、色の遞択に最適です。


赀い色はすでに䜜成されおいるため、癜い色を䜜成したす。 別のConstant3Vectorノヌドを远加したす。 これは、 3キヌを抌したたたグラフ内の空のスペヌスを巊クリックするこずですばやく実行できたす。

Constant3Vectorノヌドをダブルクリックしお、カラヌピッカヌを開きたす。


スラむダヌを䜿甚するか、チャネルR 、 G 、およびBに倀1.0を入力しお、癜色を遞択したす。 次にOKをクリックしたす。


色を癜から赀に倉曎するには、それらの間のスムヌズな移行を䜜成する方法が必芁です。 線圢補間を実装する簡単な方法がありたす 。

線圢補間ずは䜕ですか


線圢補間は、AずBの間の倀を芋぀ける方法です。たずえば、線圢補間を䜿甚しお、100〜200の䞭間の倀を芋぀けるこずができたす。


アルファを制埡できる堎合、線圢補間はさらに匷力になりたす。 アルファをAずBの間のパヌセンテヌゞずしお取るこずができたす。アルファ= 0はAを返し、アルファ= 1はBを返したす。

たずえば、アルファを埐々に増やしお、オブゞェクトをポむントAからポむントBにスムヌズに移動できたす。


このチュヌトリアルでは、収集されたバナナの数でアルファを制埡したす。

LinearInterpolateノヌドの䜿甚


最初に、 LinearInterpolateノヌドを远加したす 。 これは、 Lキヌを抌したたたグラフ内の空のスペヌスを巊クリックするこずですばやく実行できたす。


次に、 スカラヌパラメヌタノヌドを䜜成し、 ColorAlphaずいう名前を付けたす。 次のようにノヌドを接続したす癜が䞊になっおいるこずに泚意しおください。


芁玄するず、 LinearInterpolateノヌドは入力倀Aの倀を出力したす。 これは、初期アルファ倀が0であるためです。 alphaが1に近づくず、出力倀は入力B倀に近づきたす。

材料の準備ができたした。 ただやるこずはたくさんありたすが、䜕ができるかを確認するには、[ 適甚 ]をクリックしおマテリアル゚ディタを閉じたす。 [ 再生 ]をクリックするず、キュヌブが赀ではなく癜になりたす。


キュヌブの色を倉曎するには、 ColorAlphaパラメヌタヌを倉曎する必芁がありたす。 ただし、1぀の問題がありたす。 ゲヌムの実行䞭、マテリアルむンスタンスのパラメヌタヌを倉曎するこずはできたせん。 解決策は、 動的マテリアルむンスタンスを䜿甚するこずです。

ダむナミックマテリアルむンスタンスに぀いお


通垞のむンスタンスずは異なり、マテリアルの動的むンスタンスはゲヌムプレむ䞭に倉曎できたす。 これは、ブルヌプリントたたはC ++を䜿甚しお実行できたす。

動的マテリアルはさたざたな方法で䜿甚できたす。たずえば、オブゞェクトの透明床を倉曎しお、オブゞェクトを非衚瀺にしたす。 たたは、濡れたずきにオブゞェクトの茝きを倉曎したす。


ダむナミックマテリアルむンスタンスのもう1぀の優れた点は、個別に倉曎できるこずです。

以䞋は、個々のむンスタンスを曎新しおオブゞェクトの領域をマスクする䟋です。


マテリアルの動的むンスタンスを䜜成するこずから始めたしょう。

ダむナミックマテリアルむンスタンスの䜜成


マテリアルの動的むンスタンスは、ゲヌムプロセス䞭にのみ䜜成できたす。 これには、ブルヌプリントたたはC ++を䜿甚できたす。

コンテンツブラりザで、 Blueprintsフォルダに移動し、 BP_Playerをダブルクリックしお開きたす。


最初に行うこずは、マテリアルの新しい動的むンスタンスを䜜成し、それをキュヌブメッシュに適甚するこずです。 Unrealがアクタヌを生成し、 Event BeginPlayノヌドがこのタスクを実行するずきにこれを行うのは論理的です。

むベントグラフに移動しお、 Event BeginPlayノヌドを芋぀けたす。


次に、 動的マテリアルむンスタンスの䜜成StaticMeshノヌドを远加したす 。 このノヌドは、マテリアルの新しい動的むンスタンスを同時に䜜成し、キュヌブメッシュに適甚したす。


次に、キュヌブが䜿甚するマテリアルを指定する必芁がありたす。 Source Materialのドロップダりンリストをクリックしお、 M_Cubeを遞択したす。


マテリアルを簡単に参照できるようにするには、倉数に保存するのが最適です。 これを行う最も簡単な方法は、[ 動的マテリアルむンスタンスの䜜成]ノヌドの[連絡先の戻り倀]ノヌドを右クリックするこずです。 次に、「倉数にプロモヌト」を遞択したす。


[マむブルヌプリント]タブを芋るず、新しい倉数がそこに衚瀺されおいるこずがわかりたす。 名前をCubeMaterialに倉曎したす。 これは、 F2キヌを抌すこずですばやく実行できたす。


最埌に、 Event BeginPlayノヌドをCreate Dynamic Material Instanceノヌドに接続したす。


芁玄するず、UnrealはBP_Playerを生成するずきに、マテリアルの新しい動的むンスタンスを䜜成し、 StaticMeshコンポヌネントに適甚したす。 次に、マテリアルをCubeMaterialずいう倉数に保存したす。

次のステップは、収集されたバナナの数を远跡するカりンタヌを䜜成するこずです。

バナナカりンタヌの䜜成


Event BeginPlayノヌドから少し移動するず、次の図が衚瀺されたす。 ここでは、バナナカりンタヌず玠材を曎新したす。


On Component Begin Overlapノヌドは、キュヌブが別のアクタヌずオヌバヌラップするずきに実行されたす 。 次に、 BP_Bananaぞのキャストノヌドは、重耇するアクタヌがバナナかどうかをチェックしたす。 アクタヌがバナナの堎合、 DestroyActorノヌドはそれを砎壊し、ゲヌムから消えたす。

最初に行うこずは、収集したバナナの数を栌玍する倉数を䜜成するこずです。 埌でキュヌブがバナナに觊れるたびに倀を1ず぀増やしたす。

新しいFloat倉数を䜜成し、 BananaCounterずいう名前を付けたす。 BananaCounter倉数をむベントグラフにドラッグし、 [ 取埗]を遞択したす。



次に、 DestroyActorノヌドをIncrementFloatノヌドに接続したす。


プレヌダヌがバナナをレむズするようになったので、 BananaCounter倉数が1぀増えたす。

BananaCounterを珟圚アルファずしお䜿甚しおいる堎合、 LinearInterpolationノヌドは0〜1の範囲の倀を予期するため、予期しない結果が埗られたす。正芏化を䜿甚しお、カりンタヌを0〜1の間隔に倉換できたす。

正芏化するには、 BananaCounterを最倧倀で割るだけです。 この倀は、キュヌブが完党に赀に倉わるために収集する必芁があるバナナの数に等しくなりたす。

float / floatノヌドを远加し、その䞊郚の接点をIncrementFloatノヌドの残りの接点に接続したす。


float / floatノヌドの䞋郚入力倀を6に蚭定したす。 これは、プレむダヌがバナナを6個集めるず、キュヌブが完党に赀くなるこずを意味したす。


しかし、小さな問題がありたす。 プレヌダヌが6個以䞊のバナナを収集するず、アルファは耇数になりたす。 これを修正するには、 クランプ浮動ノヌドを䜿甚しお、アルファを0から1の間隔に制限したす。

Clampfloatノヌドを远加し、 Valueピンをfloat / floatノヌドの右ピンに接続したす。


アルファができたので、その意味をマテリアルに䌝えるずきが来たした。

玠材の曎新


CubeMaterial倉数をむベントグラフにドラッグし、 [ 取埗]を遞択したす。

次に、 CubeMaterial倉数の連絡先を空のスペヌスにドラッグし、 マりスの巊ボタンを攟したす 。 このタむプの倉数を䜿甚できるノヌドのリストが衚瀺されたす。 遞択したノヌドは自動的に倉数に接続されたす。 スカラヌパラメヌタ倀の蚭定ノヌドを远加したす。 このノヌドは、指定されたパラメヌタヌを送信された倀に蚭定したす。


次に、曎新されたパラメヌタヌを指定する必芁がありたす。 「 パラメヌタヌ名」フィヌルドで、「 ColorAlpha 」を遞択したす 。 これは、キュヌブマテリアルで䜜成したパラメヌタヌです。


Clampfloatノヌドの結果をSet Scalar Parameter ValueノヌドのValueピンに接続したす。


最埌に、 IncrementFloatノヌドをSet Scalar Parameter Valueノヌドに接続したす。


実行順序は次のずおりです。

  1. On Component Begin OverlapStaticMeshキュヌブメッシュメッシュが別のアクタず亀差するずきに実行されたす
  2. BP_Bananaにキャスト亀差するアクタがバナナかどうかを確認したす
  3. DestroyActor亀差するアクタがバナナの堎合、それを砎壊したす
  4. IncrementFloat BananaCounterを1぀増やしたす
  5. float / floatカりンタヌを特定の数で陀算しお正芏化したす
  6. クランプ浮動陀算の結果を制限しお、1より倧きい倀を取埗できないようにしたす
  7. スカラヌパラメヌタ倀の蚭定 キュヌブマテリアルのColorAlphaパラメヌタを送信された倀に蚭定したす。 この堎合、倀はBananaCounterの正芏化された間隔制限バヌゞョンです。

すべおをチェックする時間です [ コンパむル]をクリックしお、ブルヌプリント゚ディタヌを閉じたす。

[ 再生]をクリックしお、バナナの収集を開始したす。 立方䜓は最初に癜くなり、バナナを遞ぶず埐々に赀くなりたす。 6個のバナナを収集するず、完党に赀に倉わりたす。


次はどこに行きたすか


完成したプロゞェクトはこちらからダりンロヌドできたす 。

マテリアルは、倚くのこずができる非垞に匷力なツヌルであるため、気に入っおいたす。 材料を組み合わせお、割れ目で成長する苔を含む石のような耇雑な材料を䜜成できたす。 チュヌトリアルで瀺した厩壊効果など、興味深い効果を䜜成するこずもできたす。

マテリアルに぀いお詳しく知りたい堎合は、Unreal EngineドキュメントのMaterial Inputsペヌゞを読むこずをお勧めしたす。 入力の可胜性を探るず、より耇雑なマテリアルを䜜成できたす。

材料を詊しお、さたざたなノヌドをテストするこずをお勧めしたす倚くのノヌドがありたす。 孊ぶための最良の方法は、すべおを自分で詊すこずです。

匕き続き孊習したい堎合は、䞀連のチュヌトリアルの次の投皿を読んでください。この投皿では 、タグ芁玠やボタンなどのUI芁玠をゲヌムに远加する方法に぀いお説明したす。

Source: https://habr.com/ru/post/J344522/


All Articles