1. 今週の予定
1.1 今週の予定
以下の内容を勉強します。
<Landscapeの作成>
建築用のLevelの作成の勉強の続きをやる。
<Niagaraの勉強>
NS_Mage_Fireballをアニメ調に改造する続きをやります。
<Materialの勉強>
Advanced Material Seriesの勉強の続きを勉強します。
<Gaeaの勉強>
Earth and Space Sciences XのTutorialを勉強します。
更にGaeaのTutorialを作成します。
<Houdiniの勉強>
Free Time Coder氏のUnreal PCG Tutorial [1]の続きを勉強します。
<UEFNの勉強>
インベーダーゲームを作成するためにUEFNのTutorialを勉強します
<DirectX12の勉強>
「DirectX 12の魔導書」と「Direct3D 12 ゲームグラフィック実践ガイド」の勉強をやります。
2. Landscapeの作成
2.1 Unreal Engine 5 for Architecture - 2023 Full Beginner Course [2]の続きを勉強します
先週、やっぱり自分で実装しないと勉強した内容を忘れてしまう。と書きました。
ところが実際に実装しようとすると最初の家を配置する所で、困ってしまうんです。
Tutorialでは以下のModelを使用していますので。
でなんか代わりになる建物はないか調べたらありました。
このAssetを代わりに使用してこのTutorialの勉強をする事にします。
では今まで勉強した範囲を実装していきます。
2023-09-04のBlogで勉強した内容を実装していきます。
Projectの作成なんですが、ArchitectureからBlankを選択して作成しています。
うーん。
これは同じ様にやる事にします。
UE5.3で新しいProjectを作成します。
ArchitectureからBlankを選びます。
Project名はMy Architectureとしました。
Projectが開きました。
GameのTemplate以外からProjectを作成したのはこれが初めてです。
でも全部一緒ですね。
ここから新しいMapを作成します。
2023-09-04のBlogでは以下のように書かれていました。
同じ方法で新しいMapを作成してみましょう。
普通に出来ました。
名前はMap_Architectureにしました。
開きます。
BlankのTextureと同じみたいです。
Env.Light Mixerを使用してLightを追加します。
この辺も同じです。
Sphereを配置して影の具合を確認します。
私の場合は影が薄いですね。
Tutorialの結果は以下のようになっています。
どう見ても私の方が正しい結果ですね。
Light関連のAssetを専用のFolderに移しました。
何とTutorialでは地面ごとImportしていました。
これは出来ないので前に作成したLandscapeをImportします。
以下のMaterialを作成しました。
適当に色を付けてたら以下のようになりました。
ここに家をImportしてみます。
Demo Mapを開くと以下の家が建っていました。
この家をそのまま使用してしまいましょう。
以下のErrorが表示されています。
これの直し方を調べます。
How to enable global clip plane? [3]に以下のように書かれていました。
実際はSupport…と書かれているそうです。
Project SettingからRenderingを選択して以下のSupport global clip plane for Planar ReflectionをEnableします。
Projectを再起動します。
先程のError表示が消えました。
一寸家の形状を見てみます。
実行Buttonを押します。
以下のErrorが表示されました。
LightingをRebuildします。
Reflection CaptureのRebuildはどうやるんでしょうか?
これは調べたんですがよく分かりません。
ひょっとするとLightingのRebuildをしたら直っているかもしれません。
もう一回実行します。
今度のErrorはこれです。
これは直しようが無いです。
しかしRTX3070Tiを買うよりはRTX3060のVRAMが12GBを買った方が良かったみたいです。
一応調べると以下の方法で対策していました。
別にこの3つでなくても良かったんですが一応引用先を示すのにこの3つを選択しておきました。
Unreal Engine 5: How To Fix "Video Memory Has Been Exhausted" (Temporary Fix For Development)[4]です。
右上のSettingからEngine Scalability Settingを開き
QualityをEpicから下げます。
How to fix video memory has been exhausted in Unreal Engine 5.1 [5]です。
Project Settingを開き
ProjectのTarget Hardwareを選択して
以下のOptimize Project Setting Forの設定を
Scalableに変更します。
how to fix video memory exhausted in unreal engine 5 | unreal engine tutorial || ue5 [6]です。
ConfigからDefaultEngine.iniを開き
Quality Settingのr.ReflectionCaptureResolutionの値を
2048から512に変更します。
他のTutorialでも大体同じような事をしていました。
この家のMaterialを調べたら
以下のTextureに
4096x4096もの高品質のTextureを使用していました。
しかも
MaterialのTexture Sampleノードの
Sample Sourceの設定も
となっていました。
これは2023-01-08のBlogから勉強したBen Cloward先生のSparkling Snow Shader - Advanced Materials - Episode 2 [7]のやり方で1024のTextureと512のTextureの2つに分けてしまいましょう。
Ben Coward先生、9月になったらYouTubeの動画を復活させると言っていましたが、動画の更新は止まったままです。
家族の大きなEventがあると言っていましたが、一寸心配です。
Unityに転職したみたいなんですが、更新出来ない本当の理由はそれかもしれません。
調べている途中で以下の本
「Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」が販売されている事を知りました。
何とこの本、私が勉強したかたったNiagaraのSimulationについて6章も解説しています。
思わず電子版を買ってしまいました。
これは後で読む事にします。
VRAMと言えば
2023-04-17のBlogあたりでWindowsEngine.iniのPoolSizeVRAMPercentageの値を0に変更しました。
これも効果がありそうです。
結果を比較するためにTask Managerの専用GPU memoryの使用率を見ます。
家に使用されているMaterialも確認してみます。
ほとんど1024x1024 pxです。
さっき4096 x 4096のTextureをそのまま使用しているのを見た時はこれが原因だろう。と思いましたが他のTextureは1024 x 1024 pxでした。
色々弄ってたら窓の色が変になってしまいました。
まずい。
直せないです。
家の中もしっかり作成されていました。
凄い。
写真みたいです。
ここ以外にも全部の部屋がきれいに作成されています。
今回は別に家の中を見る訳では無いのでこの部分を端折ってしまっても良い気もします。
WindowsEngine.iniのPoolSizeVRAMPercentageの値を0に変更するのだけ試してみます。
からWindowsEngine.iniを開き
PoolSizeVRAMPercentageの値を0に変更しました。
UEを再起動します。
うーん。
結果は変わらないみたいです。
元に戻しました。
今度はDefaultEngine.iniのQuality Settingのr.ReflectionCaptureResolutionの値を512にしてみます。
これはReflection CaptureのResolutionを下げるはずなのであんまり支度は無いですが仕方ないです。
ありました。
512に変更します。
UEを再起動します。
お。
Errorが消えています。
しかしガラスの反射の質は物凄く悪いです。
以下の角度からテストしてみます。
r.ReflectionCaptureResolution=512の結果です。
r.ReflectionCaptureResolution=2048に戻してみます。
うーん。
Errorが表示されていてもこっちの方が全然きれいです。
いや。
ひょっとすると気のせいかもしれません。
よく分からないです。
ここで紹介されているDisable All Screen Messageを使用してError表示を消すのも有りかもしれません。
そんなCommandはありません。
うーん。
有るはずだけど何で?
DISABLEALLSCREENMESSAGES
と打ったら消えました。
本当に消えているか確認するために
ENABLEALLSCREENMESSAGES
と打ち直したらまたErrorの表示がされるようになりました。
Suggestionに表示はされませんが、Commandとしてはあるみたいです。
なんかクドクドやっていまいましたが、時間が無くなりました。
今週のLandscapeの作成はこの辺で終わりにします。
3.Niagaraの勉強
今週は予定を変更して「Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を読む事にします。
ここには感想をまとめる事にします。
3.1「Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」の感想
今週中に全部読み切れるとは限らないので章毎の感想をまとめます。
<Effect入門>
ここでは専門用語の定義を行っていました。
私の中の定義とかなり違っている所と非常に似通っている所があって、筆者の言いたい事を消化するのにかなり時間がかかりました。
例えばVFXの定義ですが私は以下のように考えています。
VFXは元々映画産業の言葉でComputerを利用したEffectを指していました。
この技術はそのままVideo Gameにも応用出来る事からVideo Gameの制作においてもVFXは使用されるようになりました。
ここで本来の定義であった「Computerを使用したEffect」という意味が意味不明になってしまったんです。何故ならVideo Gameの制作は全部Computerを使用していますから。
よってVFXの定義はVideo Gameの世界だけを見てると意味不明になってしまいます。
Film産業における定義を理解する必要があります。
厳密にこの定義に基づいて考えるとVideo GameにおけるVFXはParticle生成のみです。
この本で含まれているPost ProcessingやRay TracingなどはVFXには入りません。
これらは純粋にComputer Scienceという学問の一分野である3D Graphicsの技術になります。
こんな感じで一文読むだけでも、あーでもないこーでもないとなってかなり時間がかかってしまっています。
しかしじゃ読んでて楽しくないのかと言われると非常に楽しいとしかお答え出来ません。
かなり楽しく読ませてもらっています。
その上でどうしても2点だけ追加で言わせてもらいます。
一つ目ですが「Effectが究極的にはGameには要らないものである。」という結論は間違っています。
EffectはGameに限らずFilmなどの感情を共有するためのMediaでは絶対に必要なものです。というか根幹をなしている要素の一つです。
分かり易い例で説明します。
漫画やアニメでは攻撃を食らった後に血を流します。
この血を流すところがEffectに当たります。
これは映画で撮影した場合を考えればすぐに分かります。
実際に俳優をぶん殴って血を流す訳にはいかないので、何らかのTrickを使用して血が流れたようにみせる訳です。
つまりEffectを使用する訳です。
これをCGを使用して作成した場合はVFXになります。
絵具などで表現した場合はSpecial Effectになります。
それはともかくとしてこの血を流す表現を要らないものとして消してしまうとどうなるでしょうか?
読者や視聴者はその攻撃が効いているのかどうか分からなくなります。
その結果、痛みというもっとも強烈な感情が読者や視聴者と共有されなくなってしまいます。
Effectを無くした事により感情を共有するためのMediaとして機能しなくなった訳です。
どうですか?
Effectが絶対必要な存在である事が理解出来たはずです。
だからこの本が言っている「Effectは料理に例えたらSpice的な存在。」と言うのは半分だけしかあっていないんです。
Effectは調味料なんです。
Spiceは調味料の一種ですが、調味料のすべてがSpiceではありません。
塩や砂糖を含めた調味料全般がEffectなんです。
塩や砂糖なしの料理なんて食えたものじゃないでしょう。
Effectを塩や砂糖に例えるとEffectがどれだけ重要か分かるはずです。
これをSpiceなんかに例えたら「ターメリック。何それ。無くても良いよね。」って感じになってしまいます。
これが一つ目のどうしても言いたかった点です。
2つ目のどうしても言いたい点ですが「1.1.2 Effect的Approach」でEngineerとArtiestの2つの立場からEffect作成について述べている事についてです。
これ非常に深い話で一言では片づけられない大変難しい問題なんです。
ですが一つだけ絶対に言えるのはUEのMaterialを理解出来た人達って全員何らかの形でShader言語(HLSLやGLSLなど)を使用していた経験のある人達なんです。
これは一寸考えれば当たり前で、GPUのPipelineを理解してなければVertex Normal WSノードとPixel Normal WSノードの本当の違いなんで分かりません。
今考えた例なので厳密に言ったら適切じゃないかもしれませんが、以下の実装をしたとします。
こんな結果になっています。
このBase Colorの部分をVertex Normal WSノードに変更しました。
結果です。
同じ事をPixel Normal WSノードで行います。
結果です。
こっちはNormal Mapが色として出力されています。
何故、この違いは起きるのかを理解出来るようになるためにはGPUのPipelineをきちんと理解している(つまりShader言語(HLSLやGLSLなど)が使える)必要があります。
Shader言語を扱う事が出来るProgrammerなんてProgrammerでも頂点の一握りの人達だけです。
本人が気づいているかどうかは別としてUEのMaterialを扱う事が出来る人ってそういうProgrammer界の頂点の一握りの人なんです。
何が言いたのかまとめます。
Materialを自由に組めるLevelのProgrammerは医者と同じです。
そしてArtiestってのは専門学校出て整体師になったのと同じようなもんです。
貴方は整体師に椎間板ヘルニアの手術を頼みますか?
整体師に椎間板ヘルニアの手術をさせたら患者(この場合はGame)死にますよ。
だから素人にMaterialやNiagaraを触らせてはいけないんです。
素人が触っていいのはMaterial InstanceにParameterとして表示されている値だけです。
これだったら素人が弄っても安全なんです。
ArtiestがどうしてもNiagaraもいじりたいと言うなら
Programmerが以下のEmitter Summaryに
弄っても良いParameterだけまとめておいて
そこだけ弄る様にすべきです。
言いたい事が多すぎて最初の章の最初の節だけでこんなに長くなってしまいました。
一応、三章の途中までは読みました。
ここに書かれている実装も来週から試してみます。
4.Materialの勉強
今週は「Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を読んでいたので時間が無くなってしまいました。
ので無しです。
Ben Cloward先生の新しい動画はまだ上がっていません。
Ben Cloward先生、今炎上中のUnityに転職した後から全く動画を上げなくなったのでかなり心配です。
最後の動画のComment欄を見たら以下のように書かれていました。
うーん。
大丈夫のようです。
5.Gaeaの勉強
5.1 Geology 12 (Earthquakes and Earth's Interior)[8]の続きを勉強します
<The Epicenter is Located Using Three or More Seismographs>
Epicenterを特定しています。
こんな地球規模でEpicenterって特定するもんなんでしょうか?
<Determining the Size of Earthquakes>
こんなScaleがあるなんて知らなかったです。
<Seismic Intensity Map, Loma Preta 1989>
この図は震源地の図をいつも見てる日本人からしたらそんなに珍しいものでは無いです。
<Measuring the Size of Earthquakes>
Magnitudeについて説明しています。
次のSlideです。
なんと2011の地震は世界で記録されている中では3番目の大きさでした。
<Earthquake Destruction>
うーん。結構主観的な基準ですね。
おお、液状化現象についても述べていますね。
<Can Earthquakes Be Predicted?>
Lectureの解説を聞くとShort-rangeでの予測はまだ全然出来てないそうです。
長期的な予測です。
こっちはそれなりに予測出来るようになって来てるそうです。
この辺の話は日本の方が詳しい気がします。
<Seismic Gaps: Tools for Forecasting>
このSeismic Gapが有る所に地震が起きる可能性が高いそうです。
<Paleoseismology: The Study of Prehistoric>
次のSlideです。
Faultの両側を研究する事でいつ、どれくらいの地震が起きたのかを知る事が出来るそうです。
以下の2つのSlideは復習用です。
<Review: Body Waves versus Surface Waves>
これも先週見たSlideです。
何でこれらの復習をしていたのか分かりました。
地震の波を測定する事でMantleの密度なども同時に測定出来るようになるらしいです。
Sampleが取れる訳ではないので、Mantleの一部が理解出来ると解釈しておく方が良いみたいです。
<Path that Seismic Waves Follow through Earth>
この図を見ると別なLayerを通過する時にRefractionが起きている事が分かります。
S waveはCoreに当たると通過できずに止まってしまいます。
S waveが伝達出来るのは固体のみと言う性質から、Coreが液体で構成されていると推測出来ます。
更にRefractionの角度がEpicenterを中心として対称的に表れるため、Mantleなどの大きさも計算で出せるそうです。
<Earth’s Layered Structure>
その結果が以下のSlideです。
一番表面のLayerであるCrustについてです。
地表と海底でかなり違いますね。
地表では平均の厚さは40kmですが海底では僅か7kmです。
次はMantleについてです。
Mantleが固体だって事に驚きです。
Coreについてです。
Coreが2層になっていて外側のLayerだけが液体だそうです。
これらの地震波から推測された結果はMeteorites(隕石)のDataと一致するそうです。
<Meteorites>
左下のMeteoritesはPalestineと呼ぶそうです。
これらのMeteoritesの構成は推測されるMantleなどの構成と同じだそうです。
今回の内容はあんまりGaeaの勉強とは関係なかったですが、内容自体は興味深いものでした。
5.2 GaeaのTutorialの作成
5.2.1 音声読み上げソフトを探す
先週はYouTube用のTutorialのFormatを考えて終わってしまいました。
うーん。
このTutorialは原稿を書いて声はSoftに読ませたいんです。
もしくはVoice Changerを使用するか。
先週かなり調べたんですが、Blogにまとめておくのを忘れてました。
一週間経つと本当に何も覚えていません。
COEIROINKの音声を試そうと思った所で終わったんでした。
Downloadしてみます。
COEIROINKv2.exeを実行したらWindows Defenderが実行を停止しました。
許可を与えたら普通に開始しました。
取り敢えず声が出るかどうかの確認をします。
以下の箇所に文字を入力すれば良い事が分かりました。
普通に朗読してくれます。
KANAと
MANAの声をDownloadしました。
Text Fileの読み出しを試してみます。
以下の文章をTextに書き出しました。
これを読ましてみます。
全く読み込めません。
Textの文章を切り取って直接貼り付けたら普通に読んでくれます。
こっちでやる事にします。
規約を読みます。
まずSoftwareのところです。
はい。
なんと。
生成に使用した音声Soft毎に規約が有るみたいです。
生成音声毎の規約はどこに書かれているんでしょうか?
ありました。
KANAの利用規約です。
これ見るとクレジット表記がいるみたいです。
それよりこっちの公式のキャラの方が表情が追加されていて使い勝手がよさそうです。
どうやってこのキャラの声をDownload出来るか調べたら、これらのキャラには特定の声は無いそうです。
うーん。
声を作る必要があるのか。
MANAの規約です。
全部一緒ですね。
公式キャラの方がDesignが良い気がします。
うーん。
どうせなら自分でキャラクターのデザインからやるか。
いやそれはある程度Tutorialが完成してから考える事にします。
キャラクターのイラストはどうなんでしょう?
一杯ありました。
イラストの利用規約はどうなっているんでしょうか?
うーん。
調べたけど書いてないですね。
5.2.2 Tutorialの続きを作成する
Power Pointの続きを作成するのに先程の音声を追加する必要が出て来ました。
なんと疑問文の書き方が分かりません。
うーん。
分からん。
こんな感じになりました。
うーん。
出来たらDavinci Resolveで作成したいですね。
Power Pointで作成するとCheapな感じがします。
後、Unreal Engineって打っても読めないです。アンリアル エンジンって打つ必要があります。
これは地味にきついです。
やっぱりVoice Changerを使用するかもしれません。
6. Houdiniの勉強
今週もHoudiniの勉強はお休みしてFree Time Coder氏のUnreal PCG Tutorial [1]を勉強します。
6.1 Unreal 5.2 Preview PCG Tutorial - Part 8 - Jungle Breakdown [8]を実装する
今週は先週、勉強した箇所を実装します。
先週はDensityの値をそのままPassすると上書きされてしまうので、一端Heightに移して、最後にまたDensityに戻す。と言う技を習いました。
この辺をしっかり理解しながら実装します。
と書いています。
それでずっとUE5.2を使用していたんですが、流石にもうUE5.3に移る時期でしょう。
このTutorialの実装からUE5.3でやる事にします。
以下に示した様にPCG Graphから新しいClassを作成しました。
名前はPCG Pathにします。
Get Spline Dataノードを配置し、それにSpline Samplerノードを繋げます。
SplineのDataってこうやって得たんでしたっけ。
全く覚えていません。
復習します。
2023-05-28のBlogに以下の説明がされていました。
成程ね。
次にSpline Samplerノードについても説明しています。
つまりSpline上にPointsを作成するのがSpline Samplerノードの機能です。
このSpline Samplerノードの設定についてはTutorialでは何も解説してないですね。
2023-05-28のBlogで勉強したUnreal 5.2 Preview PCG Tutorial - Part 2 – Splines [9]では
以下に示した様にModeの設定をDistanceに変更したり
Dimensionの値をOn Interiorにしたりしています。
このPCG_Pathですが、以下に示した様にPCG_JungleのSub Graphとして使用されています。
これ見ると川と同じ扱いになっています。
のでDimensionの値はOn Splineで良い気がします。
PCG Pathの実装に戻ります。
Transform Pointsノードを付け、更にUnionノードを付けました。
Transform PointsノードはPointsの移動、回転、Sizeを管理しています。
具体的にどう変化させたのかまではここでは語られていません。
次のUnionノードですがこれ勉強しませんでした。
丁度、今見た2023-05-28のBlogでUnionノードについて勉強していますが、
どんな機能があるのかまでは書いていませんでした。
Unreal 5.2 Preview PCG Tutorial - Part 2 – Splines [9]を見るとUnionノードの機能を以下のように説明していました。
2つ以上のSplineを配置した時に全部にPointsを発生させるためには以下のSelect MultipleをEnableします。
TutorialによるとたまにここをOnにしても2つ目以上のSplineにPointsが発生しない時があるそうです。
その時はSpline Samplerノードの後にこのUnionノードを挟むと
2つ目以上のSplineにPointsが発生するそうです。
次は以下の赤線で囲った部分の実装をしていきます。
以下の部分まで作成しましたが、ParameterのNodeの作成方法が分りません。
どっかで勉強した記憶はあります。
Blog内で探してみます。
2023-07-30のBlogでUnreal 5.2 Preview PCG Tutorial - Part 5 - Custom PCG Actor and Attributes [10]の勉強をしていますが、
ここでProperty to Parametersノードの使用方法を説明しています。
2023-08-06のBlogを読んだら
Get Actor Propertyノードで代用していました。
はい。
すっかりこの事を忘れていました。
Get Actor PropertyノードのProperty Nameはどうするんでしょうか?
取りあえずはNoneにしておきます。
今までの実装をCopy Pointsノードで繋ぎます。
このCopy Pointsノードの使い方を忘れました。
復習します。
2023-06-11のBlogでCopy Pointsノードの機能が説明されていました。
TargetにPassされた一つ一つのPointsの周りにSourceにPassされたPointsを生成します。
かなり時間は掛かりましたがここまでの実装が何をしているのかは理解しました。
一応確認します。
PCB_PathをLevel上に配置します。
以下の実装のCreate Points Gridノードの結果だけ表示します。
このPCG Graphを直接Level上に配置するのでGet Actor Propertyノードは外しておきます。
結果です。
何もないように見えますが、
近づくとPointが生成されています。
Transform Pointsノードの
設定のScaleを
10倍にしました。
Density Filterノードの結果です。
あれ?
変わってないです。
Densityを指定するNodeが無いので全てのPointのDensityが1になっているみたいです。
うーん。
Create Points GridノードにもTransform PointsノードにもPointのDensityを管理するParameterは無いみたいですね。
Distance to Densityノードを追加してPointのDensityを変更します。
道を作成する訳ですからPointが丸く分配するようにしたいはずです。
次にDensity FilterノードですがUpper Boundの値を操作しています。
Upper Boundの値が変わる事でPointsの外縁が削れるようにしたいです。
はい。
以下のようにしました。
中心が0になるようにDensityをセットします。
Density FilterノードのBoundの設定です。
この範囲から外れるDensityを持つPointは削られます。
TutorialではUpper Boundの値を操作していたので白い部分が外側になるようにDensityの値を操作しました。
Density Filterノードの結果です。
灰色の部分が見えにくいので
Density Remapノードを追加して
全部白くします。
Upper Boundの値を下げます。
円が小さくなりました。
これでいけるはずです。
もう時間が無くなったので、残りは来週やる事にします。
今週はここまです。
7. UEFNの勉強
7.1 Make Your Player Invisible in Fortnite! UEFN / Creative 2.0 [11]を実装する
先週勉強したMake Your Player Invisible in Fortnite! UEFN / Creative 2.0 [11]を実装します。
Tutorialは新しいProjectを作成していますが、前のProjectを使用します。
<Create Verse File/Device>
UEFNを開きました。
Verse Exploreを選択します。
今気が付いたんですが、Verseが2つありました。
と書きましたが、これは別なVerseのIconをClickしたかもしれません。
こっちのVerseからVerse Exploreを選択します。
するとVerse Exploreが開くので
Project名のところを右Clickして
Add New Verse File to Projectを選択します。
すると以下のBoxが表示されます。
Device Nameにgo_invisible_deviceを追加します。
Createを押します。
Verse Exploreを見ると
Go_invisible_device.verseが追加されています。
Double ClickしてVS Codeを開きます。
<Configure Player Spawner Spawned Event>
以下のModuleを追加しました。
このCharactersというModuleが何を担当しているのかを少し詳しく知りたいんですが、
公式のSiteのCharacters module [12]にも何も書かれていません。
Player_spawner_device ClassからSpawnerと言う名前のObjectを生成します。
以下のCodeを追加しました。
Indentの位置もあってるはずです。
OnBeginに以下のコードを追加します。
そう言えば先週はPlayer_spawner_device ClassのSpawnEvent()関数の説明が見つからなかったんです。
以下のDefinitionにこの関数の説明が書かれている事に期待して試してみます。
Definitionには以下の解説が書かれていました。
うーん。
成程、argentを送るのか。
次にSubscribeのDefinitionを見ます。
うーん。
別にVerseに限らないですが一般的なEventとSignalの設定方法自体を忘れてしまいました。
EventがSingalを発して、そのSignalを受け取ったらCallbackを発動するんでしたっけ。
となるとEventが発生してSingalを発するObjectとそのSingalを受け取ってCallbackを実行する別のObjectがあるはずです。
後、CallbackのTypeが
と書かれているんですが、このTypeは何でも良いんでしょうか?
先程、Player_spawner_device ClassのSpawnEvent()関数ではSignalでAgentを送ると書かれていました。
となるとこのCallback用の関数のParameterはAgentじゃないと駄目なんじゃないでしょうか?
Handle Spawn Event()関数の宣言をします。
やっぱりParameterにAgentが入っています。
後Indentもあっているはずです。
実装も追加します。
まずFortCharacterを宣言します。
Errorが出ています。
何で?
と書かれていました。
要するにIf節を付けろって事です。
If節はGetFortCharacter()関数を調べてから追加する予定でしたが、先に追加します。
Errorが消えました。
GetFortCharacter()関数の解説です。
[]がついている理由は不明です。
以下の実装を追加しました。
CrouchEvent()関数の説明を調べます。
Tuple を送るとあります。
Tupleって何でしたっけ。
調べます。
簡単に言うとTupleはStructの名前なしVersionでした。
これ見るとFort_CharacterとLogicと指定されています。
次のSubscribe()関数は前に出てきたPlayer_spawner_device ClassのSpawnEvent()関数のSubscribe()関数と同じ機能でしょう。
Callbackをパスする役割を担当しているはずです。
<Creating Invisible On Crouch Function>
以下のCodeを追加しました。
まずIfの最後に:を追加するのを忘れていました。
次にIf節の()内ですが、LogicはTrueとFalseを返すだけなのでIsCrouchedを書くだけでいいと思ったら、?を追加する必要がありました。
更にElseの最後にも:を追加する必要がありました。
やっぱりこの関数のParameterはfort_characterとlogicでした。
LogicのDefinitionを調べようとしたら、無いと表示されました。
何で?
公式SiteのLogic [13]には
と説明されていました。
これでVerseの実装は終わりです。
<Referencing Spawn Pad on Verse Device>
UEFNに戻ってVerseのBuild Verse Codeを選択しBuildします。
以下のCreative Devices内にある
Go_invisible_deviceを
Level上に配置します。
Go_invisible_deviceを選択して
SpawnerにPlayer 1 Spawn Padを選択します。
一応、もう一回Buildをします。
<Final Results>
テストしてみます。
左のCtrlキーを押すとしゃがむみたいです。
左のCtrlキーを押しました。
消えました。
もう一回左のCtrlキーを押しました。
キャラクターが現れました。
出来ていますね。
8. DirectX12の勉強
今週は疲労感が凄いのでDirectX 12の勉強だけは来週に持ち込みます。
来週は3カ月に一回のお休みの週ですので、ゆっくりします。
一日だけDirectX12の勉強をします。
9. まとめと感想
来週はお休みします。
10. 参照(Reference)
[1] FreetimeCoder [FreetimeCoder]. (n.d.). Unreal PCG Tutorial. YouTube. https://www.youtube.com/playlist?list=PLA03OHAaHgYpo0enf8p-2oEpja3grLOKZ
[2] Gediminas Kirdeikis. (2023, April 30). Unreal Engine 5 for Architecture - 2023 Full Beginner Course [Video]. YouTube. https://www.youtube.com/watch?v=bT8aSTkpkDY
[3] How to enable global clip plane? (2016, June 14). Epic Developer Community Forums. https://forums.unrealengine.com/t/how-to-enable-global-clip-plane/360780/1
[4] Unreal Engine 5: How To Fix “Video Memory Has Been Exhausted” (Temporary Fix For Development) | Community tutorial. (n.d.). Epic Developer Community. https://dev.epicgames.com/community/learning/tutorials/yrl7/unreal-engine-5-how-to-fix-video-memory-has-been-exhausted-temporary-fix-for-development
[5] Michael H.H.V. Tran. (2022, December 11). How to fix video memory has been exhausted in Unreal Engine 5.1 [Video]. YouTube. https://www.youtube.com/watch?v=CGfU5C8Zi7s
[6] Adnan Latif Unreal Engine. (2023, March 27). how to fix video memory exhausted in unreal engine 5 | unreal engine tutorial || ue5 [Video]. YouTube. https://www.youtube.com/watch?v=IEn2XZc33Fo
[7] Ben Cloward. (2022, October 6). Sparkling Snow Shader - Advanced Materials - Episode 2 [Video]. YouTube. https://www.youtube.com/watch?v=TCz-fKJS3wI
[8] FreetimeCoder. (2023, March 29). Unreal 5.2 Preview PCG Tutorial - Part 8 - Jungle Breakdown [Video]. YouTube. https://www.youtube.com/watch?v=SCDZ8kobv1M
[9] FreetimeCoder. (2023, March 27). Unreal 5.2 Preview PCG Tutorial - Part 2 - Splines [Video]. YouTube. https://www.youtube.com/watch?v=zp1pvaZraGM
[10] FreetimeCoder. (2023, March 28). Unreal 5.2 Preview PCG tutorial - Part 5 - Custom PCG actor and Attributes [Video]. YouTube. https://www.youtube.com/watch?v=nq7aqU2F6mQ
[11] Pi Equals Three. (2023, April 1). Make your player invisible in Fortnite! UEFN / Creative 2.0 [Video]. YouTube. https://www.youtube.com/watch?v=0o6n1FXkNFU
[12] Characters module. (n.d.). Epic Developer Community. https://dev.epicgames.com/documentation/en-us/uefn/verse-api/fortnitedotcom/characters
[13] Logic. (n.d.). Epic Developer Community. https://dev.epicgames.com/documentation/en-us/uefn/logic-in-verse