UE4の勉強記録

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

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

今月はファイル利用量が少ししか残っていないので、Upload出来ない部分は来月上げます。

1. 今週の予定

以下の内容を勉強する予定です。

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

以下の2つを行います。

  • Water Systemを含むMapをPackagingしてみる。
  • Water Systemの水際のオカシイ所を直す。

Niagaraの勉強>

今週は久しぶりにCGHOW氏のTutorialを勉強します。

<Materialの勉強>

以下の2つのTutorialで使用されているTextureをGIMPを使用して作成します。

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

先週見つけたBugを直します。

<Gaeaの勉強>

Andrea Cantelli氏のGaea Tutorial for Beginners #3 | Layer Based Workflow [3]のToolboxの最後の三本線のIconとSettingを勉強します。

<Houdiniの勉強>

今週も公式のTutorialであるFOUNDATIONS | OVERVIEW [4]のView Toolsの続きを勉強します。

<Volumetric Cloudの勉強>

先週見つけたGIMPで作成した2枚のTextureを使用してPhotorealisticな雲を作成する方法をまとめる。

DirectXの勉強>

Olympus Mons Tutorials氏のC++ DirectX 12 Game Engine - [S01E02] - Refining Our Window [5]のAdding Our Icon Fileを勉強します。

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

2.1 Water Systemを追加したMapをPackagingしてみる

2023-01-08のBlogの「5. 戦闘システムの続きを作成する」でPackagingをしています。このやり方を参考にしてPackagingしてみます。

まず、使用しているLevelを把握します。

これです。

Game ModeとかGame InstanceはDefaultのままです。

次にBuild All Levelをしたら

HLODがどうたらこうたらと言うBoxが現れました。

よく分からないのでBuild HLODsを押しました。

次にProject Settingsを開いてMap&Modeの以下の部分の設定を変更します。

次はPackagingの設定を変更します。

Advanced Settingで以下の設定を変更します。

Support Platformの以下の設定を変更します。

Platform-> Windows -> Packaging Projectを選択します。

Packagingが始まりました。

また20分位かかると思うので気長に待ちます。

終わりました。

特にErrorとかは表示されていませんね。

出来てるっぽいです。

Exeを開いてみます。

Third Person Playerの生成される位置を指定していなかったので空から落っこちてしましました。

Landscapeの何も確認出来ませんでした。

Player StartをLevel上に配置しました。

もう一回Packagingします。

出来ました。

Exe.fileを開いてみます。

普通に歩けます。

海もありました。

川は無いです。

湖もありました。

ないのは川だけです。

Googleでこの問題の解決方法を探しましたが出て来ませんでした。

Chat GPTで質問もしてみました。

うーん。

まあここで述べられている事が原因である可能性もZeroではないかもしれません。

Sundar Pichai氏が「AIの発明は人類にとって火の発明と同じ位のImpactを与えるようになる。火は賢い人達には恩恵を与えたが、そうでない人には災害を与えた。AIも同じ結果をもたらす。」と言っていたのを思い出しました。

まだChat GPTをどうやって使用したら恩恵を得られるのかが分かりません。

火を起こす方法を発見した初期の人類だって、凄く賢い人と凄く愚かな人の間に位置する普通の人たちは、火を起こしてキャッキャ言って終わっていたはずです。

今の私と一緒です。凄く賢い人が有効な利用方法を発見したら、それを真似て使用する事にします。

Chat GPTはこれからじっくり研究してどう使用するのか決める事にします。

Water Body RiverそのものがPackaging出来ないのか、このWater Body Riverの設定の何かが問題でこのWater Body RiverだけがPackaging出来ないのかを知りたいです。

以下のようなDefaultのWater Body Riverを追加しました。

これでPackagingしてみます。

後、Packagingした後で、Gameを止めやすくするために以下の実装をLevel BPに追加しました。

これでPackagingしてTestします。

やっぱりWater Body RiverそのものがPackagingされないみたいです。

Pを押したらGameが終了しました。

Quit GameはExe.fileでも正常に作用しています。

しかし、先週3D酔いしながら作成した川がPackagingしたFileでは全く反映されないとは。

頑張って作成した努力が無に帰る様を、また体験してしまいました。

ただ被害を最小にとどめる事が出来たので、今週、Testして本当に良かったです。

うーん。

でもFortniteだと以下に示した様に普通に川があるみたいですね。

どうやらPackageした場合でもWater Body Riverを表示する方法はあるみたいですね。

Water Body RiverをPackagingした後でも表示する方法はこれからの情報待ちですね。

それまでWater Body River の使用はPendingします。

こっちを使用しようかな?

別なMapを作成してこっちも試してみます。

2.2 UIWS-Unified Interactive Water Systemで川を作成してPackagingしてみる

以下に示した様に新しいMapを作成し

ここにUIWS-Unified Interactive Water Systemで川を作成します。

と言ってもUIWSの使い方はもう忘れてしまいました。

調べます。

2021-03-28のBlogで勉強していました。

このBlogを読むとYouTubeにあるTutorialで勉強した。とだけ書いてあり具体的なTutorialの名前は書いていませんでした。

YouTubeで検索してみました。

うーん。

一個を除いて全部2年以上前に作成されたものです。

流石に公式からWater Systemが提供された後で、あえて別の方法で水を作成する酔狂な人はいないって事でしょうね。

でも逆に言うと誰もPackagingまで試していない。とも言えます。

ExperimentalなPluginを製品にまでつぎ込むのは躊躇しますし、UIWSは今でももう少し注目されても良い気がします。

一か月前に作成された#UE5 - Unified Interactive Water System (UIWS) - Plugin testing #1 [6]を見てみます。

淡々と説明していますが、この通りやったら出来そうです。

UIWS water bodyを追加しています。

しました。

Tutorialを見たら50倍にしていました。

50倍だとLandscape全体をCover出来るので以下の様にLandscape全体に配置しました。

Tutorialの説明通り水に入る事は出来ません。

UIWS water bodyを開いて以下の設定を変更しました。

水の中に入れる様になりました。

この後、UIWS Water Managerを追加するんですが、その目的があんまりはっきりしません。

多分ですが、このCharacterが水に入った時に水しぶきを上げる機能を追加するためだと思うんですが、その辺は不明です。

兎に角、Tutorial通りにやってみます。

Water Managerを作成して

Level上に配置しました。

そしてThird Person Character BPを開き

ComponentにUIWS Interactorを追加します。

今度はMeshを選択して以下の部分の設定を変更しました。

結果です。

あ、分かりました。

水紋が発生しています。

UIWS Water Managerを追加して上記の設定を行う事で水紋が発生するようになりました。

この後はActorを水とInteractさせるために色々やっていますがそれはまた後で勉強します。

今度は川を追加します。

しました。

川の設定はまた後でするとして、このLevelのPackagingを試してみます。

Build Lighting OnlyとBuild Everythingを行い、Packagingの設定でMy Landscape 3の所をMy Landscape 4に変更しました。

Packagingしました。

Packagingしている間、World PartitionでUnloadされているActorをLoadする方法でも調べます。

分かりました。

と言うか前と同じやり方で出来ました。

以下に示した様にWorld Partitionを選択してLoadしたいActorをBoxで囲みます。

Load Region From Selectionを選択します。

すると以下に示した様に今まで表示されていなかったUIWS Riverが

表示されるようになりました。

公式のForumのUe5 world partition: how to make an actor always visible [7]には違うやり方が書かれていますね。

まあ、目的によって使い分ければ良いでしょう。

Packagingが出来ました。

Exe fileを開きます。

川は普通にありました。

水面も普通に出来ています。

うーん。

出来ました。

だたしUIWSのWater BodyはUnrealのWater Systemと比較するとかなりしょぼいです。

うーん。どうしましょう。

2.3 UIWS-Unified Interactive Water Systemで川を作成して海と湖はUnreal 付属のWater Systemで作成してPackagingしてみる

折衷案でこれで行きます。

まず新しいMapを作成して

LandscapeをImportしました。

ここにUnrealのWater Systemから追加していきます。

Water Body Oceanを追加しました。

Water Body Lakeも追加しました。

ここで一回PackagingしてきちんとWater Body OceanとWater Body Lakeが製品版でも動いているのを確認します。

出来ていました。

ここにUIWSのRiverを追加します。

そしてPackagingします。

Exe Fileを開きました。

はい。川も追加出来るようになりました。

以下の様にScriptでLandscapeを削って川を追加します。

2時間以上かけて川を調整してやっと以下の様になりました。

それでも川が浮いていてとても実用に耐えられるLevelではないです。

ここから2つの選択肢があります。

  • コツコツとこの川の変な箇所をSculptを使用して直す。
  • 革命的な方法で一気に川のオカシイ箇所を直す

どう考えったって2番目を選択するしかないです。

Niagara Fluid Simulationを代わりに使用します。

これしかないでしょう。

2.4 Constant Emissionを勉強する

3D Liquid Constant EmissionをLandscape用のProjectにMigrateさせて

Level上に配置しました。

しかし何も起きません。

うーん。

3D Liquid Constant Emissionを開いて確認します。

Compile Errorが起きていました。

Content Examples内では普通に動いていましたが、何が問題なんでしょうか?

理由が分かりました。

Niagara FluidsのPluginをセットしていませんでした。

再起動してもう一度試してみます。

ダメですね。

このTemplateからNiagara Systemを作成して

Landscapeと干渉するのか試してみます。

LandscapeにCollideしています。

これを使用して代用します。

まずサイズを10倍にする必要があります。

確かRender Bucket氏のTutorialでサイズの変更方法を教えていたはずです。

調べます。

Unreal Engine 5 Tutorial - Niagara Fluids & Characters/Skeletal Mesh Collisions [8] でした。

ここにUser Parameterにある以下のParameterを使用してSimulationしているBoxのサイズを変更する方法が載っていました。

先程のLandscapeに配置したNSのこれらのParameterを見ると以下の様になっていました。

取りあえず倍にしてみます。

更にBoundaryも表示するようにしてWater Heightの位置も変更しました。

まだ全然小さいです。

色々工夫して以下の様にまでしました。

全然、水に見えません。

これは時間がある時に検証する事にします。

今回は川は無しにします。

来週からLandscape用のMaterialを作成します。

Help Please Error Packaging Project [9]に

と書かれていました。

これを試すのに1分もかからないので最後にこれだけ試してみます。

ダメでした。

3.Niagaraの勉強

3.1 今週勉強するTutorialを決める

RenderBucket氏のNiagara Fluid SimulationのTutorialは全部勉強してしまったので、Niagara Fluid Simulationの勉強は少しお休みします。

今週は久しぶりにCGHOW氏のTutorialの勉強をする事にしました。

見ると何個も面白そうなTutorialが並んでいました。

とか

Bakeの仕方の復習になりますね。

とか

とかです。

CGHOW氏のEffectは発光が多用されていて、暗いところでははっきり見えるけど明るい所だとどうなの?という疑問がありました。

それが最近は黒を使用するようになっています。

CGHOW氏のEffectはまだまだ進化し続けています。

これもです。

何と、前にCGHOW氏のTutorialを勉強したのは5カ月も前になっていました。

決めました。

Dripping in Unreal Engine 5.1 Niagara Tutorial | Download Files [10]を勉強します。

まず黒いからです。

黒いEffectが無い事がCGHOW氏の弱点であったと個人的には思っていたので、それを克服したって事でしょう。

非常に興味があります。

後、実装するにしてもTextureの黒って、Material内で透明とみなされる箇所が幾つもあったと思います。

その辺をどうやって克服したのかも知りたいです。

3.2 Dripping in Unreal Engine 5.1 Niagara Tutorial | Download Files [10]を勉強します

軽く全部一回見ました。

何と言うか、久しぶりなので見ていて緊張します。

いきなりDynamic Parameterを使用したりとかしていて、視聴者のLevelを6カ月前よりも高く設定しているようにも思えました。

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

CGHOW氏はTutorialの内容をそれぞれの章で分割しないんですね。

私が勝手に分割してまとめます。

<Intro>(0.00~)

このTutorialで作成するEffectの紹介です。

<Textureの作成>(0.45~)

地面に映す滴の画像をPhotoshopで作成しています。

以下にその手順を簡単にまとめます。

Gridを表示して中心に点を付けます。

この後の手順は別に絶対従わないといけないと言う訳ではなくて、最終的な結果が同じになれば良いはずです。

ので途中経過だけ記録しておきます。

ボカシを使用して中心のまわりにも点を作成します。

四方に大きな点を配置してその間に小さい点を配置しているのがPointですね。

その点を以下に示した様に線で囲みます。

あれ、何でしょうか?

急にこの素人っぽい絵になってしまいました。

今度はその中を白で塗りつぶします。

うーん。

幼稚園児にでも教えている感じですが、Effectを作成する人達というか、もっと大きくProgrammerって絵を描くのが非常に下手な人達が多いのでこういう解説が必要なんでしょうね。

微調整をした後でLevelを使用してImageをShapeにします。

ふぁっ!

こういうTechnologyをサクッと使用する所が油断出来ないです。

素人臭かったImageが一気にプロが作成したかのようなImageになりました。

最終的には以下のようなImageになりました。

様はこういうImageを作成すれば良いんです。

実装する時は自分のやり方で作成します。

<Materialの作成>(5.25~)

TextureをImportしてMaterialを作成します。

こんな感じです。

まずこのTextureをOpacityに繋げます。

こんな結果になります。

これって黒い部分は黒として表示されるんでしょうか?

黒い部分って透明になると思うんですが。

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

今度はRadial Gradient ExponentialノードとNoiseを加算する事で

と思ったらササっと以下のような実装に変更してしまいました。

Radial Gradient ExponentialノードのOne MinusとNoiseを加算してそこからDebug Time Sineノードを使用して-1から1の間の値を引いています。

結果です。

時間によって変化しています。

あんまり滴って感じはしませんね。

次の実装です。

Debug Time Sineノードを使用していた箇所をDynamic Parameterノードに変更しました。

前のCGHOW氏のTutorialだったらこの部分をConstantで一回作成してそれを交換する事で、学習者に理解し易くしていたんですが、今回はいきなりです。

この結果と先程のTextureの結果を乗算します。

急にPreviewに表示される結果が滴のようになりました。

NoiseにTexCoord[0]を追加します。

これ結果がどう変わるのか想像つかないですね。

Niagara Systemの作成>(7.45~)

いつものFountainをTemplateに追加してNiagara Systemを作成しました。

さあここでNSの作成をするのかと思ったらなんと、Drip用のMaterialの作成を始めています。

今更章を分割するのも一貫性がなくなるのでDrip用のMaterialの作成はここにまとめる事にします。

<<Drip用のMaterialの作成>>

以下の実装を作成しました。

「<Materialの作成>(5.25~)」で作成したMaterialにColorを追加するのを忘れていたのでそれを直します。

<<9.42~>>

ここからNiagara Effectの作成が始まります。

Fountain Emitter StackのParticle Spawn SectionにあるAdd Velocity Moduleを消します。

EffectがDrippingになりました。

これはParticleに加えられていた速度が無くなったので当然です。

Render SectionのSprite Renderer Moduleを選択し、

Materialに先程作成したm_dripをセットします。

以下の様に変化しました。

これはTextureそのものが表示されているんでしょうか?

Textureの透明な部分が消えていないようです。

Particle Spawn SectionのInitialize Particleノードを選択して

Colorを黒に指定します。

これColorを黒に指定していますが、Alphaの値は1のままです。

こうやって黒を表現するのか。

納得です。

ただし結果はまだなにも変わっていません。

次はParticle Update Sectionにある

Scale Color Moduleを選択して

OpacityのScaleを10倍にします。

結果です。

ここで初めてTextureの端が消えて滴のようになりました。

これはどういう事が起きたのでしょうか?

Opacityの値を十倍にしたらTextureにあった薄い影が濃くなって黒く表示されるようになったのか、あるいはその逆で薄い影は白くなって表示されなくなったのか?

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

Particle Spawn SectionにあるSphere Location Moduleを消します。

結果です。

Particleが生成される箇所が一点に変更されたので、蛇口からたれる滴のような形状になりました。

更にRender SectionにあるSprite Renderer Moduleの

AlignmentをVelocity Alignedに変更します。

これはVelocityに向かってTextureを揃えると言う意味なはずです。

これしたらTextureが後ろや横から見られてしまうんじゃないの?

よく分からない設定ですね。

実装する時、確認します。

結果です。

滴の形状がベル型に変わっていますね。

これが欲しくてこの設定にしたんでしょうか?

またParticle Spawn SectionのInitialize Particle Moduleに戻って

Mass ModeとSprite Size MinそしてSprite Size Maxの値を以下の様に変更します。

うーん。

Mass Modeがどのような影響をEffectに与えるのか良く分かりません。

結果です。

これだけじゃ何も分からないですね。

Spriteのサイズが変更されているのかも不明です。

Emitter Update SectionのSpawn Rate Moduleの

Spawn Rate SectionのSpawn Rateの値を20に変更します。

以下のような結果になりました。

うーん。

近づいたImageを見ると

Spriteの形状が、滴の形になっています。

これを作成するための設定だったのかもしれませんね。

うーん。

速すぎる。

久しぶりにCGHOW氏のTutorialを勉強しましたが、その説明の速さにびっくりです。

よくCGHOW氏のTutorialを勉強して全く再現出来ないと文句を言う人達がいますが、そういう人達はこういう箇所をSkipしてしまうか聞き逃しているんだと思います。

CGHOW氏のTutorialを理解するためには、何度も見直して、何をしているのかを確認する必要があるんです。

この勉強方法は、一見遠回りの様に思えますが、実はそれが理解への最短距離なんです。

ここまででEffectの滴の形状の作成が終わりました。

今度は地面にCollideする所のEffectを作成します。

<<滴が地面にCollideするための実装の追加>>

Particle Update SectionにCollision Moduleを追加し

以下の箇所を0に変更しました。

このModuleは使った事が無いですね。これで地面とCollideする事になるんでしょうか?

Previewに表示される結果も

こんなのになってしまっています。

あ、分かりました。これParticleがSpawnしているのが原点なんです。

原点からSpawnして原点でCollideしています。

となると次にやる事はParticleがSpawnする位置をもっと高い位置に変更する事です。

はい。

Particle Spawn SectionのInitialize Particle Moduleを選択し

Position OffsetのZの値を200にします。

結果です。

地面と言うか原点にCollideするようになりました。

このEmitter Stackの名前をDripに変更しました。

あ、これはEventを使用する準備をしているはずです。

Eventで滴が衝突した位置を次のEmitterにPassして何かやるのでしょう。

Particle Update SectionにGenerate Collision Event Moduleを追加しました。

やっぱし。

EmitterのPropertiesを選択し

Request Persistent IDをEnableします。

そしてDrip Emitter StackをDuplicateして新しいEmitterを作成します。

名前はSplatterとしていました。

まずParticle Update Sectionにある

CollisionとGenerate Collision Event Moduleを消します。

こっちのEmitter StackはDrip Emitter Stackが発したEventの信号を受け取ってEmitterを発動する方なので、Eventを発するための上記の2つのModuleは要らない訳です。

次はRender SectionにあるSprite Renderer Moduleの

Materialの設定をSplatter_Matに変更します。

これは「<Materialの作成>(5.25~)」で作成したMaterialです。

そしてParticle Update SectionにあるGravity Force ModuleやDrag Module、そしてScale Color Moduleを消します。

Emitter Update SectionのSpawn Rate Moduleも消しました。

このEmitterがParticleを発生するタイミングはEventが支持するのでSpawn Rate Moduleは要らない訳です。

Propertiesの+Stageを押してEvent Handler Sectionを追加します。

以下の様になりました。

Event Handler SectionのEvent Handler PropertiesのSource にDripとCollision Eventを選択し

Spawn Numberに1をセットします。

Spawn Numberが何を指しているのか不明ですね。

あ、一個のParticleに対して何個のParticleを生成するのかだ。

次はParticle Update SectionにDynamic Material Parameters Moduleを追加します。

以下の値をセットしていました。

Dissolveに-1は分かりますが、Tileに1をセットするなら無くても同じ気がします。

後から値を変えるのでしょうか?

Render SectionにあるSprite Renderer Moduleの

Alignmentの値をUnalignedに変更します。

これってSpriteの面がカメラに向かってAlignしている事を管理しているんじゃないんでしょうか?

何を管理しているParameterなのか実装する時にしっかり確認します。

Particle Spawn SectionにあるInitialize Particle Moduleにある

以下のParameterの値を変更しました。

結果です。

SpriteがCameraに向かって正面を向いています。

Spriteは常に地面と平行でないといけません。

直します。

Render SectionにあるSprite Renderer Moduleの

AlignmentをCustom Alignmentに変更して

Facing ModeをCustom Facing Vectorにします。

そしてParticle Spawn SectionにAlign Sprite to Mesh Orientation Moduleを追加します。

Error表示が出ていますね。

Mesh Orientationのxの値を0にしてzの値を1にします。

そしてFix Issueを使用してErrorを直します。

結果です。

SplatterのEffectの向きが地面と平行になりました。

やっぱし、Sprite Renderer ModuleのAlignmentはSpriteの面の向きを管理していましたね。

その後の実装が複雑でよく分からない箇所がありますね。

Align Sprite to Mesh Orientation Moduleの言うMeshってどのMeshの事なんでしょうか?

そういうのが全然分かりませんね。

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

次にEvent Handler SectionのEvent Handler Propertiesにある

Dissolveの値を以下の様にFloat from Curveに変更して

Curveの値を-1~1に設定しました。

更にParticle Update SectionにScale Sprite Size Moduleを追加し

0.2の時に1になるようにセットします。

Tutorialのこれは0の時に1になっているCurveも見えるんですが、何なんでしょうこれ?

Tutorialではこの後SplatterのSpriteが消えてしまって、色々値を弄って直しています。

この辺は何をやっているのか分からないのでSkipしておきます。

その結果以下の様になりました。

Drip EmitterのSpawn Rateを1にしてSplatterのImageがDissolveしているのかを確認しています。

このDissolveが何を指しているのか今一不明瞭ですが、地面に生成されたSplatterのImageが次のSplatterが地面に当たった時には消滅している事だと解釈しました。

Particle Update SectionにあるDynamic Material Parameter Moduleの

Dissolveの値を色々弄っています。

しかしSplatterは消えません。

SplatterのMaterialをCheckしています。

0.7の時にはほとんど消えています。

もう一度Particle Update SectionにあるDynamic Material Parameter ModuleのDissolveの戻って

Dissolveの1.0の時のKey Dataを確認すると0になっていました。

成程ね。

いつもは0~1の間だから-1~0の設定が正しく見えてしまったんです。

-1~1に変えたら以下の様になりました。

SplatterのEffectが一枚だけ表示されています。

ここでTileの値をRandomizeしました。

これならTileの値をDynamic Material Parameterにした事に納得できます。

結果です。

Drip EmitterのSpawn Rateを上げたらSplatterのImageが消える前に次のSplatterが生成されていますね。

SplatterがDissolveするっていうのはSplatterのParticleが消える時にSplatterのImageも消えるって事かもしれません。

今度は色々な場所にDripするようにします。

最初、ダメな例としてBox Locationを使用する方法を紹介していますが、

この部分の記録はSkipします。

新たにFountainのTemplateを使用したEmitter Stackを追加します。

名前をSourceに変更します。

Particle Spawn SectionのAdd Velocity Moduleを消します。

Shape Location Moduleの設定を以下の様に変更します。

さらにその後でTransformにあるOffsetのZの値を200に変更しました。

Source Emitter単独の結果は以下の様になりました。

うーん。よく分からん。

この部分の機能については実装する時に調べます。

そしてParticle Update SectionにあるGravity Force Moduleを消します。

これ本当に一瞬の事で、Frameにして3しかありません。

Emitter Update SectionのSpawn Rateの

Spawn Rateを5.0に下げます。

そしてParticle Update SectionのDragとScale Color Moduleを消します。

こんな結果になります。

このParticleからDripするようにします。

Particle Spawn SectionのShape Location Moduleの

Box Sizeを200に変更して

Source Emitterの設定は終わりです。

今度はDrip Emitterです。

まずEmitter Update SectionのSpawn Rateを消します。

そしてSpawn Particle From Other Emitter Moduleを追加しました。

これってParticle Attribute Readerを実装したModuleなんでしょうか?

新しいModuleですよね。5.1から実装されたんでしょうか?

Emitter NameにSourceをセットしてFix issueを押しました。

結果です。

これってBoxを使用した時と変わってない気がしますが?

今度はDrippingのSizeを変えるそうです。

Source EmitterのParticle Spawn SectionのInitialize Particle Moduleの

Sprite AttributesのSprite Size ModeをRandom Uniformに変更して

Uniform Sprite Size MinimumとUniform Sprite Size Maximumの値を変更します。

へー。

Source EmitterのSpriteのSizeを変えるとDrippingのサイズも変わるのか。

Spawn Particle From Other Emitter Moduleは凄いですね。

と思ったら、DripのEmitterのParticle Spawn SectionのSpawn Particle From Other Emitter Moduleの

Sprite Size Samplingの設定をApply to Attributeに変更していました。

うーん。

まあ、これぐらいの設定変更は必要でしょう。

しかしこれだけだと以下に示した様に

DripのSizeは一瞬で元に戻ってしまいます。

そこで今度はParticle Update SectionにScale Sprite Size by Speed Moduleを追加します。

何故、Speedなの?

Speedは全部のParticleで一定じゃないの?

Yの値を変更しています。

確かにDripの大きさが変化しました。

これは理屈が分からない。

SpeedとScaleに相関関係があるんでしょうか?

この後、Splatter EmitterのSpriteのSizeとLifeもRandomにしています。

まあこの辺はおまけですね。

結果です。

Tutorialではこの後も微調整していますが、まとめの記録はこの辺で終わりにします。

実装は来週やる事にします。

あ、後一個だけ大切な事していました。

CollideしたDripを消すためにKill Particle ModuleをParticle Update Sectionに追加しています。

設定も以下の様に変更しています。

以下の様になりました。

更にこの後微調整をして

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

これでやっと終わりです。

3.3 Dripping in Unreal Engine 5.1 Niagara Tutorial | Download Files [10]を勉強した感想

久しぶりにCGHOW氏のTutorialを勉強しましたが、兎に角、内容が濃い。

下手すると1秒間に3つ位の事をやっています。

今回の勉強も最後の方は結構力尽きてしまってかなりの内容を記録しませんでした。

このTutorialの実装は来週やる事にします。

今週のNiagaraの勉強はここまでにします。

4.Materialの勉強

4.1 Tutorialで使用されているTextureをGIMPを使用して作成します。

<Sparkling Snow Shader - Advanced Materials - Episode 2 [1]>

まずTutorialの最初を見直してどんなTextureからどんなTextureを作成したのかを確認します。

2023-01-08のBlogでこの部分を勉強していますが、今見直したらかなりAboutなまとめ方をしていて参考にはなりませんでした。

もう一回以下にまとめ直します。

まず4kのTextureをQuixel Mega ScansからDownloadしています。

私も同じTextureをDownloadしたはずです。

ありました。

Fresh_Windswept_Snow_uhpjdeynと言う名前でした。

ここで確認しておかないといけないのはT_FreshWindsweptSnow_uhpjdeyn_4K_ORDpで、このTextureには

  • R=Ambient Occlusion
  • G=Roughness
  • B =Displacement

のDataが入っています。

この中で使用するのはAmbient OcclusionとRoughnessだけです。

そして作成した新しいTextureは以下の2つです。

1024 pixelのTextureが一枚、512 pixelのTextureが一枚です。

1024 pixelのTextureには、

  • RとG = 先程の4kを1kに収縮したNormal Map
  • B = 先程の4kを1kに収縮したAmbient Occlusion
  • Alpha =先程の4kを1kに収縮したRoughness

が入っています。

そして512 pixelのTextureには

  • RとG = 先程の4kの一部で、細部を示したNormal Map

が入っています。

こちらのBとAlphaには何が入っているのかは不明です。

後、Roughnessの値を反転させたりNormal MapのGの値を反転させたりしていますが、これらはUnrealで使用する分には全くやる必要は無いです。

Roughnessの値を反転させる必要が無いのはTutorialの説明通りですのでここで再度説明する事はしません。

UnrealではTexture EditorでGreen ChannelをFlipする機能がついていて

この機能はNormal Map用のTextureに限らず全てのTextureで使用可能です。

敢えてTexture作成時にGの値を反転させてよく分からないBugが発生する可能性を高めるよりUnrealのEditor内で適切に対応して、Bugが発生する可能性を0にした方が効率が良いです。

先週、GIMPを使用する事でImageをRGBAのLayerに分割する方法と、その分割したLayerを新たなRGBAのLayerとして使用して新たなImageを作成する事を達成しました。

しかしGIMPを使用して4KのImageを1kに縮小する方法と、4KのImageの一部を切り取って512KのImageとして保存する方法は分かりませんでした。

Medi Bangを使用すれば、4KのImageを1kに縮小する方法と、4KのImageの一部を切り取って512KのImageとして保存する事は出来ます。が一応GIMPでも同じ事が出来るのか調べてみます。

まず4kのImageを1kに縮小する方法について調べました。

Chat GPTで質問した結果です。

Google検索もしました。

How to Change Image Resolution Using GIMP [11]にやり方が載っていました。

ここのやり方はImage からPrint Sizeを選択しています。

まずは、Chat GPTのやり方を試してみます。

簡単に出来ました。

もう簡単すぎてもう一方の方法を試す気が失せました。

今度は4kのImageの一部を切り取って512のImageに張り付ける方法です。

Chat GPTに質問しました。

あ、はい。

分かりました。

こっちは途中まではその通りにやったんですが、Enter keyを押しても選択した外側が消える事は無かったです。

選択した箇所をCopyして別に作成した512x512のLayerに張り付けました。

まあ出来たのでOKとしましょう。

今度は先程作成した1kのNormal Mapと1kのORDpを組み合わせて、

  • RとG = 先程の4kを1kに収縮したNormal Map
  • B = 先程の4kを1kに収縮したAmbient Occlusion
  • Alpha =先程の4kを1kに収縮したRoughness

を持つTextureを作成します。

まず1kのNormal1 Mapを分割して以下のようなRed Green Blue のLayerを作成しました。

1kのORDpも同様に分割して以下のようなRed Green Blue AlphaのLayerを作成しました。

このRedとGreenのLayerを先程の1kのNormalを分割したImageに追加します。

その前にこのLayerの名前を変えます。

出来ました。

これを合成して一枚のImageに戻します。

以下の条件で合成しました。

出来ました。

Unreal EngineにImportしました。

Normal Mapとしてでは無く普通のTextureとしてImportしました。

512Kの方はNormal MapとしてImportした方が良かったかもしれません。

開いて確認します。

まず1kから確認します。

Imageはこんな感じでした。

SRGBをDisableしました。

Flip Green ChannelをEnableしました。

後は設定で変更する必要はないと思います。

RのImageです。

GのImageです。

BのImageです。

最後にAlphaのImageです。

RoughnessのImageは完全な白になってしまいました。

これは元々のImageがほとんど白だったのでしょうがないですね。

512KのNormal Mapも見てみます。

こっちもsRGBをDisableして、Flip Green ChannelをEnableしました。

Tutorialと全く同じTextureを作成する事が出来ました。

一応、Textureの設定だけTutorialで確認しておきます。

512のNormal MapはNormal MapとしてImportされているみたいです。

やり直します。

しました。

Compression Settingsの設定がTutorialと同じNormalmap(DXT5…)になっています。

1kの方はDefaultになっています。

これもTutorialと同じです。

両方ともsRGBはDisableになっています。

これもTutorialと同じです。

Flip Green Channelは両方ともEnableになっていてこの部分はTutorialとは違う設定になっていますが、この理由は前に書いた通りです。

<Rock Shader - Advanced Materials - Episode 3 [2]>

2023-01-15のBlogでTextureについての詳しいまとめをしていました。

それによると

を行えば良いだけみたいです。

じゃあ、これを作成します。

まず元のTextureをCopyして以下のTextureをDuplicateしました。

この中からT_RockMesh_N_meとT_RockMesh_M_meをExportします。

Asset Action -> Exportです。

あれ、今回は何もしなくてもPNGでExportされています。

GIMPから開きます。

それぞれのRGBをLayerとしてDecomposeしました。

T_RockMesh_N_meの結果です。

Red、GreenにはNormal MapのImageが入っています。

Blueには

が入っています。2023-01-15のBlogではT_RockMesh_NのAlpha ChannelにRoughnessのDataが入っていると言っていますが、Blue Channelの間違いみたいですね。

Tutorialを見直したら分かりました。

Color TextureのAlphaにRoughnessを追加した。と言っています。つまりT_RockMesh_NのNormal MapのBに入っていたRoughnessのDataをColor TextureのAlphaに移したんです。

更に言うとColor Textureの色を明るくしてPBR向きに加工したとも言っていました。

2023-01-15のBlogのTextureのまとめは間違っていますね。

以下のが正しいTextureです。

  • Color Texture:RGB = 薄くしたColor Texture、Alpha = Roughness
  • Normal Texture: RGB=Normal Texture、Alpha = Ambient Occlusion
  • Macro Detail = RockをScale upした時にDetailを失わないようにするためのTexture
  • Micro Detail =近づいたときにDetailを失わないようにするためのTexture

Macro DetailとMicro Detailの説明ですが具体的な条件がよく分かりません。

以下に示したTextureをMicro Detail

以下に示したTextureをMacro Detailとして

使用しています。

これらに近いTextureを探して使用します。

Sizeに関しては何も言っていないので元々のSizeである2048 pixelのままで行います。

まず簡単なMacro Detail用とMicro Detail用のTextureを探す事から始めます。

Quixel Bridgeから似たようなTextureを探して来ました。

T_Cracked_Nordic_Coastal_Rocks_uknhaapmw_1K_Nです。

Detail用のTextureなので1kでDownloadしました。

取りあえずはこれで試す事にします。

Microの方はこっちです。

T_Lichen_Covered_Rock_ujlkbfclw_1K_Nを使用する事にしました。

これも仮決定で試してあんまり良くなかったら別なTextureを探す事にします。

次はColor用のTextureの作成を行います。

T_Rock_Basalt_DをDuplicateしたT_Rock_Basalt_D_meを使用します。

まずこれをExportしてGIMPに読み込ませ、色を薄くします。

GIMPに読み込ませたら以下のような表示になっています。

何これ?

まあ良いです。これのBrightnessを上げて色を白くします。

やり方が分かりません。Chat GPTに聞く事にします。

質問の英語の文法が一寸おかしいですね。

Tell me how to increase the whiteness of a gray image using GIMP.

が正しい英語ですね。

でも意味を理解して答えてくれています。

Chat GPT凄い!

最初の説明通りにやってみました。

が変化がGIMP上からでは分かりません。

こんなImageになっています。

仕方ないのでPNGで保存して開いて見ました。

になりました。

薄くなっていますね。

残りのRGBの操作はやり方は同じなので結果だけ示します。

最終的に以下の2つのTextureになりました。

Rock_Color_CRです。

RGBには以下に示したようなImageが入っています。

Alphaには以下のRoughnessのImageが入っています。

このImageはTutorialが使用しているRoughnessのImageと微妙に違います。

違いますがこれでまず試してそれから考えます。

Rock_Normal_NOの方です。

Textureの設定ですが、BにAmbient OcclusionがあるのでNormal MapとしてはImportしませんでした。

のでFormatはDXT1になっています。

更に以下の設定を変更しました。

RGにはNormal Mapがはいっていますが、Bには以下に示したAmbient OcclusionのDataが入っています。

これでTextureは完成しました。

来週は、Rock Shader - Advanced Materials - Episode 3 [2]の実装を行います。

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

先週、Animationを追加するに当たって以下のBugを発見しました。

  • 順番がオカシイ
  • セリフが足りない
  • Monsterが死んだときのAnimationがない

これらのBugを直す事にします。

しかしその前に先週追加したAnimationがPackagingした後でもきちんと作動するのかの確認を行います。

5.1 Packagingした後でもAnimationがしっかり動くのかを確認する

前にPackagingした時の設定が残っているはずです。

そのままPackagingしました。

Stage6まで戦いましたがAnimationは普通に動きました。

Packagingしても問題なくPlay出来ています。

しかしそれとは別に2つのBugが更に見つかりました。

Monsterを選択してDragしてツボの前でDropする前にDragを話すと、二度とこのMonsterをDragする事が出来なくなりました。

これは結構、重大なBugです。

これはEditorではない問題でPackagingしたExe Fileにだけ起きました。

Stage 2とStage 4がMonsterの登場するPatternが同じでした。

こっちは調べたら元々そういう設定でした。

5.2 Drag and Dropの問題を検証する

UMG Drag Drop Not Working - 4.20 (Packaged / Standalone) [12]に解答らしきものが載っていました。

これって

の実装の以下に示したCreate Drag Drop Operationノードの

PayloadにパスしているSelfをImageに変更しろ。って事でしょうか?

試しに以下の様に変えてみました。

解答だとPayloadだけ変えるみたいに書かれていましたが、Default Drag VisualがImageじゃない方が変な気がするんで、両方変えてみました。

まずEditor上でテストしてみます。

この設定だとMonsterをセットする事が出来ませんでした。

以下の四角のWidgetを調べたら

W_DropToというWidgetでした。

このWidgetの実装を見ると以下に示した様にWidgetをパスしないと先に進まないようになっていました。

公式のCreating Drag and Drop UI [13]を見ると

Payloadには何もPassしていません。

これを真似て

Payloadには何もPassしないで、

W_DropToではDrag VisualからWidgetをpassするようにしました。

これでTestしてみます。

まずはEditor上です。

問題なく動いています。

Dragを途中で止めても最初のImageからDragすればもう一回Dragする事が可能です。

今度はこれをPackagingします。

Exe Fileでテストします。

ダメでした。

Dragを途中で止めると二度とImageからDrage出来なくなります。

Stand aloneでも同様の問題が起きていました。

もう以下の実装に戻ってImageだけPassしてみます。

これだとPackagingした後のExe FileでもDragが何回も出来る事は出来ました。

うーん。ただしImageしかPass出来ないとその後が続きません。

そこで次の案を考えました。

やり直しButtonを追加して

DragしたImageを途中で落としてしまった場合、このWidgetを殺して新しく作成し直します。

以下の実装で出来るはずです。

試してみます。

取りあえずStand Aloneで試してみました。

何回でも試す事が出来ます。

この方法で直す事にします。

やり直しButtonを新たに追加するのは画面が汚くなるので以下の様に決定Buttonに追加しました。

更に決定Buttonの実装を以下の様に改造してツボにMonsterが入っていないときにWidgetを読み直す事にしました。

テストします。

まずはStand Aloneでテストします。

ここでDragに失敗します。

もうMonsterをDragする事が出来なくなりました。

決定又はやり直しButtonを押します。

するとWidgetが新しくなってまた最初からMonsterをDragする事が出来るようになりました。

今度はMonsterをセットする事が出来ました。

そのままGameを継続してPlayする事が可能になりました。

今度はPackagingで試してみます。

Stand Aloneと全く同じで出来ました。

これで解決とします。

5.3 順番がオカシイ

先週のBlogを読み直すと以下の様に書かれていました。

これを

  1. Dialogueが表示
  2. Animationが発動
  3. UIの値が変化

に直すべき。と述べています。

どこで実装されているのか調べました。

Level BPにあるPlayer Monster Attackで実装されていました。

Playerの魔法に関してですが、Dialogueの表示とUIの値を変化させるのを以下のFunctionで一括でやっているので直すが大変です。

こっちは後回しにします。

Monsterの攻撃では以下に示した様に

Dialogueの表示を①で行い、UIの値の変更を②で行い、Animationを③で行っています。

のでこの②の部分を③の後に移動して後はDelayの時間を調整すれば順番が正しくなると思います。

試してみます。

以下の様に実装を変更しました。

Dialogueの表示を①の部分で行うのは同じです。

Animationを②で行います。

最後にUIの値を③で行います。

これでTestしてみます。

UIが変化するのがAnimationが終わるよりかなり先です。

あれ、Monsterが攻撃するAnimationが一番最後になってしまいました。

ああ、UIの値を変化させているだけと思っていたMonster Attack()関数の中にAttack Animation()関数が入っていました。

出来ました。

以下に変更した点をまとめます。

Monster Attack()関数内にあったAttack Animation()関数は外しました。

まずDialogueを表示します。

1秒待ちます。

PlayerのMonsterの攻撃Animationを表示します。

1秒待ちます。

対戦相手のMonsterのDamageのAnimationを表示します。

又1秒待ちます。

PlayerのMonsterのAnimationをIdle時のAnimationに戻します。

対戦相手のMonsterのAnimationをIdle時のAnimationに戻します。

1秒待ちます。

UIを変更します。

これで

  1. Dialogueが表示
  2. Animationが発動
  3. UIの値が変化

の順番になりました。

それでここからが問題なのですが、これは左翼に配置されているMonsterで、これと全く同じ事を中央に配置されているMonsterと右翼に配置されているMonsterの実装に対して行う必要があります。

更に対戦相手のMonsterに対しても同様にやる必要があります。

つまりこれから同じ事を後5回繰り返す必要があります。

そんなのはこの部分を関数化したら良いだけだと思ったらDelayを使用した場合は関数化出来ません。

今週はこの実装を整理するのが目的ではないのこの同じ実装が後5回繰り返されている箇所をそれぞれ同じ様に直しますが、後でもっと効率的な、少なくとも可読性が高くなるような実装を考えます。

一時間位掛けて直しました。

確認します。

出来ていました。

ここでAnimationで見せられないのが残念です。

  1. Dialogueが表示
  2. Animationが発動
  3. UIの値が変化

の順番でMonsterが攻撃しています。

魔術師の順番は来週直す事にしました。

流石にこれはもう飽きました。

5.4 セリフが足りない

短いので先週のCommentをそのまま載せてしまいますが、

だそうです。

以下の様に直しました。

まず結果から示します。

回復魔法を使用した場合です。

強化魔法を使用した場合です。

交換魔法を使用した場合です。

実装部分です。

Combat Level BP内のPlayer Monster Attack Event内に以下に示したDialogue After Magic()関数を

追加しました。

Dialogue After Magic()関数の実装です。

今週の戦闘システムの勉強はここまでにします。

残りのBugは来週直す事にします。

6.Gaeaの勉強

今週もAndrea Cantelli氏のGaea Tutorial for Beginnersを勉強します。今週はGaea Tutorial for Beginners #5 | Creating the shape of our first terrain [14]を勉強します。

6.1 Blogを見直して前に勉強した内容を復習する

見直すと2022-11-202022-11-28のBlogで勉強しています。

それぞれのBlogの内容を読み直してみます。

2022-11-20

文句が沢山書かれていました。その理由ですが、

  • あまりに退屈
  • Versionが古いので無駄な勉強が多い
  • 正解が無い事に対して勉強している

まあこれを勉強したらどうなるのかの先が見えないと退屈になります。

それは兎も角、無駄な勉強が多いと、正解が無い事に対して勉強している。という2つの結論に関しては今から見ると間違っていますね。

Nodeの作成に関して言えば新しいVersionもそんなに差はないです。更に言うとこのTutorialを勉強した後から自分で、Gaeaを使ってそれなりのTerrainを作成出来るようになりました。

つまり凄い効果が有ったTutorialだったんです。

TerrainをNodeを使って作成する方法に正解は無いというのは一見正しい意見です。

しかし条件をつければ(例えば写真そっくりなTerrainを作成するとか、UEで使用するためのTerrainを作成するとか)いくらでも正解は有ります。

後、この時はまだ気が付いていませんが、それぞれのNodeはある機能を体現しています。その機能のTypeから機能を群に分割する事が出来ます。そしてGaeaでTerrainを作成する時は、ここではこの群から選択しないといけない位の緩い制約は常にあってそういう意味でもTerrainをNodeを使って作成する方法にはある程度の正解はあります。

まあ、でも不満を述べるという事は、それだけ真剣に勉強しているという事でもあるのでそれはそれで良いでしょう。

それぞれの章に対しての勉強した内容や感想がまとめられていました。

以下にそれを更に簡潔にまとめます。

<<Intro>>

本当かよ。

これは要確認です。

<<Primitives>>

そうだったけ?

それより、NodeでTerrainを作成する時は、必ずPrimitiveから始める必要がある事について一言も書いていません。

<<Edges>>

Apertureノードについてまとめてありました。

Apertureノードそのものの勉強も大切ですが、ここはEdgesとしての章です。Primitive型のNodeを使用した後で、Edge型のNodeを使用するのが一般的なNodeの使用方法なのかが知りたいです。

それについてはここでは何も書かれていませんでした。今回の勉強でそれは確認します。

<<Erosion>>

Primitive -> Edge -> Erosionの順番で作成するのが一般的なやり方なのかの解説が無いです。

しかもErosionを使用するまでにWarpノードやSwirlノードを使用したりしていて何を目的にNodeを組んでいるのかとか、どんな順序でNodeを組むべきなのかとかが全部無茶苦茶になっています。

この部分だけを見ると、

  • 正解が無い事に対して勉強している

という2022-11-20のBlogの批判もそれなりに的を得ています。

この辺は私が自分でTutorialを作成する時に改善すべき課題として認識する事にします。

ここまでで終わっていて残りは次の週に勉強しているみたいです。

感想としては、文句ばっかり書いたけどそれなりにGaeaの理解が進んだ。とまとめていました。

2022-11-28

<<Changing Parameters>>

ここでParameterの調整を行っています。

この期に及んでParameterの調整をするのか?と最初から怒っています。

それはそれで納得できる不満ではあります。

しかしParameterについても勉強する必要があり、何処かで教える必要はあります。それでこのTutorialはここにブッコんだんでしょう。

それも仕方のない事ではあります。

後重要な事でLookDev群の使用方法についての説明がまとめられていました。

私、今思いついたんですが、以下のような手順で作成すべきかもしれません。

  1. Primitive-> Edge -> Surfaceで簡単なTerrainを作成する
  2. 噴火や隕石の落下のような大災害が起きた。(SwirlノードやWarpノードを使用してTerrainを半壊させる)
  3. 時間が経って新たな地層が追加される。(ErosionなどでTerrainをMildにする。必要ならParameterの調整もここで行う)
  4. Terrainの表面の見た目を良くする(LookDevなどを使用)
  5. 川や湖などの追加

これは自分のTutorialを作成する時のIdeaとして保存しておきます。

<<Adding Breakers>>

Breakerノードについて説明しています。

そもそもBreakerノード自体を既に忘れてしまっています。何をするNodeなんでしょう。

Terrainに亀裂を追加するNodeでした。

<<Other Changes>>

Parameterの調整とかです。

<<Adding a Primitive>>

この期に及んでPrimitiveを追加するのかと思いますが追加しています。

山の周りの平なTerrainの部分に凸凹を追加するための行っているようです。

ここでBypass Nodeと言う機能を初めて学んだので、それについてまとめていました。

この後にある以下の章はSkipされています。

  • Creating the Mountain Ridges
  • Combining Notes
  • Adding Turrets
  • Bypass fits

これらの章は今回しっかり勉強する事にします。

<<Micro Erosion>>

この間にもいろいろな短い章があるんですが、全部無視して最後のMicro Erosionだけまとめられています。

Micro ErosionというNodeがあり、そのNodeを使用した結果が載っているだけでした。

以上でした。

2022-11-202022-11-28のBlogの感想>

GaeaのNodeの作成方法にある秩序を見出す事が出来るTutorialとしてGaea Tutorial for Beginners #5 | Creating the shape of our first terrain [14]は貴重なTutorialである事が分かりました。

しかしGaeaのNodeを作成するための順序を完璧に整理しているとは全然言えない状態でもあります。

このTutorialを勉強した後で、このTutorialの骨子を整理し、それを改良して自分でTerrainを作成するための順序を作成する必要があります。

6.2 Gaea Tutorial for Beginners #5 | Creating the shape of our first terrain [14]を勉強します

前回どんな事を勉強したのかは大体理解しました。それを踏まえてもう一回、このTutorialを勉強します。

<Intro>

IntroのLightの設定の勉強は特にする必要はない。と前回の勉強でまとめていましたが、今回も同じ感想でした。

Lightの設定を弄る事で何が変わるのかがよく分かりません。弄っても弄らなくても同じに見えます。

<Primitives>

NodeでTerrainを作成する時に、最初にセットするNodeです。

Primitiveに属するNodeでも簡単に使用できるNodeとある程度Gaeaの仕組みを理解しないと使用出来ないNodeがあるそうです。

これは納得の説明で、更にPrimitiveには最後の方で平なTerrainを凸凹にするために使用するのもあります。

このPrimitiveの中でダントツし簡単に使用出来るNodeがMountainです。

このTutorialはこのMountainノードを使用してTerrainを作成します。

PrimitiveのどのNodeは簡単に使用出来て、どのNodeはある程度Gaeaを理解しないと使用出来ないのか、とか後で地面の平を調整するために必要なNodeとかを一寸だけ分類したいと思います。

Gaeaを起動して検証します。

まずPrimitivesに分類されているNodeは全部ある程度理解してから使用するNodeです。

次にGeo Primitivesを見てみます。

<<簡単に使用できるNode>>

Canyon、Fault、Hill、Mountainの4つしかありませんでした。

<<簡単には使用出来ないNode>>

Island、Shiny Wavesです。

<<後で平な地面に凸凹を追加する時に使用するNode>>

Badlands、Crater、Dunes、Igneous、Plates、Range、Ridge、Rocky、Sand、Slump、そしてWorse landsです。

<<感想>>

こうやって分類するとそれぞれのNodeの特徴が理解し易いです。

初心者が最初に使用出来るNodeはたったの4つしかない事も判明しました。

この4つのNodeから選択すると成るとMountainしかChoiceが無いです。

だからGaeaのTutorialはどれもMountainノードを使用しているのか。というかなりメタ的な事情も理解出来ます。

この分類はやっていて面白いだけでなく役にも立ちます。

PrimitiveのNodeも分類してみます。

<<簡単に使用できるNode>>

なし。

正し以下のNodeは条件を追加する事で簡単に使用出来る可能性がある。

Gradient、Slop Noise、Voronoi、Voronoi+

<<簡単には使用出来ないNode>>

Constant、Cracks、Files、Gabor、Line Noise、Mask、Resource、Tile Input。

ConstantやMaskの様に単独では使用出来ないNodeや、FilesやResourceの様にどうやって使用したら良いのか全く見当がつかないNodeがあります。

<<後で平な地面に凸凹を追加する時に使用するNode>>

Drift Noise、Multi-Functional、Perline、Rock Noise。

これらのNodeは地面に凹凸を作成するのにかなり役に立ちそうです。

<<感想>>

地面の凹凸の作成には使用出来そうなNodeがそれなりにありました。

Tutorialの続きに戻ります。

Mountainノードを追加した後、Displaceノードを繋げています。

このDisplaceノードは

Warp群に配置されています。がどんな機能なのか不明です。

調べます。

公式のQuadspinnerのDisplace [14]に以下の説明がありました。

これはつまり表面を加工するためのNodeですね。

TutorialではこのNodeのParameterの使用方法についての詳しい説明がされていました。公式のQuadspinnerのDisplace [14]にはこのNodeのParameterに関する更に詳しい解説が載っていました。

今回の勉強ではDisplaceノードがTerrainの表面を加工するNodeだと理解出来ただけで十分です。

もうGaeaの勉強に使える時間が無くなってしまったので今週のGaeaの勉強はここまでにします。

以下に示した残りの章は来週以降に勉強します。

<Edges>

<Erosion>

<Changing Parameters>

<Adding Breakers>

<Other Changes>

<Adding a Primitive>

<Creating the Mountain Ridges>

<Combining Notes>

<Adding Turrets>

<Bypass fits>

<Micro Erosion>

ここでファイル利用量が99%になってしまいました。

残りは2月になったら掲載します。

11.参照(Reference)

[1] Ben Cloward. (2022, October 6). Sparkling Snow Shader - Advanced Materials - Episode 2 [Video]. YouTube. https://www.youtube.com/watch?v=TCz-fKJS3wI

[2] Ben Cloward. (2022b, October 13). Rock Shader - Advanced Materials - Episode 3 [Video]. YouTube. https://www.youtube.com/watch?v=Q2XI8cuSBMk

[3] Andrea Cantelli. (2020c, May 26). Gaea Tutorial for Beginners #3 | Layer Based Workflow. YouTube. https://www.youtube.com/watch?v=XxfSOvpTA90

[4] Magee, R. (n.d.). Foundations | Overview | SideFX. https://www.sidefx.com/tutorials/foundations-overview/

[5] OlympusMonsTutorials. (2021, March 3). C++ DirectX 12 Game Engine - [S01E02] - Refining Our Window [Video]. YouTube. https://www.youtube.com/watch?v=rWylZKi8QbM

[6] Yepkoo. (2022, November 27). #UE5 - Unified Interactive Water System (UIWS) - Plugin testing #1 [Video]. YouTube. https://www.youtube.com/watch?v=jLSkboBRwlg

[7] Ue5 world partition: how to make an actor always visible. (2022, April 15). Epic Developer Community Forums. https://forums.unrealengine.com/t/ue5-world-partition-how-to-make-an-actor-alway-visible/529348

[8] renderBucket. (2022b, September 12). Unreal Engine 5 Tutorial - Niagara Fluids & Characters/Skeletal Mesh Collisions [Video]. YouTube. https://www.youtube.com/watch?v=oAYkob_ciqc

[9] Help Please Error Packaging Project. (2022b, November 19). Epic Developer Community Forums. https://forums.unrealengine.com/t/help-please-error-packaging-project/693911/7

[10] CGHOW. (2022, December 11). Dripping in Unreal Engine 5.1 Niagara Tutorial | Download Files [Video]. YouTube. https://www.youtube.com/watch?v=5rgn7T4FAFI

[11] Research Guides: All About Images: Home. (n.d.). https://guides.lib.umich.edu/c.php?g=282942

[12] UMG Drag Drop Not Working - 4.20 (Packaged / Standalone). (2018, August 15). Epic Developer Community Forums. https://forums.unrealengine.com/t/umg-drag-drop-not-working-4-20-packaged-standalone/431658

[13] Creating Drag and Drop UI. (n.d.). https://docs.unrealengine.com/5.1/en-US/creating-drag-and-drop-ui-in-unreal-engine/

[14] Displace - Gaea Documentation - QuadSpinner. (n.d.). QuadSpinner Gaea Documentation. https://docs.quadspinner.com/Reference/Warps/Displace.html

[15] Houdini. (2020, April 13). Color SOP | Node Reference. YouTube. https://www.youtube.com/watch?v=5KK06YTZgzo