UE4の勉強記録

UE4の勉強の記録です。個人用です。

「Unreal Engine 4.xを使用してRPGを作成する」の足りない部分を作成する。アニメレンダリングについて

今週のBlogは文字数制限を食らってしまって最後まで載せる事が出来ませんでした。

ので2つに分割して載せる事にします。

ーーー前半部分ーーー

<前文>

Roe v. Wade

今年は3カ月に一回だけ勉強をお休みする事に決めていたので、先週はお休みしました。ですがあんまりにもRoe v. Wade のNewsが衝撃的だったのでそれについて前文だけ書いておきました。

今週の前文はそれを載せます。

Roe v. Wade のNews についてですが既に2022-05-16のBlogの前文に簡単にまとめていますが、より正確な情報が入ったので最初に事実を整理します。

まず事実の訂正ですが、SCOTUSの決定は中絶を禁止するのでは無くて中絶を禁止する法律が違憲であるという判決が間違っている。が正しかったです。つまり、中絶が違法かどうかは州政府の判断に委ねる。と言うのが正しい内容でした。ここは間違っていました。

それ以外は、今、2022-05-16のBlogの前文を読み直しても大体合っていました。

それで州政府の対応ですが、ほとんどの共和党が強い州は、即中絶を禁止する法律を施行しました。

更にTexas州のような中絶をするために他の州に移動するための手助けをするだけで違法になったり中絶しようとしている女性を密告すると報奨金が貰える州も存在します。

州ごとに微妙に違いますが、レイプされた場合や母体に危険がある場合でも中絶は禁止です。

それで民主党が強い州が中絶を禁止する法律に凄く反対しているかというと、それなりにしか反対していません。これは民主党の支持基盤がCatholicである事と歴史的に民主党は何にもしない党である事が関係しています。Catholicでは中絶は殺人である。と長年主張しているためアメリカのほとんどの女性+かなりの数の男性がこの判決に激怒しているにも関わらず消極的な反対しかしていません。

と言う訳で、大まかに言ってアメリカでは、レイプされた場合や母体に危険がある場合でも中絶は禁止になったは正しいです。

それでじゃあアメリカでレイプされて妊娠した場合や母体に危険がある妊娠をしたらどうなるのかと言う事ですが、中絶可能な州(これも何時まで可能なのか怪しい。)に移動出来るか、海外に逃げる事の出来ない一般人は産むか、死ぬか、あるいは自殺するしか選択はなさそうです。

このアメリカは日本人が想像しているキラキラしたアメリカとは大違いです。

しかしこっちこそが本物のアメリカなんです。

日本国及び、日本人はそういう国であるアメリカに軍事的にも経済的にも金玉握られている状態で生活しているんだ。と言う事を認識して生きなければなりません。

それでは今週の勉強を始めます。

<本文>

1.今週の勉強

1.1 今までやって来た事の総括とこれからやる事についての考察

先週は、お休みして別な事をしていました。そこで色々考えたんですが、一端今までの勉強内容を総括して、これから勉強する内容について検証した方が良い気がします。

それをここでやる事にします。

ただし総括と検証はしますが、基本的に今までやって来た事を大きく変更する事はしません。それは今までの勉強は特別大きな成果をもたらしたりはしませんでしたが、それなりの成果をもたらしていますし、更に言うと大きな失敗もしてないからです。この大きな失敗をしないと言う事は意外に大事で、折角今まで上手くやって来たのに、更に大きな成果を得ようとしてやり方を大きく変えて、その結果、大失敗して全部失ってしまった人をそれなり見て来ました。

特に私は、最終的な目標を「100万本ぐらい売れるGameを作成して35億円位は稼ぐ。」としているので、それなりの成果が出でない現状を見て、内心はかなり焦ったりしています。しかしここで慌てて、突飛な事をやって取り返しのつかない失敗を犯してしまうと今まで真面目に勉強して来た成果まで失ってしまいますので、今までと同じ勉強を続けられる事を、かなり肯定的に見るようにしています。

現在、アメリカの大学でCS専攻で卒業した人の初年度の年収は1200万円位だそうです。更にGoogleクラスで働いている人になると、これはSoftware Engineerのランクにもよると思いますが、5千万位貰っているそうです。

もうアメリカではSoftware Engineerの給料は医者と変わらなくなっています。

これは一見凄い高いように思えますが、Programmerは直ぐに起業して会社を上場する事が出来るので、そうすると10億や20億は稼ぐ人がそれなりに出て来ます。そういう人達と同格の人を雇い続けるためには、それくらい払う必要があるのはまあ必然なのでしょう。

それで日本のProgrammerの現状を見ると、絶望しかありません。

安い給料しか払わないため、能力のある人が集まらず、稀に優秀な人が来てもこの業界に絶望して転職したり、酷い場合は精神を病んでしまったりしています。

結果として日本では多くの優秀なProgrammerがこの業界に絶望して転職してProgrammingから離れてしまっています。

しかしその絶望的な状況はあくまで従業員タイプの人に限った話で、企業家タイプのProgrammerだったら、成功した場合、日本でもそんなにアメリカと比較して劣っていない気がしています。

それは以下の事があるからです。

  • 中国とは違い日本ではアメリカの最新の技術を使用する事が出来ます。
  • 日本の独自の文化が企業出来るような独自の技術を生み出しやすくしています。
  • 実際に新しい技術を開発したSoftwareの会社はそれなりに成功している。

そういうわけで日本でサラリーマンとしてProgrammerをやって行くのはかなり無理がありそうですが、Software Engineeringで新しい技術を開発したら企業して10億位稼ぐ人はまだまだ出て来そうです。

そしてここからが大事な所ですが、Game Engineを使ってGameを作成するのは巷で考えられている程簡単ではないです。

実際理系の大学院、CSでも学部レベルの知識がないと全く何しているのか理解出来ないです。

これは私が実際にUEを数年間かけて勉強して最近やっと全体像が観れるようになったことからも断言出来ます。Game Engineを使ってGameを作成するのは巷で考えられている程簡単ではないです。

それで実際にGame Engineを使いこなせる実際理系の大学院、CSでも学部レベルの知識があるLevelの人達がUEを勉強したいと思うためには、やっぱりUEを使ってGameを作成して億万長者になった人がどんどん出て来る事が必要だと思っています。

ので、私は「100万本ぐらい売れるGameを作成して35億円位は稼ぐ。」と公言しています。

話が大分それてしまいましたが、総括をしていきます。

NiagaraとMaterial

この二つは選んだTutorialが優秀だったのでかなり成果が出て来ます。直接Gameの作成には貢献しませんが、勉強の成果が最も出ている部分なので継続してやって行きます。

RPGの製作>

これもうLife Workと化してしまって3年位やっていますが、まだ全然終わりが見えていません。

今は以下の事をやっています。

  • Eventのシナリオの作成
  • 雪山のLandscapeの作成

これが終わったとしてもまだまだやる事があるのでそう簡単には終わりません。

雪山に関しては、足跡を付けたり、World Displacementを使用して雪をデコボコにする方法を勉強しました。

更に最初のLandscapeのSub-Levelを100m平方位の大きさで作成してしまったので直す必要があります。

<Open Worldの作成方法について>

次のRPGを作成する時はWorld Partitionを使用して16km^2位の大きさのOpen Worldを作成したいと思っています。そのための調査をしています。

所が最近はVirtual Textureについて調べてたり実装したりが中心になっていました。

後、16km^2のHeight MapをGaeaで作成してUE5にImportする方法はまだ分かりません。

<HxHポケモンの面白い所を合わせた戦闘システムの開発>

これはポケモンのような戦略型の戦闘システムとHxHのような戦術型の戦闘システムの両方の面白さを合わせた戦闘システムを開発したら面白いのではと考えてやってみました。

元々は今のRPGの戦闘システムがつまらないので、どうしたらもっと面白く出来るのか考えた結果ですが、もっと根源的にはゲームの作成が出来る事と面白いゲームの作成が出来る事は全く違う事なのではないのか?と言う問いに対しての考察でもあります。

今、考えているのは、UIデザイン特に、Score Boardについてです。人の本質として努力した事、頑張った事に対して肯定的に評価してもらえると嬉しいです。そして更に頑張ろうという気にさせてくれます。

これは面白さとは何かと言う事への一つの解答です。

ここではそういうGameそのものの製作というよりも面白いゲームとは何かという少し文系的な立場からのアプローチをしています。

<その他>

それ以外にBlenderとGaeaの勉強をしています。

Gaeaは後にOpen World用のLandscapeを作成するために勉強しています。UEのDefaultの設定だとPixel数の100倍の大きさつまり1m/PixelがLandscapeの標準の大きさとして指定されています。これに合わせたLandscapeを作成する場合一辺の大きさが4000PixelのHeight Map

を作成する必要があります。GaeaでこのサイズのLandscapeを作成する方法はまだ分かりません。ただ後一カ月くらい勉強したらこのやり方も分かる気がしています。

BlenderはUEで使用するStatic Meshの作成のために勉強しています。いますがあんまり進んでいません。

<アニメレンダリングについて>

これは今週からやる予定ですが、Stylized Shading、Toon Shading、そしてCel look Shadingなどから日本のアニメ風のレンダリングに関する技術を抜き出してまとめて行こうと思っています。

具体的には

  • 線画の抽出方法
  • アニメ風の塗り
  • アニメ風の影や光の追加方法

についての方法についてまとめる予定です。

一応今までの勉強で分かっている事を以下にまとめておきます。

<<線画の抽出方法>>

Stylized Shading、Toon Shading、そしてCel look Shadingにおける線画の抽出方法=outlineの抽出方法となっています。

線画とOutlineは微妙に違う気がしてその点は大きく不満なんですが、それ以外の方法がないみたいなので現状は我慢しているという状態です。

具体的なやり方は、2022-04-11のBlogにまとめられていますが、以下に簡単に示します。

  • Material内でカメラの位置とMeshNormalDot Productから線を生成する方法
  • Blenderで裏返しのModelを追加して線を抽出する方法
  • Post ProcessによるOutlineの追加

これ以外のやり方もあるかもしれませんが今私が知っているのはこの3つです。

<アニメ風の塗り>

今の所以下の二つのやり方があります。

Material内で以下に示したTextureを使用して色を指定します。

 

2022-04-03のBlogで勉強した方法でやり方です。 

もう一方のやり方は2022-04-25のBlogで勉強したやり方ですが、Colorでそのまま色を一色だけ指定する方法です。

 

このやり方では、Post ProcessでToon Shadingを全部やるのでその前はなるだけ単純にしている方がやり易いせいかもしれません。

Toon ShadingにおけるStatic Meshに使用されているMaterialの設定、更にはToon Shadingで採用されている影

<アニメ風の影や光の追加方法>

Specular Lightを追加する方法です。

2022-04-18のBlogで勉強していますが、Blinn SpecularをMaterial内で実装して追加しています。

以下の様になっています。

影を自分で実装する方法です。

2022-05-02のBlogで勉強したんですが、あんまり詳しくまとめられていませんでした。

Blogを読んで思い出した範囲でまとめるとScene TextureのBase Colorを上手く使用して影を消します。その後でScene TextureのPost Process Input 0とscene textureのBase Colorを使用して影だけ抽出します。それを加工してから後から追加します。

こんな感じでやっていました。

特に大きく変更すべき点は無いのでそのままやります。

1.2 今週の勉強

今週も以下の内容をやって行きます。

  • Niagara: CGHOW氏のTutorialをやる
  • Materialの勉強
  • RPGStoryの改善
  • Open Worldの検証
  • Gaeaの勉強
  • 雪山のMapの作成
  • UI Designの勉強
  • Anime Renderingの勉強

2. Niagara: CGHOW氏のTutorialをやる

今週もUnreal Engine 5 Niagara Beginner Tutorial - UE5 Niagara Starter Course! [1]の続きを勉強していきます。

2.1 Unreal Engine 5 Niagara Beginner Tutorial - UE5 Niagara Starter Course! [1]の続きを勉強する

<Shape Location

Particle Spawn SectionのShape Location Moduleについてです。

このModuleは何回も使用しています。指定したShapeの内部にRandomにParticleが生成されるはずです。

<<Sphere>>

以下に示した様に球状にParticleが生成されます。

Sphere Distributionの値をDirectに変更しました。

U PositionがEmitterのAgeにセットされているので、以下の様な位置にParticleが生成されました。

ここで疑問ですが、ParticleをSphereの表面だけに生成する方法です。

それはSphere Surface Distributionの値を1にする事で出来ます。

しました。

Particleは球の表面にだけ生成されるようになりました。

Hemisphere Distributionの値を以下の様にすると

下半分がちぎれた球が生成されます。

<<Torus>>

次はTorusの説明でした。

この辺は自分ではもう大体理解していますが、初心者の人には何を説明すべきなんでしょう。

私だったらこれ全部、Particleの発生位置を指定しているだけです。で終わりにしますね。一辺に沢山教えても全部忘れてしまいますから。

しかし思い出して来ましたが、本当に最初にNiagaraを触った時はこのTorusのLarge RadiusとHandle Radiusの意味も分からないで苦労していました。

気になって調べたら2021-06-13のBlogで勉強していました。

この当時のNiagaraは今とはかなりUIが違っていますが、Handle RadiusじゃなくてU Positionが何をしているのか良く分からないと書いていました。

これ読み直すと当時の苦悩が良く分かります。

今、Niagaraの仕組みをほぼ理解した立場から当時の自分にNiagaraをどうやって勉強すべきかのアドバイスを送るとするならば、

まずNiagaraはMaterialを理解していないと理解出来ません。先にMaterialの基礎を勉強するべきです。

Materialの基礎を理解した後で、

最初は、

  1. SystemEmitterParticleの流れを理解する。
  2. Renderを理解する。Renderで使用されているMaterialとの関係について理解する。(Spriteを例にして説明する)
  3. SpawnUpdateの違いを理解する
  4. Effectを作成するために必要な最低限のModuleの機能を理解する
  5. それぞれのModuleが持つParameterCurveDynamic Inputをセットする方法を勉強する
  6. Attributeについて理解する。AttributeModuleParameterにセットしたり、Emitter内にModuleとしてセットする方法を勉強する
  7. New Scratch Pad Moduleを使用してModuleを自作出来る事を学ぶ
  8. New Scratch Dynamic Inputを使用してDynamic Inputを自作出来る事を学ぶ

の順番で勉強すべきです。

その後で、公式のDocumentであるNiagara Tutorials [2]にあるような具体的なVFXの作成方法について勉強すべきです。

最初にこっちをやると中身が何をやっているのか全く理解出来なくなります。

そしてCGHOW氏のTutorialをやります。

このやり方ならCGHOW氏のTutorialでも理解出来き、普通についていく事が出来るはずです。

<Velocity

Add Velocity Moduleについてです。

<<Linear>>

LinearのDefaultではVelocityのZの値が50にセットされています。

のでParticleが上に移動しています。

一個大切な内容について解説していました。

以下の様にParticleが上に移動するようにVelocityをセットした状態で

Level上に配置します。

そしてこのNSを回転させます。

するとParticleはZ軸上に移動せず回転させた方向に移動します。

つまりAdd Velocity ModuleのZ軸上へ速度を追加するというのはLocal SpaceのZ軸と言う意味だったんです。

それはEmitterのLocal Spaceにチェックが入っているからだろうと調べると

入ってません。

はい。これはAdd Velocity ModuleにあるRotation Coordinate SpaceにLocalがセットされているからです。

ここをWorld に変更すると

先程のようにNSを回転させてもParticleは真上に移動するようになります。

<<Point>>

Pointを選択した場合です。

Particleは中心から四方八方に飛散します。

ここでは特に重要な話は無かったです。

<<In Cone>>

最後にIn Coneです。

ParticleはCone状に広がりながら移動します。

以上でした。

うーん。

初心者向けの説明ですが、VelocityとForceの違いや、Add Velocityは必ずParticle Spawn Section内にセットすべきである事などへの解説は欲しかったです。

後Vortex Velocityの解説も欲しかったです。

<Force

Forceは沢山のModuleがあるので基本的なModuleのみ解説します。

<<Gravity>>

最初はGravity Force Moduleです。

Defaultでは以下の設定になっています。

その結果、Particle は一端上がってから下がる結果になります。

うーん。

この説明だと力学を全く知らない初心者はForceがma = Fである事すら知らない訳で意味全く分からないで終わってしまうと思います。

例えば重力加速度が980cm/s^2だからDefault値としてZに-980がセットされている事も理解出来ません。

もう一つ、これらのForceに関するModuleはParticle Update Section内で使用される事についても良く分からないで終わってしまいます。

物理の加速度の定義で言えば、一秒間毎にこの980cm/sが速度として追加されなくていけないです。しかしParticle Update Section内で使用されると言う事は、Frame毎に980cm/sが追加されている様に見えます。

更に速度を指定するModuleと違い、ParticleのMassが影響する事についても解説がほしいです。

まあ偉そうな事を言っても、自分もそういう説明をするには力不足なんで、じゃあお前がやれよ!と言われたら出来ないで終わってしまいますが。

まあ、物理的な解説はそんなに要らない。それよりも映像的に映えるかどうかが重要だと言う人も要るでしょう。

そういう人達には、上がって落ちるEffect、マグマの塊が大噴火して噴き出した後、マグマの雨を降らすようなEffectに使用出来そうだ。とかの説明が良いのかもしれません。

うん。

段々、ForceやVelocityの項目で初心者には何を解説すべきなのかが見えて来ました。

まず、それぞれのModuleを追加してParticleがこんな動きをするようになります。この動き、バケツから水の塊を空中にぶちまけて、辺りに雨を降らすMotionに似てませんか?そういう動きが必要なEffectを作成する時にこのModuleは使用出来ます。とまず解説します。

その後で、このModuleのもつ物理的な意味について解説すれば良いです。

<<Vortex>>

その名の通りParticleに渦の動きを追加するModuleです。

渦の動きを再現するためのForceを追加するので以下に示した様な力が追加されます。

以下に示した様な円周上を回る力と

放射状に広がる力です。

のでその結果、

のような力が加わっています。

この説明が物理が得意な人が満足できる説明なのかちょっと自信がないです。

確か等速円運動って加速度が関係していた気がします。

私、古典の力学は勉強はしたんですがちょっと理解出来なくて良く分からなかったんです。今、勉強し直したら理解出来る気はしてますが、あんまりやる気が起きません。

と言うのは昔、量子化学の先生が、俺も古典は良く分からん。って言われた経験があるのと、テレビで走っているトラックの荷台からブーメランを投げたら投げた人に戻って来るのか?という質問を物理の教授たちにしたら全員答えが間違っていたのを見た記憶があるので、ホントに威張っている程、成果出しているのか判断出来ないからです。

まあ、NASAとかJAXAで働いている人とかは完璧に理解しているんでしょうが。

ので考察はこの辺で終了します。

一つ気を付けないといけないのは真ん中に位置したParticleに加わる力は0です。

ので中心の一点のみにParticleを生成した場合、Particleは全く動かなくなります。

Tutorialでは以下のParameterについて説明していました。

まずVortex Force Amountです。

このVectorが大きくなる訳です。

このVectorが大きくなる訳です。

次にVortex Axisです。

DefaultではZが1になっています。

これはZ軸を中心にして渦を描くと言う事です。

実際PreviewをTopから見ると以下に示した様にZ軸を中心にして渦を描いています。

因みにZの値を-1にセットすると

渦は逆に回転します。

<<Curl Noise>>

CGHOW氏が大好きなCurl Noise Force Moduleです。

これの使い方、今もってあんまり理解していません。

ちょっと自分で確認します。

Default値での挙動です。

Particleは以下の赤い線で示したような動きをしていました。

Noise Strengthを上げてみます。10から100にしました。

以下の様になりました。

Particleの広がる速度が速くなり、広がる距離も大きくなりました。

それ以外は良く分かりません。

Noise Frequencyを1にしました。

Noise Strengthが10の時の10秒後です。

Noise Strengthが100の時の3秒後です。

ほとんど同じに見えます。

Noise StrengthはParticleの移動する速度のみに影響しているみたいですね。

そしてNoise FrequencyがNoiseの形状を決めているみたいです。

Noise Frequencyを2にします。

Noise Frequencyを5にします。

Noise Frequencyを10にします。

Frequencyが高いほどNoiseの形状が複雑になっているんでしょうね。

一寸調べたんですが、Curl NoiseってPerlin NoiseとかのNoiseを速度に変換して作成しているみたいです。となるとFrequencyってPerlin noiseのnoiseを決定するためのParameterでしょう。

そう言えば昔この辺りを調べた記憶があります。ありますが面倒になって途中で止めてしまいました。大学だったら数式から実装出来たら褒められますが、ここでそれをやる価値があるのか判断つかなかったからです。実際、CGHOW氏だってここでCurl Noiseの数式からの実装についての解説は全くしていません。

CGHOW氏のこのModuleに関しての説明は簡潔です。

以下の3つのParameterだけ使え。

Noise Strengthの値は大きい程良い。Noise Frequencyは逆に小さい程良い。Pan Noise Fieldに値を入れると以下に示した様な動きをします。

要するにこの3つのParameterをどうやって弄ると映像的に映える動きが作成出来るのかを覚えておけば良い。と言っています。

それが多分真実なんでしょうね。

<<Drag>>

Drag moduleは文字通り動いているParticleを引きずって動きを遅くするModuleです。

CGHOW氏によればこのModuleは以下のような動きをParticleにさせる時に非常に有効だそうです。

これはParticleは最初、激しく移動していますが、その後で移動を停止してその場に滞在しています。

ドラゴンボール元気玉みたいなEffectを作成するために役に立つ気がします。

このEffectの作成方法ですが、Dragの値にCurveをセットして最初の値を0、最後の値を1にセットするだけです。

<<Point Attracter>>

これも文字通りの働きで中心に向かってParticleを移動させます。

Attraction Strengthの値をNegativeにすると

Particleは外側に向かって飛び出します。

<Inherit Velocity

これは初めて使用するModuleです。

あんまり上手く撮影出来なかったんで以下に示したScreenshotと文章で説明します。

NSを右に動かします。するとParticleはその勢いをそのまま保持して右に飛んでいきます。

このModuleはAnimationに追加して使用するためのものだそうです。

今週も20分しか進まなかったですが、結構大変でした。

3. Materialの勉強

今週もBen Cloward先生のTutorialを勉強します。

3.1 先週作成したHex Gridである事を試す

Unreal Sensei氏のTutorial、How to HIDE Texture REPETITION in Unreal Engine - UE4 Tutorial [4]で以下の様なTextureはどうやっても

Tilingの影響から逃れられないと言っています。

先週作成したHex Gridを使用したMaterialでも上記のようなTextureはTilingから逃れる事が出来ないのか試してみます。

以下のTextureを作成しました。

普通に配置すると以下の様になります。

Tilingがはっきり出ています。

先週作成したMaterialを使用してみます。

全くTilingは見られませんね。

勿論、繋ぎ目の不自然さは残りますが、

3.2 Hex Grid Normal Tiling - Shader Graph Basics - Episode 48 [3]を軽く見る

今週は、先週作成したHex GridにNormal を追加します。

このSeriesは全部Unityで解説されています。Unrealは後で実装方法だけ説明されるんでしょうか?

<実装の一部を別な個所に移す>

まず先週作成した実装の内、以下の部分だけ別にします。

これってUEだったらMaterial Functionに移すって事なんでしょうか?

良く分かりません。

<先週の実装のままNormal Mapを使用してみる>

以下の様になりました。

光の当たっている方向がバラバラです。あるNormal Mapは左側に影が出来ていますし、下側に影が出来ているのもあります。

これを直すにはSampleを終わった後でNormal Mapを回転して戻す必要があるそうです。

何故これをするとそれぞれのHexにおける光の当たる方向が正しくなるのかまだ分かりませんが、そうなるそうです。

<それぞれのHexでどれだけRotateさせたのか分かるようにする>

以下のNodeで、TextureをどれくらいRotateをさせたのか分かるように実装を変更します。

以下のようにしてTextureの回転させた値をOutput出来る様にしました。

実際は、Textureを元に戻す回転を加える為、TAUから回転させた角度を引いた値を返しています。

<Normal 用のSample Hex Texture Nodeを作成する>

名前をSample Hex Normalとするそうです。

まず、先程OutputしたそれぞれのHexを回転させた値をInput出来るようにします。

次にその値からTextureを回転するSub Graph?UnrealにおけるMaterial Function?を作成します。

以下の様に作成しました。

UnityにはRotateノードがあるので回転させた値を直に計算する必要がないそうです。Unrealではこの部分をどうやるんでしょうか?

Sample Hex Normalを開きこのSub Graph?を追加してNormalの回転を元に戻します。

<Sample Hex Normalを使用してNormalの回転を元に戻す>

以下の様に実装しました。

Normalの結果です。

おお、影が同じ向きに現れました。

確かに凄いですが、Textureの方が回転したままな気がするんですが、それはどうするでしょうか?

Tutorialではそのまま繋いでいました。その結果ですが以下に示した様に全く問題なく出来ていました。

うーん。なんで?

3.3 Hex Grid Normal Tiling - Shader Graph Basics - Episode 48 [3]を実装する

この後UEでの解説があるんですが、大体やっている事は既に理解したので実装も同時にやって行きます。

<実装の一部を別な個所に移す>

作成しました。

やっぱりUnityのSub GraphはUnrealのmaterial functionと同じでした。

作成したMaterial functionを使用して以下の様な実装に変更しました。

結果も全く同じになりました。

<先週の実装のままNormal Mapを使用してみる>

これはUEではやりませんでした。

自分で試しても良かったんですがどうせ結果は同じと思うので先へ行きます。

<それぞれのHexでどれだけRotateさせたのか分かるようにする>

を改良します。

しました。

Tauの代わりをどうするのかと思ったら単にConstantに数字を打ち込んだだけでした。

言われてみれば当たり前です。

<Normal 用のSample Hex Texture Nodeを作成する>

まずNormal Mapの回転をもとに戻すMaterial Functionを作成します。

作成したMaterial Functionを追加しました。

MF_SampleHexNormalが完成しました。

<Sample Hex Normalを使用してNormalの回転を元に戻す>

しました。

結果です。

うーん。正直良く分からん。

多分出来てるでしょう。

Normal MapをBase Colorに繋いでみました。

向きが全部同じになっています。合ってそうです。

4. RPGStoryの改善

今週は時間がなくなってしまったのでStoryの検証はSkipします。

5. Open Worldの検証

今週からWorld Partitionを使ったOpen World の作成方法についての勉強を開始しようと思っていたのですが、Unreal Sensei氏が作成したUnreal Engine 5 Beginner Tutorial - UE5 Starter Course 2022 [5]が気になるので今週はそれを軽く勉強する事にします。

Unreal Engine 5 Beginner Tutorial - UE5 Starter Course 2022 [5]は5時間もあるTutorialなので今回は軽く見るだけで終わってしまうかもしれません。

頭使って勉強する事にします。

5.1 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course 2022 [5]を軽く見る

ここでUnreal Engine 5 Beginner Tutorial - UE5 Starter Course 2022 [5]の内容を把握してどれを勉強するのかを決定します。

<IntroからMoving and Creating Objectまで>

特に勉強する事はないと思われるのでSkipします。

<Post Process and Camera Exposure

HDRについての解説をしています。ここから見始めましたが、本当の初心者向けのTutorialです。Actorを選択してShiftを押しながら次のActorを選択するとその間のActorも全部選択出来るみたいな所から解説しています。

ここではHDRの事をAuto Exposureと呼んでいます。のでそれに倣ってAuto Exposureと呼ぶことにします。

これが自動で効いているのでOffにする方法について解説しています。

以下のやり方でAuto ExposureをOffにしました。

正しGame中はこのやり方ではAuto ExposureはOffにはなりません。

Game中もOffにするためには、Post Processを選択して

Detailの以下の部分の設定を以下に示した様に変更します。

うーん。成程。いきなりPost Processについて解説しているので初心者に直ぐにPost Processについて教えるのかと驚いたんですが、Auto Exposureを止める方法を教えるのが目的だったんですね。

Unreal Sensei氏のTutorialを見るとその賢さにいつも驚きますが、このやり方は初心者でも理解でき更に成果が凄く出る気がします。

ただPost Processの説明でRenderingの後に行う処理と言っていましたが、それは本当なのかなと思っています。

Post ProcessはUEがDeferred shadingを採用している事から使用が可能になった技術です。

Deferred shadingでは、光の影響以外のRenderingを最初に計算してG bufferにTextureとして焼き付けて置いて、最後にそれらのG bufferの情報と光の情報を合わせてRenderingする方法だったはずです。Post Processはこの途中のG bufferに保持されているTextureに干渉する事でRenderingの最終的な結果を大きく変化させる技術なはずです。

のでRenderingの後に行う処理と言う言い方は、半分だけ合っていて半分は間違っている気がします。

でも、初心者向けなのでここはあんまり重要な個所ではないですね。

<Intro to MaterialからCreate a Master Materialまで>

こんなに分かり易く、Materialの基礎を教える事が出来るんでしょうか?

やっぱりUnreal Sensei氏は天賦の才を持っています。しかもこの若さで!

ここで説明されている事は全部重要です。しかもこれMaterialの事を全く知らない初心者でもかなり基礎を固められます。この部分は大体40分で、少し長めに感じますが、他のTutorialで100時間位勉強したのと同じ位の効果があります。

私は常々、Materialを理解するためには大学レベルの数学、線形代数の知識が必要である。と言っていますが、このやり方ならあんまり数学の知識がなくてもMaterialの仕組みについて理解出来そうです。

後、苦しくない。動画を楽しく見る事が出来ます。ストレスを感じないで勉強出来るのでその分沢山勉強出来ます。

これは重要なので以下に箇条書きにしてもう一回まとめます。

Unreal Sensei氏のTutorial、特にこのMaterialの部分は以下の点で他のTutorialと比較して非常に優れています。

  • 他のTutorialだと100時間位勉強して得られる理解を、たった40分で教えてくれる。
  • 大学レベルの数学、特に線形代数の知識が全く無くても、理解出来る。
  • 勉強していてストレスが掛からず、ずっと見てられる。

どうしたらこういうTutorialを作成出来るんでしょうか?ただただ脱帽するばかりです。

後、一つだけ知らないNodeが使用されていたのでそれも記録しておきます。

Flatten Normalノードです。

このノードはその名の通りNormal Mapを平らにする機能を持っています。ただしMinusの値を代入するとNormal Mapがもっと強く出る様になります。

<Import /Create a Static MeshからMove Assets Between Projectsまで>

特に記録する事はないです。

<Lighting with LumenからArchviz Lighting Bakedまで

これが良く分からないので、このTutorialを見る事にしたんです。LumenがあるならBakeする必要ってあるのか?

そもそもUE4のLight MassがUE5でLumenになったと思っていたんですが、UE5でもLightをBakeしているのか良く分かりません。

その辺に注目して勉強します。

分かりました。

UE5でもLumenを切ってLightをBakeする事も出来るんです。そしてある条件だとそっちの方が綺麗な影を作成出来るそうです。ので両方のやり方をここでは説明していました。

<LandscapeからNaniteまで>

Landscapeは本当の基礎だけ説明してTilingについては説明は無かったです。

Foliage ToolでBillboardについての説明がありましたが初めて知りました。LODでも最も遠い所ではSpriteと同じ構造になるんですね。

Naniteの説明は基礎的な所だけでした。

<Create a Game with Blueprints

Eventから説明していますが、あんまり初心者に親切には感じませんでした。

Tickの解説で以下の様な設定にすればFameの変化に影響されずに速さを一定に出来ると有りました。

これは計算式も示したほうが分かり易いと思いました。

T.maxfps 数字で最大のFrame Rateを指定出来るのは知りませんでした。これからはこのCommandを使ってFrame Rateで影響が出ないかの確認を行います。

数字の部分に0を入れるとFrame Rateは最大値になるそうです。

Widgetの説明までここでしていますが、これ理解出来る初心者いるんでしょうか?

この部分のTutorialは一寸、強引過ぎますね。

今までの天才的な教え方と比較するとはっきり言って雑すぎです。ここまで勉強した初心者は突然、訳わからなくなって困惑してるかもしれませんね。

今週はここまでにして残りは来週、勉強する事にします。

ーーー前半部分終ーーー