UE4の勉強記録

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

UE5の勉強などなど

1.今週の予定

今週もこの順序に従って勉強していきます。

  • 映像作成用UE5の勉強
  • AIの勉強
  • Nvidia Omniverseの勉強
  • Gaeaの勉強もしくはVroidとUE5の勉強
  • Houdiniの勉強
  • AIについての調査(ComfyUIの勉強)
  • DirectX12の勉強

それぞれの勉強の最初にその勉強をする目的を一寸だけ書いておきます。

2. 映像作成用UE5の勉強

2.1 PCGを使用した神社の作成

PCGで建物を作成する方法を勉強してるので、その応用としてPCGで神社を作成する事にしました。

最終的にはUEFNのMap内で神社を作成して、だれでも参拝出来るようにするつもりです。

2.1.1 先週の復習

楼門の作成を始めました。

以下のAssetが有る事を知りました。

のでこれを使用して楼門の作成をする事にしました。

2.1.2 楼門の作成の続きを行う

こっちのModelの方が楼門っぽいですね。

楼門のPCGが完成するまで、これをそのまま使用する事にします。

2.1.3 楼門を追加する場所のPointをRemoveする

楼門を追加する方法はDo You Want to Remove Just One Side of Your Building? | UE 5.4 P4 [1]の<07:54 - Doors Setup>で勉強した方法を採用します。

この部分は2025-07-27のBlogで勉強していました。

まずはTriger BoxをLevel上に配置してその中にあるPointをRemoveするための実装を調べます。

Triger Boxを配置して以下の設定をしています。

同時にやって行きます。

以下の様にTrigger Boxを配置しました。

更にTrigger BoxのTagにRoumonとセットしました。

次の工程です。

Get Actor Dataノードを追加しました。

そして設定を以下の様に変更します。

更に以下の様にIntersectionノードを繋いで、

Intersectionノードを可視化すると

こんな風にTrigger Box内のPointが表示されていました。

これを実装します。

PCG_JapaneseShrine1内で実装します。

以下の場所で実装したら上手く行くはずです。

Get Actor Dataノードを配置しました。

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

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

Intersectionノードの結果を可視化します。

Trigger Box内のBoxが表示されていました。

出来てます。

今度はDifferenceノードを追加します。

だそうです。

やってみます。

以下の様に繋ぎました。

Differenceノードの設定は2025-07-27のBlogには載ってなかったのでDefaultのままです。

結果です。

おお、ぱっくり瑞垣が切れています。

隙間に楼門のModelを配置してみました。

こんな感じです。

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

左右の塀の隙間は来週調整します。

今週の神社の作成はここまでにします。

2.2 PCGの勉強

PCGを使用した建物の作成を勉強しています。

その理由ですが、Luma AIで作成した3D Gaussian SplattingをUE5にImportすると以下の様に、

奥にあるHigh-rise apartment Building(マンション)が歪んでいます。

気持ち悪くなる位曲がっています。

これ直さないと3D Gaussian Splattingは使用出来ない。との結論になりました。

でどのように直すかとなると、PCGを使用してHigh-rise apartment Building(マンション)を作成するしかないのかな。となりPCGで建物を作成する方法を勉強する事になりました。

2.2.1 先週の復習

先週も引き続きSeedについて調べています。

そもそもPCG Random Points with FloorsノードのInputにSeedがありますが、このInputにGet Actor Propertyノードから

Seedの値を得ていますが、このSeedの値がありません。

で、色々調べた結果、ここに

実際にSeedの値をInputで使用してるPCG_RandomPointsWithFloorsノード

内のAttribute Noiseノードの

SeedのDefault値である

-685710265のような値を指定すれば良いとの結論になりました。

2.2.2 Attribute NoiseノードのSeedの値について

Attribute NoiseノードのSeedの値についてChatGPTに質問して確認します。

でこの後も色々書いていますが、結論はよく分からないです。

一応、ChatGPTが調べた内容を以下にまとめておきます。

沢山報告して意味があるかのように述べていますが、結論はよく分かりませんでした。

という事です。

しかしInt32を使用して最大値/最小値が、INT32_MIN = -2,147,483,648 と INT32_MAX = 2,147,483,647になってる事は分かりました。

-685710265をそのまま使用しても問題ないでしょう。

2.2.3 Seedを作成する

BP_Buildingを開きます。

ここのVariableにSeedを追加します。

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

Int32を選択しようとしたらIntegerとInteger64しかありません。

多分IntegerがInt32でしょう。

Default値には-685710265ではなく、念のために小さい値をセットしました。

PCG_Buildingの設定です。

Get Actor Propertyノードは先程設定したSeedの値をRetrieveしています。

特にErrorとかは起きていません。

Seedに関してはこれ以上の情報を得る事は出来なかったので、これで完成とします。

2.3 Level Sequence上でAnimationの編集をする方法

Level Sequence上でDragonをAnimation Sequenceを使用するとDragonの爪が地面にめり込んでしまいます。

これを直すには、Animation SequenceではなくControl Rigを使用する必要があるみたいです。しかし私が使用してるDragonには付属のControl Rigがありません。

しかもControl Rigがどういうものなのか全く理解していません。

のでControl Rigがどういうものなのかについての全般的な知識と、その使用方法についての基礎を勉強する事にしました。

その後、今まで勉強してたTutorialはUE5.0用のTutorialで5.5はControl Rig [2]を勉強する必要がある事が判明しました。

のでControl Rig [2]を勉強する事にしました。

2.3.1 先週の復習

Control Rig Component [3]を勉強しました。

勉強した内容を見たところ、とても実装出来る程の情報が無い事が判明しました。

ので勉強だけして実装は止めました。

こんな情報しかないのにControl Rig [2]を勉強する価値があるのか。と真剣に悩みましたがあるUE5で動画を作成するためのTutorialを見てたら、

UE5はそもそも動画を作成するためのEngineではないので、取りたい映像を作成するのは並大抵の努力では出来ない。

みたいな事を言っていました。

で、やっぱりControl Rig [2]の勉強は継続する事にしました。

しかし残りのTopicは以下のような内容で

今すぐ勉強しなくてはいけないものでは無いです。

こっちのAnimation with Control Rigの内容の方が勉強する価値がありそうです。

こっちを勉強します。

2.3.2 Animating with Control Rig [4]を勉強する

こっちが知りたい内容です。

<Prerequisites>

特に必要な事は無いです。

<Animating in Sequencer>

これはまあ常識Levelの話です。

以下の図がついていました。

これも知ってる内容です。

これで一からAnimationをLevel上で作成するんですね。

元からAnimationが有る場合の変更方向、しかも地面に対してCollusionを自動で追加する方法はまだ不明です。

追加でAnimationがついていました。

以下にそのAnimationのScreenshotを載せています。

これはQuick Startで既に勉強した内容です。

特に新しい情報では無いです。

<<Multiple Control Rigs>>

これは一個のSkeletal Meshに複数のControl Rigを追加出来ると言う意味では無く、複数のSkeletal MeshのそれぞれのControl Rigを同時に表示出来ると言う意味の様です。

<<Layered Control Rig Track>>

この後に以下のTipがあります。

この内容については後で検討します。

以下の図がついてました。

これは前の文章の説明を図で可視化してます。

こういうやり方もありますという事ですね。

次の文章です。

この後にAnimationでやり方を説明していました。

ここで追加したAnimationの編集をControl Rigから出来るかどうかを知りたいです。

こういうのは実際にやって見せてほしいです。

この説明だけでは、Layerが沢山あった時の順番をOrderの値によってどう処理するのかの具体的なImageが湧きません。

これはLayer化されてないSequencer TrackのOrderの値をLayerのOrderの値より大きくしておかないと、

Layer化されてないSequencer TrackのAnimationは全部無視されてしまう。という意味だと思います。

この説明よりもこの後にあるAnimationが凄いです。

以下の様に坂を歩いて登ってるAnimationを表示しています。

WeightをEnableします。

そしてWeightの値を0にすると

坂を無視して歩いています。

いや、Weightの使用方法は別にこれで良いんですが、最初に坂に沿って歩くAnimationをどうやって追加したんでしょう。

CR_SlopWarpで追加したはずですが、このSequenceの設定方法は全く説明してないです。

これが知りたかったのに。

これは豆知識的な何かですね。

<Animation Features>

ここでこの章にあるそれぞれのTutorialを簡単に説明しています。

以上です。

Layered Control Rig Trackに関するYouTubeのTutorialが2,3個あってそれらを軽く見た感じではこの機能を使用すれば、

Dragonの爪が地面にめり込んでしまうのを直せそうです。

ただしChatGPTに質問したら、どうもまだExperimentの段階で、けっこうBugがあるそうです。

Animation Mode [5]も今回勉強してしまおうと思ったんですが、これは来週やる事にします。

<追記>

Unreal Engine - How To Edit Animations Non-Destructively with Control Rig [6]にAnimationにLayered Control Rig Trackを使用してAnimationをControl Rigから編集する方法が説明されていました。

来週はこれを勉強する事にします。

3. AIの勉強

AIの勉強の目的ですが、

生成AIが凄いTrendになってるので、最低限の基礎は知っておくべきと思いこの勉強を始めたんでした。

のでこれを勉強してどうしたいというのは無いです。

今週からCursor AIの勉強もする事にします。Vibe Codingというか、AIによるCodingを知っておく必要がありますので。

3.1 Cursor AIの勉強

3.1.1 先週の復習

Cursor Vibe Coding Tutorial - For COMPLETE Beginners (No Experience Needed) [7]を勉強しています。

<Prompting Cursor (Code Generation)>まで勉強しました。

3.1.2 Cursor Vibe Coding Tutorial - For COMPLETE Beginners (No Experience Needed) [7]の続きを勉強する

<00:28:25 | Debugging Issues>

Cursor AIが直したCodeをAcceptします。

そしてIndex.htmlを実行すると

以下の様になりました。

これをScreenshotにとりCousor AIの質問するところに張り付け、

こんな感じになった。

と説明しました。

Cursor AIが直します。その結果をAcceptしてまたIndex.htmlを実行すると

以下の様になりました。

今度はBrowserのInspectを開き、Errorの表示を確認しました。

以下のErrorが表示されていました。

これをCursor AIに伝えます。

Cursor AIがこのErrorを直しました。

その結果をAcceptしてまたIndex.htmlを実行すると

今度は別のErrorが表示されました。

これも同様に直してもらいます。

結果です。

おお、今度はかなり綺麗になりました。

赤いSquareは左右には動きますが、Jumpは出来ません。

更に別のErrorも表示されていました。

Cursor AIにこれらの事を伝えて直してもらいます。

何回か繰り返しましたがJump出来るようになりません。

以下に示した+を押してChatを新しくしました。

そしてModelを以下の様に変更しました。

Modelを変更してもう一回試します。

またErrorになりました。

何回かの試行錯誤の後、以下の様になりましたが、

まだJumpは出来るようになっていません。

ここで初めて実際のCodeを見て問題を特定する事にしています。

JumpをCodeから探します。

ありました。

そしてCodeの間にここにPrintするCodeを生成して。とCursor AIに命令しました。

こんな事も出来るのか!

以下のCodeを追加しました。

テストします。

Space Keyを押すと以下の様にJumpingが表示されました。

しかしJumpはしません。

この新たな情報をCursor AIに伝えて、Jump出来るようにCodeを直すように命令しました。

更に以下のCodeを選択して

Add to Chatを押します。

これでこのCodeが先程の命令に追加されました。

しかしJump出来るようにはなりませんでした。

ここでこの節が終わりました。

今週はここまでにしておきます。

続きは来週やる事にしました。

3.2 Practical Deep Learning for Coders 2022 [8]の勉強をする

3.2.1 前回の復習

Linear Model、Neural Network ModelそしてRandom Forestの具体的な手順をまとめ直す事にしたんですが、

復習を始めると

実はLecture3で勉強した2層の非常に単純なNeural Networkの計算方法と、

Lecture5で勉強したLinear ModelとNeural Networkモデルの計算方法、

そしてRandom Forestの計算方法を勉強してるだけだという事が判明しました。

なので

2025-04-06のBlogからLecture3、 Lesson 3: Practical Deep Learning for Coders 2022 [9]の復習をする事にしました。

Lecture3の前半ではDeep Learningの手法を使用して

以下のバラつきのあるDataから

最適な2次関数、ax^2+bx+cのa,b,cを求める方法を勉強しました。

このabcを求める計算方法が、Neural Networkの手法なんですが、今読み直すと、あんまり綺麗にまとまっていません。

もうChatGPTに質問してしまいましょう。

はい。

なんと、これは単なる関数近似の話でした。

これを理解する事でDeep Learningの本質、Parameter、a,b,cをDataから学習する事を理解出来るようにする。そうです。

更に詳しく以下の様に解説してくれました。

だそうです。

層が無いからNeural Networkでは無いのか。

おお、こういう事だったのか。

Neural Networkの手順を以下の様に説明しています。

成程。

これなら納得です。

ああ、そして先週のBlogの意味が分からない理由も分かりました。

Step2でLossを計算していますが、この時のabcのそれぞれの値をLearning Rateでどう変化させるのかの具体的な手順がまったくまとめられていませんでした。

Abcそれぞれのgradを計算してそれにLearning Rateをかけていました。

やっと理解出来た。

これを順伝播、損失計算、逆伝播、そしてParameter更新の観点から説明すると

以下の様になるそうです。

成程。やっと点と線が繋がりました。

しかしこれで逆に新たな謎が出て来ました。

順伝播でax^2+bx+cの式はどうやって思いつくんでしょうか?

ChatGPTに質問してみます。

そもそもDeep Learningでは式は作成しないのか。

でここから詳しく解説してくれているんですが、

ここでCNNとかTransformerが出て来ました。

やっとこれらの話が繋がって来ました。

で順伝播の定義は以下の様になります。

成程ね。

今、気が付いたんですが、Deep LearningはNeural Networkの一部です。

何でChatGPTはLecture3の最小形態を敢えて、Deep Learningの最小形態といってるんでしょうか?

Neural Networkの最小形態という事ですね。

はい、理解しました。

3.2.3 このNeural Networkの最小形態をどうやってTitanicのDataに使用したのかを確認する

 Lesson 3: Practical Deep Learning for Coders 2022 [9]の後半ではこのやり方を実際のData、Titanicの顧客のDataに対して使用しています。

どのように使用したのかを確認します。

2025-04-20のBlogで勉強していました。これをまとめます。

更にHow does a neural net really work? [10]とLesson 3: Practical Deep Learning for Coders 2022 [9]の内容も参考にします。

<43:18 ReLu: Rectified linear function>

をもう一回勉強します。

ReLu関数は今まで勉強した式を推測する手法をNeural Networkの手法に拡張するための重要な関数です。

もう一度基礎から勉強し直します。

ここでは、

How does a neural net really work? [10]の<<How a neural network approximates any given function>>を勉強しています。

この章を先に読んでおきます。

やっとこの文章の意味が理解出来るようになりました。

そしてReLu関数を以下の様に作成しました。

同じ関数をrelu(x)を使用して作成しています。

どっち使っても同じという事です。

この

m は傾きを変え、b は「フック」が現れる位置を変える事を確認するのが大変でした。
まずKaggleにある実装ではmとbのSliderを動かしてもGraphの結果が変化しません。

Copyして自分のProjectとして実行したら、Errorになりました。

ChatGPTにErrorの原因を直してもらうと、別なErrorが発生しました。

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

これでやっと確認出来ました。

ここでChatGPTがLimitを迎えてしまいました。

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

続きは来週します。

来週はReLu関数を使用すると

  • 線形変換(行列掛け)を重ねただけでは「単一の線形関数」に還元されてしまう(線形×線形=線形)。
  • したがって、非線形性(活性化関数)を挟むことが必須。これがネットワークを「深く」しても表現力を上げる理由。

となる事も調査します。

これ言ってる事は理解してますが、具体的に簡単は計算で証明するのを実際に見た事は無いんですね。それをやります。

4. Nvidia Omniverseの勉強

Robotic AIの仮想空間におけるTrainingのための環境設定こそがこれからの3D Graphicsの専門家が生きる場所であると思っています。

のでその仮想空間でRobotic AIがどんなTrainingを行っているかをまず勉強する事にしました。

色々調べると、その部分はNvidiaのOmniverseの中のIsaac Simが担当している事が判明しました。

のでその辺りを勉強します。

2025年9月からIsaac Lab Documentation [11]の勉強に切り替えました。

4.1 先週の復習

 Environment Design [12]の続きを勉強しています。

以下のReward関数の実装まで勉強しました。

先週の最後に

keepdim=Trueの意味は

次元が消えるという意味だそうだが、このTensorの考え方がよく分かりません。

これについて今週は深堀する。と書いて終わっています。

しかし、今復習すると

これって単に表記を以下の様に変えてるだけで

そんなに深堀する価値あるとは思えません。

今週は素直に続きをやる事にします。

4.2 Environment Design [12]の続きを勉強する

昨日(一昨日?)にGemini Pro3が公開されました。

無料版でもThinkingで使用出来るみたいです。(後、Google Antigravityで期間限定ですがSonet4.5が無料で使用出来るみたいです。これも後で試してみます。)

今回はGemini 3を使用して勉強する事にします。

以下の文章の訳からお願いしました。

Gemini3の訳です。

特に問題は無いです。

Googleの翻訳はChatGPTなどと比較すると落ちるImageが有ったんですが、これ見る限りでは同じ位優秀ですね。

更に訳した内容の解説もしてくれました。

分かり易い。

ArticulationDataはそういうDataを管理してるのか。

これを読んで理解出来ました。

更に以下のCommentもありました!

絶対、私のBlogを読んで回答しています!

ArticulationとArticulation Dataの違いについて理解した内容があってるか確認します。

けっこう、回答に時間がかかります。

この辺はまだChatGPTの方が良いかもしれないです。

更に以下の様に詳しく解説してくれました。

Fontが読みにくい。

読みにくいは言い過ぎですが、ChatGPTのFontの方が満足感は高いですね。

Copilotと比較すると同じ位の満足感ですね。

それぞれのRobotの速度は違う訳で、速度からRewardを計算するには、それぞれのRobotの速度のDataを持ってるArticulation Dataの情報を参照する必要が有ると言う訳ですか。
納得です。

次の文章にいきます。

Gemini3の訳です。

もう私が訳の間違いを指定出来るLevelでは無いです。

Apply ActionがArticulationのMethodを呼び出し、ObservationではArticulation DataのMethodを呼び出すのは理解しています。

その後の、PolicyはPolicy Modelのための観測値を定義し、Criticは評価のための観測値を指定するとありますが、これは知らなかったです。

UE5のLearning Agents (5.5)のPolicyとCriticもそうなってたのかな?

これは後で確認します。

更に以下の解説がありました。

NvidiaのAcceleration Computingの一端がこういう実装から見れますね。

凄い!

Articulation Dataを使用する事によってBody Frameを使用出来るMeritがあると言う事らしいです。

PolicyとCriticを生徒と先生に例えて説明してるのは分かり易いです。

やっぱりここは重要なPointなのか。

一寸、UE5のLearning Agents (5.5)のPolicyとCriticについてどんな勉強をしたのか復習します。

2025-06-22のBlogで勉強していました。

これ以上の理解はしてません。

でもこれ見るとRewardとどう違うのかが分からないですね。

この辺をGemini3に質問しますか。

以下の質問をしました。

Gemini3の回答です。

逆だそうです。

Rewardの結果に基づいて、CriticがどれくらいRewardを貰えるのかを予測するそうです。

ふーん。

更に詳しく解説してくれました。

まずRewardについてです。

そう。誰が決めるのかが重要です。

Rewardは私が決めています。それに対してさっき復習したUE5のLearning Agents (5.5)は何をCriticするのかの指定をする箇所が見つからなかったです。

今度はCriticの説明です。

こんな事をCriticはしていたのか。

Criticの役割をやっと理解する事が出来ました。

今度はCriticの役割を先程の先生と生徒に例えて説明しています。

これは前の例ほど俊逸では無いですね。

ここまで例えるなら塾の先生がその予測によってどう教え方を変えるのかまで説明してほしかったです。

ふーん。

Reinforcement Learningでは偶然上手く行った事に対しての補正が大切のようです。

Policyの学習方法を指定するところでも、偶然上手く行った事に対しての補正をする手法を選択した記憶があります。

ありますがこれはBlogを探しても見つかりませんでした。

Gemini3に質問したら一瞬で答えを教えてくれました。

凄すぎる。

次の文章です。

間違えてChatGPTの方に貼ってしまいました。

せっかくなので両方の訳を比較してみます。

ChatGPTの訳です。

Gemini3の訳です。

「we will make the reward the magnitude of the linear velocity of the Jetbot in the body frame.」の訳ですが、

ChatGPTが

Jetbot のボディ座標系における線形速度の大きさ を報酬とします。

と訳したのに対して

Gemini3は

報酬を「ボディ座標系におけるJetbotの線形速度の大きさ(ノルム)」とすることにします。

と訳しました。

ボディ座標系におけるをJetbotにかけたGemini3の方が訳が自然です。

Gemini3凄いです。

place holderって仮って意味なんでしょうか?

これはChatGPTにだけ質問しておきます。

あってました。

Gemini3は訳の後に以下の解説もしてくれました。

そして以下の例を説明しています。

これは本筋には関係ないかもしれませんが、面白い話です。

そして次の内容についても簡単に説明してくれてます。

今度は以下の実装について勉強します。

確かにTerminationとResettingの実装です。

Gemini3の解説です。

特に疑問は無いです。

ChatGPTより説明が易しい感じがします。

Return ValueにFalseを入れると失敗無しになるのは理解出来ますが、なんか逆の方がしっくりします。

次は環境のResetについてです。

それぞれのCodeの説明はたったの一行ですね。

でもこれくらいの方が分かり易いですね。

追加で以下の説明がありました。

そう、Env_originsを足すのだけ納得いかなかったんです。

そこをPin Pointで説明してくれるのはありがたいです。

説明読みました。

なんだ。こんな理由だったのか。

理解しました。

残りの文章も訳してもらいましょう。

全部一気に訳してもらいます。

ここは_get_dones Methodの説明ですね。

こっちは_reset_idx Methodに関しての説明です。

なんかあんまりピンと来ません。

もう集中力が切れて来たのかもしれません。

Gemini3は更に以下の説明をしてくれました。

これは理解しています。

別に親Classを呼び出す事が凄いんじゃなくて、親Classを呼び出す以外に、TimerをResetする方法が無いだけでしょう。

ここ以外にSuperを呼び出す事は出来ない。とか言われると親Classを呼び出す事自体が偉いように聞こえます。

おお、ここでLimitに達しました。

明日の朝の6時まで使えないのか。

結構長いな。

この辺はChatGPTと同じですね。

ChatGPTとGemini3の両方を使用して勉強するのが一番お得という感じです。

丁度、Tutorialもここで終わりました。

今週のOmniverseの勉強はここまでとします。

4.3 Gemini3を使用した感想

圧巻の一言です。

3つの主な理由をまとめておきます。

<理由1>

先週のBlogにkeepdim=Trueの意味は次元が消えるという意味だそうだが、このTensorの考え方がよく分かりません。これを来週(つまり今週)は勉強します。と書いておきました。

Gemini3に

と書いただけで、

なんと以下のようなCommentが追加されていました。

これは確実に私が書いたBlogを読んだ上で回答しています。

凄いです。

<理由2>

翻訳がChatGPTより僅かだが上回った。

今までのGoogleの翻訳はChatGPTと比較するとかなり劣っていました。明らかに間違った訳をしてる場合もありました。

それが今回、文章の質まで考慮するとChatGPTより上の訳をしてる箇所がありました。

凄いです。

<理由3>

簡潔な解説です。ただ短いだけじゃなく、本質をビシッと捉えた上で簡潔にまとめています。

読んでて非常に分かり易かったです。

ただまだ複雑な定義の説明を試してはいませんので、その辺も簡潔かつ要点を捉えた説明が出来るかどうかは分かりません。

5. Gaeaの勉強もしくはVroidとUE5の勉強

今週は別な予定が入ったのでGaeaのTutorialは中止します。

6. Houdiniの勉強

Houdiniの勉強を始めた理由は、これからの3D GraphicsはProceduralな3Dの生成だという風潮が2年前ぐらいに起きて、それで慌てて勉強を始めたんです。

生成AIブームが起きて、Proceduralな3Dの生成のブームはすっかりなくなってしまいましたが、Nodeを使用して3Dを生成する手法は、職人的な技術が無くても3D Objectの生成が出来るのでかなり便利という事に気が付きました。

のでHoudiniの勉強は続けています。

しばらくHoudiniの勉強はお休みして木の生成について調査していましたが、やっぱりHoudiniの水のSimulationの勉強をする事にします

木を自分で実装してもその凄さに気が付く人はほとんどいません。

それに対して水のVEXを作成したら誰が見ても凄いと思うからです。

6.1 先週の復習

Houdini is HIP - Part 14: Flip Fluids I [13]の復習の続きです。

Houdini is HIP - Part 14: Flip Fluids I [13]の実装は終わったんですが、その中身を全然理解していません。

ので中身を理解するための復習をする事にしました。

先週はGridとParticleそれぞれの実装をどうやったのかを復習しました。

そしたらChatGPTが、GridもParticleも別に分けないで以下の手順で実装してるよ。

と教えてくれました。

のでこの工程に従って、今までの実装を復習すると

SOP Levelでの実装、

DOPnetでの実装、

ForceノードなどでSimulationに影響を追加、

のように基礎の部分はTutorialの最初で既に作成されている事が確認出来ました。

最後のSOP Levelに戻して結果の可視化の部分は確認していません。

そしてGridとParticleの実装に関しては

SOP層では以下に示したFlip Sourceノードが

ParticleやGridの情報を生成し

DOPnet層では、

Flip solverノードが

ParticleとGridの両方の Simulationの計算をしている事が判明しました。

6.2 Houdini is HIP - Part 15: Sparkling Water Project [14]を勉強する

もう復習する内容も無いので次のTutorialを勉強する事にします。

今度のTutorialはSimulationの結果をSOP層に戻して、Photo-Realisticな液体のRenderingの方法も勉強出来るでしょう。

<00:00 Intro>

今回のTutorialはVersion 20でやってます。

<01:30 Glass Setup>

Glassを作成します。

Obj層にGeometryノードを配置します。

名前をGLASSに変更します。

GLASSノードを開いて

Curveノードを追加します。

SOP levelのSOPの意味を確認しておきます。

ChatGPTに聞きました。

なんか、返事が冷たいです。

ひょっとして機能Gemini3を使用して勉強したからでしょうか?

Front Viewに変更して

以下のようなDrawをします。

Revolveノードを追加します。

Revolveノードの解説です。

DOP Levelノードって解説されてます。

そうなの?

Geometryノード内で使用するNodeは全部SOPだと思っていました。

一応、ChatGPTで確認します。

だそうです。

やっぱり最初の解釈であってるわ。

ChatGPTのお陰で、Tutorialのミスから混乱する事を防ぐ事が可能になりました。

以下のような形状になりました。

Revolveノードを可視化したら以下の様になりました。

Prospective Modeに戻りました。

表面の色が青みが買っていますが、これは裏側が表示されているからだそうです。

表裏が逆になってるという事です。

直します。

RevolveノードのPropertyにあるReverse Cross SectionsをEnableします。

結果です。

青みが無くなりました。

裏表が直りました。

End CapsもEnableしました。

Topに表面が追加されました。

ここには映って無いですが、Buttonにも表面が追加されたそうです。

UVは要らないので以下のCompute UVsは外します。

Blastノードを追加しました。

BlastノードのGroupの矢印を選択し

先程作成されたTopの表面を選択します。

選択した表面をBlast Awayします。

今度はPoly Extrudeノードを追加しました。

おお、SOP Levelのノードに関しては結構知ってるNodeが多くなって来ました。

Poly ExtrudeノードのDistanceの値を上げました。

結果です。

更にOutput BackをEnableします。

結果です。

内側にもSurfaceが生成されました。

Subdivideノードを追加しました。

結果です。

SubdivideノードのDepthの値を3まで上げました。

結果です。

これで完成ですかね。

なんとこの時点でもCurveノードを選択してCurveの形状を変化させる事が出来ます。

Proceduralの特長を存分に発揮していますね。

Glassの底が原点より下に来ています。そしてGlassの大きさは1m以上あります。

これらを直します。

Transformノードを追加しました。

Glassの大きさはせいぜい20cmでしょう。

Uniform Scaleの値を0.2にしました。

結果です。

大体20cm位の大きさになりました。

今度はMatch Sizeノードを追加しました。

このNodeは初めて使用する気がします。

このNodeはきちんとSOP Levelであると説明されています。

Match SizeノードのJustify Yの値をMinに変更しました。

結果です。

Glassの底が原点に移動しました。

最後にNullノードを追加しました。

名前はGLASS_OUTにしていました。

ここで<01:30 Glass Setup>が終わっています。

まだ5分程度しかTutorialの勉強をやっていませんが、既に結構な量を実装しています。

今週のHoudiniの勉強はここまでにして、来週、今週勉強した範囲を実装する事にします。

6.3 Houdiniの仕組みについて

Houdiniの勉強を始めたのは、2023-01-01のBlogからです。

もう2025年も終わりますので、約3年前になります。

やっとHoudiniの構造が理解出来るようになって来ました。

今回、TutorialにはRevolveノードの解説で、DOP Levelで使用すると書いてありましたが、これは間違いです。

RevolveノードはSOP LevelのNodeである事をChatGPTの助けを借りながらですが突き止めました。

基本的にSOP LevelではGeometryを作成します。

それぞれの層は以下の様になっています。

更にMaterialの設定やRenderingの設定をするLevelもあります。

Houdiniではそれぞれの設定をする場所をLevelで分割して管理しています。

そしてそれぞれのLevelをOperatorと呼んでいます。例えばGeometryを管理するLevel(Operator)はSurface Operator、SOP、という感じです。

UE5がそれぞれの設定をBP内で管理してるのと原理的には同じ事をしてるんですが、形状は全く違います。

結局、3D Graphics Engineである事は同じなので、管理する内容はほとんど同じになります。しかし管理の形状がそれぞれのEngineによって大分違っているんです。

Houdiniの使用方法を理解するには、このLevelによってそれぞれの設定を管理してる事を理解する必要があったんです。

3年も費やしてやっとHoudiniの仕組みが分かったわ。

最初からHoudiniは3D Graphicsのそれぞれの設定をLevelに分けて管理しています。と言ってそれぞれのLevelの学習方法を提示すべきでしょう。

学習者にこんな遠回りな勉強させてHoudiniの連中は何がしたいの?

ホント、怒りで爆発したい気持ちでいっぱいです。

もうCGIで作成する時代は終わりを迎えています。これからはAIがCGIを作成するようになるでしょう。

Houdiniの唱えるProceduralな手法によるGeometryの作成もたった2~3年でその覇権を奪われてしまいました。

7. AIについての調査(ComfyUIの勉強)

今週はGoogleのAntigravityを試す事にします。

7.1 AntigravityをInstallする

流石にAntigravityの詳しいInstallationを説明したTutorialはまだなかったです。

行き当たりばったりでやってしまいます。

https://antigravity.google/

を開きました。

URLはあってますね。

Download for WindowsをClickします。

X64をDownloadします。

を起動させます。

が開きました。

同意するを選択して次へを押します。

Install先はDefaultのままにしておきます。

次へを押します。

Start menu Folderって何でしょう?

ChatGPTに聞いたらDefaultで良い。って言ってます。

次へを押します。

追加するTaskについて聞いてきました。

Desktop上にIconの表示はしてほしいです。

更にExplorerのFile Context MenuにもAntigravityの表示は欲しいです。

次へを押します。

Installを押します。

Installが始まりました。

これで完了です。

Systemへの変更を許可しますか

とかは聞かれませんでしたね。

完了を押します。

Antigravityが起動しました。

設定をここでする必要があるのか。

ううん。

設定という設定ってないんです。

VS Codeにも無いしCursorにも無いです。これらのIDE全然使ってないですし。

Start Freshを選択します。

こんなのは何時でも変えられるはずです。

Tokyo Nightでも選択しておきます。

Agent-driven developmentを試したいんですが、RecommendedはAgent-assisted developmentですね。

全部このままにしておきますか。

細かい意味は後で調べます。

これもDefaultのままで良いです。

はい。

Login出来ました。

おお、そうだ。Gemini3にこの文章を訳してもらいます。

はい。

Data Exfiltrationってどんな意味かよく分からないと思ったらそれも説明してくれてました。

簡単に言うと以下の3つに気を付けてと言う事らしいです。

はい。

理解しました。

おお、Antigravityが始まりました。

用事があるので、ここで一端停止します。

7.2 YouTubeのTutorialを見る

用事が済んだので続きをやります。

一応AntigravityのInstallが終わったので、YouTubeのTutorialに沿って何か試してみます。

さっき見た時は2,3個しかTutorialが無かったのに。

凄い増えてます!

こういう公式の奴ってあんまり役に立たないんだけど。13分と短いので一応見ておきます。

ああ、Settingの説明からやってた!

しかもDefault Light Modernを選択しています。

私も白い方が使いやすいんです。

なんで、Proは黒いの使うみたいな風潮があるんですかね。

白人は暗い所でも良く見える傾向があるんです。一緒に映画館とか行くと、こっちは真っ暗で何も見えないのに、彼らは普通に見えてたりします。

そのせいか、Monitorの白が強すぎると感じる傾向があります。

アジア人には関係ない話です。白で良いんです白で!

後で白に直します!

この後の説明は何やってるのかよく分からないです。

画面もなんか違うし。

ああ、Macでやってるのと画面が白いから物凄く違って見えるんだ。

うーん。

白くするのは無し。

なんか説明聞いても今の時点ではピンと来ません。

他のTutorialを見ます。

これ見てたら、

以下のExtensionを追加する事で

Antigravityが直接、Chromeを操作して作成したProgrammingのテストを自動でする。みたいな事を言ってます。

へえー!

そんな事出来るの?

他にどんな事が出来るのかGemini3に聞いてみました。

Manager Viewと言うのが有るのか。

これも後から勉強する事にします。

報告書、Artifactsも作成してくれるのね。

当然、Gemini3 Proが使用できると。

更に以下のCommentをしてくれました。

成程。

この辺の使い方を理解するのが重要なのか。

今回は、まあ最低限の使用方法を理解したら十分とします。

IDEの形状が少し違う気がします。

24時間以内に作成されたTutorialに限定してみる事にします。

これは簡単で分かり易かった。

一応勉強の候補に入れておきます。

このTutorialは今回はBrowser ExtensionとかManager viewとかは試さないと宣言してました。

それはそれでありですね。

Data ScientistのKrish Nalk氏のTutorialです。この人のTutorialは昔よく見ました。

AntigravityのHomepageの説明の解説をしていました。

Installの設定の説明もしっかりしていました。

ああ、これで勉強しよう。

最後まで見ましたが、一寸やってる内容が初心者向けではありませんでした。

Terminalとか使用しています。

今回は別なTutorialで勉強します。

こっちかな。

これならInstallの設定から簡単なCodeの生成方法まで説明していました。

しかもたった8分のTutorialです。

これで試してみます。

7.3 MASTER Google Antigravity AI Code Editor (Full Tutorial For Beginners) [15]を勉強する

やっぱりこっちにします。

そもそもAIを使用したIDEの操作だってまだよく分かってないんです。

普通の人より簡単なTutorialから始める必要があります。

一緒にやっていきます。

まずAntigravityを開きました。

一番最初にWorkspaceをSaveしています。

これがよく分かりません。

まず最初にSaveするためのFolderを作るべきと思うんですが?

Desktopに以下の名前でSaveしてました。

ああ、そういう事か。

Antigravity用のProjectを保存するためのFolderを作成してその中に1121というFolderを作成してそこにSaveしました。

今度はWorkspaceにFolderを追加するそうです。

え?

さっきのWorkspaceと今度作成するWorkspace用のFolderって用途が違うの?

ChatGPTに聞いたら、WorkspaceだけではFolderが無いので管理出来ないからFolderを追加すると言っていました。

この仕組みはVS Codeとかといっしょだそうです。

あんまり深く考える必要はなさそうです。

さっき作成したFolderを指定しました。

Yesを押します。

FirstProjectが開いています。

更にFolderの名前が表示されています。

何これ?

1121は絶対に間違った名前だわ。

Explorerを開いたら以下の様になっていました。

1121のFolder内に別のFolderを作成してFirstProjectと名付けるべきでした。

まあいいや。

Index.htmlを追加しました。

以下の命令を出しています。

うーん。

日本語でやってみよう。

色々やってます。

出来たみたいです。

まず日本語に変えてもらいます。

更にCSSJavaScriptに関しての計画も追加してもらいます。

実行するのでProceedを押します。

出来たんですが、index.htmlしかありません。

作り直してもらいます。

今度は3つに分けて作成しました。

TutorialだとここでSetupが表示されて

Browser Setup用のBrowser画面が開いてるんですが、

私の画面では

となってるだけです。

取りあえずAccept Allを押します。

その後は何も変化しません。

ので以下の質問をしました。

結果、

が表示されました。

おお、Browser Setupが開きました。

ExtensionをInstallします。

Installが終わったら以下の画面が開きました

自動でテストしています。

そして

凄い。

Walkthrough.mdを開いたらTestの記録を録画した動画が載っていました。

すっごい!

一応、今日やりたい事は出来たのか。

Tutorialの続きを見ます。

をしています。

Configから色を変更する方法も説明していました。

はは、白に戻してやったぞ。

更にTerminalの使用方法も説明していました。

Tutorialと同じ質問したらErrorになりました。

他のCommandは動いているのでTerminal自体は正常に動いていると思われます。

TutorialのTerminalはPowerShellの表示があります。

PowerShellに変更する事も可能のようです。

これは後で調べます。

以下の質問をしてみました。

こういう質問をしても大丈夫なようです。

下向きの矢印?からPowerShellの選択も出来るみたいです。

何も表示されませんね。

テストしてみます。

ChatGPTによると

だそうです。

試してみます。

おお、正常に動いています。

これでTutorialはお終いです。

一応出来たことにします。

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

来週は以下のManager Viewが出来るようにします。

8. DirectX12の勉強

3D Graphicsを作成するのにOpenGLを使ってるとバカにされるからDirectX12の使い方も勉強しようとしたら、Windows 8ではDirectX12が使用出来なくてずっと勉強を我慢していました。

で新しいPCを買ってやっとDirectX12を勉強できる環境になったら、もうDirectX12を勉強する人がいなくなっちゃってたんです。

のでこれも出来たら何したいというのは無いですね。

ああ、昔MMDを自分で作りたいというのはありました。それを目的にします。

8.1 Lötwig Fusel氏のD3D12 Beginners Tutorial [D3D12Ez]を勉強する

8.1.1 Input Assembler | D3D12 Beginners Tutorial [D3D12Ez] [16]の続きを実装する

先週勉強した内容を実装します。

<Dynamic Binding>

以下の場所に2つのCodeを追加しました。

先週のBlogでは一個ずつ追加していますが、面倒なので両方一辺に追加しています。

そしてIASetVertexBuffers()関数の三番目のArgumentであるvbvを以下の場所に作成しました。

IAのErrorが消えました。

そして今までTO DO Drawがあった位置に以下の実装を追加します。

そして以下の場所にClose、つまりVertexBufferとUploadBufferのRelease()関数を追加しました。

ここで試しに実行してみます。

Tutorialと同じErrorが出るでしょうか?

出てます。

先週勉強した内容は全部実装出来ました。

8.2 「DirectX 12の魔導書」を勉強する

今年中に「Chapter 5 PolygonにTextureを貼り付ける」を終わらせる予定でした。

結構ギリギリですが、この予定は果たせるかもしれません。

8.2.1「5.12.2 Copy先Resourceの作成」を勉強する

勉強してその後で実装してたら間に合いません。

一辺にやって行きます。

Copy先のHeapつまりGPUが読み取るためのHeapを作成します。

教科書のまとめ方は逆なんです。

まず以下に示したCreateCommittedResource()関数をGPU用のHeapを作成するために実装します。

このParameterの2番目に使用してるStructを以下の実装で作成します。

次にParameterの4番目にあるStructを以下の実装で作成します。

最後にResultの値がS_OKになってるか確認します。

以上です。

8.2.2「5.12.2 Copy先Resourceの作成」を実装する

では実装も今してしまいましょう。

実装用のProjectを起動させます。

今あるTexture Buffer用のCreateCommittedResource()関数の実装を確認します。

変更する必要があるのは4番目のParameterだけですね。

直しました。

今度はTexHeapPropの設定を確認します。

今の設定です。

Typeは当然Default用のHeapの設定に変更する必要があります。

CPUPagePropertyとMemoryPoolPreferenceの値も変えていますね。

直しました。

次はResDescの設定です。

SampleDescの設定とかFlagの設定とかしてないですね。

だだしSample Codeは別な箇所で

という設定をしています。

これらを見るとSampleDescの設定とかFlagの設定とかはそのまま残しておいても問題ない気がします。

これで完成とします。

テストします。

Errorになりました。

2回ResDesc[]をDefineしてるって?

Upload用のHeapの作成で使用してました。

宣言消しました。

もう一回テストします。

CreateCommitedResource()関数の結果は

S_OKになっていました。

出来てます。

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

9. まとめと感想

なし

10. 参照(Reference)

[1] Procedural Minds. (2024, August 25). Do you want to remove just one side of your building? | UE 5.4 p4 [Video]. YouTube. https://www.youtube.com/watch?v=ngizgkYM2Ac

[2] Epic Games. (n.d.). Control Rig in Unreal Engine, from https://dev.epicgames.com/documentation/en-us/unreal-engine/control-rig-in-unreal-engine

[3] Epic Games. (n.d.). Control Rig in Blueprints in Unreal Engine. November 4, 2025, from https://dev.epicgames.com/documentation/en-us/unreal-engine/control-rig-in-blueprints-in-unreal-engine

[4] Epic Games. (n.d.). Animating with Control Rig. In Unreal Engine Documentation. Retrieved November 18, 2025, from https://dev.epicgames.com/documentation/en-us/unreal-engine/animating-with-control-rig-in-unreal-engine

[5] Epic Games. (n.d.). Animation Mode. In Unreal Engine 5.7 Documentation (Unreal Editor Mode: Animation Editor Mode). Retrieved November 18, 2025, from https://dev.epicgames.com/documentation/en-us/unreal-engine/animation-editor-mode-in-unreal-engine

[6] Motion Forge CG. (2024, January 15). Unreal Engine – How To Edit Animations Non-Destructively with Control Rig [Video]. YouTube. https://www.youtube.com/watch?v=nfz5H4PN2ys

[7] Tech With Tim. (2025, January 12). Cursor Vibe Coding Tutorial – For COMPLETE Beginners (No Experience Needed) [Video]. YouTube. https://www.youtube.com/watch?v=8AWEPx5cHWQ

[8] Howard, J. (Instructor). (n.d.). Practical Deep Learning for Coders [Video playlist]. YouTube. https://www.youtube.com/playlist?list=PLfYUBJiXbdtSvpQjSnJJ_PmDQB_VyT5iU

[9] Howard, J. (Instructor). (2022, July 21). Lesson 3: Practical Deep Learning for Coders 2022 [Video]. YouTube. https://www.youtube.com/watch?v=hBBOjCiFcuo

[10] Howard, J. (n.d.). How does a neural net really work? Kaggle. Retrieved November 19, 2025, from https://www.kaggle.com/code/jhoward/how-does-a-neural-net-really-work

[11] Nvidia. (n.d.). Isaac Lab Documentation. Retrieved from https://isaac-sim.github.io/IsaacLab/main/index.html

[12] Isaac Lab Project Developers. (n.d.). Environment Design. Retrieved from https://isaac-sim.github.io/IsaacLab/main/source/setup/walkthrough/technical_env_design.html

[13] Nine Between. (2024, June 18). Houdini is HIP – Part 14: Flip Fluids I [Video]. YouTube. https://www.youtube.com/watch?v=DJfkTV3Pivc

[14] Nine Between. (2023, November 29). Houdini is HIP – Part 15: Sparkling Water Project [Video]. YouTube. https://www.youtube.com/watch?v=Xs2tHiVFKF0

[15] N-Educate. (2025, November 20). MASTER Google Antigravity AI Code Editor (Full Tutorial For Beginners) [Video]. YouTube. https://www.youtube.com/watch?v=S5wf4Y2DKkg

[16] Lötwig Fusel. (2023, August 1). Input Assembler | D3D12 Beginners Tutorial [D3D12Ez] [Video]. YouTube. https://www.youtube.com/watch?v=qmT98sWHe6o