UE4の勉強記録

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

UE5の勉強 -LandscapeのみのGameを作成する-

1. 今週の予定

1.1今週の予定

今週は忙しくて勉強出来ない日があるので、そういう日が勉強時間が短くなります。

特に月曜日と水曜日は忙しくて何も出来ないと思いますので、それを考慮して予定を立てます。

DirectXの勉強>

無し。

やってる時間はないです。

<LandscapeのみのGameを作成する>

これも無しです。

<Materialの勉強>

Ben Cloward先生のAdvanced MaterialのTutorialをやります。

Niagaraの勉強>

CGHOW氏のTutorialをやります。

<戦闘システムの続きを作成する>

一応、これで完成とします。

そして総括をします。

<Gaeaの勉強>

Geologyの勉強とYouTube用のTutorialの作成の両方をやります。

<Houdiniの勉強>

Houdiniの勉強は一端お休みしてUE5.2のProcedural Content Generationの勉強をします。

<UEFNの勉強>

先週の実装の続きを行います。

YouTube動画の作成>

動画を作成します。

2.DirectXの勉強

なし。

今週は勉強する時間を確保出来ません。

3.LandscapeのみのGameを作成する

なし。

今週は勉強する時間を確保出来ません。

4.Materialの勉強

今週はAdvanced Material SeriesのParallax Occlusion Optimization - Advanced Materials - Episode 15 [1]を勉強します。

4.1 Parallax Occlusion Optimization - Advanced Materials - Episode 15 [1]の勉強

まず全部見ます。

見ました。

このTutorialはUnityを使用して説明してUEは実装方法のみの解説でした。

Parallax Occlusionのやり方と言うよりかはParallax Occlusionを使用した時のOptimizationのやり方についての説明が主でした。

Parallax OcclusionのOptimizationは主に2つあり

  • CameraとLandscapeの角度
  • CameraとLandscapeの距離

によってOptimizationの仕方が変更されます。

Landscapeを垂直に眺める時はParallax Occlusionは要らないです。

しかしLandscapeを水平に眺める時にはParallax Occlusionを強力に働かせる必要があります。

同様にLandscapeの遠くの方にはParallax Occlusionは要らないですが、

Cameraから近い距離のLandscapeにはParallax Occlusionは必要になります。

Parallax Occlusionは非常に計算Costが掛かります。

これらを考慮する事でParallax Occlusionの計算Costを少しでも減らすようにします。

以下に具体的な内容をまとめます。

Parallax Occlusion Mappingノードです。

このNodeを使用する事でParallax Occlusionを追加する事が出来るようになります。

UEではこのNodeがMin StepとMax StepのInputが出来るようになっています。

それは、先程説明した

  • CameraとLandscapeの角度

によるParallax Occlusionの強度を自動で調節してくれるという事だそうです。

ので、UEではこの部分の実装はする必要はありません。

以下にその部分の実装を示しておきます。

これはParallax Occlusion Mappingノード内に実装されています。

距離によるParallax Occlusionの強度の実装は以下の様にやっていました。

この実装をMainノードのBase Colorに直接つなげると以下のような結果になります。

Cameraから遠い場所は黒く、Cameraから近い場所は白くなります。

これを以下の様にParallax Occlusion MappingノードのMax Stepに接続します。

白は1ですので32x1でMax Stepは32になります。黒は0ですのでMax Stepは32 x 0で0になります。

UEではParallax Occlusion MappingノードのStepについての解説が無いです。

これについてはUnityの解説をまとめておきます。

Stepは簡単に説明すると、Parallax Occlusionを作成するためのSample数です。

当然Sample数が多い方が精密なParallax Occlusionを作成する事が出来ますが、計算Costも上昇します。

Step数が128の場合です。

石の盛り上がりが非常に滑らかです。

今度はSteps(1)の数を5に減らしてみました。

結果です。

石がPancakeを重ねたような形状になってしまっています。

Screenshotでは分かりませんが、実際はこの積み重ねの数が5になっています。

つまりStepで指定した数です。

後は、Parallax Occlusion MappingのInput値やOutのつなぎ方とか、Parallax Occlusionに使用するHight MapはBlurの方が良い結果が出るので敢えてPixel数の小さいTextureを使用するとかの話もありました。

この辺は実装する時に確認します。

4.2 Parallax Occlusionについて

今回のTutorialはParallax Occlusionそのものを勉強すると言うよりかは、Parallax Occlusionの最適化を勉強しています。

のでここでParallax Occlusionそのものを調べる事にします。

Learn OpenGLParallax Mapping [2] に詳しい説明がありました。

これを勉強します。

かなり悩みましたが大体は分かりました。

いや絶対完璧に理解したとは言えませんが、大体はあっているはずです。

以下にまとめます。

まず以下の図です。

黄色の線が視線を表しています。

もしLandscapeが凸凹していた場合、視線とLandscapeはBの点で交わります。

ところが実際はLandscapeは平らなのでAの点で交わってしまいます。

これをBの地点で交わっている事に修正出来たら、この後TextureやNormal Mapなどの値をBから取得出来てLandscapeは凸凹しているように見せる事が出来ます。

のでAの点からBの地点を予測します。

どうやって予測するのかですが、以下の方法で予測します。

Aの点のHeight Mapの値を求めます。これはH(A)になります。

この値を先程の視線を表している黄色の線のVectorに掛けます。これがVector Pです。

その答えの位置は正確にはBの位置ではないですが、大体Bの位置の近くになります。

私の理解はこんな感じです。

大体は合っているはずです。

ただこの解釈だと図にあるH(P)が必要ないんです。のでまだ完璧ではないのかもしれません。

次の図です。

これは凹凸が急な場合は、この計算方法だとあまり正しくない事を示しています。

前の図でいう所のBの位置より一寸だけズレた位置をPは指していますが、Bの値とH(P)の値は全然違います。

これはBen Cloward先生のParallax Occlusion Optimization - Advanced Materials - Episode 15 [1]のHeight Mapのところで説明していた、「Blurの方が良い結果が出るので敢えてPixel数の小さいTextureを使用する。」の原因だと思われます。

次の図です。

実際のParallax Mapの計算ではHeight Mapの値を逆にしたDisplacement Mapが使用されるそうです。

この図はその場合の計算方法を示しています。

実際の視線とLandscapeの交わる点であるA点から凹凸がある場合の交わる場合であるB点を予測しています。

これは最初の図と同じです。

計算方法ですが、A点からH(A)の値を求めてその値と視線のVectorであるVをマイナス方向に掛けてVector Pの値を求めます。

Vectorの向きが逆になっているだけです。

次の図です。

Steep Parallax Mappingの計算方法を説明しています。

まずDisplacement Mapを0.2などの値で割って分割します。

視差とLandscapeが交わった点をT0とします。ここは原点なので値は0です。

このT0地点のDisplacement Mapの値は0.7です。

0.7は0より大きいので次の点を調べます。

VとLandscapeから0.2低い位置が交わる点を調べます。この点をT1とします。

T1のDisplacement Mapの値を調べます。1.0です。

1.0は0.2より大きいので次を調べます。

VとLandscapeから0.4低い位置が交わる点を調べます。この点をT2とします。

T2のDisplacement Mapの値を調べます。0.7です。

0.7は0.4より大きいので次を調べます。

VとLandscapeから0.6低い位置が交わる点を調べます。この点をT3とします。

T3のDisplacement Mapの値を調べます。0.4です。

0.4は0.6より小さいのでこの点が凹凸がある場合の交点になります。

うーん。

最後の部分は自信がないです。

Tutorialの説明読んでも今一理解出来ません。

もしかしたらT3のDisplacementの値を使って何かしてるのかもしれません。

ただこの0.2で割って最大5回値を調査すると言うのが、UEのParallax Occlusion MappingノードのStepの回数であるのは間違いないでしょう。

別にOpenGLで実装する訳ではないので、大体理解出来れば良いです。

最後の図です。

これがParallax Occlusion Mappingです。

計算方法は先程のSteep Parallax Mappingと大体同じです。

唯一違う点は、最後の値の決定方法でSteep Parallax MappingがT3の値を使用したのに対して、Parallax Occlusion MappingはH(T3)とH(T2)のInterpolationの値を使用するそうです。

それだけ理解しておけばUEでParallax Occlusion Mappingを使用するには十分でしょう。

以上です。

5.Niagaraの勉強

今週はCGHOW氏のWaterfall Scene in UE5.2 Niagara Tutorial [3]の実装の続きをおこないます。

5.1 Waterfall Scene in UE5.2 Niagara Tutorial [3]の続き

<Mistの生成>

NS_WaterfallをDuplicateします。

名前はNS_Mistにしました。

Render SectionにあるSprite Renderer ModuleのMaterialを変更します。

Tutorialで使用しているM_Smoke01は存在していません。

代わりにM_Smoke_subUVを使用します。

Sub Image Sizeの値も以下の様に変更しました。

Particle Spawn SectionにSub UV Animation Moduleを追加します。

Sprite RendererにSprite Rendererをセットします。

SubUV Animation ModeにRandomをセットします。

End Frame Range Overrideの値は私の場合は、8x8で64なので1を引いて63です。

のでDefaultの設定のままにしておきます。

Emitter Update SectionにあるSpawn Rate ModuleのSpawn Rateの値を50に戻します。

更にHemisphere Distributionの値を変更します。

Particle Spawn SectionにあるAdd Velocity Moduleの値も変更します。

Particle Spawn SectionにあるInitialize Particle Moduleの

Sprite Sizeの値も変更します。

結果です。

Particle Update SectionにあったGravity Force Moduleを消しました。

更にRender SectionにあるSprite Renderer ModuleのAlignmentの値も変更しました。

Particle Spawn SectionのInitialize Particle ModuleのLifetimeの値も変更しました。

Particle Update SectionにあるScale Color ModuleのAlphaの値を以下の様に設定しました。

Particle Spawn SectionのInitialize Particle ModuleのColorのAlphaの値を0.2に変更しました。

Particle Update SectionのDrag ModuleのDragの値を

に変更しました。

結果です。

Level上に配置しました。

なんか湯気と言うより煙の様です。

調整して直します。

最終的に以下の様になりました。

これで完成です。

以下にLevel Sequenceの映像を示します。

初めて作成した映像にしてはかなり良いと思います。

5.2 Level Sequencerの勉強

これからはUE5では映像作品を主力に作品を作成して行こうと思っています。のでLevel Sequenceについて少しだけ勉強します。

まずFrameなんですが、150で固定されています。

このFrameの数を変更したいです。

調べても分からなかったんですが、適当に以下の部分の赤線の値を変更したら

以下に示した様にTimelineのサイズが1350に変更しました。

そして赤いBarを1350の位置に移動させると

Frameの数が1350に変更出来ました。

30fpsなので45秒の撮影が出来るようになりました。

同様の方法でいくらでもFrameの数を増やせそうです。

GameではFPSの数は大きければ大きいほど良いという風潮がありますが、映像作品ではどうなんでしょうか?

調べます。

でした。

やっぱりGame業界のFPSが128以上ないと動きがSmoothにならないというのはかなり怪しいです。

勿論、一秒間に128回の計算をするのは良いと思いますが、それを全てRenderingする必要があるのかを問うています。

UE5でもNiagara Fluid SimulationではそれぞれのParticleの挙動は毎秒、何百回も計算しますが、その結果を全部Renderingして表示する事はありません。

Characterを操作するためのInputに対応するためのEventはそれこそ数百分の1秒単位で反応すべきでしょうが、それをRenderingで表示する必要はないと言う話です。

<Level SequencerのTutorialを探す>

以下のTutorialがありました。

最初のTutorialの最初の一分だけ見たんですが、かなり勉強になりそうです。

すこし古いTutorialなのでUE5でそのまま再現出来るのかは不明ですが、これを勉強する事にします。

ここで時間が無くなってしまいました。

このTutorialは来週勉強します。

6.戦闘システムの続きを作成する

戦闘システムは一応、先週で完成とします。

商業的に売れるめどが立った場合、もう少し磨いて見た目を良くする事にします。

現況はこれで完成です。

総集編は、来週以降やるかもしれません。

7.Gaeaの勉強

7.1 Geologyの勉強

今週はGeology 7 (Volcanoes)[4]を勉強します。

7.1.1 Geology 7 (Volcanoes)[4]の勉強

今週病院で待っている間に一回このTutorialを見て勉強しておきました。ので大体の内容は既に理解しています。

以下に内容をまとめます。

このLectureは章立てて分割していないので、Slide毎にまとめる事にします。

<What is a Volcano?>

VolcanologistとかIgneous Petrologistsとか全く聞いたことのない用語があります。

Volcanologistは火山学者、Igneous Petrologistの訳は見つかりませんでした。

敢えて訳したら火成岩岩石学者とでもなるのでしょうか?

それではこのSlideの解説を聞きます。

Volcanoの定義についての解説が主でした。

この定義だと火星にもVolcanoが存在するんでしょうか?

でも火星の地下にMagma Chamberがあるとは思えませんが。

<Mount St. Helens Versus Kilauea>

そもそもMount St Helensという山を聞いたことがありません。

有名な山なんでしょうか?

調べます。

WikipediaにあるMount St. Helens [5]を読むと

と書かれていました。

日本語ではセント・ヘレンズ山と言うみたいです。

1980年に大噴火して400mも短くなったそうです。

Lectureを見ました。

この大噴火の後でMount St. Helensの形状が大きく変化した事を強調していました。

確かに山の中央が陥没して大きな窪みが形成されています。

<Mount St. Helens Versus Kilauea Part 2>

Mount St. Helensが噴火した後の写真が載っています。

灰が凄いです。

こうやって地形って形成されるんですね。

<Mount St. Helens>

このSlideはMount St. Helensの実際の噴火の写真を集めたものだそうです。

別にここにまとめる内容じゃなかったんですが、あんまりにも面白い情報が載っていたのでそれについてまとめる事にしました。

左下に移っているGeologistであるDavid Johnson氏がこの山がいつ噴火してもおかしくないとずっと警告していたそうです。

それだけ聞くと、彼の忠告を聞いていたらこの災害の被害(59人が亡くなっている)のも防ぐ事が出来たかもと思い、やっぱり科学者の言う事は真剣に聞くべきと思いましたが、この話には続きがあります。

何とその警告を発しているDavid Johnson氏自身もこの噴火で亡くなっているそうです。

え。

この山が噴火するかもしれないと警告している人がこの噴火で死んじゃったの?

じゃ、本人は本当は信じてなかったって事?

本当の事情が分からないし、これ以上調べる気もありませんがなんか腑に落ちない話です。

のでこれも記録しておくことにしました。

<Mount St. Helens Versus Kilauea>

このSlideでやっと本題に入ります。

Volcanic EruptionはMount St. Helensのように激しいものばかりではなく、HawaiiのKilaueaのように静かにLavaを流しているCaseもあるそうです。

Mount St. Helensの噴火を見た後で、この写真を見るとそのあまりのおとなしいLavaの流れに衝撃を受けます。

ここからこの原因についての説明になります。

<The Nature of Volcanic Eruptions>

先週の勉強でMagmaの化学的な構成に色々な種類がある事を知りました。

その違いがMagmaの性質に違いをもたらす事について説明しています。

Mafic MagmaとFelsic Magmasについて解説しています。

ここで大切なのはこれらの化学的な構成から生まれる粘性でしょう。

<The Nature of Volcanic Eruptions>

やっぱりViscosityとVolcanic Eruptionの関係について説明しています。

粘性が高いVolcanic EruptionがHawaiiのKilaueaなんでしょうね。

ここではSilicaの量と粘性の関係に加えて、温度の変化や水の量による粘性の変化についての解説をしていました。

SlideのGraphの粘性の単位が指数になっているので、どれくらいの粘性の変化があるのか想像しにくいです。

Silica一番、温度二番、水は三番位の感覚で覚えておく事にします。

<Effusive v. Explosive eruptions>

なんとここでの説明によるとViscosityが低い方がEffusiveになると言っています。

さっきのHawaiiのゆっくりとしたLavaの流れはLow Velocityなんでしょうか?

なんか想像と逆です。

<The Nature of Volcanic Eruptions>

今度はMount St. Helensのような爆発的なEruptionです。

うーん。

こっちはViscosityが高いと言っています。

そうなのか。

なんか想像と逆です。

Magmaが水と接触するとPhreatic Eruptionを引き起こす。と書かれています。

これってMagmaに水をかけたらMagmaの活動が弱くなるのかどうかが長年の疑問だった私には非常に興味があります。

<Material Extruded During an Eruption>

このSlideを読むとMount St. Helensのような危ないEruptionは全体の1%位みたいです。

<Material Extruded During an Eruption Part 2>

これはLavaの内部の形状についての解説でした。

Aa FlowとPahoehoe Flowの2種類があり、これはAa Flowの解説です。

私がテレビとかで見た事のあるLavaはこれです。

次のSlideです。

こっちはPahoehoe Flowについてです。

こっちは見た事ないです。

<Columnar Jointing>

幾らなんでもこの形状は本当に特別な場合だろう。と思ってColumnar Jointingを検索したら

こんなに沢山の例が出て来ました。

GaeaにもこのNodeが有った気がしたんですが、確認したらなかったです。

次のSlideです。

これはLava Tubesについてです。

Lavaが作るTunnelです。

次のSlideです。

Pillow Lavaについてです。

Basaltic lava(粘度が低いやつ)が水に触れる事で生成される形状だそうです。

次のSlideです。

Block Lavaです。

Blockのような形状が形成されています。

こっちは粘度が高いLavaから出来るそうです。

次のSlideです。

今度はEruptionで出て来るGasの話です。

Volatilesと呼ぶそうです。

次のSlideです。

発生したGasとLavaが干渉しあう事で、Pyroclastic Materialが生成されるそうです。ここで説明されている砂や石がそれに当たるそうです。

次のSlideです。

これはGasがLavaの内部で閉じ込められた状態で冷却され、軽石となった例です。

PumiceとScoriaの2つが紹介されていました。

<Anatomy of a Volcano>

今度はVolcanoの形状についてです。

ここで解説されている用語で図に乗っているのはConduitとVentだけですね。

とりあえずLectureを聞いてみます。

なんとこの図を見ただけだとVolcanoの本当の構造は理解出来ないのでこれらの用語も説明するそうです。

次のSlideです。

更に用語が追加されました。

この辺は図や写真で見ないと何の事がよく分かりません。

後のSlideで説明される事を期待して次のSlideに行きます。

<Shield Volcanoes>

なんと今度は別のTypeのVolcanoを勉強します。

これはLavaが川のように流れるやつです。

粘性の低いLavaによって形成されるそうです。

次のSlideです。

Shield Volcanoの例としてHawaiiのKilaueaが紹介されていました。

ここで時間が無くなったので今週のGeologyの勉強はここまでです。

残りは来週勉強します。

7.1.2 Geology 7 (Volcanoes)[4]の勉強した感想

Lectureに表示されているSlideを読んで話を聞いているだけですが、それなりに理解出来ています。

かなり精錬されたLectureだったみたいです。

この調子ならGeologyの基礎はこのLectureを見るだけで理解出来そうです。

焦っても勉強が早く進む事はありません。

のでじっくりゆっくり勉強していきます。

7.2 GaeaのTutorialの作成

7.2.1 先週の復習

先週はConstantノードを使用して単色で色を塗る方法

とData GroupのSlopeノードをMaskとして使用する事で2色で色を塗る方法

を説明しました。

今週はSlope以外のData GroupをMaskとして使用した場合について解説します。

7.2.2 Slope以外のData GroupのNodeをMaskとして使用する

これですね。

これらのNodeの機能については既に2023-05-01のBlog2023-05-08のBlogで検証しているのでそれを参考にして作成します。

更に今週は以下のTerrainを使用する事にしました。

このTerrainはGaeaのTemplateから適当に生成しただけです。

以下の様に色付けしました。

勿論、先週の実装と同じやり方で色付けしています。

ではSlopeノードの代わりにAngleノードを使用してみましょう。

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

とりあえずAngleノードのParameterはDefault値のままにしておきます。

結果です。

はい。

ここで皆さん、何か気が付きませんか?

Slopeノードの時と違ってTerrainの色がかなりRandomに分割されています。

分かり易いようにMaskの状態を以下に示します。

Angleノードの場合です。

Slopeノードの場合です。

このAngleノードのようにかなりRandomにTerrainをMaskするNodeにはColor GroupにあるSat Mapノードと併用する事で別な目的に使用します。

それで色々考えたんですがこの別な目的を先に説明した方が後の解説がしやすいので、それを先にします。

<Sat Mapノードの使用方法>

これは最初から実装方法を見せます。

以下の様に実装します。

これよく見ると今までの実装方法とよく似ています。

しかしその解説の前に結果をお見せします。

凄くRealになっていると皆さん感じると思います。

この理由ですが、実は色を単色ではなくSat Mapノードを使用して

こういう配色や

こういう配色で

塗っています。

このように今まで一色で塗っていた箇所を、似た色かつ沢山の種類の色で塗るとものすごくRealになります。

ここで似た色かつ沢山の種類の色を提供するのがSat Mapノードになります。

そしてこのNodeに0と1の値を提供するためのNodeがAngleノードになります。

分かり易いように以下の実装でもう一度説明します。

Flowノードの結果です。

あ、ここはAngleノードを使用すべきでした。

直します。

結果です。

これの以下の部分の結果だけ見せます。

これです。

これだけでもかなりRealに見えます。

これはAngleノードの以下の結果に

Sat Mapノードで以下の色付けを行っただけです。

0つまり黒の部分が左端の色、1つまり白の部分が右端の色そして中間の灰色はその値に応じてその間の色が使用されています。

このように、今まで一色で塗っていた箇所を、似た色かつ沢山の種類の色で塗るとものすごくRealになります。

それをAngleノードとSat Mapノードで実現しています。

これが2つ目のData GroupのNodeの使用方法です。

以下に簡単に説明します。

Colorの実装は以下の様になっています。

ここでは①に示したSlopeノードのようにTerrainをその形状の違いに沿って大きく2つに分割するためのMaskと、②に示したAngleノードのようにTerrainをRandomに細かく分割するためのMaskの2つを使用しています。

この①のMaskはSlopeのようにきっぱり2つに分割するために使用します。

そして②のMaskは単に見た目をRealにするために使用します。

どちらもMaskですのでData GroupのNodeが使用されます。

7.2.3 ①の用途で使用するNodeを紹介する

これでやっと最初に戻れます。

ここで使用するNodeはある条件でTerrainを大きく2つに分割出来るNodeが使用されます。

代表的なNodeを紹介します。

<Height>

Heightノードです。

このNodeは高さによってMaskを掛けます。

Default値における結果です。

先程の実装と同じ色付けをしてみましょう。

こっちの方がSlopeノードを使用した場合よりよりRealな感じに仕上がっていますね。

Flowノードを使用した場合です。

DefaultのMaskです。

結果です。

うーん。

分かりにくいかもしれません。

ここは以下の様にConstantノードを使用して説明した方が分かり易いかもしれませんね。

因みにConstantノードを使用した場合の結果です。

うーん。

こっちも分かりにくいか。

今週はここまでにして一寸考えます。

8.Houdiniの勉強

今週もHoudiniの勉強は少しだけお休みしてFree Time Coder氏のUnreal PCG Tutorial [10]を勉強します。

8.1 Unreal 5.2 Preview PCG Tutorial - Part 4 – Subgraphs [6]を勉強する

軽く全部見ます。

このTutorialで何をしているのか分かりました。PCG内で別のPCGを呼び出して使用出来るようにしています。

これをSubgraphというそうです。

このTutorialでは前のTutorialで作成したSplineとScatterのPCGの実装を改良して別のPCG内で使用出来るようにしていました。

以下に具体的な手順をまとめます。

新しいPCGを作成しました。

名前はPCG_Subgraphです。

これを開き、前に作成したPCGであるPCG_SplineとPCG_Scatterを追加します。

PCG_Splineからです。

実装の最後にOutputを繋ぎました。

PCG_Subgraphに戻ります。

PCG_SplineにDensity Noiseノードを繋ぎ可視化します。

PCG_SubgraphをLevel上に配置して以下の様にSplineを配置します。

Closed LoopにCheckを入れます。

結果です。

PCG_Splineと同じような結果を作成する事が出来ました。

更にDensity_Filterノードを

以下の条件で

追加しました。

結果です。

PCG_SplineをNodeとして他のPCG内で使用出来るようになりました。

今度はPCG_Scatterが他のPCG内でNodeとして使用出来るように改良します。

PCG_Scatterを開きます。

まず以下のDebug Drawingを解除します。

そして以下の赤線で囲った部分を消します。

この部分はPointを生成しています。

PointはInputで外で生成したPointを使用しますのでこれらのNodeは要らなくなるわけです。

更にその次のNodeであるTransform Pointsも消します。

このTransform PointsノードはPassされたPointの位置や角度をRandomに変更しています。

この機能も要らないです。

以下の様になりました。

PCG_Subgraphを開き以下の様にPCG_Scatterノードを追加しました。

結果です。

出来ません。

PCGから生成されたNodeにDebug Modeを使用して可視化しても駄目な場合が多いそうです。

のでこのNodeに別なNodeを繋げてそれにDebug Modeを使用してPointを可視化します。

そのためにPCG_Scatterをまた開いて、

以下の様にOutputノードを実装の最後に追加します。

そしてDensity Noiseノードを追加します。

追加したDensity NoiseノードをDebug Modeにします。

結果です。

Splineの中に生成されたPointの周りにScatterが沢山のPointsを生成していました。

これで完成です。

ここからは応用例を示しています。

Path Splineを追加したらPath Splineに沿ってPointsが消えるようにします。

PCG_Splineを開きます。

Outputノードを選択し

Custom PinsにRoadMaskを追加します。

更にAllow TypesにPointsを選択します。

Bound ModifierノードのOutをOutputノードのRoadMaskに繋ぎます。

結果です。

同様の事をPCG_Scatterにも行います。

PCG_Scatterを開き、Inputノードを選択します。

Custom Pinに新しいPinを追加します。

名前はMaskで、Allows TypesにPointsを追加します。

実装の一番最後で、Outputノードの手前にDifferenceノードを追加します。

このDifferenceノードのDifferenceに先程作成したInputノードのMaskの結果を繋げます。

これで完成です。

Testします。

PCG_Scatterから生成されたPointsはPathの中でも生成されています。

出来ていません。

Codeを調べました。

PCG_SplineノードのRoadMaskの結果をPCG_ScatterノードのMaskに繋ぐのを忘れていました。

直しました。

改めてTestします。

今度は出来ています。

以上でした。

実装は来週試します。

9.UEFNの勉強

今週も Unreal Editor for Fortnite Beginner Tutorial - UEFN Starter Course! [7]の実装の続きをやっていきます。

9.1 先週の復習

先週は木を追加して終わりました。

正直、作成していてかなり酔いました。

2023-05-15のBlog Unreal Editor for Fortnite Beginner Tutorial - UEFN Starter Course! [7]の内容がまとめれています。それを参考にして次の作業を行います。

9.2  Unreal Editor for Fortnite Beginner Tutorial - UEFN Starter Course! [7]の実装の続き

<Trees and Foliageの続き>

Time of Dayを使用して

夜にしました。

朝焼けです。

特に直す必要のあるところは無いです。

次に行きます。

<Devices>

今度は実際にこのLandscapeでFortniteをPlayしてみます。

しかし今の状態ではSpawnする場所が海底のままです。

先にSpawnする場所を直します。

Player Spawnerを消して、新しいPlayer Spawnerを以下の位置にセットしました。

更にDefaultの床も消しました。

Launch Sessionを押しました。

5分ぐらいかかりました普通にGameが始まりました。

滝の前に来ました。

私が作成した滝はこんなにしょぼいの。

なんかSize感が間違っていました。

以下に表示されている編集Modeの使用方法が分かりません。

Log Houseの中に入ってみました。

Double Spaceで空を飛んで移動出来ます。

滝の下に隙間が空いていました。

ここに落ちると抜け出られません。

こういうのを直しても良いんですが、今週は次のDeviceを先にやる事にします。

Item Granterを追加します。

Level上に配置しました。

Item Granterの設定を以下のようにします。

これでPlayしたら銃が使用出来るようになったはずです。

試してみます。

普通に銃を持ってGameをPlay出来ました。

以下の表示に1とあったので

1を押したら銃を構えました。

Mouseの左Clickで銃を撃ちます。

Log Houseの中でモノを撃ったら破壊出来ました。

これだけ出来たら今週のUEFNの勉強は十分です。

ここで終わりにします。

10.YouTube動画の作成

共和党が崩壊する可能性の動画を撮り直した。

かなりの質です。

来週からYouTubeの動画も週一で作成する事にします。

11.まとめと感想

来週は三カ月に一回の休みの週です。

のでBlogはお休みします。

そして7月からは今年の後半戦に入ります。ので勉強する内容を絞りこみ成果の高い分野に集中する事にします。

12.参照(Reference)

[1] Ben Cloward. (2023, February 16). Parallax Occlusion Optimization - Advanced Materials - Episode 15 [Video]. YouTube. https://www.youtube.com/watch?v=8hThP-Yni_o

[2] LearnOpenGL - Parallax Mapping. (n.d.). https://learnopengl.com/Advanced-Lighting/Parallax-Mapping

[3] CGHOW. (2023, May 17). Waterfall Scene in UE5.2 Niagara Tutorial | Download Files [Video]. YouTube. https://www.youtube.com/watch?v=IwEmx04MZyM

[4] Earth and Space Sciences X. (2022, November 13). Geology 7 (Volcanoes) [Video]. YouTube. https://www.youtube.com/watch?v=gX4CQ-d9V7Y

[5] Wikipedia contributors. (2023). Mount St. Helens. Wikipedia. https://en.wikipedia.org/wiki/Mount_St._Helens

[6] FreetimeCoder. (2023, March 27). Unreal 5.2 Preview PCG Tutorial - Part 4 - Subgraphs [Video]. YouTube. https://www.youtube.com/watch?v=9T8KvzJ07oQ

[7] Fortnite Sensei. (2023, March 31). Unreal Editor for Fortnite Beginner Tutorial - UEFN Starter Course! [Video]. YouTube. https://www.youtube.com/watch?v=0CcoOq963O8