
2026-02-01のBlogの「AIについての調査(ComfyUIの勉強)」で議論した通り、勉強内容を変更する事にします。
勉強の内容や目的はそれぞれの章にまとめる事にします。
1.今週の予定
今週からこの順序に従って勉強していきます。
- 映像作成用UE5の勉強
- AIの勉強
- Nvidia Omniverseの勉強
- AIの勉強2(日本語字幕AIを作成する)
- Claudeの勉強
- Nvidia Omniverseの勉強2(強化学習の勉強)
- DirectX12の勉強
それぞれの勉強の最初にその勉強をする目的を一寸だけ書いておきます。
2. 映像作成用UE5の勉強
UE5の勉強で、Gameではなく、CGIを作成するために必要な勉強をここでします。
今、Mainで勉強してるのは、
- PCGを使用した建物の作成
- Control Rigの勉強
の2つです。
2.1 PCGを使用した神社の作成
PCGで建物を作成する方法を勉強してるので、その応用としてPCGで神社を作成する事にしました。
最終的にはUEFNのMap内で神社を作成して、 誰でも参拝出来るようにするつもりです。
2.1.1 前回の復習
PCGにおけるLoopの実装を全部、確認しました。
確認した全てのLoopは、以下に示したPCG Point Dataを要素にしてLoopしていました。

C++で言う所の、
for (int i = 0; i< PCG_Point_Data.size(); ++i)
と同じです。
だだしFloor/CeilingにあるLoopで以下の実装がありました。

ここのAttribute PartitionノードはMeshが選択されています。
Meshを選択しても意味が無い気がします。
先週のBlogでも

と書いて終わっていました。
2.1.2 Floor/CeilingにあるLoopでMeshを選択してるAttribute Partitionノードの実装が正しいのかを確認する
今週はこれをやる事にします。
まずこの実装をどこでやったのかが分かりません。
Floor/Ceilingで検索を掛けると以下のBlogの日付が出て来ました。

最初の5月3日のBlogは先週のBlogなので無視して次のBlogから見ていきます。
これはRoofの実装をしています。
そしてRoofの以下の部分の実装で、Floor/CeilingにあるあのLoopの実装をそのままCopyして使用していました。

今、Roofは表示してないので、この部分の実装はPathが外れていますが、ここでは繋げても別にWarningは表示されません。
Isolate Corners With PCG To Create Pillars and Roofs | UE 5.4 P3 [1]の<16:00 - Override Floor Material>でこの実装をしていました。
この動画を見て確認します。
Roofの実装で、Floor/Ceilingにある以下の実装をCopyしていました。

うーん。
これを見るとAttribute Partitionノードの値はMeshになっていますね。
つまりMeshで合ってるって事です。
しかしこの実装でWarningが出てるんだから、問題があるのは確かです。それがAttribute PartitionノードがMeshに設定されているからでは無いという事だけは分かった。
というのが正確なもの良いです。
段々思い出してきました。
ここは、一回実装した後に更に後で直したんです。
となると以下のPCG Close Open Back Floorsノードの実装をどこでしたのかを探した方が

この実装をやったBlogを見つける事が出来るでしょう。
今度はそれで探します。
見つけました。
PCG Close Open Back Floorsノードは、2025-03-23のBlogで勉強して2025-04-06のBlogで実装しています。
それぞれのBlogを読んでみます。
Here's How to Adjust Your Building Based on the Asset Size | UE 5.4 P2 [2]の<21:14 - Floor / Ceiling from Data Assets>で勉強してるみたいです。
PCG_Close_Open_Back_Floorsノードと書いていました。
更に

と書いていました。
という事は、このNodeは裏側が無いMeshを表側を2重で向きを変えて表示する事で、どちらから見ても床のMeshが見るようようなMeshを生成するためのNodeです。
ここで変更したのは基本的には以下のScale MinとScale Maxの値をY軸からZ軸に変更しただけです。

ううん。
時間切れです。
今週はここまです。
来週、2025-03-23のBlogと2025-04-06のBlogを更に読み込んで、何をやってるのかを調べる事にします。
2.1.3 AIで生成したTextureを使用してMaterialを作成してみる
唐突に思いついたんですが、結構出来そうです。
これを試してみます。
そもそもですが、思いつきでGeminiに以下のような

コンクリートのTextureを生成してもらったらかなり良い感じだったんです。
そこで、Seamlessのも作成してもらいました。

本当にこれがSeamlessなのかは分かりませんが、最も質の高いTextureと比較しても遜色ない感じがします。
更にNormal Mapも作成してもらいました。

これY軸がどっち向きか分かりません。
Geminiに確認したら
UE5 (DirectX形式)はY- (Negative)で、Blender (OpenGL形式)はY+ (Positive)となってるそうです。
肝心のこれはどっちか分からないので反対だった場合は

で修正して、と回答していました。
これをもっとしっかり作成して実際に使用したらどうなるかを確認します。
まずMaterial用のTextureは以下のように作成されていました。

ARDだけが何を指定してるのか不明です。
Ambient Occlusion、Roughness、そしてDisplacementでしょうか?
そうでした。
実際にARDを開くとRoughnessしか指定していませんでした。
TextureのSizeは

4096 pixel x 4096 pixelのようです。
ではGeminiに生成してもらいます。
まずSeamlessなコンクリのImageを作成します。
サイズは4096x4096で作成します。

おお、良い感じですね。
Propertyで確認したら

1024 x 1024 Pixelになってる。4Kが欲しいのに。
これは無料版だからかもしれませんね。
だったら先にそう言ってほしいです。
今度はARD用のImageを生成します。
以下の様に指示しました。

結果です。

緑色してるって事は指示通り出来たって事でしょう。詳細はUE5で確認します。
最後のNormal Mapです。
以下の指示をしました。

結果です。

これもこのImageを見ただけでは出来てるか分かりません。
これらのImageをUE5にMigrateして確認します。
以下のFolderを作成してこの中でテストします。

Importしました。

Importしましたが正しくImport出来てるか確認します。
まずAlbetoです。

あ、正しいSpellはAlbedoでした。
直します。
Compression Settingはあってますね。
次はARDです。

あってますね。
しかしRとBにもしっかりImageが入っていました。
RのImageです。

BのImageです。

そしてBのImageは以下の様になっていました。

うーん。
これだけ見ただけでは何とも言えません。
Normal Mapです。

おお、しっかりUE5でもNormal Mapとして認識されていました。
ではこのTextureを使用してMaterialを作成してみます。
以下のMaterial Instanceを作成しました。

ここに実装します。

結果です。

ああ、AIで生成した事を示す星印が!
Meshに貼り付けたらこんな感じです。

ほええ。
凄いのか駄目なのかよく分からないです。
参道の石道に使用してみました。

全然駄目じゃん。
微調整したら変わるかもしれません。

Tilingの原因が分かりました。

Roughnessの値が強すぎます。
これもAIが勘違いした結果Rの値だけ異常に高くしたと思われます。
設定を以下の様に変更してRoughnessの影響を小さくしました。

結果です。

今度は床がなんかテカテカしてます。
Textureが何も表示されていません。
Offsetの値を変更したら

一寸だけ何か表示されました。

これでは、Albedoを使用してる意味がありません。
調べたらAlbedoのTextureが効いていません。

これはAIの作成したTextureの問題じゃなくてMaterial Instanceの方の問題です。
何故、効かないのか不明です。
今週はここまでにします。
続きは来週以降やります。
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 前回の復習
Create Procedural Interiors With Full Room Separation | UE 5.4 P5 [3]の<26:29 - Select Random Doors in Rooms and Assign Mesh>を実装しました。
以下に示した様なDifferenceノードを使用した実装を行う事で

以下の様に壁と重なった部分のPointを消しました。

Differenceノードには以下の2つのParameterがありますが、

GeminiによるこのParameterの機能は、
間違っている気がします。
ので実験して確かめようとしたんですが、
PointのDensityの値を変化させるために

を使用すると、
今まで以下のようなPointの配置だったのが

以下の様になってしまいました。

このせいで実験を途中で中止するはめになり、
結果、Differenceノードの2つのParameterの機能はよく分からないで終わってしまいました。
2.2.2 Create Procedural Interiors With Full Room Separation | UE 5.4 P5 [3]の<26:29 - Select Random Doors in Rooms and Assign Mesh>の実装の続きをやる
まだ勉強した分の実装が終わって無いのでそれを終わらせます。
2026-04-12のBlogに勉強内容がまとめられていました。
この勉強内容を実装していきます。
壁際のInner Wallを示すPointも消えているのでこれを追加します。
先程のExterior Wallsノードの後にExtents Modifierノードを追加して

ExtentsのXの値を0.2に変更します。

更にModeをMultiplyに変更します。
結果です。

壁際にPointが追加されました。
出来ましたね。
それは兎も角、一か所Pointが重なってるところがあります。

これはどうするんでしょうか?
ここからDoorを追加します。
一部屋に最低一個のDoorが必要になります。そのための実装方法をここで説明するそうです。
まずPCG_WallDoorSplitを作成します。

作成しました。
以下の様にLoopで配置して

PCG Wall Door Splitノードを開きます。
InputノードのInputの設定を以下の様に変更しました。

Outputノードの設定を以下の様に変更しました。

そしてAttribute Noiseノードを追加します。

おおAttribute Noiseノードだ。
その後に、Sort Attributesノードも追加しました。
Sort AttributesノードのParameterは以下の様に変更しました。

Attribute Filterノードを追加しました。

Attribute Filterノードは以下のように設定を変更しました。

そして以下の様にもう一個、Attribute Noiseノードを追加します。

ここで、2026-04-12のBlogでは以下のような実装に変更してるんですが、

このBlogを読む限り、変更してるのは、Output Targetの値とNoise MinとNoise Maxだけです。
Input Sourceは変更していません。
つまりDuplicateする前から、Input Sourceの値は$Densityに変更されているという事です。
しかし私のAttribute NoiseノードのInput Sourceの値は

Defaultの@Lastのままです。
うーん。
動画を見て確認します。
29分38秒当たりでこの部分を実装していました。

この部分のAttribute NoiseですがDuplicateして作成しています。
そしてこのAttribute Noiseノードの設定を見ると

最初から$Densityになっています。
しかし以下の様にも述べています。

このNodeは前のNodeとは違い$Densityを受け取ります。
としっかり口では述べてるんです。
どっちかが間違っています。
取りあえずは、こっちのNodeだけInput Sourceの値を$Densityに変更して、結果を見る事にします。

更に、Noise MinとNoise Maxの値を

に変更しました。
2026-04-12のBlogには以下の様に書いてありました。

うーん。
これは、ここで生成されたNoiseの値からDoorの数を決めるという意味からもしれません。つまりどんなに多くても2、更にどんなに少なくても1はDoorが生成されるという事です。
そしてこの後にGet Attribute From Point Indexノードを追加しました。

ここで2026-04-12のBlogのCreate Procedural Interiors With Full Room Separation | UE 5.4 P5 [3]の勉強は終わっていました。
のでこの実装もここで終わりにします。
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 [4]を勉強する必要がある事が判明しました。
のでControl Rig [4]を勉強する事にしました。
そして2025-12-21のBlogでまとめましたが、別なLayerを使用する事で、Control Rigを使用してLevel Sequence上のAnimationを編集出来る事が判明しました。
ので、後はDragonにControl Rigを追加出来れば、Dragonの爪が地面にめり込んでしまう問題を直す事が出来る事が判明しました。
<追加>
2026-03-09のBlogで、判明したのですが、実は地面にめり込んでいたのはDragonの爪じゃなくて、Dragonの足でした。

しかも使用したDragonはSand Dragonではなく、Quadraped CreaturesにあるMountain Dragonでした。
つまり問題は
DragonをLandscape上の凸凹な地面の上をLevel Sequenceを使用してAnimationで歩かせると足が地面に潜りこんでしまう。
というのが正しかったんです。
2.3.1 前回の復習
先週は Getting Started with Control Rig in Unreal Engine 5 – Basic IK Explained [5]のやり方(Pole Vectorの設定方法)に従ってBasic IKを実際に実装してみました。
正し実装したのは、腕の部分です。

Pole Vectorは以下の様に設定しました。

このTutorialのやり方では、Lower ArmのControlの位置をPole Vectorの位置として使用しています。
この方法だとLower ArmのControlの位置は全く動きません。
ので、あまり綺麗な結果にならないかと思っていましたが、実際に試したら肘は、かなり自然な位置に配置されるようになりました。
そして今週以降やる事に以下の3つをまとめていました。

今週はこれをやっていきます。
2.3.2 普通のControlの実装と組み合わせた場合どうなるのかを調べる
これは2つの場合があると思います。一つ目はHandの先のBoneと繋がったControlです。
これはもろにBasic IKの影響を受けるはずです。
二つ目はUpper ArmのBoneのさらに上にあるBoneと繋がったControlです。
これは全く影響受けないと思うんですがどうでしょうか?
<Upper ArmのBoneのさらに上にあるBoneと繋がったControl>
影響を受けないで有ると思われるこっちから試していきます。
以下の様に鎖骨のControlを作成しました。

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

鎖骨のControlを動かすと肩が動きます。

この後に、先週作成したBasic IKを実装しました。

これでどうなるか試してみます。
鎖骨のControlを動かして、その後でHandのIKを移動させてみました。

肩が持ち上がった状態で腕を上げています。
非常にSmoothです。
なんか普通に出来ました。
次は指の位置を指定します。
Geminiによると以下の様に指定しろと言っています。

これを参考にして実装する事にします。
指のControlを指定する前に、一つ重要な事に気が付きました。
今までIK Controlで移動させると手は以下の様に捻じれてしまっていたんですが、

これは、指のControlを指定してないからこうなっていたのではなくて、
手のIK ControlのRotationを変更するだけで、
以下の様に直せます。

ではそれを踏まえて指のFKのControlを追加します。
以下の様にMiddle FingerのControlを作成し、

Hand Controlの子にしました。

こんな感じになっています。
Basic IKの後に、このMiddle FingerのControlのFKを設定します。

テストします。

普通に動きました。
うーん。
普通に出来ましたね。
この後、色々、Geminiに質問してこのようなBasic IKとFKの実装を混合した場合のBackward Solveの実装方法について聞いたんですが、要領を得た回答を得る事は出来ませんでした。
ので、Backward Solvingは今までのFKで実装してみます。
これで手だけですが、実際にLevel SequenceでIK Controlを使用して動きを変更できるのかTest出来ます。
来週は、これをやる事にします。
今週のControl Rigの勉強はここまでです。
3. AIの勉強
AIの勉強の目的ですが、
生成AIが凄いTrendになってるので、最低限の基礎は知っておくべきと思いこの勉強を始めたんでした。
のでこれを勉強してどうしたいというのは無いです。
ここではPractical Deep Learning for Coders 2022 [6]の勉強をしています。Antigravityを使用したVibe Codingの勉強はしばらくお休みします。
3.1 前回の復習
Lesson 7: Practical Deep Learning for Coders 2022 [6]の勉強の続きをしています。
<22:55 - Ensembling>まで勉強しました。
先週の勉強の途中で、今まで無いと思われていた


が
https://www.kaggle.com/jhoward/code
にある事が判明しました。
3.2 Lesson 7: Practical Deep Learning for Coders 2022 [6]の続きを勉強する
Road to the Topは別に勉強する事にしました。
今週は、Lesson 7: Practical Deep Learning for Coders 2022 [6]をどんどん勉強する事にします。
<37:51 - Multi-target models>
またNotebookLMに要約してもらいます。

複数の異なる項目を同時に予測するModelの構築方法を勉強するのか。

成程、一つの画像から複数の予測をするのがMulti-Targetなのか。
納得。

Data Blockを作成してそれを元にAIとやり取りするのね。

これはLoss Functionを個別で計算するだけでなく、全部や種類毎にまとめて全体の損失も計算するって事でしょうか?
更に評価指標も同様にやるのか。これをやるMeritが何かあるんでしょうか?

これがLoss Functionを全部や種類毎にまとめて計算するMeritって事ですね。

Multi-Target Modelの方が予測の精度が上がるってのが最も大きな理由のようです。
Tutorialの動画も見ます。
Multi-target: Road to the Top, Part 4 [8]の内容を紹介していました。
以下の様に10の病気と10の品種の中から最も確率が高いものを表示しています。

細かい実装についても説明していますが、それはMulti-target: Road to the Top, Part 4 [8]を勉強する時にやります。
Multi-Target Modelが今でも有効なのかを確認するためにGeminiに以下の質問をしました。

回答です。

これは流石に駄目でしょう。
どうしてLesson 7: Practical Deep Learning for Coders 2022 [6]のURLを渡してるのに、筑波大学の教授のTutorialだと解釈するんですか?
最近、Geminiはかなり馬鹿になっています。
ChatGPTに同じ質問をしました。

だそうです。
そして

YouTubeの動画を見ることが出来ないChatGPTなのに、しっかりとJemery HowardのTutorialで有る事も認識していました。
ChatGPTの結論は以下の様になっていました。

<41:24 - What does `F.cross_entropy` do>

ここはF.cross_entropyの解説をしてるようです。

F.cross_entropyには2つ関数があるみたいですね。

Log calculationとNegative Sumか。
よく知らない概念ですね。
今回はこんなのもあるよ。位の理解に留めておきます。

Multi-Target Model の場合は、Loss Functionを手動で計算する必要があるのか。

F.cross_entropyは
そのModelの予測がどれだけ間違っているのかを数値化する関数
これだけ覚えておきます。
動画を見ます。

Excelを使って実際の計算方法を示していました。
これ見たら一発でどんな計算をするのか理解出来ました。
F.cross_entropyの2つ関数の説明とか全くしてなかったです。
<45:43 - When do you use softmax and when not to?>

そして以下の様にSoftmaxを使用する時と使用すべきでない時を分けています。

正解が複数あったり、正解が無い問題には不向きなのね。
動画を見ます。
ヒグマ、テディベア、そしてクロクマを選択するModelに猫を見せた場合を説明していました。
<46:15 - Cross_entropy loss>

Cross Entropy Lossについて勉強するのか。

先に結論を示しておきます。
Cross Entropy LossとはModelの予測が正解からどれだけ離れているのかを対数を用いて数値化する仕組みです。

Deep Learningの勉強では、最初と最後のLayer、そしてこのLoss Functionの仕組みを理解する事が重要、特に実務において重要なのか。
理解しました。
更に以下の事を説明しています。

またPyTorchの話が出てます。
これ本当に動画で説明するんですかね。
では動画を見ます。

Cross Entropy Lossの計算方法をExcelで説明していました。
結構分かり易いです。
F(x) = log(x)は以下の様になっています。

100%に近づくほど、値は0に近くなります。
これで、先程のヒグマ、テディベア、そしてクロクマを選択するModelに猫を見せた場合は、非常に大きなNegativeな値として返ってくることになります。
<49:53 - How to calculate binary-cross-entropy>

これ前の節の動画でもう見てしまいました。
計算方法は既に理解してます。

この計算も先程のCross_entropy lossと同じ効果しかないじゃん。
敢えてこっちを計算するMeritが知りたかったんですが。それは教えてないって事?
NotebookLMに質問すると

と回答しました。
いや、それはSoftmaxと比較した場合で、Cross_entropy lossだってここに書かれている事出来ると思うんですけど。
一応、Yes、Noの回答をする場合は、binary-cross-entropyを使用すると理解しておきます。
動画を見ます。

今回はPyTorchの関数がしっかり出て来ました。
集中力がここで切れました。
今週はここまでにしておきます。
4. Nvidia Omniverseの勉強
Robotic AIの仮想空間におけるTrainingのための環境設定こそがこれからの3D Graphicsの専門家が生きる場所であると思っています。
のでその仮想空間でRobotic AIがどんなTrainingを行っているかをまず勉強する事にしました。
色々調べると、その部分はNvidiaのOmniverseの中のIsaac Simが担当している事が判明しました。
のでその辺りを勉強します。
2025年9月からIsaac Lab Documentation [9]の勉強に切り替えました。
4.1 前回の復習
Training the Jetbot: Ground Truth [10]の復習の続きをやっていました。
<2025-11-30のBlog>の内容を復習していました。
ここで一番、難しくて大切なTensorを使用した環境の設定方法はまだ出て来ませんでした。
<2025-12-14のBlog>の勉強を少しやったら
後半で行列の定義を散々説明していました。
ここで、GPUの行列のまとめ方を勉強しています。
のでこれはしっかり勉強する必要があると感じ、来週、つまり今週勉強する事にしました。
4.2 Training the Jetbot: Ground Truth [10]の復習の続きをやる
では、2025-12-14のBlogの内容を復習していきます。


だそうです。
そして以下の図が紹介されています。

この図が何を説明してるのか見当もつかないけど、分かる所もある。
と言って
分かるところを説明しています。
以下に、2025-12-14のBlogで分かっていたところをまとめます。
- WはWorld Coordinateの原点
- BはRobotのLocal Coordinate
- Forwardと書かれた青い矢印はRobotの進む方向
- Commandと書かれた赤い矢印はAIがRobotに進ませたい方向
やや曖昧ですが大体こんな意味だと思う箇所
- YawはWorld CoordinateのX軸を0としてCounterclockwiseに回転する。と定義してる事を示してるだけのような気がします
- data.root_pos_w:World CoordinateにおけるRobotの座標を計算する関数ではないか?
最後に全然意味が分からない箇所
- data.root_com_vel_v[:,:,3]
- forward x commandとz^・(forward x command)
となっていました。
まったく分からないと書いてあるところから調べ直します。
robot.data.root_com_vel_v[:,:,3]について調べます。
最近はGeminiのおバカになってしまったのでClaudeに質問する事にしました。

robot.data.root_com_vel_v[:,:,3]じゃなくて
robot.data.root_com_vel_w[:, :3]でした。
以下の意味があるそうです。

これで理解出来ました。
robot.data.root_com_vel_w[:, :3]は
全ての環境のRobotの重心のWorld frameにおける速度を、取り出せ
と言う意味になります。
さらに
[:, :3]
の意味ですが、
これは元々、
Start:Stop
と言う意味だそうです。
そして最初、つまりIndexが0、と最後の場合は指定を省略出来るそうです。
つまり、最初から最後まで全部、取って来て。
という命令を出したい場合は
:
だけで良くなります。
そして
最初からIndexの三番目まで取って来て
と言う場合は、図のように
:3
と書く事も出来ます。
次に
forward x command
についてです。
これはそもそも間違っていて本当は
forward ・ command
です。ForwardとCommandの内積を計算しています。
しかもご丁寧にForwardsとして全ての環境のRobotのForwardの値を計算してる事も示唆しています。
で
forward ・ command
を計算すると何が分かるのかという事ですが、
まず内積を計算する事で

が得られます。
そしてその値は

の意味があります。
つまり

が分かるんです。
そしてその値は、

のようにそのままRewardの値として使用出来ます。
更にClaudeは以下の説明も追加でしてくれました。

これが

の意味なのか。
確かに赤い矢印(Command)と同じ向きから90度まで変化したところまで青くなっていました。
今度は
z^・(forward x command)
についてです。
これもClaudeに質問します。
凄い。
一瞬で答えてくれました。
まず、この式の目的ですが、
「ロボットがどちらに回転すべきか」
を示してくれます。
まず以下の計算です。

これは説明してもらえれば理解出来ます。
そしてこの計算結果は以下の意味も持ちます。

これが大事なんだそうです。
これも以下の図が結果を表していました。

青がプラス、赤がマイナスを指しています。
この図のForwardは青の部分にあるので、計算結果はPlusになり、反時計回りに回転する必要があります。
凄い。
今まで分からなかった部分が全部理解出来ました。
Claude恐るべしです。
この続きを2025-12-14のBlogで読むと

単に第2象限の結果と題4象限の結果が同じになるので、これを考慮しないとCommandの矢印が逆を向いてします場合の話に移っています。
つまりそれ以上の内容はこの図から読み取る必要は無かったんです。
この図はどっかの論文から持ってきてそのまま載せたんでしょう。
この続きは、来週にしますか。
今週はここまでにします。
5. AIの勉強2(日本語字幕AIを作成する)
YouTubeなどを見てると日本語の字幕をつける動画が沢山あります。しかしその字幕の漢字が間違っています。
これは2パターンあって、字幕は合ってるのに、間違った読み方をする場合と、音声はあってるのに字幕の漢字が間違ってる場合です。
見ていて、もしくは聞いていて非常にイライラします。
元のAIに一寸Fine Turningすれば直ぐに直ると思うんですがどうなんですか?
簡単に直せるなら、Projectとして自分でやってみようかなと思っています。
(この勉強は2週間に一回だけ行います。)
5.1 前回の復習
とうとうGemini CLIを使用して、文字化けしたFileを読めるようにしました。

PointはGeminiと打ってTerminalから上記のGemini CLIを別に起動させる事でした。
これをすると今までは、ErrorになっていたCommandもそのまま実行できるようになりました。
5.2 生成されたFileを読んでみる
まだ生成されたFileを確認していません。
今週は生成されたFileを確認します。
修正された文章の下に、主要な修正箇所がありました。

英語から英語に直してるのは、どこが間違っていたんでしょうね。
同じに見えます。

おお、凄い。
こういうのを直してほしかったんです。
文章も見てみます。

あ、そうかTextの修正を頼んだので、字幕の時間が表示されてないんだ。
では手動で比較します。
2026-03-01のBlogで間違った字幕をかなり抜き出しているので、それと比較してどう変化したのかを一寸だけ確認します。

痛烈が通列になっています。
修正した文章です。

おお、直っています。
![]()
この部分は訳が意味をなしてないから全部カットしたと書いてありました。


うーん。
惜しい。新田株式会社がアタラ合同会社になっています。


漢字は直ってるみたいです。


これは完璧に直していました。

これは読みにくい。
やっぱり全部一回やり直します。
5.3 来週以降の予定
まずTest3.tsvの字幕を直します。

今回はTextを直したんですが、これは字幕として動画に貼れないので、同時に比較する事は出来ません。
それをVideoに張り付けて、前の字幕と比較します。
次回からこれをやります。
6. Claudeの勉強
Houdiniの勉強はしばらくお休みします。そしてClaudeの勉強をします。
以下の順番で勉強しろとClaudeに言われましたが、

流石に101は簡単すぎるので、Claudeの APIから勉強する事にしました。
そしたらAPI FundamentalというTutorialは無くて、代わりに以下のTutorialを勧められました。

のでしばらくこのTutorialを勉強する事にします。
<追記>
このままだとClaude Codeの勉強を始めるまでに一年位かかってしまいます。
Claudeにその事を質問したら

との回答を得ました。
ので今回から

https://anthropic.skilljar.com/claude-code-in-action
を先に勉強する事にします。Claude Code in Action [11]を勉強します。
6.1 Claude Code in Action [11]を勉強する
やる気が起きません。
実は今週からOpenAI Codexの勉強に変更しようと思ったら、Space XAIと新たに契約して一般UserへのServiceが良くなる気配が出て来ました。
どうしよう。
やっぱりClaude Codeの方を契約しようかな。
とりあえずHooks and the SDKのTutorialを勉強します。
6.1.1 <Introducing hooks>を勉強する
まずは文章を読みます。

Hookについて勉強するのか。
HookはClaudeがToolを使用する前や後にCommandを実行する機能のようです。
この機能は以下の場合に非常に役に立つそうです。
- File編集後にCode Formatterを実行
- Fileが変更されたときにTestを実行
- 特定のFileへのAccessをBlock
自動化されたワークフローの実装に役に立つって事のようです。
<How Hooks Work>

通常の操作では、Claudeに何かを尋ねると、
- あなたのクエリはツールの定義とともにClaudeモデルに送信されます。
- Claudeはフォーマットされたレスポンスを返すことでツールを使用することを決定する場合があり、
- その後Claude Codeがそのツールを実行して結果を返します。
と言う手順で実行されますが、

Hookはこの操作の間に実行されるそうです。
突然、Windowを更新しろ。と以下の指令が来たんですが。

一時間も掛かる更新なんか今やってられません。更新する日付を日曜日にずらしました。日曜日になったらまたずらして後に更新する事にします。
いつもの更新は、K○○○を更新します。と出ますがこれを何も出ません。
Windows11 version 25H2に更新するんでしょうか?
よく分かりません。
以下の図が載っていました。

この例では実行された後で、Hookが発動していますね。

Toolが実行される前とされた後で、Hookが実行されるという事です。
<Hook Configuration>

はい。
一人でしかCodeを書かない私は下2つは同じ意味になってしまいますね。
Fileはこんな感じでなってるそうです。

Toolが呼ばれる前に実行するHookはPreToolUse、Toolが呼ばれた後で実行するHookはPostToolUseになっていますね。
<PreToolUse Hooks>

Matcherって何?と思ったら

の事でした。

成程。こんな事をPreToolUseのHookingはするのか。
これならFileを全部消します。
とToolが計画しても事前にその実行を阻止出来る訳だ。
<PostToolUse Hooks>

成程、Toolの実行が阻止出来ない代わりに
- 後続の操作を実行する(例:編集したばかりのファイルをフォーマットするなど)
- ツールの使用についてClaudeに追加のフィードバックを提供する
などが出来るようになるのか。
理解しました。
<Practical Applications>

はい。理解しました。
<動画も見ます>
見ました。
特に追加する情報は無かったです。
7. Nvidia Omniverseの勉強2(強化学習の勉強)
Nvidia Omniverseの勉強で、Isaac Lab Documentation [9]の勉強をしていますが、
これってIsaac Labの使用方法の勉強が主で、
Robotが自動歩行するためにどんな強化学習をしなければならないのかは別に勉強しないといけないのではないのか?
との疑問が出て来ました。
で先週は強化学習の教科書について調査しました。
でその教科書を勉強するための時間をここに作りました。
7.1 前回の復習
Secrets of Walking Robot (NVIDIA Isaac Lab and Isaac Lab Arena) [11]の<09:31 Simulation Main Files>から<15:19 RL Policy>までを勉強しました。
7.2 Secrets of Walking Robot (NVIDIA Isaac Lab and Isaac Lab Arena) [11]の続きを勉強する
<17:47 RL Improvements>
Isaac LabのModelの精度を上げる為に主に2つの事をしたそうです。
一つ目は、色々な場所のRandomizationを増加させたそうです。
以下はその一例です。

2つ目はRewardだそうです。

<18:55 "Slow" Policy>
Motionに関しては実際のActuatorの動きがControlの指令に追いつかない場合が、起きる可能性は常にあるので、なるだけSlowで動いた方が良い様に指定したそうです。

の場合は、安定しません。

の場合は、安定して歩けます。
<21:50 Step Height>
Robotの足は実際よりも高く上げる様に学習させる必要があったそうです。
もし足を5cm以下にしか上げない場合はPenaltyを追加したそうです。
<22:35 Foot Impact Reduction>
するとRobotは凄い勢いで地面を叩くように足を下すようになりました。
ので足と地面のImpactを減らすためのRewardを追加したそうです。具体的には足を下す時のVelocityを一定以下にするように指定したそうです。
<23:25 Feet to Feet Distance>
これで足をソフトに降ろすようになったんですが、今度は両足が重なる様になってしまいました。
これは以下の実装の

Xの値を図のようにセットする事で直したそうです。
<24:41 Symmetry>
そしたら今度は、左と右の動きが非対称になって来たそうです。
のでRewardにSymmetryも追加したそうです。
<25:14 Not Easy to Spot a Problem>
これ以外にも原因が特定出来ない問題も沢山発生したそうです。
皆さんも頑張ってくださいという励ましの言葉も言っていました。
<26:12 Isaac Lab Arena>
Isaac Lab Arenaについての解説です。
Isaac Lab Arenaはここの説明によると、Isaac Labで作成したModelを査定するためのSoftです。
まだ開発中で、すぐに実装が大きく変化するそうです。
<27:14 Conclusions>
まとめです。
今の時点でも5~10分歩かせると一回は転ぶそうです。
<28:27 More Examples of Walking>
最後に実機で歩いてるデモを公開していました。

かなりSmoothに歩いていました。
それでも一回転んでいました。
以上です。
8. DirectX12の勉強
3D Graphicsを作成するのにOpenGLを使ってるとバカにされるからDirectX12の使い方も勉強しようとしたら、Windows 8ではDirectX12が使用出来なくてずっと勉強を我慢していました。
で新しいPCを買ってやっとDirectX12を勉強できる環境になったら、もうDirectX12を勉強する人がいなくなっちゃってたんです。
のでこれも出来たら何したいというのは無いですね。
ああ、昔MMDを自分で作りたいというのはありました。それを目的にします。
8.1 「DirectX 12の魔導書」を勉強する
8.1.1 前回の復習
「6.2.7 D3D12_SHADER_VISIBILLITY_ALL指定」を勉強してその後で実装していました。
これで、「6.2 定数BufferとShaderからの利用」の勉強は終わりました。
しかし問題が一つあります。
それはこの時点で、Projectを実行すると画像がしっかりと表示されるとありますが、私のProjectでは
以下のmapMatrixの値であるmatrixをまだ指定していません。
![]()
のでこの部分の実装がErrorになっています。
今週はこの問題について調べます。
8.1.2 変数matrixの値について調査する
調べると2026-01-25のBlogで

と述べていて、教科書の「6.2.1 定数Bufferの作成」の内容を解説していました。
教科書のこの部分を読み直すと、教科書にも同じ事が書かれていました。
2026-03-09のBlogで実装しています。
実装していますが、何故か
XMMATRIX matrix = XMMATRIXIdentity()
だけ抜けて実装しています。
確認します。

丁度その部分だけ抜けています。
追加します。

このCodeの部分にCursorをセットしただけで、このCodeが現れました。
恐ろしい。
Tabを押してCodeを追加しました。
これで
Errorが消えました。
8.1.3 実行してみる
ではProjectを実行してみます。

普通にTextureの画像が表示されました。
うーん。出来てるの?
まあいいや、一応出来てるとして先に進みます。
ただし今週はWindowsのUpdateをしないといけないので、ここでお終いにします。
どうもVersionを25H2にするUpdateで下手したら1時間ぐらいかかるそうです。そしてNetで調べたら結構失敗してる人もいるようなので余裕をもってやる事にします。
8.1.4 GitHubのRepositoryにPushする
面倒ですがやらないといつまで経ってもやり方を覚えないので、今週もこれだけはやっておきます。

の様に書いてCommitしPushしました。
GitHubのBrowserを開いてChapter6の方のMain.cppを確認したら

変更したCodeがしっかり追加されていました。
当然、Mainの方のBranchのmain.cppのCodeはそのままで保存されていました。
出来てます。
8.2 Lötwig Fusel氏のD3D12 Beginners Tutorial [D3D12Ez]を勉強する
8.2.1 前回の復習
Root Signature & Rasterizer | D3D12 Beginners Tutorial [D3D12Ez][12]の続きを勉強しています。
HLSL側からRoot Signatureを実装する方法を勉強したんですが、結局C++側に
以下のCodeを書き込んでいて

本当にこの方法、C++側からRoot Signatureを実装する方法よりの早いのか疑問に思っています。
Geminiの回答によると
速いとは答えませんでした。更に一般的であるかどうかの質問にも、微妙にこのやり方を擁護しながらも、C++に書く方が一般的と答えていました。
8.2.2 Root Signature & Rasterizer | D3D12 Beginners Tutorial [D3D12Ez][12]の続きを実装します
Root Signature用のFileを新しく作成します。

うーん。
どれ選択すれば良いのか分からない。
Tutorial見て確認します。
11:08のところで以下のFileを選択していました。

そして

と名付けています。

何でhlsliじゃないの?
Sample Codeで確認しましたが、こっちも

hlslになっています。
よく動画を見たらiを消していました。
はあ。

これで有ってるはずです。
作成します。

作成されました。
このFileのPropertyを開いてShader Modelを最新版に変更しました。

さらにEntry PointをROOTSIGに変更しました。
![]()
Sample Codeの設定も確認しましたが以下の様になっていました。

RootSignature.hlslを開いて以下の様に実装しました。

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

先週のBlogには以下の様に書いていましたが

そもそも
ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT
をC++側のどこで使用したのか覚えていません。
確認するのすら面倒くさい。
Commentを作成して、どのRangeにどのDataをBindしたのかを必ず記録するようにします。

作成しました。
先週のBlogによると、TutorialではここでCompileしてErrorになったそうです。
実行じゃなくてCompileなの?
動画で確認します。
大変です。
確認したら
先週のBlogは以下の部分をまとめるのを忘れている事が判明しました。
Pixel Shaderに以下の実装を追加しています。

更に
Vertex Shaderに以下の実装を追加していました。

まずこれを実装します。


しました。
肝心のCompileの件ですが、ReCompileしたと言っていますが、どうやってしたのかは説明していません。
多分CompileをCtrl+F7で選択したんでしょう。
そしてErrorになっています。
うーん。よく分からないのでここは先に正解を実装してしまいます。
RootSignature.hlslのShader Typeの値を以下の様にします。

これでCompileするはずです。
TutorialではどうやってRecompileしてるのか不明なので、ここはRecompileをCompileしてみました。

出来ました。
ので多分大丈夫でしょう。
次はMain.cpp側の実装です。
Shaderに以下の実装を追加しました。

今度はRoot SignatureのObjectを以下の方法で生成します。

更にPipeline Stateでもroot Signatureを追加します。

ここまで実装した状態で、
以下のところにBreaking Pointを作成して

実行します。
Tutorialではここで、
実際にm_pointerが値をもってるのが確認出来ます。
と述べています。
しかし私の場合は

0のままです。
まあいいや。
これは前もそうなっていました。
後でまとめて直します。
今週はここまでです。
9. まとめと感想
なし
10. 参照(Reference)
[1] Procedural Minds. (2024, August 18). Isolate corners with PCG to create pillars and roofs | UE 5.4 p3 [Video]. YouTube. https://www.youtube.com/watch?v=x0J_i56zaOw
[2] Procedural Minds. (2024, August 11). Here’s how to adjust your building based on the asset size | UE 5.4 p2 [Video]. YouTube. https://www.youtube.com/watch?v=xVMz-LW1SJw
[3] Procedural Minds. (2024, July 28). Get started with PCG 5.4 by creating a full building | UE 5.4 p1 [Video]. YouTube. https://www.youtube.com/watch?v=oYNA24tcYc0
[4] Epic Games. (n.d.). Control Rig in Unreal Engine, from https://dev.epicgames.com/documentation/en-us/unreal-engine/control-rig-in-unreal-engine
[5] Ryan Laley. (2025, September 9). Getting Started with Control Rig in Unreal Engine 5 – Basic IK Explained [Video]. YouTube. https://www.youtube.com/watch?v=s5yJlJGjjDE
[6] Howard, J. (Instructor). (n.d.). Practical Deep Learning for Coders [Video playlist]. YouTube. https://www.youtube.com/playlist?list=PLfYUBJiXbdtSvpQjSnJJ_PmDQB_VyT5iU
[7] Howard, J. (2022, July 22). Lesson 7: Practical deep learning for coders 2022 [Video]. YouTube. https://www.youtube.com/watch?v=p4ZZq0736Po
[8] Howard, J. (n.d.). Multi-target: Road to the top, part 4. Kaggle. https://www.kaggle.com/code/jhoward/multi-target-road-to-the-top-part-4
[9] Nvidia. (n.d.). Isaac Lab Documentation. Retrieved from https://isaac-sim.github.io/IsaacLab/main/index.html
[10] NVIDIA. (n.d.). Training the Jetbot: Ground Truth. Isaac Lab Documentation. Retrieved from https://isaac-sim.github.io/IsaacLab/main/source/setup/walkthrough/training_jetbot_gt.html
[11] Skyentific. (2016, April 21). Secrets of walking robot (NVIDIA Isaac Lab and Isaac Lab Arena) [Video]. YouTube. https://www.youtube.com/watch?v=8wJVWRbssu8
[12] Lötwig Fusel. (2023, August 10). Root Signature & Rasterizer | D3D12 Beginners Tutorial [D3D12Ez]. YouTube. https://www.youtube.com/watch?v=RSzwmaBSUmw


























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































