UE4の勉強記録

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

「Unreal Engine 4.xを使用してRPGを作成する」の足りない部分を作成する RPGのStoryの作成と推敲 2

<前文>

<世界はどうなるのか?>

残念ながらRussiaのUkraineへの侵略はRussiaの勝利で終わる可能性が出て来ました。

そしてRussiaが勝利した時、侵略したもん勝ちを世界が認めた訳で、中国が台湾への侵攻をしない理由も無くなります。中国が台湾に侵攻するのも時間の問題でしょう。

何で中国が台湾に侵略するんだ。と怒る人もいるかもしれませんが、中国からすれば台湾企業の持つ最先端の半導体の製造技術をタダで手に入れられる訳で侵攻する価値は十分あります。

韓国がこれから中国やロシア、日本やアメリカと渡り合う為には核兵器が必要だけど、絶対にアメリカが開発させてくれないので、北朝鮮に開発させて、統一朝鮮に戻った時に、アジアにおける核保有の大国として存在しようとするのと一緒です。台湾に開発させて中国に取り組む訳です。

そして私が危惧しているのはその時にRussiaが北海道に侵略する事です。

これは私の100%想像ですがRussiaとUSには何か日本に関しての密約みたいなものがある気がします。その中にRussiaに対しては北海道を侵略した場合に限り日米安保の発動はしない。みたいな取り決めがあるような気がしています。何か北海道にだけ米軍基地がなくて三沢という本土の最北端にあえて基地があるのがオカシイく感じるんです。

で、Russiaが北海道に侵略した時に、日本って国は色んな意味で崩壊すると思うんです。

戦後日本は、アホになる事で庶民は幸せを手に入れられると言う幻想によって成り立っています。大ヒットしたマンガの主人公はおバカさんばかりです。真剣に自分の人生を考えてこのままじゃ駄目だ。何て考えるマンガやドラマそしてゲームの主人公は一人もいません。というかそう言う事を考えないでボっとしていると絶対ありえないLuckyが起きて成功したりする話ばっかしです。

これは、日本の支配階級が彼らの犯した戦争犯罪を日本人自らによって裁かれるのを恐れた結果、日本人に対してバカでいる事を望んだ結果だったのですが、その洗脳にあえて乗る事が日本の庶民にとっては正解だったってのもあります。

こういう戦後日本を支配した幻想も崩壊すると思います。

そして日本が崩壊した時に最も重要となる技術が2つあると私は思っています。それは英語とProgrammingです。英語も大学受験のテストが出来ると言うのでは無く、聞き取れる、喋れる、書ける。と言った実践的な英語です。Programmingはまあ何でも出来れば良いと思います。

何故、この二つの技術が最も大切になるかというと、この2つの技術は個人の能力と直結しているからと社会の変化に影響されにくいからです。

数学がどんなに出来る人がいてもその人個人で何かが達成出来るのかと言うと結構考えさせられると思います。電気や機械なども同じです。どんなに個人が凄くでもその人単独で出来る事は限られています。巨大な組織の歯車として役に立つしか無くなります。そしてその組織の中に一個でも壊れたパーツがあったらその壊れたパーツのせいで成果は0になってしまいます。

法律や会計などの文系の専門職は、個人の能力だけで出来ますが、社会が混乱期に突入したら法律や会計なんて誰も守らなくなる可能性は高いです。戦後の混乱期に誰も法律守らなかったのと一緒です。

英語とProgrammingはかなりの部分が個人の能力だけで出来るんです。その人が優秀だったら良い比率が他の専門職に比べてかなり高いです。しかも社会が混乱しても影響は少ないです。社会が混乱したからと言ってその社会を構成する人達の話す言語まで変化する事はないでしょう。Programming 言語だって同じです。むしろ社会が混乱している方が新しい発展が生まれないのでProgramming言語なんて安定するかもしれません。

なので、その時に備えて英語とProgrammingは全ての日本人がある程度は勉強していた方が良い気がしています。

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

<本文>

1.今週の予定

今週も先週と同じ予定でやって行きます。

  • Niagara: CGHOW氏のTutorialをやる
  • Materialの勉強
  • RPGStoryの改善
  • Map1Bugの直し
  • Open Worldの検証
  • Gaeaの勉強
  • 雪山のMapの作成
  • Game DesignポケモンHxHの念能力( 戦闘システムの作成)
  • Blenderの勉強

2.Niagara: CGHOW氏のTutorialをやる

今週は特にやりたい事が思いつかないので、先週の続きでUE5のNiagaraに慣れる意味でYin Yang FX in UE5 Niagara Tutorial [1]をやる事にします。

2.1 Yin Yang FX in UE5 Niagara Tutorial [1] を軽く見る

思ったよりも複雑でした。Scratch Moduleを使用しています。

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

<Textureの作成>

普通の太極図ですが

Alphaが以下のような設定になっています。

うーん。

良く考えたらこれって普通ですね。

Niagaraの作成>

今回は、Materialを作成する前にNiagara Systemを作成しています。いつもの通りにFountain Emitterを追加します。

更に要らないModuleを消して以下の様にしました。

うーん。

良く考えたらこれって普通ですね。

Niagaraの作成>

今回は、Materialを作成する前にNiagara Systemを作成しています。いつもの通りにFountain Emitterを追加します。

更に要らないModuleを消して以下の様にしました。

ここまでは全く一緒です。

次にParticle Spawn SectionのShape Location Moduleの

Shape Primitive にBox/Planeをセットします。

するとShape Location Moduleの表示がSphereからBox/Planeに変化します。

これカッコイイですね。

見やすくて便利であるだけじゃなくて、何か中二病をくすぐられる格好良さがあります。

今度はPropertiesから

Sim Targetの設定をGPUに変更します。

更にLocal Spaceにチェックを入れます。

このLocal SpaceにCheckを入れるのと入れないのの違いって好きな場所にEffectを生成出来るって理解しているんですが、まだ確認していません。

この確認をする事にします。

この後、Particle Spawn SectionのInitial Particle Moduleの値を微調整して以下の様にします。

これに太極図のTextureを使って太極の形に切り抜きます。

<Scratch Pad Moduleの実装>

Particle Update SectionにScratch Pad Moduleを追加します。

Scratch Pad Moduleを開いてTextureの形にParticleを切り抜く実装を作成します。

まず切り抜く形を示すTextureを読み込むためにMap Get ModuleにInput New Texture Sampleを追加します。

名前をTSに変更します。

そう言えば先週のTutorialの勉強でこれと全く同じ事をしていましたね。

でも先週はEmitter Update SectionにTSしています。

うーん。

こういう基本をしっかり理解して覚えて行かないと、沢山勉強したけど何も身に付かない事態になってしまいますね。

先週の勉強でも、毛糸の質感を出したEffectの作成出来ました。終。ではなくて、その中で「Scratch Pad Module内で望みのTextureを読み込む技術を学びました。」とまとめるべきでした。

これをしないと永遠に自分でEffectを自作する事が出来なくなってしまいます。

当然、Sample Texture 2D Moduleに繋げます。

結果をParticleのColorに繋げています。

これUV値を指定していないので全部のParticleがUV値が(0,0)の値の色になるだけじゃないんでしょうか?

と思ったらしっかり次の工程でMap GetにUVの値を指定するためにInput New Positionを追加しました。

更にサイズが幾つになるのかの指定が必要とInput Scaleを追加してその値を掛けていました。

TutorialではこれはTilingと一緒と言っています。

何もかけなくても1倍になる気はします。そして1倍さえ出来れば問題ない気もしています。ここは実際に実装を作成した時に確認します。

今回はEmitter Update SectionでTextureをセットするのではなく直接Scratch Module内でTextureをセットしています。

これだとParticleをUpdateするたびに新しいTextureをセットし直している事になるのか?

良く分かりませんね。

New Positionでは無くてPositionでした。変えました。

サイズを0.005にセットして1倍の大きさで表示します。

結果です。

位置がずれています。Offsetを使用して位置を修正します。

まずOffsetを実装します。

Offsetに0.5をセットします。

結果です。

Textureに太極図をセットします。

結果です。

黒い部分が消えています。

TutorialによるとRender SectionのSprite Renderer Moduleで使用しているmaterialがAdditiveにセットされているからだそうです。

ので新しいMaterialを作成します。

<Materialの作成>

以下の様に設定しました。

Blend ModeにセットされていたOpaqueがAdditiveな計算をしていたんでしょうか?

そんな気がします。

Translucentだと掛け算になるんでしょうか?

以下の実装を追加しました。

うーん。この辺は実際にRender SectionのSprite Renderer Moduleで使用されていたmaterialを見ないと何故、Textureの黒が見えないのかは分かりませんね。実装する時に確認します。

<Scratch Pad Moduleの実装の続き>

新しく作成したMaterialをRender SectionのSprite Renderer ModuleのMaterialにセットします。

結果です。

Emitter Update SectionのSpawn Rate ModuleのSpawn Rateの値を増やします。

結果です。

太極図になりました。

ただし、Particle Spawn Sectionのinitialize Particle ModuleのColorの値を変化させても

色は変わりません。

これを直すためにMap GetにParticle Colorを追加してその値を掛ける事にします。

白い部分は掛けた色になり、黒い部分は黒いままです。

結果です。

うーん。黒い部分はずっと黒いのは何か納得いかないです。

<太極図を回転させる>

Particle Update SectionにVortex Velocity Moduleを追加します。

全く回転しません。

これを直します。

Emitter Update SectionのSpawn Rate ModuleをSpawn Burst Instantaneous Moduleと交換します。

そしてEmitter Update SectionのEmitter State Moduleの

Loop BehaviorをOnceに変更して

Particle Update SectionのParticle State Moduleの

Kill Particle When Lifetime Has ElapsedのCheckを外します。

そしてこれをRotateさせます。

そのためのまた別のScratch Pad Moduleを作成します。

<Scratch Pad Module 二個目>

Map GetにInput New Positionを追加します。

このNew PositionとPositionの違いが分かりません。それぞれのParticle の位置はPositionが管理してるはずです。New Positionは何を管理してるんでしょう?

これも実装する時に確認します。

次にNew PositionからPosition to Vectorノードを使用してVectorに変換しています。

Positionは厳密に言えばVectorじゃないから、Vectorと計算する時にはVectorに変換しないといけないのでしょうか?

無理やりPositionとVectorを掛けたらとうなるんでしょうか?

これも後で試してみます。

Map GetノードにFloatタイプのInput、X,Y,Zを追加します。その値を以下に示した様にEuler to Quaternionノードに追加します。

そのEuler to QuaternionノードとPosition to Vectorノードの結果をMultiply Vector with Quaternionノードに追加します。

うーん。

成程。これで回転させる訳ですか。

最後にここで計算した値をPositionにパスするなら納得ですが、どうなんでしょう。

続きを見て行きます。

やっぱりそうでした。しかもVectorからPositionに変換して値をパスしています。

この厳密さは嫌いじゃないです。

大学の研究室に最初に入った時にVectorクラスとPositionクラスを別々に作成したら中身が全く同じで、他の人は同じクラスでPositionとVectorを扱うのかそれとも別なクラスで扱っているのか聞きまくった記憶が蘇りました。

New Positionは間違いでPositionが正しいと直していました。

これで分からない箇所は無くなりました。

ここで学んだ新しいTechniqueはそれぞれのParticleを回転させたいならQuaternion関連のノードを使用しろと言う事です。

太極図を回転させたいのでXにMultiply Floatを追加してそのAにTimeをセットします。

このDynamic Inputの設定も覚えるPointの一つですね。

時間に沿ってModuleの設定値を変化させたいときはTimeをセットする。と覚えておく事にします。

結果です。

回転はしていますが、滅茶苦茶になってしまいました。

この原因はTextureのLocationが違うからだそうです。

これを直すにはTexture Node(一番最初に作成したScratch Moduleの事です。)をParticle Spawn Sectionに移します。

結果です。

綺麗に回転しています。

<キラキラを追加>

まずEmitterをDuplicateします。

色々微調整しただけです。

その結果、

となりました。

<Levelに配置してみる>

このEffectをLevel上に配置してみます。

まず回転が速過ぎるのでそれを調節します。

次に太極図以外の場所に透明なParticleが生成されています。

これを消す事にします。

Particle Spawn SectionのTexture Module(一番最初に作成したScratch Module)を開き、Sample Texture 2DノードにBreak Vector 4ノードを繋げてW(alpha)の値を取り出します。

Map Set Moduleに新しく作成したParameter Particle MyAlphaにパスします。

そしてParticle Spawn SectionにKill Particle Moduleを追加します。

そしてKill Particle Moduleの設定を以下の様にします。

If(w ==0)

{

 Kill Particle

}

と言う意味ですね。

Set Bool by Float Comparisonは始めて見ました。

正直、この辺の設定はNiagaraに慣れないと望んだ実装を作成するのは難しいですね。コードを自分で書いちゃった方が簡単な気もします。

2.2 Yin Yang FX in UE5 Niagara Tutorial [1] を実装する

それでは自分で実装してみます。

<Textureの作成>

これって全く普通の太極図ですのでその辺から取って来ます。

出来ました。

サイズを150x150 Pixelで作成したのでかなり荒いです。でもそれでも大丈夫だと思います。

Alphaの値です。

TutorialのTextureは穴が開いていますが、空いてない方が正しい太極図だと思うんでこっちでやって行きます。

Niagara Systemの作成>

要らないModuleを消します。

ここまではいつもの手順です。

Particle Spawn SectionのShape Location Moduleを

以下の設定に変更します。

GPUにしたりSpawn Rateを増やしたりしました。

ここでPropertiesのLocal について調べてます。

まずLocalにCheckを入れないでLevel上に配置してみます。

別に原点以外にも配置出来ますね。

うーん。Localにセットしないのとどう違うんだろうか?

お、分かりました。

Local にチェックを入れないと以下のようになります。

入れた場合はこうなります。

LocalにCheckが入っているとNiagara Systemそのものが移動した時に全部のParticleが一緒に移動してくれます。Checkが無い場合は既に生成されたParticleはその場に残ってしまいます。

分かってしまえば簡単ですね。

細かい設定をTutorial通りにしました。

<一個目のScratch Pad Moduleの実装>

Tutorial通りに作成しました。

Scaleに0.005をセットします。

結果です。

はい。Tutorialと全く同じ形になりました。

ここでTutorialではScratch ModuleであるTextureにOffsetを追加していますが、

Particle Spawn SectionのShape Location Moduleの

Plane Midpointの値を0,0に変更しても同じ結果になると思います。

ので試してみます。

結果です。

やっぱり出来ましたね。

今度は黒い部分を表示するためにMaterialを作成します。

<Materialの作成>

MaterialですがSpriteの元のMaterialの設定をまず見ましょう。

Blend Modeですがなんと

でした。

まさかそのものズバリのAdditiveがあるとは。OpaqueがAdditiveの計算をすると思っていました。Opaqueの計算方法が知りたいですね。Opaqueは全くBlendしないのかもしれませんね。

Materialを実装しました。

Radial Gradient Exponentialノードについては過去のBlogで散々勉強したので今回は無視します。

Render SectionのSprite Renderer ModuleのMaterialにこのMaterialをセットします。

結果です。

良い感じで出来て来ました。

Particle 数を増やしました。

何か私のはまぶしいです。

今度は色付けですね。

前節でまとめた通りに実装しました。

結果です。

むー。

色はついていますが明るすぎますね。

単純にParticle Spawn SectionのInitialize Particle ModuleのColorの値を暗い青に変更しました。

もうこれで良いです。

<太極図を回転させる>

まずTutorialではParticle Update SectionでVortex Velocity Moduleを使用しても太極図が回転しない事を示してますが、これって今作成したScratch ModuleがParticle Update Sectionにあるからな気がします。

一寸だけ試してみます。

Particle Update SectionにVortex Velocity Moduleをセットしてみます。

当然、先程作成したScratch ModuleであるTextureはParticle Spawn Sectionに移します。

回転しませんでした。

うーん。

これはあれだ。

Spawn RateでParticleが生成されてParticleが死んだりするからだ。

Emitter Update SectionのSpawn Rate Moduleを消して、Spawn Burst Instantaneous Modulを追加し、Emitter State ModuleのLoop Behavior をOnceに変更し、Particle Update SectionのParticle State ModuleのKill Particle When Lifetime Has ElapsedのCheckを外します。

結果です。

ほら。回転しています。

原点がずれていますね。

色々値を弄ったんですが望み角度で回転してくれません。

一端諦めてTutorial通りにやります。

回転用のScratch Moduleを追加します。

以下に実装を示します。

結果です。

これは原点の位置をずらす必要があります。

となると

結局この部分の設定をTutorial通りにする必要がありますね。

直しました。

結局、Scratch Moduleにoffsetを追加する必要がありました。

結果です。

一応回転はしていますね。

この条件でVortex Velocity Moduleを使用したら上手く回転すると思うんでもう一回試してみます。

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

結果です。

うーん。

これ見るとVortex Velocity Moduleは回転だけじゃない力が加わっていますね。

Vortex Velocity Moduleの実装は、後で考える事にして取りあえず今回のTutorialを最後までやる事にします。

<キラキラを追加>

追加しました。

前節ではDuplicateしたEmitterの設定を微調整しただけと書きましたが一個だけ新しい事をしていました。

それはScale Sprite Size Moduleの使用です。

こんな設定にしました。

Uniform Scale FactorにSineを使用しています。後は適当にTutorialを真似ました。

これはParticle のサイズをFlame毎に変形するModuleですね。

<Levelに配置してみる>

色々微調整して以下の様になりました。

が、原点でしかこの回転をしません。

この問題は自分で解決する事にします。後で検討します。

<太極図の外側に生成されている透明なParticleを消す>

もうTutorial通りに作成しました。

結果です。

消えていますね。

2.3 Yin Yang FX in UE5 Niagara Tutorial [1] のまとめ

今週のTutorialは思ったより難しかったです。来週、分からなかった事を検証します。

分からなかった事は、

  • Vortex Velocity Moduleの機能と実装について
  • 何故Effectを原点に置いたときだけ綺麗に回転するのか?

の2点です。

3.Materialの勉強

今週からUnreal CG 氏のToon Shader & Custom Shadow - UE4 Postprocess Tutorial [2]の実装をやって行きます。

どのVersionで実装するかですが、出来れば今作成しているRPGで使用したいので4.24にします。

後、Ben Cloward氏がUV の移動に関するTutorialを上げています。これは勉強しておきたいです。

もし時間が足りなかったらBlenderの勉強をなしにしてこっちをやります。

3.1 Toon Shader & Custom Shadow - UE4 Postprocess Tutorial [2]の実装

今週は影の部分を実装します。

まずPost Processに使用するMaterialを作成します。

当然、Post Processに使用するMaterialなのでMaterial DomainをPost Processに変更します。

これの違いが分かりません。

公式サイトのPost Process Materials [3] に以下の解説がありました。

ただDeferred Shadingの工程が良く分かっていないのでこの解説を読んでもピンと来ません。

調べたけどDeferred Shadingの工程をまとめた資料は見つかりませんでした。

どうやってこのBlendable Locationの値を選択してるのか、結局分からないじゃん。と思ったらUnreal CG氏がこのTutorial内で解説していました。Particle SystemにPost Processが作用して欲しい時にBefore Translucencyにするそうです。

はい。

しかし他の値を選択する時の条件は分かりません。

分からん所にいつまでも時間掛けていてもしょうがないです。

次に行きます。

次はこのMaterialをPost Processにセットします。

Tutorialでは既にPost ProcessがLevel上に配置されていました。

私の作成したLevelにはPost Processがないので

自分で配置しました。

そのPost Processに先程のMaterialをセットしました。

結果です。

次にLevel上に配置されているObjectに使用されているMaterialの解説をしています。

これも作ってしまいます。

ほぼそっくりに出来ました。

試しにLevel上に配置したStatic Meshに使用してみました。

まあ。こんなもんですか?

次にやっと今週の目的の影の作成になります。

まず先に実装を示します。

結果です。

それでは実装の内容を検証していきます。

これはRenderingされたImageをそのまま保持しているScene Textureだったはずです。

はい。

このImageに対してDesaturationします。

結果です。

凄い精密な白黒写真みたいになりました。

今度はScene TextureのBaseColorです。

こっちはin G Bufferと書かれています。Post Process Input 0はG Bufferに書かれていないんでしょうか?

こんなImageでした。

単なる白黒ですね。

このImageに対してDesaturationします。

結果です。

うーん。なにも変わっていませんね。

Input 0の結果をBase Colorで割ります。

結果です。

む。

これ影が無いです。ちょっとオカシイですね。正確な計算結果が表示されていない気がします。

Level上で確認したら影はありました。

以下の実装部は単なるIf節なので検証はスキップします。

今度はShadow以外の部分の色を元に戻します。

実装部です。最後のLerpのAlpha部分に先程までの実装部の計算結果が繋がっています。

結果です。

良い感じです。

実装部の検証をします。

まずは以下の部分からです。

これの良く分からない部分はLerpのAlphaの値が1にセットされている事です。

全部Bの値、つまりBase Colorになってしまうんでは。と言う事です。

確認します。

LerpのImageです。

Base ColorのImageです。

同じですね。

でもそれよりも大切な事に気が付きました。影が無いです。

次の実装部分ですが以下の様になっています。

これ0を掛けているので真っ黒になるだけですね。

その次の実装です。

Alphaには先程抽出した影がはいっています。値は0です。つまりAの値を返します。それ以外の部分は白です。つまりBの値を返します。Bには先程のBase Colorの値が入っています。

つまり影の部分は真っ黒、それ以外はBase Colorの色になるわけです。

うーん。納得しました。

当然ですが、Shadow Colorの値を黒から灰色にすれば影が薄くなります。

Toon Shaderの完成です。

一応、今週の予定はここまでだったんですが、影にTextureのImageを表示する所までやりたいので続きをやります。

<空の作成>

Parameter Nodeを表示する時にいつもConstant ノードを表示してそこからParameter Nodeにしていたんですが、もっと簡単な方法がないか調べたらありました。

これは覚えておく事にします。

空だけ抽出します。

まず実装部から作成します。

一体どうやってと思いますが、カメラからの距離が思いっきり遠い部分が空だ。という事が分かっていれば出来ます。

Scene Depth ノードを使用します。

公式のDocumentであるDepth Material Expressions [3]のScene Depthの項には以下の解説がされています。

ふーん。

画面に写っているのはPixelの部分だけなのであえてScene Depthを使用する必要もない気がしますが、何らかのメリットがあるんでしょうね。

結果です。

Distanceの値を3000にセットしたら以下のようになりました。

Distanceの値をもっと上げます。200000.0にしました。

はい。空だけ抽出出来ました。

空を黒く、それ以外を白くしたいので以下の様な実装に変更しました。

一応、結果も示しておきます。

この空の部分にPost Process Input 0、それ以外の部分に先程までの実装の値を表示させます。

Post Process Input 0をそのままつないだらErrorになってしまいました。Float4がFloat3に繋がっているみたいなMessageが表示されていました。のでMaskノードを追加しています。

そう言えば先週、このMask ノードは要らないんじゃないのか。と言いましたが要りました。

結果です。

<影にTextureを追加>

まず以下の実装を作成します。

ああ。World Aligned Textureノードがあったわ。

これの使い方を勉強しないといけなかったわ。

取りあえず、Pattern Size が100の時の結果です。

床は平らなので真っ黒になるか真っ白になるかしかないみたいですね。

影の部分にこのTextureを反映させるために以下のような繋ぎをします。

LerpのAlphaに先程の実装の値が来ています。

結果です。

やっぱり地面の影の部分にはTextureが投影されていませんね。

ここが間違っていました。

World Aligned TextureノードのXYZ TextureのR Valueをパスする必要がありました。

さっきのはXY TextureのR Valueをパスしていました。

結果です。

イイ感じです。

微調整しました。

実際のPlay画面です。

先週、付けた雪のEffectが発動していますね。

Third Person BPの影は抜いた方が良いですね。

今週はここまでとします。

3.2 UV Rotation - Shader Graph Basics - Episode 42 [6]を勉強する

軽く全部見ましたが、そんなに沢山勉強しないといけない感じではなさそうです。後半の木を揺らす実装はかなり実用性が高そうです。

兎に角やって行きます。

まずこのTutorialで実装する内容は以下のNodeと全く同じ機能なので実装そのものには価値はないそうです。

それそうだけとその理論を学ぶのが大切なんじゃね。と常々思っていますが、Ben Cloward先生も同じ様な事を言っています。

最初の実装です。

これは特に勉強する箇所はないですね。

2021-10-25のBlogで全く同じ内容について勉強しています。その辺のBlogでほとんど掘りつくしています。

Time ノードに変更してTextureを回転させています。

特に新しい技術と言う訳でもないで結果はスキップします。

後半は、ちょっと新しい実装があります。

まず回転ですが少しだけ違う回転をやります。

まずVector Length ノードを使用してTexCoord[0]のそれぞれの位置がどれくらい回転の中心から離れているかを計算します。

こういうの見るたびにどうやってこういう計算を思いついてくるのか不思議になります。

その結果をOne Minusした値をTimeに掛けます。

こうする事で回転の中心に近づくほど早く回転するようになります。

今度は木を揺らす回転を作成します。

Tutorialでは以下に示した木のTextureを使用していますが、似たようなTextureを探すのは面倒なのでGridのTextureで試します。

実装は以下のようにやっています。

まあ、Sineの式から考えればこれでゆらゆら揺れるのは当然ですね。

Graphを作ってて流石にこれは要らなかったなと思いましたが、作ってしまったので載せておきます。

3.3 World Aligned Textureノードについての勉強

World Aligned Textureノードは初めて使用したノードで機能をよく理解していません。のでここで勉強します。

Ben 先生のWorld-Aligned Textures - UE4 Materials 101 - Episode 22 [6] を見たらTri Planar Projection をやるNodeだと言っていました。

え。

今まで散々勉強したTri Planar ProjectionをするNodeだったようです。

それじゃTri Planar Projectionと比較してみましょう。

向かって右側がBen 先生のTutorialを見て作成したImproved Tri Planar Projectionです。向かって左側のはWorld Aligned Textureノードを使用したMaterialを使用しています。

World Aligned Textureノードを使用したMaterialの実装は以下に示します。

もうパッと見で分かりますが、World Aligned Textureノードの方はTextureの向きを直していません。裏返っています。

Blendの幅が大きいですね。

Blendの幅は以下に示した値を変化させる事で変化させられます。

World Aligned TextureノードはBlendの幅は調節出来ないのでしょうか?

World Aligned TextureノードをClickしたらなんと、実装が見れました。

これは来週、実際に読んでみる事にします。

4.RPGStoryの改善

Storyの改善ですが以下の手順でやって行く事にします。

まず全体のStoryを改善していきます。辻褄の合わない部分を直したり、登場人物の整理をしたりします。その際に前の2022-01-10のBlogで検証した隠れたThemeについての検証も追加します。

次に第一章のStoryを推敲します。

最後にその時に感じた大切な事、例えば隠れたThemeを深堀します。

4.1 全体のStoryの改善

今週は先週決めた内容に大きな矛盾がないかとかの確認をMainにやる事にします。

後、先週考えた

これらのCharacterをどう物語に組み込むのかについても考えましょう。

<第一章>

先週決めた第一章の内容は以下のようになっています。

まずゲームの世界を月想界、それぞれのMapの世界を星屑世界と名付けました。となると太陽界も欲しいですね。戦闘用のMapを太陽界と呼ぶ事にしますか。

天使や悪魔は太陽界の住人で、限定的にしか月想界の住人である人間との関係を持つ事が出来ません。

と言う事にします。

戦闘用のMapに配置されている石像達は悪魔に封印された天使と言う事にしましょう。

ここは第一章なんで、このGameの隠れたThemeをバッチリと示す必要があります。このGameの隠れたThemeをここで決めてしまいましょう。

このGameの隠れたThemeはアホでいる事が特であるという幻想との決別です。

今の世相にあっているでしょう。

アホとの決別ってアメリカだったら凄く簡単でキリスト教徒特有の洗脳からの開放をThemeにすれば良いんですが、日本は結構難しいですね。

<第二章>

これ読むと一章の最後で赤い切符を手に入れていますね。これ分かり易くて良いです。

それぞれの章の最後で新しい切符が手に入る事にします。

<第三章>

ここから本当のStoryが始まります。

先週は話を簡単にするためにドラゴンと呼びましたがここに7つの大罪をぶち込みましょう。太陽界の悪魔軍団から悪の祝福を受けた7人の人間です。彼の祝福は伝説の剣以外では傷つけられない体です。

賢者は12使徒の一人にしましょう。

12使徒は伝説の剣がこの世にない事を告げる代わりに、黄色の切符をPlayerに渡す所でこの章は終わりになります。

<第四章>

ここから新しい切符を得る話が無くなってしまいます。その代り伝説の剣を借りれるようにしたのでまあそれは良いでしょう。

七つの大罪の一人をこの章で倒す事にしましょう。

王様が与える試練は七つの大罪の一人の弱点を知っている12使徒を探す事にします。

<第五章>

ここは前半部分の最大の山場です。どうやって7つの大罪の一人を倒すのかについての掘り下げが必要ですね。

後は問題ないですね。

今回のゲームで制作するのはここまでとしましょう。

4.2 第一章の推敲

ゲームの世界を月想界、それぞれのMapの世界を星屑世界と呼ぶのは最初の村の住人の誰かに説明させましょう。

以下の情報は村人に会話させれば良いです。

第一章の話は以下のようになっています。

この後にもう一回Questを挟みましょう。

村長の娘が病気になってしまいます。

その病気を治す薬を持っているのは隣の世界に住む偏屈な老人だけです。その老人が住む世界は恐ろしいMonsterが生息していて普通の人が近づく事は出来ません。

Playerが操作するCharacterがMonsterを倒せる事を知った村長は、その薬を取って来てもらうようにPlayerにお願いします。

はい。

薬を取って来たPlayerは村長から赤い切符を貰います。

4.3 今週の深堀

12使徒は諸説あるそうです。レオナルド・ダ・ヴィンチによる「最後の晩餐」では

  1. バルトロマイ(ナタナエル)
  2. アルファイの子ヤコブ
  3. アンデレ
  4. ユダ
  5. シモン・ペトロ
  6. ヨハネ
  7. トマス
  8. ゼベダイの子ヤコブ
  9. フィリポ
  10. マタイ
  11. タダイ
  12. 熱心党のシモン

だそうです。

7大天使は

  1. ミカエル、
  2. ガブリエル、
  3. ラファエル、
  4. ウリエル

はほぼ共通で残りは本によって別々だそうです。

  1. ラグエル
  2. ゼラキエル
  3. ゼラキエル

7大悪魔は日本語のしっかりした資料がみつかりませんでした。英語で見つかったのは以下の様になっていました。

  1. Lucifer: pride.
  2. Mammon: greed.
  3. Asmodeus: lust.
  4. Leviathan: envy.
  5. Beelzebub: gluttony.
  6. Satan: wrath.
  7. Belphegor: sloth.

7大悪魔と7つの大罪は繋がっているんですね。

12使徒は全く聞いた事がない名前なので、7大天使と対応させる使徒にして7大賢者の方が分かり易いですね。

5.Map1Bugの直し

2022-04-11のBlogに載っていたMap1のBugの直しの続きをやって行きます。

  • 武器を装備した状態で戦闘中に死んで、復活した時に攻撃力がオカシイBug
  • 金貨0枚で買える道具や武器を直す

5.1 先週のBugが直っているかの確認

先週直したBugはPCを起動してから初めてProjectを起動した時だけ起きるBugなので、先週は本当に直っているのか確認しませんでした。

今、確認します。

直っていました。

5.2 武器を装備した状態で戦闘中に死んで、復活した時に攻撃力がオカシイBugを直す

<Bugの確認>

戦闘前の攻撃力です。

攻撃力10の武器を装備しています。

一回戦闘で負けて、復活しました。

武器を装備しているにも関わらず、攻撃力が武器なしの状態になっています。

<原因の解明>

以下のWidgetから調べていきます。

「もう一度始める」ボタンを押したらどうなるのかの確認をします。

それぞれのNodeが何をやっているのかを確認します。

最初の2つのNodeはLoadingに関するものなのでここでは無視します。

次のOpen LevelですがMap1にセットされています。

これではMap1以外の戦闘で死んだときもMap1に戻ってしまいます。

このBugは後で直します。

Map1のBPを見ます。

Event BeginPlayの実装を見て行きます。

こんな変数がありました。Map Name Before Battleです。

先程、発見されたバグはこの変数を使用すれば一発で直りますね。

ここでPlayerの操作するCharacterのParameterは何も弄っていませんでした。

Third Person Character BPをみます。

以下の実装を見て思い出して来ました。Game Instanceの変数であるMy Your Heroの変数であるATKがplayer の操作するCharacterの攻撃力を管理しています。

こいつです。

U Game Characterクラスを見るとInt型の変数、ATKがありました。

思い出してきました。この変数の管理の仕方だと武器を装備した時の攻撃力をそのままここのATKに足すために色々面倒な事が起きたんです。

それでThird Person Character BPの方で新しい変数、Soldier Base ATKを作成したんです。

原因らしき所を発見しました。

戦闘に敗北した場合、以下のコードが実行されます。

ここでPlayerの操作するCharacterのDataが全部消されています。

でもそうすると武器や防具はなんで残っているんでしょうか?

あ。分かった。武器や防具は

別な所で管理しているからだ。

原因が分かりましたね。

これは思った以上に深い問題なので節を新しくして検証します。

5.3 武器を装備した状態で戦闘中に死んで、復活した時に攻撃力がオカシイBugを直す その2:どう直すか?

一番簡単な直し方は以下の実装部分でPrepareReset()を呼ばない事です。

しかし、今更UE4C++のコードを変更するのか。という気持ちがしています。

最低でもこの1年間はUE4C++のコードは触っていません。今、MaterialやらNiagaraやらLandscapeやらの新しい事を勉強している時に更にUE4C++のコードの管理まで始めたら頭がパンクしてしまいます。

もうこのGameに関してはUE4C++のコードは触らない方向で行きたいです。

で考えた方法ですが、以下のGame Over画面の「もう一度始める」ボタンを消してしまうのはどうでしょうか?

イキナリ消してしまうのは、後で問題が起きた時に解決出来なくなる可能性が出て来るので押しても反応しないようにします。

これで行きます。これならこの部分を変更したために別な問題が発生した場合も直ぐ元に戻せます。

5.4 Game Over Widgetの「もう一度始める」ボタンを押せなくさせる

Game Over WidgetのBehaviorの設定を以下の様に変更しました。

結果です。

「もう一度始める」ボタンは押せなくなっています。更に半透明になっている事で押しても無駄な感じも出ています。

因みに落下によって死亡した場合は「もう一度始める」ボタンは最初から表示されていませんでした。

これで一応直った事にします。

5.5 金貨0枚で買える道具や武器を直す

こんなのまだあったのか。と思いましたが一応確認します。

転職石が金貨0枚で買えます。

木の盾も金貨0枚で買えます。

Data TableのItemsのDataを書き換えます。

以下の様な値段にしました。

Data TableのWeaponsのDataも書き換えます。

値段は適当に付けました。

テストPlayをして行くうちに適切な武器の値段は判明するでしょう。

確認します。

直っています。

今週のBugの直しは以上です。

6.Open Worldの検証

6.1 先週までの勉強の確認

Open World の勉強は何が目的だったのか直ぐ忘れてしまうので確認が大切になります。

もともとWorld Compositionを使用して16km^2のLandscapeの作成方法を知りたかったんです。そして先週までの勉強で一応、その作成方法は分かりました。

ただしそのためにはThird PartyのSoftwareで1009x1009のHeight Mapを16x16枚作成する必要があります。

色々検討した結果、Third PartyのSoftware の中でGaeaが総合的に優れているとなりました。ので別枠でGaeaの勉強をする事にしました。

もし有料版のみでしか1009x1009のHeight Mapを16x16枚作成出来ない場合はGaeaを購入する事にします。

後、最適な高さの設定はまだ良く分かっていません。あまりHeight Mapの高さを高く設定するとLandscapeにBlockみたいな形状の部分が生成されるらしいです。こういう事はLandscapeの勉強というよりはGaeaの勉強内で解決していきたいと思っています。

と言う訳で。一応、UE4でWorld Compositionを使用してOpen Worldを作成する方法の勉強は一端終わりにします。

今週からUE5でWorld Partitionを使用して16km^2のLandscapeの作成をする場合について検証する事にします。

6.2 Landscape関連の優秀なTutorial製作者を整理する

UEのTutorialの製作者の中には本当に凄い人がいまして、その人たちのTutorialには大変有益な情報に溢れています。UEのLandscapeのTutorialの製作者にはそういう凄い人達が数名いまして、一寸整理しておかないと訳分からなくなってしまいます。

ここで整理する事にします。

Smart Poly

まずはSmart Poly氏です。

今気が付きましたEpic 社のMega Grants貰っているんですね。この質のTutorialを提供出来るんですから納得です。

Smart Poly氏はHeight Mapの生成にThird PartyのソフトであるWorld Machineを使用しています。

ただし彼のTutorial、声が小さくて聞こえない事があります。

まあ字幕を表示して読めば良いだけですが。

Klaus

Klaus氏です。

Klaus氏はGaeaを使用していてGaeaのTutorialもいっぱいあります。

Height Mapのサイズと生成されるLandscapeのサイズの関係について、ずっと分からなかったんですが彼のTutorialを見てたら一発で理解出来ました。

Klaus氏はインド系なんでしょうか?何かインドっぽいアクセントがあります。

Unreal Sensei

Unreal Sensei氏です。

当然といえば当然ですが、兎に角凄いです。

彼も若いですが大学教授かも。と思われるぐらいの知性を感じます。勿論、UEに関する知識も凄いです。

更に言うと説明が上手い。出来ない人に分かるように説明出来るんです。

Tilingを消す技術を学びたかったら、彼のTutorialは絶対勉強すべきです。

ここに上げている人達のTutorialを見てもTilingが消えていない人は結構います。そういう意味でもUnreal Sensei氏のTutorialは頭3つ位抜けています。

ただしHeight MapはWorld Machineを使って作成してね。で終わりでLandscapeを作成するためのThird PartyのSoftの使用方法については全く解説していません。

GDi4K

実は彼のTutorialはまだ一個しか見た事なくて実際にやってみた事はないんです。

彼のTutorialはVirtual Textureを使用していて、そのVirtual Textureが何なのか分からん私は結構二の足を踏んでしまっています。

でもこの中に並べても何ら遜色のないTutorialですのでここに載せておきます。

彼もインド系なんでしょうか?

PrismaticaDev

彼はLandscape専門と言う訳ではないんですが、何かこの情報が欲しいけどこんなマイナーな事、まとめている人いないよね。っていう情報がよく彼のTutorial内にあります。

Procedural Foliage Toolで生成されたMeshはCollisionがありません。Collisionが必要な木などを生成する時は、Foliageから手動でPaintする必要があります。がこの事を明確に述べてその直し方を非常に分かり易い形でまとめていたTutorialはこの人だけでした。ので一応ここに載せておきます。

後、これはLandscapeとは関係ありませんが、Dither Temporal AA ノードについて調べていた時もこのTutorialでかなり理解が進んだのを覚えています。ので他の分野のTutorialも質が高いのは間違いないです。

彼は一言で言うとゆる系なんです。

Klaus氏、Unreal Sensei氏そしてGDi4K氏は「大学教授です。」って紹介されても、何の違和感もないです。全身から知性というオーラが溢れています。彼からはそういうオーラが全く感じられない。

UEの知識は凄いし技術も凄い。でも彼はそういうオーラを全く発しません。

多分ですが、彼自身がそこに価値を置いていないんでしょうね。

それで見ている方も油断してしまって彼のTutorialの質の高さを見逃してしまいがちになります。

因みに、Smart Poly氏からは学生のうちに自作のソフトが売れまくって何十億って額を既に稼いでしまったタイプと同じ感じがします。

私の経験の範囲ですがGoogleとかAmazonに就職が決まったヤツは自分から自慢しますが、自作のソフトが売れまくって億万長者になったヤツは絶対、自分から言う事は無かったです。のであんまり周りにいる気がしないんですが、ある教授が教えてくれたんですが一学年に一人位の割合で、学生のうちに億万長者になってる子がいるそうです。

マテリアルデザイン入門>

最後に一応、日本語の本も入れておこうと思います。

Landscapeだけの教科書ではないですが、Tileを消す方法(Unreal Senseiが紹介した4つ技術の内の一つとほぼ同じ)が紹介されている事。Tangent空間の座標が紹介されてた唯一の資料だった事。を考慮してこの中に入れても遜色ないと思いました。

6.3 Make An Open World Map in 20 Mins | Unreal Engine 5 [7]を勉強する

Smart Poly氏が挙げたTutorialでUE5 で何か不思議な方法でLandscapeのDesignをしているのがありました。

これちょっと興味深いんで勉強する事にします。

今まで無料でHeight Mapとか公開していたんですが、これからはPatreonのMemberだけに公開するそうです。

おめ。Mega Grant貰って金持ってるだろ!何でそんな金にがめついん。

しかも他のTutorialの人は$5とかでやってるのに$25とか取ってるし。

Landscapeを作成します。

設定はDefault値のままです。

Createを押す前にEnable Edit LayersのCheckを入れる必要があるそうです。

今回はWorld Machineで作成したDataをImportするんじゃなくてLandscapeをUE5上で自作するみたいですね。

そして非常に興味深いのがWorld Machineで作成したみたいにUE5上でLandscapeのDesignをしている事です。

うーん。でもこれだけ見るとUE4と変わらんような。

と思ったら以下に示したBlueprintを使用するそうです。

Blueprintってあのいつも使用しているBPですか?

次にBlueprint BrushにCustom Brush Landmassをセットします。

あれ

私のにはそれは無いですね。

Tutorialだと以下の様に表示されています。

うーん。

調べたらCreate QUICK Landscapes with Landmass Blueprint Brushes in UE 4.26 [8]でLandmassの使用法を教えているみたいです。

こっちは4.26ですがこっちの方が分かり易そう。

ちょっとみたらPluginを入れろと有りました。

UE5はLandmassは標準装備何でしょう?と思いつつ一応、Pluginを開いたら思いっきりありました。

CheckしてProjectを再起動します。

今度はCustom Brush Landmassが表示されています。

はい。

MR3D-DevのCreate QUICK Landscapes with Landmass Blueprint Brushes in UE 4.26 [8]で勉強する事にします。

と思ったらこっちはこっちでComment欄に字が小さくて読めないと書かれていました。

まあ、いいや両方を見ながら勉強する事にします。

4.26のProjectを起動してLandmassのPluginを追加しました。

そしてLandscapeを作成します。

成程。これは読めない。

同じ設定にしました。

Tutorialによるとこの設定がLandmassを綺麗に表示するそうです。

ここでもBlueprint Blushをセットしています。

私のは3つしか表示されないんですがTutorialの説明だとLandmassとMaterial Onlyしか使用しないそうなのでこのまま行きます。

Custom Brush Landmassを選択してLandscapeをClickしたら以下の様なPyramidが生成されました。

Tutorialと同じ結果です。

更に以下の様なActorが生成されました。

これもTutorialと同じです。

今度は出来そうです。

Spline Pointを移動させたり増やしたりして以下の山を作成しました。

でもほとんど平らで、あんまり山って感じはないです。

この平らを直すそうです。

Select Modeに戻ってLandscape_CustomBrush_Landmass_Cを選択します。

画面の字が小っちゃくて見えないです。

Curl Noizeの所で値を変化させます。

結果です。

いや凄すぎでしょう。

山の形状をもっとソフトにしたい時はBlur Sizeの値を増やすそうです。

結果です。

はあー。凄い。

今度はDisplacementです。

数字を弄ったら以下の様になりました。

一見すると凄い感じがしますが、Tutorialによると

Meshが崩壊する原因になるそうです。

この辺がUE5ではどれくらい改善されているのかが見られる訳ですね。

良く見るとDisplacementは山のふもとが凹むので変です。使う事は無いと思います。

Duplicateの仕方とかやりました。

それは出来たんですが私のLandmass、Tutorialと比べてかなり大きい事に気が付きました。

さらに上下に凄い曲がっていました。

作り直すのも面倒なので続きは来週やる事にします。

残りは両方のTutorialを見るだけにします。

Create QUICK Landscapes with Landmass Blueprint Brushes in UE 4.26 [8]のまとめ>

こっちはこの後、Custom Brush Material Onlyの使い方と、LandscapeにLayerのあるMaterialを指定した時、Custom Brush Land Massにも同様のLayerが使用され、そのLayerを色々管理出来る事が解説されていました。

Make An Open World Map in 20 Mins | Unreal Engine 5 [7]のまとめ>

こっちはWater Systemを追加して完全な島を作成しています。字も大きいので見やすいです。

Custom Brush Material Onlyは使用しませんでした。

来週はこっちで勉強します。

<まとめと感想>

途中からほとんどTutorialを見るだけで終わってしまったんですが、それなりに理解出来ました。別に一個ずつやる必要はないかもしれません。

でもこの機能、まだ実験中なんですよね。それで思ったんですが、これで作成したMapをHeight MapとしてExportした場合、Landmassの部分はどうなるんでしょう。普通にHeight Mapに残るのなら、そのHeight MapをImportすればそのまま製品版にも使用出来るんじゃないんでしょうか?

来週はそれを試してみます。

後、やっぱりSmart Poly氏の方が分かり易くまとめています。分かり易いだけじゃなくて綺麗なLandscapeを作成するためにはこの機能をこの順番で使用する必要がある。って解説をしています。凄く実践的なんです。

更にMR3D-DevのTutorialをもっと見たら、Gameじゃなくて映像関連の動画の作成をUEを使用して作成するのが専門のようでした。これ自体は別に悪い事じゃないですが、今の私の目的とは違います。

うーん。しかたない。

もう少しだけSmart Poly氏のTutorialを勉強しますか。

7.Gaeaの勉強

公式のTutorialは先週の後は、Snow Mountainなどの具体的なTerrainの作成方法を教えています。これはこれで大事ですが、私は出来るだけ早くGaeaで作成したGeometryをExportしてUEで使用したいので、Klaus氏のこっちのTutorialを先にやる事にします。

それで思い出したのですがこのTutorialのPart1、Interfaceの勉強がまだ途中でした。

Interfaceの使い方なんてのは一回の勉強では直ぐに忘れてしまうもんですが、Blogにまとめておくと直ぐに見直せるので直ぐに見直せます。

新しい事を学ぶのにはYouTubeのVideoの方が断然速いです。まさに「百聞は一見にしかず。」で見て理解するのは読んで理解するのに比較して100倍位優れています。しかし覚えた事を復習したり、一寸だけ忘れてしまった部分を思い出すには文章で読んだ方が分かり易いです。

ので非常に面倒ですがInterfaceの部分はBlog内にまとめ直す必要があります。

ので今週はそれをやります。

7.1 Gaea Beginner Tutorial Series : Part 1 – Interface [9]を勉強する

<Node Graph

Node Graphって何の事かと思ったら以下に示したNodeを実装するBoxの事でした。

Tutorialだと以下の実装がされているので一応、追加しました。

右上のButtonについてです。

まず+ですが、

新しいGraphを追加します。

右Clickで名前の変更とか出来ます。

うーん。それは分かりますが、Graphが2つあったらどうなるんでしょう。そこが全く分かりません。

NodeのPropertiesは右ClickでAccess出来ます。

TutorialだとNode Graphの右側に以下の様なToolが表示されていてNodeのPropertiesをここでも管理出来ると解説していますが

私のにはその表示がないです。

多分Versionが違うからでしょう。気にせず先へ進みます。

<Node Setting

<<Refresh>>

Refreshボタンについてです。

Nodeを選択した状態で押すとそのNodeだけRefreshします。

Nodeを選択しない状態で押すと全部のNodeがRefreshします。

だそうです。

<<Show as>>

DefaultはそのNodeのあるべき姿を示す。と解説していますが分かったような分からないような説明です。

あ。

分かりました。Show asの設定はTerrainとMaskしかないんです。DefaultはそのNodeによってTerrainかMaskのどちらかを選択するだけです。

例えばMountain Nodeは

Defaultでは以下の様なImageを示します。

Terrainも全く同じImageを示します。

Maskは以下の様なImageを示します。

はい。Mountain nodeではDefault値はTerrainにセットされている訳です。

<<Bypass>>

この機能は理解するのに手間取りましたが面白い機能です。

以下の実装を用いてBypassの機能を解説します。

StratifyノードのImageを見ます。

こんな感じです。

それで誰でも思うと思うんですが、Wizard Nodeが無かったらどう変化するんでしょう。

それをWizard Nodeを外さないで実装出来るのがBypassだそうです。

Wizard NodeにBypassをセットします。

結果です。

あんまり変化していませんね。

まあでもこういう機能だそうです。

<<Pin>>

PinをつけたNodeのImageをずっと表示します。

Pinを2つのNodeにつけたらどっちのNodeが表示されるのか試したら、Pinをつけられるのは全てのNodeの内の一個だけでした。

<<Pin as Underlay>>

これはSet Mapなどの色をTerrainに追加するNodeがある時に使用します。

Set Mapが色を追加するTerrainをあるNodeのTerrainに指定する時にこれを使用します。

以下の例ではStratify NodeのTerrainにSat Mapで色を追加しています。

<<Mark for Export>>

当然、これでセットされたNodeの値がExportされます。

試しにStratifyノードにMark for Exportをセットします。

Build画面に行くとStratifyが表示されています。

<<All>>

以下に示したAllについてです。

Mark for ExportがセットされたNodeによって色々なDataをExport出来ます。

例えばWizard Nodeだと4つOutputがありますので

Allにも4つのDataが表示されます。

<<Mark as favorite>>

これは使い方だけ記録しておきます。

と思ったら

の表示の仕方がわかりません。

調べたら分かりました。

公式のDocumentであるNode Management [10]に載っていました。

以下のButtonを押すと表示されます。

こんな感じです。

FavoriteとしてCheckしたNodeはここに表示されるようになります。

ここでそのNodeを選択すると一気にそのNodeまで飛んでくれます。

<<Bake>>

Bakeは以下の箇所からも設定出来ます。

一応、説明を聞いたんですがBakeそのものが何をしているのか分かりません。

こっちも公式のDocumentで調べて見ます。Baking and Caching [11]に説明されていました。

つまり、一回だけ凄い精密なResolutionで計算してその計算結果を保持しておく。って事ですね。

その後のNodeはその計算結果を使用して行くわけです。

試しに選択したら以下の様にBakeしたDataをSaveする場所を聞いて来ました。

ふーん。良く分かりました。

<<Move selected nodes>>

まずこの選択をするためにはNodeを選択する必要があります。

Nodeを選択すると以下の様に使用出来る様になります。

試しにGraph(1)に移動させてみます。

選択していたNodeがGraph (1)に移動しました。

これは実装が複雑に成り過ぎた時に整理しやすくするための機能なんでしょうか?

<<Collapse>>

これは以下に示したようにNodeの表示を小さくします。

小さいだけじゃなくて可愛いですね。

<<Get Name From Parent>>

Wizard Nodeに使用しました。

Wizard Nodeの名前がWizardからMountain_Wizardに変わりました。

こんなの一回やれば分かるじゃん!何をあえて勉強する必要があるんだ。と思って試しにこのNodeの名前を元に戻そうとしたら、何をやっても戻りません。それで色々弄ったらGaeaがCrashしました。

よくよく考えればRenameから名前を戻せば良かったです。

まだ自分で自由に動かせる程の理解はしていませんね。

<<Note>>

NoteはNoteですね。

Noteに書いた内容はそのNodeを選択すると左下に表示されます。

TutorialではCursorをNodeに合わせるとNoteの内容が表示されるとありましたが、

私のには出てこないですね。

これもVersionの違いのせいでしょう。

<<Delete>>

あれ、

Replace NodeとBakeは?

Replace NodeはNodeを別なNodeに交換する機能ですね。多分ですが。

試しにReplace Node を使用してMountain NodeをPerlin Nodeに変更してみました。

出来ました。

Bakeはさっきやりました。

DeleteはそのNodeを消すだけでしょう。Perlin Nodeでやってみます。

消えました。

<<Copy Setting とPaste Setting>>

これは同じNode内でしか出来ません。

TutorialでやったようにMountain Nodeを2個用意してやります。

それぞれのMountain Nodeの設定が違っています。左のMountain Nodeの設定を右のMountain Nodeに写したい時に、左のNodeでCopy Settingを選択して右のNodeでPaste Settingをします。

最初、この機能を聞いたときはすげえー。と思いましたが良く考えたらDuplicateすれば良いんじゃない。とも思いました。

<<Preset>>

これは先程の設定を保存しておく機能だそうです。

試しに適当な設定でSaveしてみます。

今のMountain Nodeを消して新しいMountain Nodeを入れました。

有りました。

My first Presetを選択します。

設定がMy first Presetの時と同じになりました。

<<Show Graph Toolbar>>

これにCheckを入れると

が表示されます。

先に言ってほしかった。これは。

今週はここまでとします。

8.雪山のMapの作成

2022-04-18のBlogで雪山のMapには以下のEffectを追加したいと書いています。

最初の2つは既に実装しました。残りの3つはどうやって実装するのか分かりません。今週はそれらを調べる事にします。

8.1 足跡のEffectの追加

まず足跡ですが、World Displacementを使用するのは間違いないでしょう。まず移動に合わせて足跡を残すようなEffectを作成してそれにWorld Displacementの機能で地面に足跡にそって歪みを作成するんです。最後にそのEffectをPlayerの操作するCharacterに付けて完成です。

自分で一から作成したら3カ月位かかるので大変です。

Tutorialを探して見ます。

3つ程見つかりました。それぞれ軽く見てみましょう。

Footprint System - [UE4 Tutorial] [12] を見る>

Unreal CG氏のTutorialでした。

綺麗な足跡が出来てます。

何とDecalを使用しています。

Decalはそろそろ勉強すべき時ですね。

うーん。Substance Designerを使用するそうです。

Substance DesignerではBase Color用のImageとNormal Map用のImageを作成しています。

これ位ならSubstance Designerを使用しなくても作成出来そうですね。

Animation Sequenceの所からNotificationを追加していますがこの辺のやり方は全く分かりません。

Tutorial通りにやってしまうか、しっかりAnimation Sequenceの所を勉強するのか?

ちょっと悩みます。

足跡がOverlapした時の対処法も追加していますね。

ぱっと見た限りでは作成出来そうです。

Dynamic Footprint System Part 1/2 - Unreal Engine 4 Tutorial [13] を見る>

Matt Aspland氏は初めて聞く名前です。念のために調べてみたら今まで3回、Matt Aspland氏のTutorialで勉強していました。

この人のTutorialで何を勉強したんだろうと調べたらWorld Compositionについてでした。

全部その時のやつです。

これはPart 1でPart 2が検索に現れていませんが、検索したらありました。

今回はPart 1だけ見てみます。

まず気になるTextureですがこっちはNormal Mapは使用しないみたいです。以下のTextureを使用していました。

こっちでもDecalを使用しています。

どうやら足跡の作成にDecalを使用するのは常識みたいです。やっぱりTutorialを最初に見て良かった。全然検討違いの方向で実装しようとする所でした。

やっぱりNormal Mapは使用していませんね。

こっちは直接足に生成しています。Animation Sequenceは使用していません。

こっちのやり方の方が私には簡単かもしれません。

と思ったらこっちもAnimation Sequenceを使用していました。

残りは2nd Partでやるそうです。

ぱっと見た感想ですが、実装は出来そうです。やっぱりAnimation Sequenceの所が理解出来るのかですね。

Footprints In Snow - Unreal Engine 4 Tutorial [14]を見る>

こっちもMatt Aspland氏のTutorialですがこっちは雪の足跡とそのものズバリな題なので見る事にしました。

話を聞いていたらこっちの方が古いTutorialで前のTutorialはこれの改良版だそうです。ので見るのは止めました。

<足跡の作成に関する感想とまとめ>

DecalとAnimation Sequenceを使用しているのは分かりましたが、VFXは使用しないんですね。後、World Displacementで雪が潰れて平らになる表現とかもないですね。

今回はTutorial通りに作成します。次回作はここで習った足跡の実装方法を参考にして自分流の足跡を作成します。

8.2 天気を曇りにする

これ、UEで雲がどうやって作成されているのか全く知りません。その辺も調べます。

色々、見たんですがほとんどのTutorialは雲は作成するんですが、雪が降っている日のどんよりとした曇りの日の空は作成していません。

やっと見つけたのがこのTutorialです、

Ue4 Tutorials - Deathscyp Factory S03E07 - Simple cloudy sky Material in Ue4 [15]では以下に示した様な空が作成されています。

ただしこの人はYouTubeにある別のTutorialをかなり参考にしたそうです。参考にしたTutorialも載っていました。

空を曇りにするためにまずこのTutorialとこの人が参考にしたTutorialを勉強する事にします。

8.3 風のEffectの追加

風のEffectは今までDownloadした雪や氷のEffectの付属のEffectとして沢山あるはずです。それらを見てそのまま使用する事にします。

探したんですが見つかりませんでした。

UE4 - Tutorial - Stylised Wind Particles (Cascade) [16]みたいなを作成したかったんですが。

このTutorialを元に自作するしかないですね。

8.4 雪山のEffectについてのまとめ

雪山の作成では、以下に示した3つの事について作成する必要があります。

  • 足跡のEffect
  • 天気を曇りにする
  • 風のEffect

今週の調査の結果、これらのEffectは作成出来そうな事がわかりました。

これが終わったら今度は砂漠の作成に入ります。

9.Game DesignポケモンHxHの念能力( 戦闘システムの作成)

今週は何を直しましょうか?

9.1 Play中のScreenの黒い部分を無くす

そう言えばCameraが変な挙動をしています。

CameraからのAspectが一定で画面のAspectが変更するとScreenに黒い部分が発生します。

その理由はLevel上に配置したCamera Actorから映像を得ているからと考えられます。

この配置したCamera Actorで撮影した映像はPlay画面のAspectを変更しても映像のAspectは一定に保っています。

付属のCamera で撮影した場合は、ScreenのAspectに合わせて勝手に映像のAspectの補正をしてくれました。

今はCamera Actorの設定から以下の部分の値を調整する事で無理やり映像のAspectを補正しています。

このやり方はこのAspectだけの設定でPlay画面のAspectがこの設定から変更された場合は対応してくれません。

これについて調べます。

すぐ分かりました。

Camera ActorのParameterにあるConstrain Aspect RatioのCheckを外せば良かったです。

結果です。

どんなにScreenの比率を変えても画面が黒くなったりする事は無くなりました。

直りました。

こんなに簡単に直せるとは思っていませんでした。

今週はこれだけです。

10.Blenderの勉強

今週は復習だけやります。

<Selection Method

出来ました。

2022-02-14Blogの復習>

全部やりました。何個か怪しいのはありましたがほとんどは覚えていました。

2022-02-21Blogの復習>

Bevelはあんまり興味のない機能ではありますが、流石にここまで何回も繰り返してテストしていると、Bevelを効果的に使う場所とか知りたくなります。

ほとんど覚えていました。

2022-02-28Blogの復習>

今週の木はかなり独創的な出来でした。

2022-04-03Blogの復習>

KnifeやCutの使い方はかなり理解して来ました。

やっぱりこういうToolの使い方を覚えるには時間が必要です。

2022-04-25Blogの復習>

結構、悩みました。

望んだ結果が出ない場合がありましたが、あんまり根を積めないでやって行こうと思います。

11.まとめと感想

段々、Game制作に必要なUEの技術の幅が分かって来ました。

雪国の世界の作成を考えます。すると

  • 雪のLandscape
  • 雪が降るEffect
  • 雪が積もった岩や木、
  • 雪の上を歩いた足跡のEffect

など必要になります。これらはどこからどこまで自作するのかはその人の自由なんですが、最初から全部、パックになっているAssetを買っても良い訳です。

そこまではひどく無くても

  • 雪のLandscape用のMaterialは付属のMaterialをそのまま使用する。
  • 雪が積もった岩を表現するためのProjectionを利用したMaterialの作成はどこかのTutorialが紹介してくれた方法をそのまま使用する。

とかは全然ありだと思います。

多分、大きなGame 会社でも市販のGameの90%はそういう今まである技術で作成しているはずです。

ただしメガヒットするためにどうしても残り10%の部分で、今までの技術では出来なかったbreakthroughが必要になって、その部分は一から作成するようになると思われます。

その10%の部分のProgrammingを担当する人に私はなりたかったんです。

それがこの数年間、残りの90%の部分の勉強に費やしていました。

まあ。それも良いでしょう。こうなったら全部、勉強してしまいます。その上で今までの技術では出来なかったbreakthroughも自分でやる事にします。

ただBen Cloward先生がそのTutorialで言っていたのですが、先生がGame会社で働いていた時は、Art Directorがどうしてもここは直さないとGameとして売れない。何とかならないかと直談判して来たそうです。そういうArtの専門家が制作中の作品を見て、商業芸術の観点から、この部分は今までの技術で作成したのでは駄目だ。Breakthroughが必要だ。と言ってくれる訳です。そういう人は私にはいませんので、どこをbreakthroughするとMega Hitするのかを分かる人を見つける必要はありますね。将来的にはですが。

12.参照(Reference

[1] CGHOW. (2022, April 11). Yin Yang FX in UE5 Niagara Tutorial | Download Files [Video]. YouTube. https://www.youtube.com/watch?v=vPzLeEqNPi8

[2] UnrealCG. (2020, June 25). Toon Shader & Custom Shadow - UE4 Postprocess Tutorial [Video]. YouTube. https://www.youtube.com/watch?v=mx_AvrZK3TA

[3] Epic Games. (n.d.-b). Post Process Materials. Unreal Engine Documentation. Retrieved May 1, 2022, from https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/PostProcessEffects/PostProcessMaterials/

[4] Epic Games. (n.d.-a). Depth Material Expressions. Depth Material Expressions. Retrieved May 1, 2022, from https://docs.unrealengine.com/5.0/en-US/depth-material-expressions-in-unreal-engine/#scenedepth

[5] Cloward, B. [Ben Cloward]. (2022, April 14). UV Rotation - Shader Graph Basics - Episode 42 [Video]. YouTube. https://www.youtube.com/watch?v=q62CdbKNdJQ

[6] Cloward, B. [Ben Cloward]. (2020, April 16). World-Aligned Textures - UE4 Materials 101 - Episode 22 [Video]. YouTube. https://www.youtube.com/watch?v=pXOknekvmwE

[7] Smart Poly. (2022, April 21). Make An Open World Map in 20 Mins | Unreal Engine 5 [Video]. YouTube. https://www.youtube.com/watch?v=RCENB-s5POA

[8] MR3D-Dev. (2021, January 11). Create QUICK Landscapes with Landmass Blueprint Brushes in UE 4.26 [Video]. YouTube. https://www.youtube.com/watch?v=GK3KAevUy8E

[9] Klaus [klaus]. (2022, January 12). Gaea Beginner Tutorial Series : Part 1 - Interface [Video]. YouTube. https://www.youtube.com/watch?v=H-vTeYYHJPM&list=PLyNtvXvNIFMMHnW1_-hXO3RNPp_Z5CExF&index=1

[10] quadspinner Gaea. (n.d.). Convenience Features - Gaea Documentation - QuadSpinner. Gaea User’s Guide. Retrieved May 1, 2022, from https://docs.quadspinner.com/Guide/Graph/Conveniences.html

[11] quadspinner. (n.d.). Baking and Caching - Gaea Documentation - QuadSpinner. Gaea User’s Guide. Retrieved May 1, 2022, from https://docs.quadspinner.com/Guide/Using-Gaea/Cache.html

[12] UnrealCG. (2017, December 26). Footprint System - [UE4 Tutorial] [Video]. YouTube. https://www.youtube.com/watch?v=bNfRgGOfq1k

[13] Aspland, M. [Matt Aspland]. (2020, December 18). Dynamic Footprint System Part 1/2 - Unreal Engine 4 Tutorial [Video]. YouTube. https://www.youtube.com/watch?v=VJstjFMVbZw

[14] Aspland, M. [Matt Aspland]. (2020a, December 11). Footprints In Snow - Unreal Engine 4 Tutorial [Video]. YouTube. https://www.youtube.com/watch?v=8AZWZ1xaA78

[15] Casual Gamers. (2019, January 15). Ue4 Tutorials - Deathscyp Factory S03E07 - Simple cloudy sky Material in Ue4 [Video]. YouTube. https://www.youtube.com/watch?v=uD6DbQyy-tk

[16] Ashford, D. [Dean Ashford]. (2020, July 4). UE4 - Tutorial - Stylised Wind Particles (Cascade) [Video]. YouTube. https://www.youtube.com/watch?v=6HHHAcaiQkI