UE4の勉強記録

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

「Unreal Engine 4.xを使用してRPGを作成する」の足りない部分を作成する 雪山Mapの作成 Part 5

f:id:kazuhironagai77:20220417214323p:plain

<前文>

前文に書こうと思っていた内容の事実確認がまだ出来てないので、今週の前文は別な話を書く事にします。

私はBiden 大統領が就任した時「アメリカの民主党が本当にやる気があるなら学生ローンの免除をやるはずだが絶対にそれはやらない。だから民主党は国民の信頼をいずれ失う。」と予測しました。

AOC氏が確か言ったと思いますが、学生ローンの免除にかかる費用は、リーマンショックの時に、政府がウォール街の借金の免除した額の僅か10分の1だそうです。

こんなのやろうと思えば何時でも出来ます。さらにこの件に関しては共和党からの妨害も全くないです。

でもやらない。何故なら民主党にとって重要なのはウォール街からの献金で、アメリカ国民なんかどうでも良いからです。

アメリカは日本以上の学歴社会で、貧乏から抜け出すほとんど唯一の手段が大学で勉強して高学歴になる事です。しかし大学に進学する為にはお金が要ります。

はい。

親が貧乏な家に生まれた子はその時点で詰んでいるんです。

アメリカのジョークなのか、本当の話か知りませんが、昔、こんな話を聞いた事があります。

ハーバードの学生が「IQを決定すると思われる遺伝子を特定出来そうで、これが分かったらIQの高くなる遺伝子を持っている子供には医者や弁護士になるための特別な教育を初めから与える事が出来るから、予算くれ。」と言ったんです。そしたら返答が「そんなの遺伝子なんか見なくたって郵便番号を見たら分かるだろう。」って。

これは日本人には何が面白いのか分かりにくいですが、アメリカは収入によって住んでいる場所が全く違うんです。高収入の人達が住む場所は、公共施設も充実しています。更に、アメリカでは朝、車で通勤する訳ですが、向こうはサマータイムがあるので通勤する時って大抵日の出の時間に当たるんです。高級住宅地から出勤すると太陽を背にして車を運転する事になります。運転してても特に何とも思わずそのまま会社に行けます。これが所謂、庶民の住んでいる所から出勤すると、必ず太陽に向かって車を運転する事になります。もうサングラスは絶対必須で、光の中を走ってるんじゃないかって錯覚する位です。もう朝からストレスマックスになります。

中流階級の住んでいる所ですら、高級住宅地と比較するとこんなに差がある訳で、まして貧乏な所に住んでいたら身の安全すら保障されない可能性すらあります。そんな所に生まれた子供は麻薬の売人になるくらいしか選択肢がないのが事実なんです。だから、その子供が弁護士や医者になれるかどうかは、遺伝子なんて調べなくても郵便番号を見たら直ぐに分かる訳です。

そんな訳で、貧乏な家に生まれた子供にとって唯一の現実的に成功する方法は、大学に行って高収入の仕事に着く事なんです。でも大学に行くにはお金が要ります。

そのために彼らは学生ローンを借りて大学に行く訳です。

低所得者層の子供が麻薬の売人になるか大卒のサラリーマンになるかは、その地域の治安や税収に大きく影響します。学生ローンの免除をする事は、ウォール街の借金を免除するより遥かに社会に貢献します。

こんなのは誰が見ても分かり切っています。

しかしアメリカの民主党はやらないんです。

所が、最近、私が聞いた話だと、バイデン大統領が、全額ではないですが、学生ローンの免除をやる可能性があるみたいなんです。

今度の選挙の目玉になる政策なので、直前までは秘密になるらしいですが、やるのは間違いないみたいなんです。

はぁー。

と思いましたよ。

これって、私見ですが、UkraineのZelensky大統領のお陰だと思うんです。彼が、自分の命を賭けても自国の国民を守る発言をした時に、大統領はどれくらい国民のために働くべきかの基準が世界的に変わったんです。今回の戦争で。それ見て世界中の民主主義の国のリーダーが焦ったんです。

だからバイデン大統領も背に腹は代えられないので、学生ローンの免除をやる覚悟を決めたんです。

UkraineのZelensky大統領のあの時の発言は、世界の針路を一寸ですが良い方向に向けたと思います。まあ一寸だけですが。

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

<本文>

1.今週の予定

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

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

World Machineの勉強は止めます。Gaeaの勉強をやる事にします。

2Niagara: CGHOW氏のTutorialをやる

先週、当分UE5のUpdateはしないと書いていましたが、やっぱりしてしまいました。動くのかどうか心配ですが、今週はそれを試す事にします。

2.1 UE5 Niagara Baker Tutorial [1] を試しにやる

Tutorialを見るとContent Exampleを開いています。

f:id:kazuhironagai77:20220417214439p:plain

UE5のContent ExampleをDownloadしてTutorialと同じようにNiagaraのMapを調べました。

f:id:kazuhironagai77:20220417214457p:plain

Niagara_Fluidsを開きます。

早速、Errorの表示が出ています。

f:id:kazuhironagai77:20220417214514p:plain

まあしょうがないです。

Tutorialではこれの右側を開いていました。

f:id:kazuhironagai77:20220417214535p:plain

開きます。

私のPCではカクカクでしか動きません。

f:id:kazuhironagai77:20220417214600p:plain

以下のBakerと言う機能を使用するそうです。

f:id:kazuhironagai77:20220417214618p:plain

以下の画面が表示されました。

f:id:kazuhironagai77:20220417214636p:plain

Bakeをすると以下の部分にTextureがセットされるそうです。

f:id:kazuhironagai77:20220417214654p:plain

試しにBakeしてみました。

以下のTextureが作成され

f:id:kazuhironagai77:20220417214712p:plain

そのTextureがセットされました。

f:id:kazuhironagai77:20220417214730p:plain

このReal timeのFluid Simulationは私のPCではSmooth に動かすのはハッキリ言って無理ですね。

今回はBakingに集中して勉強する事にします。

今度は新しいNSを作成して何かを作成するみたいです。

いつものようにFountainを追加したNSを以下の様に変更しました。

f:id:kazuhironagai77:20220417214755p:plain

結果です。

f:id:kazuhironagai77:20220417214814p:plain

更にParticle Update SectionにCurl Noise Force Moduleを追加します。

f:id:kazuhironagai77:20220417214837p:plain

Curl Noise Force Moduleの設定は以下の様になっています。

f:id:kazuhironagai77:20220417214853p:plain

結果です。

f:id:kazuhironagai77:20220417215157g:plain

これをBakeするんでしょうか?

楽しみです。

Bakerを開くと以下の様になっています。

f:id:kazuhironagai77:20220417215231p:plain

Duration Secondが4秒のままですね。

このParticleのLife timeは1秒で、EmitterのDurationは2秒です。

1秒間まるまるParticleが発生しない時間が生ずる気がします。

以下の画面に写っているParticleの位置の調整方法がずっと分からなかったんですが、

f:id:kazuhironagai77:20220417215252p:plain

CGHOW氏、滅茶苦茶簡単にParticleの位置を微調整しています。

f:id:kazuhironagai77:20220417215315p:plain

これは適当に色々やったらやり方分かるだろうと、色々試したら分かりました。

Mouseの右クリックを押しながらDrag、とWheelを押しながらDragの2つで位置の調整が大体出来ます。

Bakeします。

f:id:kazuhironagai77:20220417215333p:plain

やっぱり1秒間何も生成されない部分もBakeされていますね。

Tutorialでも設定を1秒に直してBakeし直していました。

直しました。

f:id:kazuhironagai77:20220417215356p:plain

おお。素晴らしい。

Bakeそのものは私のPCでも出来ますね。Real TimeのFluidのSimulationが無理なだけみたいですね。

このReal TimeのSimulationがどの程度のGPUならSmoothに動くのか知りたいですね。次に買うPCのGPUには3060から3080の間を考えています。3060でも十分動くのか、もしくは3080 tiでもやっぱりカクカクしたりするのか?その辺を知りたいです。

Real TimeのFluidのSimulationってFrame Per Second毎にParticleの位置を計算しているんでしょうか?

もしそうなら実際に表示されるFrameが32 FPSだったとしてもGPU内では180 FPSで計算しないとParticle同士の衝突が計算出来ないとかあると思うんです。ので結構重い計算している気がします。3080 tiでもやっぱりカクカクしたりするなら3060で良いです。逆に3060でも全くカクつかないならやっぱり3060でも良いです。3060Tiを買ったら、3070位からカクつなかったとなったら凄いShockです。

それは兎も角として、今作成したSub UVを使用してEffectを作成します。

まず今作成したSub UVを使用して、以下に示したMaterialを作成しました。

f:id:kazuhironagai77:20220417215428p:plain

こんなやつです。

f:id:kazuhironagai77:20220417215445p:plain

Tutorialだと先程、このSub UV Textureを作成したNSを分解して、このSub UVを使用するEffectを作成していますが、折角なのでSub UV Textureを作成したNSはとっておきます。

f:id:kazuhironagai77:20220417215511p:plain

DuplicateしたNSで作成します。

Render SectionのSprite Renderer ModuleとParticle Spawn SectionのShape Location Moduleの設定を変更しました。

更に、もういらないCurl Noise Force ModuleはDeleteしました。

f:id:kazuhironagai77:20220417215529p:plain

結果です。

f:id:kazuhironagai77:20220417215646p:plain

ここでTutorialではBackgroundが明るすぎるとBackgroundを変更しています。

このやり方が知りたかった!

まずWindow からPreview Scene Settingを選択します。

f:id:kazuhironagai77:20220417220331p:plain

以下のBoxが表示されるので

f:id:kazuhironagai77:20220417220402p:plain

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

f:id:kazuhironagai77:20220417220420p:plain

結果です。

f:id:kazuhironagai77:20220417220436p:plain

こうやってBackgroundの色を変更していたんですね。

微調整をして以下の様にしました。

f:id:kazuhironagai77:20220417220455p:plain

Sub UVなのでRender SectionのSprite RendererのSub UVのSub Image Sizeの設定を以下の様にします。

f:id:kazuhironagai77:20220417220512p:plain

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

f:id:kazuhironagai77:20220417220530p:plain

結果です。

f:id:kazuhironagai77:20220417220551p:plain

こっから先が早送りで作成しているので追えません。

f:id:kazuhironagai77:20220417220608p:plain

まあ、ここまででSub UVの作成方法とそのSub UVを使用したVFXの作成方法は分かりましたので十分です。

ここまでとします。

2.2 UE5 Content Example | Niagara Fluids | Chaos Destruction [2] を見ながらNiagara Fluidsを勉強する

私のPCでは残念ながらFluid Simulationが上手く動かない事が分かったので、Content ExampleにどんなFluid Simulationがあるのか、CGHOW氏の UE5 Content Example | Niagara Fluids | Chaos Destruction [2]を見て把握しておきます。

f:id:kazuhironagai77:20220417220633p:plain

これ読むと気体と液体の両方のSimulationをやっていると書かれています。これって非圧縮と圧縮の流体を両方、Runtimeで計算出来るようになったって事なんでしょうか?

このGraphic でRuntime に流体のSimulationが出来るって結構革命的な事だと思うんですが。

次の分を読むと「Collusion、Lightingなどの設定方法についても説明します。」と書かれています。Collusionはまだ理解できますが、Lightingの計算までRuntimeでやってるって事でしょうか?

その下に書かれている4つの原則も興味深いです。

まず最初の原則ですが、全てのSimulationの原理はModuleで組まれていてBlackboxになっている箇所はないそうです。

これは勉強しがいがあります。

私は昔、液体のSimulationをRuntimeに計算する事出来ないかと思い、その手始めに、沢山の球の挙動をRuntimeでSimulateした事がありました。結局、球の挙動を計算する間隔とFrameを作成する間隔を同じにすると球同士が衝突しないで抜けてしまったりして諦めた事があります。

なのでこの辺はとても興味深いです。

次の原則ですが、Gridについて語っています。やっぱりGridを作成してSimulateしているんですね。

以下の警告が表示されています。

f:id:kazuhironagai77:20220417220653p:plain

これは私のPCのせいなんでしょうか?

多分そうでしょうね。Vertex Shader Layer Supportが無いです。と言っていますね。

<Gas Simulations

これは今、見たやつです。

一応、動く所まで自分のPCでも追っていきます。

f:id:kazuhironagai77:20220417220715p:plain

解説版が見えないので抜き出します。

f:id:kazuhironagai77:20220417220740p:plain

もうNavier-Stokes 方程式の解き方どころか式のParameterですら覚えていません。Densityとか温度とか書かれていますね。確か粘性があったと思いますが、どうやって粘性を定義したのかも忘れてしまいました。

新しいPCを買ったら少しずつ勉強して行きたいと思います。

2Dの方のVFXを開いたらPreviewに何も写っていなかったんですが、上から見たら写っていました。

f:id:kazuhironagai77:20220417220757p:plain

<Liquid Simulation

f:id:kazuhironagai77:20220417220822p:plain

今度は液体のSimulationですね。

f:id:kazuhironagai77:20220417220843p:plain

特に気になる事は書かれていませんね。

2Dの方のNiagaraを見てみます。

f:id:kazuhironagai77:20220417220913p:plain

Emitter Spawn SectionにRaster Grid ModuleとかVelocity Grid Moduleとかあります。これでGridを作成しているんでしょうね。

<Explosion

f:id:kazuhironagai77:20220417220935p:plain

f:id:kazuhironagai77:20220417220954p:plain

これ、爆発している部分が光っているんですが、これも計算しているんでしょうか?

f:id:kazuhironagai77:20220417221019p:plain

NiagaraのModuleを見るとLighting Gridってのがあります。

うーん。早く勉強したい。

<Fire

f:id:kazuhironagai77:20220417221044p:plain

これはRenderingさせるとPCが唸りを上げてしかも不完全なRenderingしか出来なかったです。

この辺が限界みたいです。

<Smoke-Lighting

小さくしたらそれなりに見えるかもと思って、後ろ側に下がって撮影したら以下に示した位のRenderingは出来ました。

f:id:kazuhironagai77:20220417221108p:plain

f:id:kazuhironagai77:20220417221120p:plain

解説を読むとLightが使えると書かれています。

以下に示した様にDirectional LightがFluid Lightとして配置されています。

f:id:kazuhironagai77:20220417221138p:plain

Smokeの陰影を計算しているって事でしょうか?

もしそうなら凄いですね。

<Colored Smoke

f:id:kazuhironagai77:20220417221204p:plain

f:id:kazuhironagai77:20220417221223p:plain

試しにボタンに載ったらPCが凄い音し始めました。怖いので見るだけにしておきます。

<Smoke and Fire -Camera Facing

f:id:kazuhironagai77:20220417221250p:plain

PCがへんな音し始めて止まらなくなったのでここで中止します。

来週、続きをやるかもしれませんしやらないかもしれません。

2.3 UE5 Content Example | Niagara Fluids | Chaos Destruction [2] を見ながらIK Rigを勉強する

 UE5 Content Example | Niagara Fluids | Chaos Destruction [2]はFluid SimulationのReviewだけじゃなくて、IK RigのReviewもやっていました。これも見る事にします。

f:id:kazuhironagai77:20220417221319p:plain

UE5ではIKが標準で備わっているみたいな話を聞きました。

IKに関してはそれぐらいしか知りません。

博物館でも見学する感じで見ていきます。

<IK Goal

f:id:kazuhironagai77:20220417221346p:plain

これは上体をIK Rigで動かしているんでしょうか?

全く分からないです。

BPを開くとPositionという変数にTick 関数で値をセットしていました。

f:id:kazuhironagai77:20220417221408p:plain

Anim Classにセットされているのは

f:id:kazuhironagai77:20220417221429p:plain

でした。開いて見るとEvent Graphで先程のPositionの値をこのクラスのPositionにパスして

f:id:kazuhironagai77:20220417221454p:plain

Anim GraphでIK Rig ノードにパスしていました。

f:id:kazuhironagai77:20220417221524p:plain

どうやらこのIK Rig ノードでIK Rigを操るみたいです。

<Multiple Solver

こっちはFluid SimulationみたいにPCが唸りを上げる事はないので安心して見れます。

f:id:kazuhironagai77:20220417221548p:plain

IKの計算方法も何種類もあると言う事何でしょうか?

左端のSpiderのAnim ClassではIK Rig ノードが使用されていました。

f:id:kazuhironagai77:20220417221623p:plain

中央のBody MoverでもIK Rig ノードが使用されていました。

f:id:kazuhironagai77:20220417221641p:plain

あれ?

あ、分かりました。

左端のSpiderのIK Rig NodeのParameterにはRig Definition AssetにIK Multiple Solverがセットされていました。

f:id:kazuhironagai77:20220417221658p:plain

中央のSpiderのIK Rig NodeのParameterにはRig Definition AssetにIK  FBIKがセットされていました。

f:id:kazuhironagai77:20220417221714p:plain

これらを開いて見てみましょう。

f:id:kazuhironagai77:20220417221733p:plain

むー。何でしょう。

これはAnim BP Classだそうです。

正直、これはどう見たらいいのか分かりません。

あれ、Solverに2つ入っています。

f:id:kazuhironagai77:20220417221751p:plain

これって左端のSpiderだと勝手に思っていましたが右端のSpiderみたいです。

<Long Bone Chains

f:id:kazuhironagai77:20220417221813p:plain

これもSolverの一種なんでしょうか?

このMonsterにセットされているAnim BP Classまで遡って使用されているSolverをチェックしましたが先程のMulti-Solverと同じでした。

f:id:kazuhironagai77:20220417221836p:plain

以下に示したBoneが特殊なんでしょうか?

f:id:kazuhironagai77:20220417221852p:plain

良く分かりません。

<Chain Pull Strength

f:id:kazuhironagai77:20220417221917p:plain

Anim BP Classに使用されているクラスのIK_HighPullStrengthとIK_LowPullStrengthの

f:id:kazuhironagai77:20220417221942p:plain

Pull Chain Alphaの値がLowが0とHighが1でした。

f:id:kazuhironagai77:20220417222004p:plain

<Bone Limits

f:id:kazuhironagai77:20220417222025p:plain

こっちはHierarchyに違いがありました。

f:id:kazuhironagai77:20220417222058p:plain

Bone一つずつにIKがセットされています。

Fluid Simulation程ではないですがこっちも結構PCがうるさくなって来ました。

この辺で止めておきます。

2.4 UE5 Content Example | Niagara Fluids | Chaos Destruction [2] を見ながらChaos Destructionを勉強する

Destructionに関しては全く勉強していないので全く知りません。

全部のSampleを見るだけ見ました。Fluid Simulationほどじゃないですが、PCが凄い音しています。今のPCで長時間、これらのSampleを見たくはないです。

パッと見で面白そうなSampleを記しておきます。

Niagara

f:id:kazuhironagai77:20220417222125p:plain

やっぱりNiagaraと組み合わせる事で、見た目が格段にリアルになります。

<Clustered Voronoi Fracture

f:id:kazuhironagai77:20220417222157p:plain

崩れるPieceが表示されている中で一番綺麗だと感じました。

<Applying Velocity

f:id:kazuhironagai77:20220417222219p:plain

Chaos Field Systemから一個選ぶとなるこれが一番興味深かったです。

正直どれも凄いですが、これが一番理解出来たと言うのもあります。

以上です。

後、見ててかなり気持ち悪くなりました。自然に画面を見ると視線がどうしても地面を見る位置になります。しかし見たい展示物はそれよりもかなり高い位置に配置されていて視線をあっちこっちに移動する必要が出て来ます。多分それで気持ち悪くなるんです。

3Materialの勉強

3.1 Post ProcessによるOutlineの作成の続き

先週、Post ProcessによるOutlineを Simple Post Process Outline in Unreal [3]で勉強しました。

ここで作成したMaterialですが4.27だと何も起きません。しかし4.24だと以下に示した様に出来ました。

f:id:kazuhironagai77:20220417222312p:plain

こんなマイナーな部分の勉強のマイナーな問題は普通なら無視して先に進むんですが、このTutorial、以下に示した様に、となりのPixelの値を取得する方法を使用しているんです。

f:id:kazuhironagai77:20220417222329p:plain

この実装方法、Sobel Operatorと言うらしいですが、絶対に出来る様になりたい事の一つなんです。

のでこの辺の勉強を最初にやる事にします。

3.2 Unreal Engine City Building Game - Mouse Cursor, Click Object In-World and Highlight Material - EP 3 [4] を軽くみる

 Simple Post Process Outline in Unreal [3]のコメント欄にUnreal Engine City Building Game - Mouse Cursor, Click Object In-World and Highlight Material - EP 3 [4]でほとんど同じ事をしているが、そのやり方は4.27でも出来ました。と書かれていました。ので、それから確認します。

f:id:kazuhironagai77:20220417222401p:plain

軽く見ました。

この作者が自分で言っていますが、何でこれで動くのか分かってはいないそうです。いろんなTutorialでこのやり方でやっていてそれをそのまま覚えたと言っています。

実装方法は結構複雑で見ただけでは理解出来ませんでした。

このTutorialを基準にOutlineの作成方法を勉強するのは危険な気がします。

Unreal CG氏は説明が足りない時が多々ありますが、本人にとっては当たり前過ぎて説明しないだけで本人は何をやっているのかは理解しています。この人は違います。

Unreal CG氏のOutlineの作成方法も先にチェックすべきな気がします。

Toon Shader & Custom Shadow - UE4 Postprocess Tutorial [5]>

Unreal CG氏のOutlineのTutorialであるToon Shader & Custom Shadow - UE4 Postprocess Tutorial [5]におけるOutlineの作成方法を調べます。

f:id:kazuhironagai77:20220417222452p:plain

とっても綺麗なOutlineが出来ています。

ただしこのTutorial、MainはToon Shaderの方でOutlineについては20分30秒位から24分10秒の間でしか作成していません。

Unreal CG氏もこれまでのTutorialで何回も色々な方法でOutlineを作成して来たので、今回のやり方を凄く詳しく解説する事はしないと言っています。

思い出してきました。

数年前、Unreal CG氏のTutorialで色々勉強したんですが、その時はまだMaterialやVFXの基礎が全くない状態だったので、あんまり身に付かなかったんです。

<作戦を変更します>

元々、今回、敢えてPost Processの部分を復習しようと思ったのは、UEのMaterial内でSobel Operatorのやり方を覚えたかったからです。

その前にこの何週間の目標としてToon Shadingの基礎を理解すると言うのがあります。

更にUnreal CG氏のToon Shader & Custom Shadow - UE4 Postprocess Tutorial [5]はToon Shadingでは右に並ぶもの無しの出来栄えです。

f:id:kazuhironagai77:20220417222529p:plain

これはToon Shadingの最後の仕上げとしては必ず勉強したいです。しかし今見ても、かなり難しい内容なので、これを今直ぐやるのは無謀な気もします。

UEのMaterial内でSobel Operatorのやり方は今回は諦めます。

そして今週はBen Cloward先生のToon ShadingのTutorialの最後のやつであるToon Shader Specular Highlights - Shader Graph Basics - Episode 40 [6] を勉強します。これを勉強した後に又考える事にします。

3.3 Toon Shader Specular Highlights - Shader Graph Basics - Episode 40 [6] を軽く見る

今週は題の通りにSpecular lightをToon Shadingに追加する方法についてです。

f:id:kazuhironagai77:20220417222549p:plain

2つのやり方について解説していました。そんなに難しそうではないので、ここで実装もします。

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

f:id:kazuhironagai77:20220417222607p:plain

まずBlinn Specularから作成していきます。

Half angleを作成する為にAtmosphere Sun Light VectorとCamera Vectorを足します。とTutorialで説明されていますがHalf Angleって半角の事です。意味が分かりません。

一応、言われた通りに作成しました。

f:id:kazuhironagai77:20220417222623p:plain

そう言えばMaterialのPreview内での床の表示方法が分からないと先週のBlogに書きましたが、さっきのNiagaraの勉強でそのやり方が分かったので床を表示させてみました。

f:id:kazuhironagai77:20220417222642p:plain

Preview SettingのShow Floorにチェックを入れるだけです。

f:id:kazuhironagai77:20220417223020p:plain

Normalizeします。

f:id:kazuhironagai77:20220417223039p:plain

うーん。良く分からん。

Vectorの公式にこういうのがあるんでしょうか?

先を見て行きます。

f:id:kazuhironagai77:20220417223103p:plain

Normal VectorとDot Productしました。

結果です。

f:id:kazuhironagai77:20220417223120p:plain

うーん。分かって来ました。

球のNormal Vectorと前半のゴチャゴチャした計算から作成されたVectorのDot Productの結果が球の上のSpecular lightの位置と強さを表しているんです。

正しこの計算結果は間違ったSpecular lightも生成してしまいます。以下に示した様に影側から球を除くとSpecular light が生成されています。

f:id:kazuhironagai77:20220417223140p:plain

以下の結果を追加します。

f:id:kazuhironagai77:20220417223202p:plain

結果です。

f:id:kazuhironagai77:20220417223218p:plain

影から球をのぞくと

f:id:kazuhironagai77:20220417223236p:plain

となりました。

これを先週までに作成したToon Shadingと合成します。

色々な合成方法がありますが、取りあえず色を指定する前で合成してみます。

f:id:kazuhironagai77:20220417223313p:plain

結果です。

f:id:kazuhironagai77:20220417223429p:plain

あんまりToon Shadingと言う感じはしませんね。

Specular lightが弱いので光をもっと強くします。

f:id:kazuhironagai77:20220417223447p:plain

結果です。

f:id:kazuhironagai77:20220417223503p:plain

今度は色付けした後にSpecular lightを混ぜます。

f:id:kazuhironagai77:20220417223528p:plain

うーん。こっちの方がいいかも。

Specular lightにEdgeを追加します。

f:id:kazuhironagai77:20220417223716p:plain

Specular lightの計算の最後でRoundしました。

結果です。

f:id:kazuhironagai77:20220417223739p:plain

断然、こっちの方が良いですね。

うーん。成程。

<Phong

次のやり方はPhong Methodだそうです。

あ、そう言う事か。

分かりました。

Phone ShadingのSpecular lightを実装するんですね。Blinn Shadingは知らないんですが調べてみます。

Learning OpenGLAdvanced Lighting [7] に説明がありました。

f:id:kazuhironagai77:20220417223856p:plain

どうやらBlinn Specular lightはPhongの改良型の様ですね。

このサイトに以下に示した分かり易い図も載っていました。

f:id:kazuhironagai77:20220417223915p:plain

これは後で読む事にします。

まずPhongのSpecular lightの実装からやって行きます。

PhongのSpecular lightの計算方法ぐらいは今でも覚えてると思いたいですが、覚えていません。

以下の方法で実装しました。

f:id:kazuhironagai77:20220417223945p:plain

これも後で復習します。

結果です。

f:id:kazuhironagai77:20220417223957p:plain

Ben先生、Jim Blinn氏についてはかなり親しみを込めて紹介していますが、Phong氏に対してはあんまり興味ないみたいですね。

この後の実装はBlinn Specular lightと同じなので結果だけ示します。

実装です。

f:id:kazuhironagai77:20220417224627p:plain

結果です。

f:id:kazuhironagai77:20220417224733p:plain

これだけ見るとBlinnのSpecular lightの方が断然良いですね。

3.4 PhongのSpecular lightとBlinnのSpecular lightの理論を復習する

まずPhongのSpecular lightですがLearning OpenGLBasic Lighting [8]に分かり易い解説が載っていました。

f:id:kazuhironagai77:20220417224803p:plain

もうこの解説のままですね。

f:id:kazuhironagai77:20220417224825p:plain

この部分でLight SourceのNormal Vectorに対しての反射を計算しています。上の図のR Barがこの計算結果と同じになります。

その後、Light SourceのNormal Vectorに対しての反射させたVectorつまりR BarとCamera VectorでDot Productを計算します。

f:id:kazuhironagai77:20220417224845p:plain

これは” the angular distance between this reflection vector and the view direction”の部分を計算しているだけですね。最初何でDot Productが角度と関係しているのかと思ったんですが、Dot Productの性質を角度から解説していただけでした。

OpenGLの説明を読んだらSpecular Lightの理論や計算の仕方も簡単に理解出来ます。

やっぱりUEのMaterialも理論をしっかり教えるべきだと思います。そうしたらUEでMaterialを勉強する人も何をしているのかの根本が理解出来ると思うんです。

BlinnのSpecular lightの理論をLearning OpenGLAdvanced Lighting [7]で勉強します。

f:id:kazuhironagai77:20220417224906p:plain

解説を読むと視線と光のVectorのHalfway Vectorを計算します。そのHalfway VectorとNormal VectorのDot ProductがBlinnのSpecular lightになります。

それでHalfwayのVectorの計算方法ですが以下の式で計算出来るそうです。

f:id:kazuhironagai77:20220417224943p:plain

うん。これの理屈が分からない。けど今回はここは無視します。

この式と以下の実装はやっている事が全く一緒です。

f:id:kazuhironagai77:20220417225000p:plain

はい。

絶対値で割るのはNormalizeしてるからです。ので全く同じ事をしています。

この後、Phong と同じ様にDot Productを計算します。

正し、Normal Vectorとです。

f:id:kazuhironagai77:20220417225023p:plain

UEの実装でも全く同じ事をしています。

はい。理解出来ました。

3.5 Toon Shadingのまとめと感想

これで、Ben Cloward先生のToon Shadingが終わりました。Projectionの時とは違い、ほぼ簡単でした。

Toon ShadingはTextureを利用する方が質が高いものが作成出来そうです。

OutlineはPost Processの勉強がまだ終わっていませんが、本当のOutlineでアニメの線画とはかなり違っている気がします。MMDのモデルをUEにImportしてそれにOutlineを追加した場合、どう見えるのか試してみたいですね。

Specular Lightはまあ、あってもなくてもいい気がします。Tutorialでも言っていましたが瞳のキラキラを作成するのには使えそうです。

4RPGStoryの改善

以下のBugを直して行きます。

f:id:kazuhironagai77:20220417225055p:plain

と言っても今週だけで全部を直すのは無理なので、1,2個ずつ直して行きます。

4.1 宿屋、道具屋、武器屋、神殿のUIの直し

宿屋、道具屋、武器屋、神殿のUIを統一したデザインにします。これらをどう直すのかについて決定する必要があります。

<ボタンの配置について>

「会話」と「出る」は4つ全てのUIにあります。以下の様に上と下に配置する事にします。

f:id:kazuhironagai77:20220417225124p:plain

武器屋のUIです。

f:id:kazuhironagai77:20220417225206p:plain

宿屋です。

f:id:kazuhironagai77:20220417225614p:plain

神殿です。

f:id:kazuhironagai77:20220417225638p:plain

これ見て思ったんですが、神殿の機能は宿屋と統合しても良い気がしてきました。

宿屋に泊まると自動的にSaveされ、Saveを選択した場合はSaveのみ出来る訳です。

<PlayerのParameterの表示について>

現状、以下の様な表示になっています。

f:id:kazuhironagai77:20220417225704p:plain

HP 100/100

MP 20/20

と表記すればMHPやMMPは要らないです。

名前、職業、Levelの表記もあると便利だと思います。

こんな感じで作成してみました。

f:id:kazuhironagai77:20220417225722p:plain

以下の様になりました。

f:id:kazuhironagai77:20220417225739p:plain

金貨も追加します。

f:id:kazuhironagai77:20220417225807p:plain

これを全部のUI上で作成するのは面倒なので新しいWidgetで作成してそれを読み込む事にします。

新しいWidget

f:id:kazuhironagai77:20220417225826p:plain

を作り、先程作成したParameterの表を丸ごと、Copyします。

f:id:kazuhironagai77:20220417225844p:plain

f:id:kazuhironagai77:20220417225904p:plain

Widget内に使用するWidgetの場合、Canvasを使用したままにするとサイズが指定した値を保っていたはずです。

のでこのやり方でやってみます。

ただし私がWidgetの作成方法を勉強したTutorialではWidget内に作成するWidgetCanvas Panelは絶対に使用しませんでした。のでこのやり方が正しいのかどうかは分かりません。

武器屋のUIにこのParameterのWidgetを追加しました。

f:id:kazuhironagai77:20220417225924p:plain

結果です。

f:id:kazuhironagai77:20220417225946p:plain

良いんじゃないでしょうか?

ParameterのWidgetに実際のPlayerの操作するキャラの値を表示する実装を追加しました。

f:id:kazuhironagai77:20220417230007p:plain

結果です。

f:id:kazuhironagai77:20220417230021p:plain

出来てそうですね。

所持している金貨も同様にWidgetにします。

f:id:kazuhironagai77:20220417230044p:plain

f:id:kazuhironagai77:20220417230056p:plain

f:id:kazuhironagai77:20220417230108p:plain

以下の様に武器屋のWidgetに追加しました。

f:id:kazuhironagai77:20220417230124p:plain

実際のPlay中の画面です。

f:id:kazuhironagai77:20220417230151p:plain

道具屋も同様に直します。

f:id:kazuhironagai77:20220417230211p:plain

うーん。

まあ、前よりはマシです。

宿屋も直します。

これを

f:id:kazuhironagai77:20220417230242p:plain

以下の様にしました。

f:id:kazuhironagai77:20220417230303p:plain

実際の画面です。

f:id:kazuhironagai77:20220417230323p:plain

神官はもしかしたら無くしてSaveする機能は宿屋と統合するかもしれないので今回は、そのままにしておきます。

4.2 「Start 画面からMap1に移動する時、Map1のLandscapeが完成する前にCharacterが生成して落ちてしまうBug」を直す。

このBugの本当の問題はPackagingした後でどうなるのかです。

f:id:kazuhironagai77:20220417230354p:plain

現状、対症療法として石をPlayer の操作するキャラが生成される場所に配置しました。

f:id:kazuhironagai77:20220417230414p:plain

これでいけると思ったんですが、Persistent LevelがSave出来なくなってしまいました。

f:id:kazuhironagai77:20220417230436p:plain

一端、消します。

あれ。

直りません。

ああ。

新たなBugを生成してしまいました。

<Persistent LevelがSave出来ないBugを直す>

調べたらPersistent Levelだけじゃなくて

f:id:kazuhironagai77:20220417230544p:plain

もSave出来なくなっています。

これらを直していきます。

一番簡単そうなLevel 2_1を見てみます。

f:id:kazuhironagai77:20220417230605p:plain

このPlanはLevel 2_1内に配置されていますがPlaneはMap1に属しています。

f:id:kazuhironagai77:20220417230622p:plain

消してみます。

直りませんね。

正直、今回問題は何処が原因なのか分かりません。

うーん。と悩んで、Task Managerを開いて見たらUE Editorが2個動いていました。

偶によくある。と言う奴で、UEのEditorが裏でもう一個起動していて同じProjectを開けている事があります。これはTask Managerを開いて見ないと分かりません。

PCの下の部分に2個のEditorが表示される事もないです。

f:id:kazuhironagai77:20220417230642p:plain

何かPCが普段よりうるさいなと思っていたのですが、UE5でFluid Simulationを動かした後だったので、気のせいと思っていました。

もう一回石をMap1に配置しました。

f:id:kazuhironagai77:20220417230659p:plain

今度は普通にSave出来ました。

f:id:kazuhironagai77:20220417230714p:plain

5Open Worldの検証

5.1 先週の検証

先週、Height Mapと実際のLandscapeの関係を以下のように推測しました。

f:id:kazuhironagai77:20220417230744p:plain

これを確認します。

まずUEのHeight Mapは1009x1009 Pixelにすべき説はどこから来ているのかから検討します。

公式のDocumentであるLandscape Technical Guide [9]によると

f:id:kazuhironagai77:20220417230802p:plain

お勧めの中に、結構色々なSizeがあります。

試しに1009x1009のImageを作成してそれをImportしてみます。

f:id:kazuhironagai77:20220417230828p:plain

Importしようとしたら以下の設定が出て来ました。

f:id:kazuhironagai77:20220417230916p:plain

これってさっきのLandscape Technical Guide [9]の設定と同じですね。

f:id:kazuhironagai77:20220417230932p:plain

高さのScaleだけ半分にして作成してみます。

f:id:kazuhironagai77:20220417230951p:plain

出来ました。

f:id:kazuhironagai77:20220417231008p:plain

サイズを見ると一辺1009mになっています。

f:id:kazuhironagai77:20220417231045p:plain

今度はScaleのサイズを先週、計算した値に変更して別のLandscapeをImportしてみます。

f:id:kazuhironagai77:20220417231103p:plain

結果です。

f:id:kazuhironagai77:20220417231121p:plain

やっぱり一辺が16kmになっています。

一個のComponentのサイズが2㎞になっていました。

f:id:kazuhironagai77:20220417231140p:plain

先週の予測と全く同じ結果になりました。

しかしこれだけ大きくしても

f:id:kazuhironagai77:20220417231228p:plain

Levelは一個しかありません。

後、以下に示しましたが、Sky Sphereが白く表示されています。これってどうやって動かすんでしょうか?

f:id:kazuhironagai77:20220417231252p:plain

Sky Sphereの件は後で考えるとして、今度は1009x1009でScale が100のLandscapeを16枚作成してみます。

以下のCreate Newから作成しました。

f:id:kazuhironagai77:20220417231314p:plain

Persistent Levelの隣に作成しました。

f:id:kazuhironagai77:20220417231408p:plain

でもLevel Detailsに何も表示されません。

f:id:kazuhironagai77:20220417231428p:plain

World Compositionを使用している他のProjectを見たら以下のようにLevelsの隣に別なボタンがありました。

f:id:kazuhironagai77:20220417231500p:plain

調べたら以下のCheckを最初に入れる必要がありました。

f:id:kazuhironagai77:20220417231517p:plain

前に作成したSub Levelを消して

f:id:kazuhironagai77:20220417231534p:plain

を入れました。

以下の方法で出来ました。

LevelsからCreate Newを選択します。

f:id:kazuhironagai77:20220417231551p:plain

名前を入力しろと出て来ますので1_3としました。

その後で生成された1_3を選択します。

f:id:kazuhironagai77:20220417231616p:plain

選択すると水色になります。

後は1009x1009のLandscapeを作成するだけです。

先程のHeight Mapを利用して3つのSub Levelを作成してみました。

f:id:kazuhironagai77:20220417231644p:plain

Streaming Distanceを500mにセットして

f:id:kazuhironagai77:20220417231715p:plain

テストします。

真ん中の山をうろうろすると

f:id:kazuhironagai77:20220417231732p:plain

隣のSub Levelの山が読み込まれました。

f:id:kazuhironagai77:20220417231755p:plain

これ見ると、UE4ではSub Level一個のLandscapeの大きさは1009m^2を想定していたんだなと、感じました。

Map1では、Sub Level一個のLandscapeの大きさは

f:id:kazuhironagai77:20220417231822p:plain

60mで作成してました。

うーん。

この前DownloadしたA Boy and His KitのSub Level一個に入っているLandscapeの大きさは5㎞でした。

f:id:kazuhironagai77:20220417231843p:plain

これ位が適切なSub Level内のLandscapeの大きさなんでしょうね。

<先週の復習のまとめ>

徒然なるままに記述していたのでまとまりがなくなってしまったのでここでまとめ直します。

  • 先週の予測は全て合っていました。今回実際にLandscapeを作成して確認しました。
  • 16㎞^2Open Worldを作成する最も適切な方法は1009x1009Height Map1km^2LandscapeとしてImport16x16枚それを作成する事のようです

5.2 色々な確認事項

<UE5とWorld Partition

Open Worldの勉強は次のRPGの作成のためです。次のRPGはUE5で作成するのであんまりWorld Compositionの勉強を頑張る必要はないです。どこまで勉強するのか決めておく必要があります。

ただWorld Compositionの勉強をしていて思ったのは、World PartitionはWorld Compositionの進化形でWorld Compositionで勉強した内容はあまり無駄にならない気もしています。

この辺は慌てて損する事のないようにしたいです。

<Smart Poly氏のTutorial

2つ記録しておきたい事があります。

一目は、Smart Poly氏がHow To Make A Massive Open World Map In Unreal Engine 4 [10]で、どうやって沢山のSub LevelとそのSub Levelに属しているLandscapeを作成したかについてです。

2022-02-06のBlogにまとめられていますが、以下に示した様に

f:id:kazuhironagai77:20220417231944p:plain

Import Tiled Landscape…からImageを選択しています。

しかしその時に選択したImageがpngのFileじゃないんです。

f:id:kazuhironagai77:20220417232007p:plain

こういうやつです。

その後で、MaterialをセットしてそれぞれのLayerに対してHeight Mapを読み込んでいます。

このやり方で、16km^2のOpen Worldを作成する方法は理解出来たんですが、World Machineを使用してOpen World用のHeight Mapを作成する方法が分かりません。特に上記に出て来たImage Fileの作成方法がです。

これに関してはWorld Machineの有料版を買って自分で作成してみるしかありません。しかしそれだけのお金を掛ける価値があるのかとなると、うーん。となってしまいます。

更にもう2つ、Smart Poly氏が作成したOpen WorldのTutorialがありました。

f:id:kazuhironagai77:20220417232104p:plain

この辺も見ておく必要がありますね。

6Gaeaの勉強

まだ2回目の勉強ですが、知りたい事が沢山出て来ました。

その中で最も知りたいのはUnrealでOpen Worldを作成するためには1009x1009のHeight Mapを沢山生成する必要があります。それがGaeaの無料版で出来るのかです。もし出来ないのなら有料版を購入するしかないですがその場合、World Machineの有料版を購入した場合と比較してどっちが有利なのか?です。

こんな都合の良い質問の回答が直ぐに分かる訳ないと思っていたらSmart Poly氏のTutorial、Gaea To Unreal Engine 5 | Next-Gen Terrain? [11]にそのものズバリの回答がありました。

6.1 Gaea To Unreal Engine 5 | Next-Gen Terrain? [11]を見る

Smart Poly氏の解説によると以下の図のTiled Build Resolutionが出来るかどうかが問題みたいです。

f:id:kazuhironagai77:20220417232154p:plain

となるとPro versionを購入する必要がありますね。大体$200となりますね。

しかしSmart Poly氏の説明だとFree版もかなり良いらしいです。World Machineの無料版は516 x 516までしか作成出来ないみたいな事を言っていました。

f:id:kazuhironagai77:20220417232217p:plain

となると無料版でも1009x1009のHeight Mapは作成出来るみたいですね。

うーん。

となると一年位は無料版で勉強してみるのが手ですね。

今回作成してるRPGのMapはこの無料版で作成した物に最終的には変更出来る様にしたいですね。

6.2 Gaeaの公式のTutorialを見る

何と、Gaeaの公式のTutorialがYouTube上にある事が分かりました。

f:id:kazuhironagai77:20220417232247p:plain

最初の一個目を見てみます。

A 6-minute introduction to Gaea [12]です。

軽く見たんですがかなり分かり易いです。実際にやってみる事にします。

A 6-minute introduction to Gaea [12]を勉強する>

Start Screenですが全然違いますね。

Tutorialのは

f:id:kazuhironagai77:20220417232309p:plain

となっていますが、私のは

f:id:kazuhironagai77:20220417232326p:plain

です。

Tutorialの作成した年を見たら2019年でした。それならVersionがかなり前のものになるので仕方ないですね。

TutorialはGraphを選択しました。

私のVersionではどれがそれに当たるのか分かりません。先週、選択したDesert Mountainを開きます。

f:id:kazuhironagai77:20220417232345p:plain

f:id:kazuhironagai77:20220417232354p:plain

Tutorialの実装は

f:id:kazuhironagai77:20220417232407p:plain

だけです。

元々あった実装を消してTutorialと同じ実装を組んでみました。

f:id:kazuhironagai77:20220417232450p:plain

結果です。

f:id:kazuhironagai77:20220417232519p:plain

折角作成したのですが、Tutorialもこの実装を消してしまいました。一から作成するそうです。

Slop Noiseを入れます。

f:id:kazuhironagai77:20220417232610p:plain

結果です。

f:id:kazuhironagai77:20220417232627p:plain

もう一個Slopを追加します。

f:id:kazuhironagai77:20220417232644p:plain

こんな結果になりました。

f:id:kazuhironagai77:20220417232726p:plain

2番目のSlop NoiseノードのParameterの値を変えます。

f:id:kazuhironagai77:20220417232746p:plain

2つのSlop NoiseノードをCombineノードで繋ぎます。

f:id:kazuhironagai77:20220417232806p:plain

3つのノードのParameterを調整すると

f:id:kazuhironagai77:20220417232823p:plain

となりました。

Erosionノードを追加します。

f:id:kazuhironagai77:20220417233608p:plain

結果です。

f:id:kazuhironagai77:20220417233632p:plain

Tutorialでは以下の様に川が出来ていますが、私のは単なる平地みたいです。

f:id:kazuhironagai77:20220417233657p:plain

Tutorialで2Dを表示しています。

同じTool Barは存在しないので先週、習った方法で2D を表示しました。

f:id:kazuhironagai77:20220417233715p:plain

そしたら3Dの表示が

f:id:kazuhironagai77:20220417233731p:plain

になってしまいました。

画面を右クリックして以下のBoxを表示して

f:id:kazuhironagai77:20220417233819p:plain

Flowを表示します。

結果です。

f:id:kazuhironagai77:20220417234040p:plain

これを利用してColor Textureを作成したりするそうですが、今回のTutorialではまだしないのでこの機能は今は無視して良いそうです。

今度は、少しSand Stonyにするそうです。

Terraceノードを追加します。

しかしどこにあるのか分かりません。

Graph画面を右クリックしたら以下のBoxが表示されました。

f:id:kazuhironagai77:20220417234101p:plain

TeとタイプしたらTerraceが表示されました。

Tutorial通りに繋ぎました。

f:id:kazuhironagai77:20220417234118p:plain

結果です。

f:id:kazuhironagai77:20220417234134p:plain

もう一個Terraceノードを追加します。

Tutorialで、今度はさっき私がやった方法でTerraceノードを追加しました。

f:id:kazuhironagai77:20220417234203p:plain

恐ろしい位の偶然の一致です。

偶に私、テレパシー能力があるんじゃないのかと思う時があるんですが、今回もそうでした。

Tutorialと同じ方法で追加するのもあれなので、Duplicateしました。

f:id:kazuhironagai77:20220417234222p:plain

結果です。

f:id:kazuhironagai77:20220417234239p:plain

更にErosionノードをTerranceノードの後に追加しました。

f:id:kazuhironagai77:20220417234257p:plain

結果です。

f:id:kazuhironagai77:20220417234315p:plain

うーん。良く分かりません。

Resolutionを1kにします。

f:id:kazuhironagai77:20220417234339p:plain

そして出力します。

Erosionを右クリックして以下のBoxを表示し、Mark for Exportを選択します。

f:id:kazuhironagai77:20220417234354p:plain

TutorialのBuildがないな。と思ったら右端にありました。

f:id:kazuhironagai77:20220417234415p:plain

Unreal Engine用にResolutionを1009にセットしてBuildしました。Color SpaceがSRGBになっていますが、これの意味はまだ分かりません。

結果です。

f:id:kazuhironagai77:20220417234435p:plain

うーん。一応、Height Mapらしきものが生成されていますね。

7.雪山のMapの作成

7.1 先程作成したHeight Mapを使用してLandscapeを作成する

Importしました。

f:id:kazuhironagai77:20220417234509p:plain

Play画面です。

f:id:kazuhironagai77:20220417234527p:plain

台から飛び降りました。お尻がぴゅーとしましたが無事に着地しました。

f:id:kazuhironagai77:20220417234545p:plain

先週まで作成していたMaterialをセットします。

f:id:kazuhironagai77:20220417234602p:plain

Layerを適当に塗り分けます。

f:id:kazuhironagai77:20220417234621p:plain

結果です。

f:id:kazuhironagai77:20220417234706p:plain

適当に塗ったので、Dirtと雪が混じっているLayerや崖のLayerが脈絡なく存在しています。

飛び降ります。

f:id:kazuhironagai77:20220417234727p:plain

うん。いい感じです。

f:id:kazuhironagai77:20220417234749p:plain

雪玉は多すぎますね。調整します。

f:id:kazuhironagai77:20220417234813p:plain

草は要らないですね。外します。

f:id:kazuhironagai77:20220417234947p:plain

こっちの方が良いですね。

代わりにSnow Dirt Blend LayerにDirtを追加しました。

f:id:kazuhironagai77:20220417235007p:plain

f:id:kazuhironagai77:20220417235013p:plain

そしてDirtに草を追加します。

f:id:kazuhironagai77:20220417235039p:plain

結果です。

f:id:kazuhironagai77:20220417235059p:plain

一寸だけ微調整します。

f:id:kazuhironagai77:20220417235115p:plain

IceとSnowは2つに分けました。

結果です。

f:id:kazuhironagai77:20220417235134p:plain

7.2 How to INSTANTLY TEXTURE your landscapes in UE4 - Unreal Engine tutorial [13] を勉強する

崖の部分を自動で選択する方法をまとめます。

まず軽くTutorialを軽くみます。

全然、崖の部分を自動で選択する方法とは関係ないですが、Texture SampleのSampler Sourceの設定をShared: WrapにしないとTextureの数が増えるにつれてCompileしなくなるそうです。

f:id:kazuhironagai77:20220417235203p:plain

World Aligned Blendノードを使用します。Slop Sharpness に30、Slop Biasに-12をセットします。

これをBase Colorに繋ぎます。

f:id:kazuhironagai77:20220417235220p:plain

結果です。

f:id:kazuhironagai77:20220417235237p:plain

うーん。何か違う。

Tutorialのは

f:id:kazuhironagai77:20220417235256p:plain

こんなのです。

なぜか、Dirtの箇所とかが残っています。

f:id:kazuhironagai77:20220417235320p:plain

まあ、後で考えます。

Tutorialでは以下の様にBlendしていました。

f:id:kazuhironagai77:20220417235345p:plain

よし分かりました。

Tutorialだとこの後でAlpha値を使う為の方法を解説するのですが、まずNormal 値でどうなるのか見る事にします。

Snow AのLayerにだけセットしてみました。

f:id:kazuhironagai77:20220417235403p:plain

結果が分かりにくかったので、全体をSnow Aで塗り直しました。

結果です。

f:id:kazuhironagai77:20220417235422p:plain

正直、これで十分です。

同じ事をDirt やIceのLayerでやります。

f:id:kazuhironagai77:20220417235446p:plain

結果です。

f:id:kazuhironagai77:20220417235504p:plain

Play中の画面です。

f:id:kazuhironagai77:20220417235525p:plain

うーん。雪がこんこんと降ると言うよりあんまり雪が降らない地域にたまたま降ったって感じですね。

f:id:kazuhironagai77:20220417235547p:plain

まあ、良い感じなのでこれでOKにします。

7.3 来週以降の予定

以下の効果を追加していく予定です。

f:id:kazuhironagai77:20220417235612p:plain

Gaeaを使用したLandscapeは今回既にやりましたが、もう少しGaeaを勉強した後で、また新しいLandscapeを作成する事にします。

となると来週やるのは雪が降るEffectの追加ですね。

これで一応、雪山のLandscapeの作成は完成とします。

8Game DesignポケモンHxHの念能力戦闘システムの作成

8.1 対戦相手の召喚するMonsterの調節

f:id:kazuhironagai77:20220417235718p:plain

を行います。

新しいStageを考えました。

f:id:kazuhironagai77:20220417235733p:plain

テストします。

f:id:kazuhironagai77:20220417235755p:plain

Stage 5で負けました。

Game Overした時にどのStageで負けたのか知りたいです。

Game Overの画面にStage名を追加しました。

f:id:kazuhironagai77:20220417235922p:plain

結果です。

f:id:kazuhironagai77:20220417235936p:plain

8.2 戦闘を沢山してみる

Gameを遊ばない事にはどのStageまで行けるのか分かりません。何回か遊んでみます。

一回目はStage 7で負けました。

f:id:kazuhironagai77:20220418000004p:plain

結構、長時間遊べます。

今度はStage 8で負けました。

f:id:kazuhironagai77:20220418000026p:plain

時間は20分位です。

Dragonの攻撃力が高すぎます。

f:id:kazuhironagai77:20220418000131p:plain

100下げて200にしました。

何と、3回目はStage10のMonsterを倒す事が出来ました。

f:id:kazuhironagai77:20220418000150p:plain

存在しないStage 11に突入しました。

時間は30分程度かかりました。

Stage 10を勝利した時の表示がほしいですね。

8.3 Stage 10を勝利した時のPhaseを作成する

以下のWidgetを表示するようにしました。

f:id:kazuhironagai77:20220418000219p:plain

f:id:kazuhironagai77:20220418000230p:plain

テストします。

テストしますが、妖精族のMonsterだけで最後まで行ける気はしませんので、以下の亡霊族のMonsterが召喚出来る様にします。

f:id:kazuhironagai77:20220418000327p:plain

テストします。

なんと、Stage 7で負けてしまいました。

仕方ないのでDragon軍団で戦う事にします。

f:id:kazuhironagai77:20220418000354p:plain

以下の様にDragonが戦います。

f:id:kazuhironagai77:20220418000413p:plain

勝ちました。

f:id:kazuhironagai77:20220418000432p:plain

表示されています。

こんなものでしょうね。

一応、これで最低限の仕組みは完成しました。

8.4 最低限の仕組みで遊んでみてこのGameは面白かったか?または面白くなる可能性があるのか?

一応、最後まで遊んでみたので、このGame Systemの総括をやろうと思います。

<遊んでみて面白かったか?>

それなりに面白かったです。3回ぐらい戦ったら休憩がほしいです。

それ以外はかなり面白かったです。

やっぱり戦闘中に考える必要があるのは楽しいです。

<このまま制作を続けるべきか?>

続けるます。これは続ければ光る気がします。

<問題や課題は?>

誰かにこのGameをPlayしてもらって感想を聞きたいです。

そのためにはPlayの仕方を説明する必要があります。あるいは説明しなくても理解出来るように改良する必要があります。その辺を来週は考えたいと思います。

9Blenderの勉強

またBlenderの勉強をさぼってしまいました。もう2週間、全く触っていません。

で、その理由を考えたんですが、Blenderの勉強は面白くないんです。

何で楽しくないのか考えたんですが、思い出しました。昔、大学でMayaの使用方法を習った時に、プロのDesignerから私のDesignをバカにされた事があったからです。

2022-02-14のBlogにあった灯籠風のDesignですが上手でしょう。

f:id:kazuhironagai77:20220418000525p:plain

f:id:kazuhironagai77:20220418000537p:plain

私、専門はEngineerですが絵を描くのは得意だし、芸術の才っての最初から持っているんです。その時も何で、馬鹿にされたのか全く理解出来なかったです。ただ滅茶苦茶、怒ったのだけは覚えています。

で、同じ事を言ってくるDesignerが必ずこれから出て来るはずなんです。それが脳裏に写ってやる気が無くなるんです。

そうだ。

3d Modelを馬鹿にされたら無視したれ。

どうせDesignerは3d GraphicのProgrammingがどうやって構成されているのか深い所では分かってないでしょう。どっか理解出来ないで詰まるはずです。

3d modelerとしてのキャリアは終りになる訳ですから、そん時に私に失礼な事を言ったDesignerは心底悔いる事になるでしょう。

9.1 先週までの復習

<Selection Method

紙に書いてPCの画面に貼ってあるヤツの復習です。3d ModelのVertexの選択方法が書かれているヤツです。全部覚えていました。

2022-02-14Blogの復習

全部やりました。結構忘れていました。

2022-02-21のBlogの復習>

3D Cursorの動かし方は結構、忘れていました。

以下の木を作成しながら復習しました。

f:id:kazuhironagai77:20220418000629p:plain

こういう風に楽しみながらやって行こうと思います。

2022-04-03のBlogの復習>

Ctrl+Num+を利用して雪が被ったFoliageを作成しました。

f:id:kazuhironagai77:20220418000650p:plain

F3のChecker Deselectを試してみました。

f:id:kazuhironagai77:20220418000707p:plain

Selectされた面は黒くしました。

もう一回、F3のChecker Deselectを試して今度はCtrl + Hで選択された面を消してみました。

f:id:kazuhironagai77:20220418000727p:plain

前に黒くした面が残っています。毎回、同じ面を選択する訳ではないみたいですね。

<Mesh Editing

Knife Toolを使用して以下のくぼみを作成しました。

f:id:kazuhironagai77:20220418000750p:plain

9.2 Blenderで何か作成する

兎に角、Blenderの勉強が楽しくないのが問題です。それで何か作成する事にします。

f:id:kazuhironagai77:20220418000813p:plain

鳥居を作ってみました。

10.まとめと感想

今週は、Blogの量がいつもより少ないですがやった量はいつもと同じ位あるはずです。なんでBlogの量が少ないんですかね。

11.参照(Reference

[1] CGHOW. (2022, April 7). UE5 Niagara Baker Tutorial [Video]. YouTube. https://www.youtube.com/watch?v=bCx-kQdgulA

[2] CGHOW. (2022a, April 6). UE5 Content Example | Niagara Fluids | Chaos Destruction [Video]. YouTube. https://www.youtube.com/watch?v=TgYtTbHHoMs

[3] wizvanmeter. (2019, June 3). Simple Post Process Outline in Unreal [Video]. YouTubehttps://www.youtube.com/watch?v=YVTcH6da32Y

[4] The Game Dev Channel. (2021, January 19). Unreal Engine City Building Game - Mouse Cursor, Click Object In-World and Highlight Material - EP 3 [Video]. YouTube. https://www.youtube.com/watch?v=KakLXqpwnjo

[5] Unreal CG. (2020, June 25). Toon Shader & Custom Shadow - UE4 Postprocess Tutorial [Video]. YouTubehttps://www.youtube.com/watch?v=mx_AvrZK3TA

[6] Cloward, B. [Ben Cloward]. (2022, March 31). Toon Shader Specular Highlights - Shader Graph Basics - Episode 40 [Video]. YouTube. https://www.youtube.com/watch?v=B56z6st6U8E

[7] LearnOpenGL. (n.d.). LearnOpenGL - Advanced Lighting. Retrieved April 17, 2022, from https://learnopengl.com/Advanced-Lighting/Advanced-Lighting

[8] LearnOpenGL. (n.d.). LearnOpenGL - Basic Lighting. Retrieved April 17, 2022, from https://learnopengl.com/Lighting/Basic-Lighting

[9] Epic Games. (n.d.). Landscape Technical Guide. Unreal Engine Documentation. Retrieved April 17, 2022, from https://docs.unrealengine.com/4.27/en-US/BuildingWorlds/Landscape/TechnicalGuide/

[10] Smart Poly. (2020, May 19). How To Make A Massive Open World Map In Unreal Engine 4 [Video]. YouTubehttps://www.youtube.com/watch?v=HQUC0Gejmo4

[11] Smart Poly. (2021, August 10). Gaea To Unreal Engine 5 | Next-Gen Terrain? [Video]. YouTube. https://www.youtube.com/watch?v=lLYE4_wxJzE

[12] quadspinner. (2019, February 26). A 6-minute introduction to Gaea [Video]. YouTube. https://www.youtube.com/watch?v=1A1xXfTlKqM&list=PLEimej2Avz9mW2zc2tQMxJ9GNw_q28SDD&index=1

[13] Unreal Sensei. (2020, August 7). How to INSTANTLY TEXTURE your landscapes in UE4 - Unreal Engine tutorial [Video]. YouTube. https://www.youtube.com/watch?v=mP8eHwVEA0o