UE4の勉強記録

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

今年やる事のまとめ

1. 今年の勉強内容予定

UE5に関しては、兎に角、Packagingまで仕上げる事を目的にします。                      

今までのようにRPGが完成するまで付け足し付け足し作成しているとPackagingした時にとんでもない数のBugが発生します。このやり方では永遠に完成しない事に気が付きました。

ので、まずLandscapeだけのGameを完成させます。これは何もないLandscapeだけのGameです。しかしEnvironmentの質だけはAAAと同じ位の質にします。

更に、去年、途中から迷走状態になってしまった戦闘システムを完成させます。これもPackagingまでやります。

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

1.1 MaterialとNiagaraの勉強

この2つは今まで通り勉強します。NiagaraはFluid Dynamicsの勉強を始めたばかりです。これを集中して勉強します。

MaterialはBen Cloward先生がAdvanced Material Seriesを始めています。これを勉強します。

1.2 LandscapeだけAAA級のGameの作成

去年、勉強したLandscapeの作成方法を用いてLandscapeだけのGameを作成します。

以下の方法で作成するつもりです。

  1. GaeaでLandscapeを作成します。
  2. UE5にLandscapeをImportしLandscape用のMaterialを作成します。
  3. Foliageを追加します。
  4. 川や湖を追加します。
  5. 建物を追加します。
  6. Volumetric Cloudを調整します。

更にここでは以下の事の勉強もします。

  • Gaeaの勉強
  • Volumetric Cloudの勉強
  • Houdiniの勉強

Gaeaの勉強は今まで通りです。

Volumetric Cloudはかなり理解したので日本語のTutorialを作成します。これは最終的にはYouTubeに動画として載せます。

去年、Open Worldの作成の一環として建物を作成しましたが、一個の建物を作成するだけでクタクタになりました。流石にこのやり方で街を作成する事は無理と悟りました。

そこでHoudiniの建物の作成方法を勉強する事にします。

去年、雪山のLandscapeも途中まで作成して止めてしまいました。これも最後まで作成します。

最初のLandscapeは緑が生い茂る森に川や湖がある自然豊かな世界です。更に城のような建物が立っています。

その次に作成するLandscapeは雪山にします。

三番目に作成するLandscapeは砂漠にします。

以下の予定でやる事にします。

<自然豊かな地形>

  • 一月:GaeaによるLandscapeの作成
  • 二月:Landscape用のMaterialの作成
  • 三月:Foliageと建物の作成
  • 四月:建物の作成とPackaging

<雪山>

  • 五月:Landscape用のMaterialの作成
  • 六月:Virtual Textureと雪の降るEffectの追加
  • 七月;足跡の追加
  • 八月:Volumetric Cloudの改善とPackaging

<砂漠>

  • 九月:Landscape用のMaterialの作成
  • 十月:Virtual Textureと砂煙のEffectの追加
  • 十一月:足跡の追加
  • 十二月:Packaging

1.3 戦闘システムの完成

戦闘システムはUE4で作成したモノをUE5に移植します。

そしてUE5内で完成させます。

去年、出来なかった以下の実装をやります。

1.4 DirectX 12の勉強

これは去年始めた勉強の続きをやっていきます。

2. Houdiniの勉強

一寸だけHoudiniの勉強をします。

2.1 Proceduralって具体的に何を指しているの?

HoudiniのTutorialを見てると二言目にはProcedural(プロシージャル)という言い回しが出て来ますが、このProcedural(プロシージャル)って実際、どんな意味で使用されているんでしょうか?

Procedural languageであるCなどと関係あるんでしょうか?

Visual Scriptingで作成するみたいですが、このVisual ScriptingがProcedural Languageで作成されているんでしょうか?

と言う事はNodeがClass毎で作成されているのではなくFunction毎に作成されているのかな?

うーん。

人によって定義が曖昧な気がしますし、単なるBuzzwordにも見えます。

調べて見ました。

<SideFX社におけるProceduralの定義について>

いきなり最高に正しい解答が見つかりました。SideFXのHoudiniの以下のTutorialでProceduralとは何かについて解説しています。

WHAT IS PROCEDURALISM [1]

このTutorialでは3D Modelingを元にProceduralについて解説していました。

3D Modelを作成する方法は以下の3つがあるそうです。

<<Direct Input>>

直接、3D Modelを作成するやり方だそうです。Z-brushで作成する3D Modelがその例だそうです。

私が去年、Blenderで作成した木(以下に示す)もこれに当たりますね。

<<Parameter>>

パラメーターを使用して3D Modelをするやり方だそうです。

VroidのParameterを指定してModelを作成するのは、この方法ですね。

<<Procedural>>

Rule Drivenとか説明していますが、結局Nodeで指定してそれに基づいてModelを作成した場合をProceduralと呼んでいますね。

となるとGaeaによるLandscapeの作成は

Proceduralによる作成と言えそうですね。

うーん。

でもこれProcedural Languageなのか良く分からないですね。例えばGaeaの例だとMountain Node何かはClass (Object)だと思うんです。VariableとMethodが備わっていそうです。

Object Orientedで書かれていてもRule Driven(Nodeを繋げて作成する) ならProceduralと呼ぶのか、Procedural Languageで書かれたもののみ、Proceduralと呼ぶのかは不明です。

でもHoudiniのProceduralに対する考え方は理解出来ました。

2.2 SideFX社におけるProceduralと言う考え方は一般的なのか?

SideFX社の考えるProceduralの定義は理解出来ましたが、これがGraphics業界、もっと広くComputer Science全体で受け入れられている表現なのかが分かりません。

例えば、UE5のNiagaraなんかは、まさしくSideFX社の考えるProceduralによる作成方法ですが、Niagaraの説明では一回も「Proceduralな方法によるParticle Systemの作成」とは表現していないんです。

これ勝手な想像ですが、SideFX社も最初はProceduralな方法というのは、本当にProgramming的な意味でC言語的な方法で作成出来ると言う意味で、Proceduralな方法といっていたんじゃないのかな。と思います。

UE5のNiagaraのScratch Nodeを見ると、Local Variableを作成出来ます。これってClass (Object)の概念ですよね。そう言う意味ではProceduralな方法では作成していません。Object Oriented的とも言えます。

HoudiniのNodeがどんな構成か早く見てみたいですね。

2.3 Houdiniは宝の山なんじゃないの?

軽くHoudiniの公式のTutorialを見ましたが、なかなか面白いです。

Houdiniそのものの内容も面白いんですが、Houdiniの環境が更に興味深いです。

まず英語のTutorialはたくさんありますが、日本語に訳されていません。

更にProcedural な3D Modelの作成という手法がProgrammer向きです。

BlenderやG BrushのようにProgrammingの素養はあんまり必要ないけど、ArtのSkillは絶対に必要という3D Graphic Softとは対極の存在です。

これMayaやBlenderなどに類するSoftで3D Modelを作成しているDesignerの人達にはかなり難しいんじゃないでしょうか?

Houdiniを今のうちに勉強しておいて、日本語でHoudiniを教えられます。となっておけば、Designerの人達が一斉に勉強しようと押し寄せてきて大先生として大金を稼ぐ事が出来そうです。

これは勉強する事にしました。

3.LandscapeだけのGame作成の予定表

先程、簡単な予定を立てましたが、もう少し具体的な内容を追加します。

3.1自然豊かな地形を作成する

当然ですがこれから作成します。

<一月:GaeaによるLandscapeの作成>

Klaus氏のやり方で作成します。

Height Mapは1009 x 1009 Pixelで作成します。これを100倍もしくは200倍で使用します。

Maskは以下の4つを作成する予定です。

  • Dirt

水の部分を単なる水面にするかWater Systemを採用して水中にも入れる様にするかはまだ考えていません。

一月は三週間しかないので以下のScheduleで行います。

  • 一週目:休み
  • 二週目:GaeaによるHeight MapとMaskの作成
  • 三週目:UEによるImport
  • 四週目:Water Systemの検討

<二月:Landscape用のMaterialの作成>

基本的にはUnreal Sensei氏のやり方をそのまま実行します。つまりMacro VariationとDistance Blendingを使用してTilingを無くします。ただしWorld Aligned Blendノードは使用せず、その部分はGaeaのMaskで代用します。

更にBen Cloward先生のHex Grid Tilingも追加する予定です。

TextureはMega Scanにあるものを使用します。

  • 一週目:Textureの選択と追加、Macro Variationの追加
  • 二週目:Distance Blendingの追加
  • 三週目:Hex Grid Tilingの作成
  • 四週目:Hex Grid Tilingの作成

<三月:Foliageと建物の作成>

Foliageは草や岩そして木を追加します。

以下の要素を追加します。

  • Naniteで作成
  • Collisionを追加
  • Mask毎に配置するFoliageを変更する

建物は本当はHoudiniを使用してProceduralな建物を作成し、それをUnrealにImportしたいんですが、それは有料版でしか出来ないかもしれません。

その辺は臨機応変に対応します。

この時までにHoudiniである程度は建物の作成が出来るようになっておく必要がありますね。

  • 一週目:Foliageに使用するAssetの調査と決定
  • 二週目:Naniteを使用しCollisionがあり、更にMask毎に種類が違うFoliageの追加
  • 三週目:Houdiniによる建物の配置(予定)
  • 四週目:Houdiniによる建物の配置の続き(予定)

流石に2か月後にHoudiniで建物が作成出来るようになっていると仮定するのは無理があります。

もしHoudiniの勉強が間に合わなかった場合や、有料版でしか作成した建物をUnrealにExport出来ない場合は、普通に建物を作成してそれを使用します。その場合は、小屋を一個作成とか城を一個配置するとかにします。

<四月:建物の作成とPackaging>

もしHoudiniで作成した建物がUnrealにExport出来ない場合は三月で完成しているはずです。

その場合は以下のScheduleでPackagingを試します。

  • 一週目:Packaging
  • 二週目:Bug出し
  • 三週目:Bugの直しとPackaging
  • 四週目:休み

もし無料版のHoudiniで作成した建物がUnrealにExport出来る場合は、その時に新たにScheduleを考え直します。

  • 雪山の作成

ここからのScheduleは四月の最後の週の休みの時に考え直します。

今、あまり具体的に考えてもうまく予定に落とし込めない気がします。一応の予定として以下の様にします。

<五月:Landscape用のMaterialの作成>

Landscapeは一月に作成した物をそのまま使用します。のでMaskに使用するMaterialを変更するだけです。

Foliageは木や岩はそのまま残します。草や花は全部消します。

  • 一週目:Textureの選択と追加、Macro Variationの追加
  • 二週目:Distance Blendingの追加
  • 三週目:Hex Grid Tilingの作成
  • 四週目:Hex Grid Tilingの作成

基本的には2月にやった事と同じ事をします。

<六月:Virtual Textureと雪の降るEffectの追加>

Virtual Textureを使用してFoliageに雪が積もった感じを出します。

  • 一週目:Virtual Textureの復習
  • 二週目:Virtual Textureの作成
  • 三週目:Virtual Textureの作成
  • 四週目:建物へのVirtual Textureの適用について

Virtual Textureの具体的な使用方法については今は覚えていません。LandscapeのMaterialの実装とFoliageのMaterialの実装が必要だったはずです。のでVirtual Textureの実装は2週間、予定をとりました。

<七月;足跡の追加>

足跡の追加ですが、以下の様に単なる足跡を残すだけにするのか、

以下の様にくぼみのある足跡を作成するのか。

またまた、以下の様に大雪が積もったような跡を作成するのか

まだ決めていません。

場所によって分けたいですね。Maskによってこれらの3つを使い分けられると良いですね。

以下の予定を考えています。

  • 一週目:足跡の復習
  • 二週目:1の足跡を追加
  • 三週目:2の足跡を追加
  • 四週目:3の足跡を追加

うーん。どう考えてもこの予定で実行するのは無理です。砂漠の作成は諦めましょう。

この予定で行きますが、無理な場合は次の月まで延長します。

<八月:Volumetric Cloudの改善とPackaging>

当然雪を降らしますが、UEのDefaultの設定だと常に空が晴れています。雪が降っているのに空が晴れていると、空を見上げた時に違和感が凄いです。それをVolumetric Cloudを追加する事で直します。

  • 一週目:雪が降るEffectを作成
  • 二週目:Volumetric Cloudを調整して空一杯に雲が覆っているようにする
  • 三週目:PackagingとBug出し
  • 四週目:Bugの直しとPackaging

3.3 砂漠

諦めます。雪山の調整をやる事にします。

4. 戦闘システムだけのGameの実装のSchedule

以下の実装予定をもう少し具体的にします。

<一月の作業:UE5への変換>

これは今ある戦闘システムをそのままUE5に移植します。

  • 一週目:休み
  • 二週目:UE5の移植を試す。UE5への移植が失敗した場合は、実装をそのまま移す。
  • 三週目: UE5への移植が失敗した場合、実装の移植の続きをやる。
  • 四週目:実装の移植を終わらせる。

もしUE5への移植が単にUpdateするだけで成功した場合は、次のLevelの改良を行います。この戦闘システムを作成したProjectは4.27で作成しているのでもしかするとSmoothにUE5にUpdate出来るかもしれません。

<二月:Levelの改良>

闘技場っぽいLevelを作成します。

以下に示したような虚無感しかないLevelを、中世の寺院内で秘密に研鑽されている魔術の研究所っぽいLevelにします。

  • 一週目: Assetの調査
  • 二週目: 採用したAssetによるLevelの作成
  • 三週目: 調整
  • 四週目:なし。次のMonsterのAnimationを始める

<三月:MonsterのAnimationの追加>

以下に示した様に今はMonsterが棒立ちなのでこれにAnimationを追加します。

以下のScheduleで行います。

  • 一週目: Animationの調査(妖精タイプ、ゾンビタイプ、そしてドラゴンタイプそれぞれのAnimationを調べる)
  • 二週目: 妖精タイプにAnimationを追加
  • 三週目: ゾンビタイプにAnimationを追加
  • 四週目:ドラゴンタイプにAnimationを追加

こんな感じでやります。

後、魔術師にもAnimationを追加する必要がありますね。ここはSchedule通りには終わらないかもしれません。終わらなかった場合は次の月も使って作成します。

<四月:Effectの追加>

Monsterが攻撃するAnimationを実行した時に発動するEffectを追加します。

これはNiagaraのEffectを使用します。CGHOW氏のTutorialで作成したEffectを使用するか、既に持っているEffectから使用するかのどちらかです。

  • 一週目: 魔術師のEffectを追加
  • 二週目: 妖精タイプにEffectを追加
  • 三週目: ゾンビタイプにEffectを追加
  • 四週目:ドラゴンタイプにEffectを追加

<五月:音楽の追加>

音楽と効果音を追加します

  • 一週目: 魔術師と妖精タイプに効果音を追加します。
  • 二週目: ゾンビタイプとドラゴンタイプに効果音を追加します。
  • 三週目: UIに効果音を追加します。Background Musicを追加します。
  • 四週目:Background Musicを追加します。

<六月:UIの改善>

去年の失敗を繰り返さないために簡単にやるだけにします。

<七月;PackagingとBugの直し>

以下のScheduleを考えています。

  • 一週目: Packagingします。Bugを調べます。
  • 二週目: Bugを直します。
  • 三週目: Packagingします。Bugを調べます。
  • 四週目:Bugを直します。

Bugが無くなるまで繰り返します。

以上です。

5.Volumetric Cloudの勉強

Volumetric Cloudに関しては日本語のTutorialがほとんどない状態なので、去年勉強した内容をTutorialという形でまとめ直します。

最終的にはYouTubeに動画としてまとめることにします。

6.今年の予定をもう一回まとめ直す

今年は以下の勉強をおこないます。

  1. Landscapeの作成
  2. Niagaraの勉強
  3. Materialの勉強
  4. 戦闘システムの作成
  5. Gaeaの勉強
  6. Houdiniの勉強
  7. Volumetric CloudのTutorialのまとめ
  8. DirectX 12の勉強

以上です。

7.参照(Reference)

[1] Dalvi, R. (n.d.). What is Proceduralism | SideFX. https://www.sidefx.com/tutorials/introduction-to-houdini-chapter-2-what-is-proceduralism/