UE4の勉強記録

UE4の勉強記録

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

UE5の勉強などなど

1.今週の予定

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

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

2. 映像作成用UE5の勉強

2.1 PCGの勉強

2.1.1 先週の疑問

先週、PCGの復習をしたらLoopの設定方法がオカシイんじゃないかと思うようになりました。

Loopの高さは普通の数字を代入するだけで良い気がします。

今週はこれを確認します。

2.1.2 Loopのテストを行う

PCG Copy Point Up AdvancedノードのLoopsに3のIntegerをPassしました。

結果です。

本来なら3階まで生成されるはずですが出来てません。

あれ?

元に戻しました。

という事はやっぱり以下に示したそれぞれの階の高さに分配したPointを配置する必要があるのか。

となるとこのPointの作成方法をしっかり理解する必要があるのか。

2.1.3 PCGGetFloorLoopsノードの復習

このPointを作成しているのは以下のPCG Floor Loopsノードでした。

このNodeの作成方法を復習します。

2024-12-01のBlogでこの部分の実装について勉強しているみたいです。

まずこれを復習します。

中々複雑です。

後、納得出来ない実装方法があります。

以下の部分の実装ですが、

最上階と一回の床の位置を計算しています。

その後で、その間をSplineに変換し

そのSplineをFloor数で割る事で、それぞれの階の床の位置にPointを生成しています。

確かにこれで良いんですが、この方法だとこの後に、以下に示したAttribute Partitionノードを使用して

生成したPointを別々のPoint Dataに分別する必要があります。

つまり面倒です。

もっと簡単な方法で各階のFloorの位置のPointを生成してみます。

色々試したんですが、Loop内で新しく生成したPointでLoop外まで維持できるのは一個だけです。

もしかしたら出来るのかもしれませんが、今の私の知識では以下のMarge Pointを使用して

2つまでしか増やせません。

一応、以下のLoopを使用して順々にPointを増やす方法を考えたんですが、増やしたPointが次のLoopで消滅してしまいます。

まじか。

だからこんな面倒な方法で実装していたのか。

納得。

これからはこういう普通のProgrammingと比較してPCGがどうなのかを勉強する必要があるのか。

でもこれが出来るようになったらPCGでも専門家になれますね。

2.1.4 Pointの生成方法を復習する

でもその前にPointの生成方法を復習します。

Blogを振り返って、今まで勉強したPCGの内容からPointの生成方法を抜き出し以下にまとめます。

2023-05-15のBlog

始めてPCGの勉強をした週ですが、なんとこの時からPointの生成方法を勉強しています。

InputのLandscapeにSurface Samplerノードを繋いで

以下のようなPointを生成していました。

このBlogにはLandscapeではなくLandscape Heightを使用した場合はどうなるのかについての説明が元のTutorialにはあったけど、まとめには書かないという記述がありました。

それって結構重要な内容ではないのか。と思いましたが、今回はそれについての調査はしません。

2023-05-28のBlog

今度は以下に示した様にSplineからPointを生成する方法を勉強しました。

ここでの説明はGet Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]のやり方と一寸違うような気がします。

2023-06-11のBlog

以下の実装を使用して

Pointの周りにPointを生成していました。

ここではCopy Pointノードを使用する事で、Targetに指定したそれぞれのPointに対してSourceで指定したPointを生成しています。

HoudiniのNodeで同じ機能のNodeがあります。

2023-07-30のBlog

ここでは以下に示した様にBox Collusion内にPointを生成する方法や、

GeometryのSphere内にPointを生成する方法を示しています。

具体的なやり方は簡単にはまとめられないのでここにはまとめません。

Subgraphを使用している事だけはここに書いておきます。

2023-08-14のBlog

指定したMeshの表面にPointを生成する方法を説明しています。

以下のMesh To Pointsノードを使用しています。

以下に示した様に指定したMeshの表面にPointsが生成されました。

以上でした。

2.1.5 Pointの生成方法のまとめ

Blogに書かれた全てのPCGのPointの生成方法を調査しましたが、以下の4つのNodeしか使用していませんでした。

追加で

を入れても5個のNodeです。

まずはこの辺のNodeの使用方法をしっかり理解する必要がありますね。

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

2.2.1 Creating and Modifying Control Rig [2]を勉強する

<Character Import Settings>

CharacterをImportする時に表示される以下のBoxのParameterについて説明しています。

Skeletonです。

ここをBlankにする事でImportしたSkeletal Meshが本来持つSkeletonがそのままImportされるそうです。

Skeletal MeshのCheckです。

これはImportするMeshがSkeletal Meshを持っているかどうかを指定します。

CheckがついていたらSkeletal Meshがついているという意味になります。

Defaultの設定のままで良いParameterはそのままにしておきます。

Use T0 As Ref Poseです。

ImportするCharacterがT Poseの場合はここにCheckを入れます。

ImportするCharacterがMorphを使用している場合は、

Import Morph TargetsをOnにします。

Normal Import Methodです。

これは好きなのを選べとしか、言っていませんでした。

Import Animationsです。

これはUncheckのままにしておけ。とだけ説明していました。

この状態でImportします。

SKM_Mannequinを開きます。

ここではSkeletal Meshが正しくImportされたのかどうかをCheckします。

まずMannequinの形状を見ます。

A PoseでImportされています。

のでOKだそうです。

次にSkeleton Treeを開きBoneのHierarchyをCheckします。

Rootに全てのJointが繋がっている事、EmptyのGroupや必要でないJointが無い事を確認します。

更にMaterialの設定や

LODの設定も確認します。

うーん。

この辺になると何を確認すれば良いのかの説明がありません。

最初の頃ほどの内容の濃さは無いですね。

<Control Rig Asset>

ここでCostume Rigを最初から追加する方法を教えるそうです。

まず以下のControl RigのPluginを追加します。

SKM_Mannequinを右Clickして以下のBoxを開き

Control Rigを作成します。

更に別な方法でControl Rigを作成するやり方も説明していました。

<Control Rig Editor>

ここはControl Rig EditorのUIを説明しただけでした。

はっきり言って要らないです。

Bones, Controls and Nulls>

Control Rigがセット出来る要素は3つあるそうです。それがここの題であるBone、Control、そしてNullだそうです。

まずBoneの追加方法ですが、以下のBoxを開きNew Boneを選択します。

New Boneが追加されました。

次はControlの追加方法です。

ControlはCharacterを操作したり、Animationを追加したりするのに使用します。

先程、Boneを追加したのと同様の方法でControlを追加しました。

以下のような赤いSphereが追加されました。

これはControlのPropertyにある以下の部分で変更する事が出来るそうです。

ここではHexagon_Thickに変更して、色も紫に変更していました。

小さくて変更後の形状がHexagonになったのかよく分かりません。

表示されるIconのSizeですが、以下のScaleで変更するか

Preview画面上でCtrl+Pを押して

Manipulating Shape Transform Modeにして

Scaleを選択し

以下のIconでHexagonのSizeを変更します。

結果です。

ふーん。

Control Rigってこうやって追加していたのか。

後、このHexagonのIconってControlと言う名称だったようです。

以下のControl TypeでTypeをSetします。

この設定によって、このControlでは何が出来るのかが決定されるそうです。

Euler Transformでは以下の設定が指定出来るそうです。

Euler Transform以外のControl Typeの使用方法を説明するために以下に示した拳の開閉を調整するControlを作成するそうです。

値が0の時に拳を開いて、100の時に拳を閉じるそうです。

Control TypeをFloatに変更しました。

Valueの設定は以下のようになりました。

Currentの値を100に変更すると以下のように

矢印が右端に移動します。

ちなみにこの矢印は、以下のDraw Limitsをuncheckする事で消せるそうです。

このControlの位置を左の手に近づけます。

まず以下の設定をSetup Eventに変更します。

この状態になると、Controlの位置を以下のように移動させる事が可能になります。

左手の下に移動させました。

この後、設定方法の細かい部分の説明がありました。

この辺は、多分見たら分かるでしょう。

以下の設定だけ記録に残しておきます。

これにCheckが入ってないとLevel SequenceからこのControlを動かす事でAnimationの設定をする事が出来ないそうです。

最後にNullについてです。

以上でこのLectureは終わりでした。

これはかなり勉強になりました。

<Create Controls for Setup>

全部見ましたが、もう頭に入らなくなっています。

ここからは来週勉強します。

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

3. AIの勉強

今週は以下の2つを行います。

  • Hugging FaceのAccountの作成とClone
  • Jupyter NotebookにGradioを追加してUI付きのAIを作成

早速始めます。

3.1 Hugging FaceのAccountの作成

Sign inしてAccountを作成しました。

ConfirmationのE-mailの確認とかで一回閉じて開き直したら、このPageが表示されるようになりました。

まあ、Accountが作成出来た事は間違いないです。

3.2 Hugging FaceのCloneを作成する

Ubuntuの以下のDirectory内にCloneを作成する事にします。

Spaceに移動しました。

早速問題です。

以下のNewというButtonと

Create NewのButtonの

2つがあります。

先週のBlogには

とだけ書かれています。

Videoを見て確認しましたが、流石に2年前とはUIが全く違っています。

Newの方を押したらSpaceという選択肢があるBoxが開きました。

多分、これでしょう。

大当たりです。

以下のように打ち込みました。

Templateはどれを選択すべきなんでしょうか?

Tutorialを見直して確認しましたが、このような選択肢はTutorialのUIには無かったです。

Blankにしておきますか。

明らかに他のTemplateは違っていますから。

次です。

これはFreeのを選択しておきます。

当然、Privateにします。

あ、でもPrivateにすると確認するのに一々Loginする必要があるのか。

まあいいや。

Create Spaceを押しました。

以下に示したPageが作成されました。

おお。出来ました。

このCloneをUbuntuからCommandしたら完成か。と思ったらなんかAccess TokenをPasswordとして使用しろって書いてあります。

これはやらないといけないんでしょうか?

Tutorialを確認しましたが、TutorialのHugging FaceのSpaceにはこの文章はついてないですね。

Copilotに聞いてみます。

以下の回答が返って来ました。

やっぱしPasswordの設定をしないといけないみたいです。

もう少し具体的なやり方を知りたいです。

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

以下の回答が返って来ました。

これ通りにやったら出来そうですね。

でPasswordに使用するTokenって、私が保存しておく必要があるんでしょうか?

まあ、最初の一回は、どっかに保存しておいた方が良いかもしれませんね。念のため。

慣れたら、毎回Tokenを発行して変更する事にしましょう。

ではやってみます。

以下のSiteに移動します。

以下のSiteに移動しました。

Create New Tokenを押しました。

以下のPageに移動しました。

Writeを選択します。

Tokenの名前は自分で決定するのか。

Token NameはFastAI_HW_2にしました。

Token Valueが生成されたので一応、GoogleのPasswordにSaveしておきました。  

ではCloneします。

PasswordじゃなくてUser Nameを聞いてきました。

なんか失敗したみたいです。

もう一回試します。

今度は出来たのかな?

出来てますね。

更に中を見たら、あれ?

README fileしかありません。

ああ。そうか全部作る必要があるんだ。

ぬぐぐ。

App.pyを作成する必要があるのか。

VS codeを開きます。

なんかAccess権限がうんたらかんたらと言っていますが、OKにしました。

VS Codeが開きました。

本当にREADMEしかありません。

これは不測の事態です。

が何とかなるでしょう。

まずここにapp.py fileを作成します。

VS Codeから作成しようとしたらUbuntuAccess出来ません。何で?

Terminalから作成します。

Copilotに聞くと以下のCommandで作成出来るそうです。

やってみます。

出来ました。

そしたら以下の実装を貼り付けます。

貼り付けました。

で後はCommitしてPushするだけです。

VS Codeでやる方法はBlogにまとめてあるんですが、Passwordの問題があるかもしれないのでHugging Faceに書いてある

以下のCommandを試してみます。

最初のCommandを実行しました。

問題なかったです。

次のCommandを実行しました。

何これ?

Copilotに聞いてみます。

Gitに登録しないといけないのね。

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

オカシイ。

前にGitでCommitした事はあります。

その時のDataは無くなってるって事?

入れました。

ああ名前のところが大文字と小文字になってしまっています。

Copilotに聞いたらもう一回打つ直せば良いだけだそうです。

でもう一回、二つ目のCommandを実行しました。

出来たみたいですね。

最後のCommandを実行します。

またUser NameとPasswordを聞いてきました。

これはPasswordはTextかなんかに保存しておきます。

でも出来たみたいですね。

Hugging FaceのPageに入って確認します。

おお出来ました。

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

残りは来週やる事にします。

4. Nvidia Omniverseの勉強

4.1 NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial [3]を勉強する

4.1.1 3 - Joint Types - NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial [4]を勉強する

やっと前回のTutorialが終わったので次のTutorialの勉強に入れます。

何とこのTutorial、たった3分しかありません。

 

まあ良いです。

勉強しましょう。

ISACには2つのTypeのJointがあるそうです。ContinuousとJointです。

以下の画面から

Joint Drive Typeを開くと

PositionとVelocityがあります。

え、さっきContinuousとVelocityって言ってなかったっけ。

今度はThrottleをClickします。

DampingとStiffnessを見ます。

Dampingの値は非常に高いです。

Stiffnessは0です。

この理由はこの2つの値はContinuousだからだそうです。

今度はSteerをCheckします。

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

Dampingが高くStiffnessが0です。

この値だとSteeringは効かないそうです。

何とこの動画ここで終わっています。

これじゃ何の事か全く分かりません。次の動画も見る事にします。

4.1.2「4 - Action Graphs - Part 1 - NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial」[5]を勉強する

前回の動画が途中で切れているので続きから始まると思ったら、この動画はAction Graphについての話です。

えー。と思いましたが、仕方ない。続きを見ていきます。

Action Graphを開きました。

以下の場所にAction Graphが追加されました。

最終的には以下のようになるそうです。

今、流行のNode BaseなProgrammingですね。

おお、結構凄い。

SteeringのNodeがあります。

前回の動画のSteeringのDampingが高くStiffnessが0だとSteeringは効かないという話は、この辺に繋がっていくのかもしれません。

Nodeの組み方の説明です。

検索にPlaybackと打ち込んで、On Playback Tickノードを探し出します。

On Playback TickノードをGraph上に配置しました。

次にROS1 Subscribe AckermannDriveノードを追加しました。

で2つのNodeを繋げます。

更にAckermann Steeringノードを追加します。

更に以下のように繋ぎました。

Make Arrayノードを追加します。

このNodeの設定です。

Array Sizeの値を2にします。

更にCtrl + DでMake ArrayノードをDuplicateして、そっちはArray Sizeの値を4にします。

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

以下のように繋げます。

上のArrayがSteeringで下のArrayがThrottleだそうです。

Articulation Controllerノードを追加しました。

Make Arrayノードの結果をArticulation Controllerノードに追加します。

もう片方のMake Arrayノードの結果もDuplicateして作成した別のArticulation ControllerノードのVelocity Commandに繋げます。

On Playback TickノードのTickをArticulation ControllerノードのExec Inに繋ぎます。

Tutorialでは、何でAckermann SteeringノードのExec Outから繋がないのか、説明していたんですが、よく理解出来ませんでした。

今度はJointの名前をPassする必要があるそうです。

これらがJointの名前だそうです。

またMake Arrayノードを使用して値をPassします。

Make ArrayノードにはConstant Tokenノードを使用して値(Steering Jointの名前)をPassします。

Constant TokenノードのInputsのValueには、以下に示した様にFront_left_wheel_steerがセットされています。

当然、二番目のConstant Tokenノードの

Input Valueにはfront_right_wheel_steerをセットします。

今度はThrottleの方の設定を行います。

Make ArrayノードのInputが4つある事以外はほぼ同じです。

それぞれのThrottleの名前です。

これらをConstant Tokenノードにセットします。

後、足りないのがAckermann SteeringノードのCurrent Linear Velocityの値だそうです。

これはIsaac Compute OdometryノードのLinear Velocityの値を使用するそうです。

ここでTutorialが終わっていました。

4.1.3 3 - Joint Types - NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial [4]と「4 - Action Graphs - Part 1 - NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial」[5]を勉強した感想

「 3 - Joint Types - NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial」 [4]を勉強した時は、なんかこのTutorialを勉強して大丈夫なのかと思いましたが、

次の「4 - Action Graphs - Part 1 - NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial」[5]はかなりVolumeがあって勉強になりました。

来週は実装してみます。

4.2 Nvidia Omniverse Issac Sim [5]の勉強

公式SiteのNvidia Omniverse Issac Sim [6]も読んでいきます。

のっけからアレなんですが、先週勉強したのはIsaac Sim 4.2で最新のVersionは4.5だそうです。

こっちを読むようにします。

Table of Contentの内容を確認します。

これは先週勉強した内容と同じです。

まずRelease Notesがあります。

Installationの内容です。

これは必要な時に勉強すれば良い内容でしょうか?

Help & FAQの内容です。

うーん。

勉強しないといけない内容なのかどうか判断出来ませんね。

次はGetting Startedです。

お、ここに今週勉強しようと思っていたWorkflowがありますね。

一寸見てみます。

なんか結構重要なConceptがここで解説されています。

これを勉強しようかと思ったんですが、もう頭が働かなくなって来ました。

これは来週やる事にします。

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

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

5.1 PowerPointの作成

今回はMaskingの説明をします。

Gaea2のNodeにはMaskというInputがあるものが沢山あります。

これを説明します。

Gaea1で既に説明している内容である事、しかし今回は地形の追加に使用する事などを解説しています。

私のGaea Tutorial Seriesの核である3つの工程のどこ工程の内容なのかを説明しています。

プラモデルにおけるMaskingを説明しています。

Gaea2の粗削りな地形を作成するために使用するMaskingの一例を示しています。

Heightノードの機能を説明しています。

HeightノードはMaskingに使用する白黒のImageを生成しています。

5.2 質問に対する回答

草をどこまで表示するかは、

以下に示したLGT_MWAM_Grassで管理しているようです。

ここにあるStart Cull DistanceとEnd Cull Distanceの値を

上げると上げた分だけ遠くの草が表示されるようになります。

ただしその分計算Costが凄くなります。

5.3 これからの方針

Gaea2のTutorialも基礎編が終わって、中級編になりました。

中級編は、逆引き辞典のような動画にして、必要な動画だけ見れば良いような作りにします。

そして一回の動画も短く5分から10分で終わるようにします。

その代り、TutorialのComment欄に書いてある質問に回答するようにします。

視聴者の方で、分からない部分があったらComment欄に書き込んでください。

質問に回答するようになると、僅かにですが人間関係が生じます。

私も含めてですが、Game制作をする人は人間関係を築くのは結構苦手です。

知らずに相手の感情を傷つけてしまったり、相手を怒らせてしまうのは結構あります。

そこで、そのような事態をなるだけ避けるために以下のRuleを設けます。

<お互い先生と呼びあう>

同じようなTypeである漫画家志望の人達がコミケとかでわりかし人間関係が上手く行っているのは、お互い先生と呼び合っているからではないか。と思っています。

先生と呼んでおけば、まあ失礼な事を言ったとしても、悪意が無い事は相手にも伝わります。

喧嘩になったり二度と口を利かない事態になったりする確率はずっと下がるはずです。

のでここでは、質問者も先生と呼びます。

私も先生です。

そしてコメント欄に書き込んでくれた人も全員、先生です。

<Easy Come Easy Go>

いつ来ても大歓迎ですし、いつ去ってもOKです。

時間は有限です。自分にとって必要でないと判断したら勉強を止めるのは当然です。

その後で、やっぱりアレ必要だったわ。となった時はいつでも帰って来てOKです。

一回、勉強会から抜けたら裏切者とか、そういうのは禁止です。

5.4 ABP_MannyのAnim Graphを調査する

ABP_MannyのAnim Graphにある以下の実装について調べます。

Main Statesの中味です。

Landノードを開くと以下のようになっていました。

あれ?

ここにあるMM_LandがAnimationをを担当してるっぽいです。

中身を見てみます。

あれ?

Animation SequenceだけどVroidのCharacterが写っていて何の動きもしてません。

これって普通のProjectでもAnimationが無いのかな?

別なProjectで確認します。

普通に動いていました。

先週無いと思ったJumpのAnimationも

普通にありました。

では以下の部分は何をしているんでしょうか?

結局その部分は不明です。

Copilotに質問してみます。

この質問は難しいのでThink Deeperで聞く事にします。

回答です。

まず一般的な前提知識の確認から始まっています。

Anim Graphが何を管理している場所とか、曖昧にしか理解してなかったです。

Control RigノードをAnim Graph内で使用する事で、CharacterのSkeletonを直接、Anim Graph内で動かす事が出来るのか。

納得です。

かなり理解が進みました。

どのようにControl Rigが働くのかの簡単な解説をしています。

なんかControl Rigがどうなっているのかの全体像が見えてきました。

Control Rigを使用する長所の説明です。

どうやってControl Rigをセットするのかの簡単な説明です。

勿論、これを元に実際に作成する事は出来ませんが、全体の流れみたいなものは感じれます。

具体的にControl Rigを使用したAnimationの例が紹介されています。

Tipです。

うーん。

何となく理解は出来ました。

しかし同時に、この部分はControl Rigの勉強がもっと進んだ後で勉強しないと理解出来ないという事も判明しました。

これはControl Rigの勉強が進んでから勉強し直す事にします。

6. Houdiniの勉強

今週は先週のErrorを直していきます。

6.1 Normalの確認

一番、間違ってそうなの名Normalの設定です。

これから確認していきます。

Normalノードの設定は以下のAdd Normals to の値をPointsに変更してるだけでした。

では次のNodeであるAttribute Transferノードを見てみます。

そうだ。

このNodeで本当にPolywireのNormalが上書きされているのか確認しましょう。

うん。

思っているよりかなり太いですが、一応、Normalは正しくPassされているようですね。

Distance Thresholdの値をTutorialと同じにしました。

おお、Normalが前よりきれいになりました。

出来てるっぽいです。

次のNodeであるAttribute Wrangleを調べます。

あ、VEXのCodeが間違っていました。

直します。

+が抜けていました。

結果です。

multの値を小さくしたら行けるかも。

ほとんど0に近づけました。

結果です。

分からん。

更にNormalノードを追加してみます。

Normalノードの結果です。

薄っすらと筋のようなものが見えます。

Attribute WrangleのMultの値を上げてみます。

出来てるのか。

Tubeの端から飛び出すのが気になります。

Tutorialのを見直すとそんなのは無い事が分かります。

これは単純にTubeのSizeが小さいからかもしれません。

Tubeノードの

Radiusの値を0.5から0.6に変更してみました。

結果です。

真っ黒でよく見えませんが、

Tutorialと同じような結果になってそうです。

近づいて確認しましたがなっていました。

真っ黒なのはLightの位置の問題だと思います。

先程のImageの明るさとContrastを変更したら以下のようになりました。

これでOKでしょう。

6.2 2025-02-02のBlogの続きをやる

Attribute Blurノードを以下の場所に追加します。

以下のように設定しました。

結果です。

見えにくいので明るさとContrastを調整しています。

以下のIconの値を変更すると

Preview画面の表示が変わる事が分かりました。

Tutorialでは以下の設定になっていました。

同じのをセットしました。

結果です。

まだ一寸見た目が違います。

TutorialにおけるPreview画面の右わきのTool barの設定です。

Gridを表示しないとこ以外は同じでした。

うーん。

Tutorialの結果はこんな感じで

私の結果はこんな感じです。

あれ?

突然、Tutorialとそっくりな画像になりました。

分かりました。

Preview画面の左端のTool Barにある以下のIconをいじっていたら

突然、こんな画像に変化しました。

でも今度は前の状態に戻せません。

まあいいや。

これで先週のErrorが直った事にします。

6.3  VEX Isn't Scary Project - Part 3: Geometry [7]の続きを勉強する

流石にこれだけだと短いのでTutorialの次の10分も勉強します。

Blur Normal>

この実装方法だとCircle SetupノードのLinesの値を変更しても

直ぐにBlurが対応してくれるそうです。

<Tube Size>

TutorialではAttribute Blurノードの以下のParameterを更に調整していました。

Normal2ノードの後にNullノードを追加して

名前をBASE_GEO_OUTに変更しました。

<BaseGeoOut>

Geometry Layerに戻ってGeometryを2つ追加します。

それぞれBASEとSPHERESと名付けます。

BASEを開き、中にObject_mergeノードを配置します。

そしてObject1にBASE_GEO_OUTをせットします。

以下のようになります。

SPHERESの方も同様に、Object Mergeノードを配置して

SPHERES_GEO_OUTを追加しました。

結果です。

動かしてみると色々な問題がある事が判明します。

まずBack方向にPlay出来ません。

いや、出来ますが再生速度がものすごく遅くなります。

その理由ですが、以下のNodeで

緑のClockが表示されているのは時間に影響されるNodeで

それらが全部、影響するからだそうです。

Sphereを再生するのに、Lineノード以下のNodeは必要ありませんが、Houdiniはその事は知りません。

ので全部計算しているんだそうです。

この問題を解決するために、以下のTime Shiftノードを追加します。

Frameを右Clickして以下のBoxを表示させ、Delete Channelsを選択します。

更にFrameに1をセットします。

以上です。

この状態で、Play Backすると非常にSmoothに再生されるようになります。

うーん。

成程、でもPlay Backって逆再生の事なんでしょうか?

なんかこのやり方を見てると普通の再生でも早くなる気がします。

<Poly WireとTransform Node>

次の問題ですが、Ballが浮いています。

これを直します。

この直し方は簡単で、Spheresノードの後にTransformノードを追加するだけです。

Previewの左端のTool Barから以下のIconを選択して

Sphereの位置を移動させます。

更に溝を超えて移動するSphereの問題を解決するために

<Transform LinesとIncrease Tube Size>

以下の場所にTransformノードを追加して

Uniform Scaleの値を大きくします。

これで以下に示した様になりました。

<Add Base Group>

Sphere1ノードの以下の値を増やします。

更にGroupノードを追加して

Group Nameの値をLightにします。

Space +Num3でFront Viewにしました。

<Add Face Group>

そしてBase Groupの矢印を押します。

そして以下の部分を選択して

Enterを押します。

Poly Extrudeノードを追加して

Distanceの値を-0.005に変更します。

以下のように変化しました。

<The Problem>

この状態で、実行すると

Sphereが転がってないのが分かります。

<The Circle Setup>

どうやってSphereを転がすのかについての説明です。

まず上下にSphereが動く場合です。

左右に動く場合です。Sphereは以下のように回転します。

これも簡単です。

しかし以下のようにその中間にLineがある場合はどうでしょうか?

これは結構難しいそうです。

しかしこれも以下の実装で計算出来るそうです。

ちなみにCross()関数は以下のように説明していました。

後、どれくらい回転するかですが、

2回転なので720度でOKだそうです。

ここで丁度10分たったので、今週のVEX Isn't Scary Project - Part 3: Geometry [7]の勉強はここまでとします。

来週は今週勉強した内容を実装します。

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

7.1 ComfyUIについてこれから調査する事

これから調査しないといけない事をまとめておきます。

Onnxが無いと言っています。

これについて調査します。

次にControl Netについて調べます。

どうもこれが凄いAnimationを作成出来るみたいです。

次はFLUXです。

これは凄いみたいですが、なんなのか全く知りません。

これについて調べます。

7.2 Control Netについて

Copilotに聞いてみました。

これじゃ何の事か分かりませんね。

人力に頼る事にして、ネットで調べます。

以下の動画がありました。

https://www.youtube.com/watch?v=fhIGt7QGg4w

Control Netの使い方を説明するのではなく、Control Netとは何かを説明してくれるそうです。

でも初っ端からControl NetのPaperの話とかして初心者には一寸難しいLevelの内容です。

そうだ。

AIに要約させてみます。

https://krisp.ai/youtube-video-summarizer/のSiteで要約しました。

成程。

この動画の言いたい内容は理解出来ました。

でもControl Netって以下のようなBoneを追加する機能じゃないの?

あ、そう言えば、2025-02-02のBlogで以下の問題にぶつかりましたが

これもControl Netって書かれています。

Boneを追加してAnimationを生成する方法は何と言うんでしょうね。

調べてる途中で凄いTutorialを見つけました。

3D+ AI (Part 2) - Using ComfyUI and AnimateDiff [8]です。

一言で言うと、兎に角見やすいです。

紹介されている情報も当時の最先端って感じがします。

ただこの動画ではBoneを使用したAnimationについてはあまり紹介していませんでした。

一応、著者の名前も記録しておきます。

1littlecoder氏のControl Netの解説動画がありました。

https://www.youtube.com/watch?v=6yCaXLh7hz4

これが結構分かり易かった。

先程のSiteで要約させると

これ。

つまりControl Netは今あるModelを強化するための機能だって、断言しています。

これで理解しました。

で次の解説です。

ここでPoseの話が出て来ます。

だからControl NetとBoneによるAnimationは同じだと思ったのか。

動画でも以下の画像を使用してPoseの説明をしています。

更に、このControl Netの応用で有名なのが3つあるそうです。

まずBlenderなどで3DのModelであるPoseを指定して

それにControl Netで同じPoseをしている別な人に変更する方法、

次がControl NetとNerfを併用して、ScreenshotのImageをDroneで撮影したかのような映像に変換する事だそうです。

確かにDroneで撮影したかのような映像が生成されていました。

最後の応用は以下のようなImageの

EdgeをControl Netに認識させて

以下のようなそのImageに似たPhoto-Realisticな映像を生成する事だそうです。

成程。

だからAnimationとControl Netの検索から上手く引っかからなかったのか。

でもControl Netのこの話を聞くと、AIによる画像生成も色々な問題点がある事が分かりますね。

7.3 Fluxについて

Fluxについても調べます。

だそうです。

うーん。

まあ、Stable Diffusionとは違う画像生成用のModelみたいですね。

これ使ったらアニメ調の映像が非常に上手く作成出来るとかはないみたいです。

7.4 Onnxについて

これは、今週はいいや。

別な事を調べます。

7.5 CivitaiにあるAnimationに使用されているModelを調べる

CivitaiのVideosのAnimeを選択すると以下のようなAnimationが表示されます。

最初、これの作り方を見たら最新のAIによるAnimeの作成方法が判明する。と思ったら流石に作成方法は説明していませんでした。

ただし使用したModelは書いてありました。

のでそれをここにまとめる事にします。

最初はこれです。

CounterfeitXLを使用して作成したそうです。

何と、このCounterfeitXLはSDXLを元にして作成したModelです。

SDXLから作成したAnimationはしょぼいのしか出来ないと聞いていたんですが、そんな事は無いみたいです。

次はこれです。

こっちはFlat-2D Animergeを使用していました。

これはSD1.5を使用していますね。

不思議なのはBackのImageが一定な事です。

私のWorkflowではBackのImageはなんかの抽象画のようになっています。

うーん。

これやってもあんまり意味無いか。

中止します。

たまたまお勧めに出て来たComfyUI Hunyuan Video to Video: Using video to create LONG AI videos by Latent Upscale Guidance [9]を見てたら

最新のComfyUIの使用方法ってのはこういうんだ。

って感じで説明されていて圧巻されました。

やっぱりあまり古いのは勉強しないようにします。

今週はこれを軽くみて終わりにします。

その後でこれからどうするか一週間かけて考えます。

見て分かったのは今Videoを生成するModelで最も注目されているのは、HUNYUANという事です。

HUNYUANのTutorialがありました。

来週はこの辺を勉強します。

8. DirectX12の勉強

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

8.1.1 Render Target View & Descriptor Heap | D3D12 Beginners Tutorial [D3D12Ez] [10]の最初の10分を勉強する

この動画では3つの新しいConceptを勉強するそうです。

  • Render Target
  • Descriptor
  • Descriptor Heap

これらは既に勉強した概念ですが、Render Targetに関してはどんな概念なのか忘れてしまいました。

Blogを見直して確認します。

2023-11-26のBlogに以下のように書かれていました。

これです。

Render Targetの意味自体は覚えていなかったんですが、Render Targetの定義を調べた事は覚えていました。

DescriptorはViewの一種で指定したBufferの目的とかそういう色々な事をDescribeするものなはずです。

Descriptor HeapはそのDescriptorの塊なはずです。

一応、Copilotにも聞いておきます。

うん。

私の解釈は大体あっていますね。

ではLectureの続きを聞きます。

Render Target Viewについて解説しています。

Render Target ViewはDescriptorだとか言っています。

そらそうだけど、Render TargetとDescriptorとDescriptor Viewの定義を説明するのにRender Taret ViewはDescriptorです。はあんまりにもひどすぎる解説でしょう。

このDescriptorをallocateするのにDescriptor Heapが必要と言っています。

これはまあ及第点の説明ですね。

もう少し詳しく説明するそうです。

前に実装したBeignFrame()関数とEndFrame()関数です。

これらの関数はResource Barrierの設定を行っています。

ここでBeginFrame()関数では以下に示した様にResource Barrierの位置を

PresentからRender Targetに移動せよ。

と指定しています。

そしてEndFrame()関数では逆にResource Barrierの位置を

Render TargetからPresentに移動せよ。と書かれています。

ふーん。

これは知らんかった。

更にTutorialでは、これは単にGPUにそうすべきだというHintを与えているだけで実際にGPUがこの通りに実行するかどうかはGPU次第だとも説明していました。

ふーん。です。

次にこのBeginFrame()関数内で以下のm_buffers[]を

Render Targetとして扱うようにする実装を追加します。

この後、Tutorialでは非常に分かり易いViewやDescriptorの解説をしていたんですが、実装とは関係ないのでここではSkipします。

今まで理解出来なかったのが、理解出来るようになってきて分かり易く説明だという事に気がつけるようになったんでしょうか?

実装する部分だけ以下にまとめます。

まずDescriptor Heapを作成します。

Window.hに以下の実装を追加します。

そしてWindow.cppの以下の場所で初期化します。

ここで最初の10分が経ちました。

ので今週のLötwig Fusel氏のD3D12 Beginners Tutorial [D3D12Ez]の勉強はここまでとします。

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

8.2.1 先週の復習

先週はDescriptor Rangeについて勉強したんですが、あまり内容を覚えていません。

復習します。

先週のBlogによると、Descriptor Rangeの機能はDescriptor Heap上に存在する同じ種類のDescriptorを一個にまとめる事だそうです。

全く覚えていません。

Blogを読み直します。

思い出しました。

Descriptor Heap内にDescriptorを保持させ、GPUは必要に応じてそれを読み込みます。

同じTypeのDescriptorは同時に読み込んだ方が速いので、GPUに同時に読めるDescriptorが何個あるのかをDescriptor Rangeで教えるそうです。

CopilotのThink Deeperではこれを図書館の本を取りに行くことに例えて説明していました。

この後は、実際の実装方法が説明してありました。

ではDescriptor Rangeを実装していきます。

8.2.2「 5.8.3 Descriptor Range」を実装する

まず以下の箇所でDescriptor Rangeの初期化と設定のセットを行います。

もしTextureが複数あって、Texture用のDescriptorも複数ある場合は、これらの設定はどう変わるんでしょう?

NumDescriptorsの値が複数になるだけなんでしょうか?

この辺は全然分からないですね。

更に、設定したDescriptor RangeをRoot Parameterにセットします。

これでDescriptor Rangeの実装は完成です。

9. まとめと感想

特になし。

10. 参照(Reference)

[1] 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

[2] Creating and Modifying Control Rig. (n.d.). Unreal Engine. https://dev.epicgames.com/community/learning/courses/5vL/unreal-engine-creating-and-modifying-control-rig/DnO1/unreal-engine-creating-and-modifying-control-rig-overview

[3] NVIDIA Isaac Sim - MUSHR RC Car - Ackermann Tutorial. (n.d.). YouTube. https://www.youtube.com/playlist?list=PL60qgWqGu6k82AJ2SDWOscEKLjCc5tdEW

[4] Berk Tepebağ. (2024, August 20). 3 - Joint Types - NVIDIA Isaac SiM - MUSHR RC Car - Ackermann Tutorial [Video]. YouTube. https://www.youtube.com/watch?v=3y8cEWXtuUg

[5] Berk Tepebağ. (2024, August 20). 4 - Action Graphs - Part 1 - NVIDIA Isaac Sim - MUSHR RC Car - Ackermann Tutorial [Video]. YouTube. https://www.youtube.com/watch?v=pqE2y8YVdGI

[6] What is Isaac Sim? — Omniverse IsaacSim. (n.d.). https://docs.omniverse.nvidia.com/isaacsim/latest/index.html

[7] Nine Between. (2021, February 12). VEX isn’t scary Project - Part 3: Geometry [Video]. YouTube. https://www.youtube.com/watch?v=uYC-tBtCtLA

[8] enigmatic_e. (2024, January 29). 3D+ AI (Part 2) - using ComfyUI and AnimateDiff [Video]. YouTube. https://www.youtube.com/watch?v=hy9TLp-xIBo

[9] AI Artistry Atelier. (2025, January 10). ComfyUI Hunyuan Video to Video: Using video to create LONG AI videos by Latent Upscale Guidance [Video]. YouTube. https://www.youtube.com/watch?v=aDDU3p72mkQ

[10] Lötwig Fusel. (2023, July 11). Render Target View & Descriptor HEAP | D3D12 Beginners Tutorial [D3D12EZ] [Video]. YouTube. https://www.youtube.com/watch?v=6XxTkoNg_KU

 

UE5の勉強などなど

1.今週の予定

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

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

2. 映像作成用UE5の勉強

2.1 PCGの勉強

2.1.1 先週の勉強の復習

先週、床を追加したのは覚えていますが、それ以上は覚えていません。一応、先週のBlogを読んで復習します。

先週やっとGet Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]の勉強が終わったんでした。

今週は、今までの勉強を復習して理解してない部分を理解します。

2.1.2 今までのBlogのまとめ

2024-10-27のBlog

最初の10分を勉強しています。

PCG_BuildingとBP_Buildingを作成しました。

BP_Building内にSplineを追加して長方形のSplineを作成しています。

更にPCGを追加してPCG_Buildingを追加しました。

このPCGがSplineの子として追加したのか、それとも独立して追加したのかが、このBlogからは分かりません。

PCG Graphの実装もしていました。

Spline Samplerノードを追加してBP_BuildingのSplineの情報を取得していました。

Debugすると以下のような表示になると書いてあるんですが、

Spline SamplerノードのDimensionの値がOn Interiorになってるからこんな表示になってるんでしょうか?

BP_Buildingに壁の長さを指定するためのVariableも作成しています。

ここでそのVariableの名前をWall Sizeにしていますが、これは後で判明しますがWall lengthと言う意味でした。

更に言うと、Wall Sizeで壁の長さを指定しても壁がその長さになるのではなく、指定したStatic Meshの壁の元々の長さの値をここで指定する事でその壁を隙間や重なる部分が無い状態で並べる事が出来るようになるだけでした。

PCG_BuildingからGet Actor Propertyノードを使用して、Wall Sizeの値を取得して、その値をSpline SamplerノードのInterior Sample SpacingにPassしました。

すると以下の結果になりました。

2024-11-10のBlog

前に勉強した内容を実装しています。

特にここに書き出す内容は無いです。

2024-11-17のBlog

BP_Building内にWall Thicknessという変数を作成しました。

これは指定したStatic Meshの壁の厚さを書き込むための変数です。

PCG_Buildingに戻ると、ある実装を追加してPointの生成する場所を以下のように変更しました。

それぞれのPointの間はWall Sizeで指定した値と同じになっています。

この計算方法なんですが、今もって理解出来ません。

Static Mesh Spawnerノードを繋げて壁を指定しました。

この後、壁の位置や向きを調整して

正しく壁を配置しました。

最後にこの部分の実装をSub Graphにしていました。

2024-11-24のBlog

この週も実装しているだけで特に記録することはないだろうと思っていたんですが、かなり内容が濃かったです。

まず、Tutorialのあの実装で何故、PointがSplineの外側に生成されるのかを、実際に試す事で示していました。

その上でMake Vector Attributeノードの0の値を0と指定しないと適当な値が指定されてしまう事も突き止めていました。

2024-12-01のBlog

この週は、Buildingのそれぞれの階を指定するために以下のようなPointを作成しています。

このPointの作成には色々な難しい問題が存在してるんですが、それぞれの詳しい点はこの週のBlogを読んで理解してもらった方が良いです。

2024-12-08のBlog

ただ実装しただけです。

2024-12-22のBlog

PCG_CopyPointUp_Advancedと言う名前のPCG Graphを新しく作成しました。

これはPCG Building内でLoopとして使用しています。

ここでいきなり2種類のStatic Meshを壁として使用したBuildingの壁を作成したので、一寸訳分からなくなってしまっています。

以下の実装なんかよく意味が分からないです。

Loopsでパスされるのは以下のPoint達です。

これにWall Heightの高さをかけてしまったら、更に高くなってしまうじゃないですか。

この辺は無駄な事をやっていますね。

後で、実装を改良します。

もっとsimpleに出来るはずです。

2025-01-19のBlog

実装しただけです。

2025-01-26のBlog

それぞれの階のFloorを作成するための実装方法をまとめているだけです。

2025-02-02のBlog

Floorを実装して終わっています。

2.1.3 今までのBlogのまとめをして分かった事

Buildingのそれぞれの階のWallを作成するためのLoopの実装方法がよく分かってないのが、このTutorialの内容がよく分からない原因という事が判明しました。

まあ、全体像が分かったので今まで理解出来ないで見様見真似でやっていたかなりの部分の意味が理解出来るようにはなっていました。

それぞれの階のWallを作成するためのLoopの実装方法は、もっと簡単な実装を自分で作成して確認してみます。

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

今週からしばらくの間、Control Rigについて勉強する事にします。

2.2.1 先週の復習

Level Sequence上でAnimationを作成するためにはControl Rigを追加する必要がある事は分かりました。

Control Rigについてひたすら調べています。

そしてModular Control Rigを試しています。

ところが、Modular Control Rigを試したら以下のように

膝が逆に曲がる様になったり、以下のように

そもそもErrorになってしまったりしました。

ので結局、Creating and Modifying Control Rig [2]で一から勉強する事にします。

じつはUnrealの公式のTutorialを勉強するのは始めてです。

仕組みがよく分かりません。

取りあえず読んでいきます。

このCourseを勉強する事で以下の内容が学べるとありました。

これが知りたい。

で第一回のLectureは終わっていました。

<Introduction to Creating and Modifying Control Rig>

2番目のLectureです。

これには動画が用意されています。

見てみます。

このCourseで勉強する内容が紹介されていました。

以下に簡単にまとめます。

まずMannequinをDrag and DropでImportしています。

次にImportしたMannequinにControl Rigを追加します。

Control Rigを追加出来たら、Mocap Dataを使用して既にあるAnimationを編集する方法を勉強するそうです。

更に別のAnimation Toolの使用方法も勉強するみたいです。

そんだけでした。

Unreal Engine Compatible Characters>

3番目のTutorialです。

まずここで使用出来るSkeletal MeshはUE5と互換性がないと駄目だそうです。

どういう意味でこれをいってるんでしょうか。

Retargetingが出来るSkeletal Meshじゃないと駄目って意味なんでしょうか?

File FormatはFBXじゃないと駄目だと言っています。

これはこのTutorialが作成された時はそうだったかもしれませんが、多分今のUE5はFBXじゃなくても大丈夫でしょう。

Skeletal MeshのJoint HierarchyがUE5と互換性があるか確認します。と言っています。

どうやって確認するのか全く分かりません。

次にその方法を説明していました。

まず全てのJointの親Jointである唯一のJointがあるかどうかを確認します。大抵はこのJointはRootと呼ばれているそうです。

この後、いくつかのTipのような説明をしますが何を言っているのか全く理解出来ません。

多分、後のLectureを勉強したら理解出来るようになるんでしょう。

<Character Import Settings>

このLectureから本格的なTutorialが始まりました。

ここではFBXをImportした時に表示されるWindowのそれぞれの設定で理解しておかないといけない部分の解説をしていました。

これはまとめる必要がありますが、もう頭が働きません。

ここからの勉強は来週に回します。

3. AIの勉強

今週はHugging FaceやGradioの使用方法の復習をします。

3.1 今までの復習

2024-09-01のBlogでHugging Faceについて初めて書いています。

読んだらやり方がかなり詳しく書かれていました。

ただ足りない情報があります。

その辺の情報を追加しながらもう一回Hugging Faceの使用方法をここで整理する事にします。

Hugging Faceの使用方法は以下のSiteに詳しく書かれているそうです。

https://www.tanishq.ai/blog/posts/2021-11-16-gradio-huggingface.html

これは後で見る事にします。

Hugging FaceのHomepageに移動します。

Create New Spaceを押します。

ここで新規登録をしてHugging Faceの無料会員になります。

Space SDKはGradioを選択します。

PublicかPrivateの選択をします。

これはどっちにしようかな。

Privateも無料ならPrivateを選択しますか。

この後、GitからCloneするためのAddressを得ています。

が、このGitのAddress、Hugging FaceのGitじゃなくて教授のGitのAddressになっていますね。

ここから確認が必要ですね。

Lesson 2: Practical Deep Learning for Coders 2022 [3]を見て確認します。

確認しました。

何と、Hugging Faceの登録名がjph00でした。

登録が終わってCreate Space Buttonを押したらこのPageが開いていました。

2024-09-01のBlogではこの後、WSLの話になっています。

これは今ではほぼ完ぺきに使いこなしています。

ざっと読んで分からない所がないかだけ確認します。

分かりました。

UbuntuからこのCloneをしています。

これもまあ当然ですね。

Cloneに成功したらminimalと言う名前のDirectoryに移動します。

以下のCodeを打ってVisual Studio Codeを開きます。

App.pyを開きます。

以下と同じCodeがある事を確認します。

2024-09-01のBlogによると少しは実装が違っているようです。

それを直す必要があるのかどうかは今の時点では不明です。

そして

と書かれていました。

これは単に勘違いしてるだけな気がします。

一応動画を見て確認します。

しました。

どうもapp.py fileが元からあったのは教授が前に作成したのが残っていたからみたいです。

最初に作成する時は、このApp.py fileも無いみたいです。

で、App.pyを作成したらSaveしてHugging FaceにCommitします。

この事を動画で、間違えてGradioにCommitします。と言っていました。

これを聞いてGradioに移動すると勘違いしたみたいです。

解決しました。

Visual Studio CodeからCommitする方法ですが、2024-09-01のBlogにしっかりまとめられているのでここでは繰り返しません。

でHugging Faceの自分のPageに戻ると

以下のように作成したPageが表示されます。

成程。

ここで2024-09-01のBlogの内容は終わっていました。

ここから2024-09-23のBlogの内容になります。

最初の方はこのHugging Faceで使用するModelを作成しています。

その辺は無視して進みます。

DownloadしたModelを先程作成したUbuntuのMinimal Folderに移します。

やり方ですが、Explore.exeと打つと

このFolderのExploreが開きますので、

そこにPasteします。

あれ?

これってHugging FaceのFolderだったのか。

Localで作成したJupyter NotebookのFolderだとずっと思っていました。

いや。

まだ勘違いしてる箇所があったのか。

いや、でもこの後、このModelを使用するための実装をExplore上で書いています。

これってHugging Face内にある機能なんでしょうか?

やっぱりJupyter Notebookを起動している気がしますね。

動画を見て確認します。

うわ、やっぱりJupyter Notebookも使用しています。

先程作成したApp.py fileをJupyter Notebookを使用して開いています。

 

そんな事出来るのか?

確認します。

Copilotに質問したら出来るってありました。

更にこの方法ならApp.pyにあるCodeをCell毎に実行出来ます。とも言っていました。

これですわ。

で次の質問になります。

Jupyter NotebookからApp.pyを開いて以下の実装を追加していますが、

Gradioをいきなり使用しています。

これってImportしないで使用出来るんでしょうか?

Copilotに質問すると以下の回答が返って来ました。

やっぱりGradioをInstallする必要はあるみたいです。

ただしこのCommandはJupyter NotebookのCellからすれば良いみたいです。

そして以下のSample Codeが載っていました。

2024-09-23のBlogではここからJupyter Notebookを使用してModelを利用して画像の分析をするための実装を追加しています。

がこの部分は先週、実装した内容とまる被りです。

一個だけ追加の情報を入れないといけないのは、/exportがついているCellとついてないCellの区別です。

でこれが2024-09-23のBlogを見ただけでは分からない。

いや全部書いてあるのかもしれませんが、あまりよく分かりません。

もう一回動画を見直して以下にまとめます。

まず以下の実装があります。

これは必要なんでしょうか?

分かりません。

次の実装です。

ここは先週実装した内容とほぼ同じ内容です。

私の実装にはDefで定義したFunctionはないので、ここで定義しないといけないFunctionはありません。

次ですが、FolderにあるDogのImageを開いています。

これはExportがついてないです。

次はLoad_learner()関数です。

これはExportがついていました。

勉強した結果を確認するための実装です。

これはExportがついていません。

ここまでは先週実装した内容です。

ここからGradioが出て来ます。

これは確かGradioにはMapだかDictionaryだかの機能が無いのでここで変換する必要がある。ってどっかに書いたはずです。

動画を見たら、GradioはPyTorchのTensorを扱わないのでこういう書き方をする必要がある。って言っていました。

次のCellで試しに実行していました。

同じ結果が表示されています。

次の実装です。

ああ、これは意味が分からん。

Gradioを使用していますね。

これは後で考えます。

このCodeを実行すると以下の表示がされます。

で表示されたURLを開くと以下のようなHomepageが完成してる訳です。

うーん。

成程。

ここまでの内容を一端LocalなJupyter Notebookで出来るか試す必要がありますね。

その後で、Hugging Faceで同様の内容をやって、最後にApp.pyにこの実装をUpするのか。

Upする方法まで勉強します。

2024-09-23のBlogでは以下のようにやっていました。

結果です。

うーん。

一応はBlogを読んだだけでもやり方は理解出来ますね。

しかし一寸心配なので動画でもやり方を確認します。

動画を見て気が付いたんですが、Jupyter Notebookで開いていたのはApp.pyではなくApp.ipynbでした。

特に追加する情報はなかったですが、これもいきなりHugging Faceで試すのではなくLocalなJupyter Notebookで一回試しておきたいですね。

名前がapp.pyになるのは最初に以下の実装を追加していたからだそうです。

この後、Pushをすればここで作成したApp.pyがHugging FaceにUploadします。

おお、やっと意味が分かった。

4. Nvidia Omniverseの勉強

今週からNvidia Omniverseの勉強はNVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial [4]の勉強と公式SiteであるNvidia Omniverse Issac Sim [5]の勉強の2つに分けます。

4.1 NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial [4]を勉強する

4.1.1先週の復習など

先週は久しぶりにOmniverseを起動させたんでした。

そしてCreateが無くなってる事を知りました。

更にDriveを起動させてLocalhostにLoginしようとしたら出来なくなっていて、色々調べたらadminと小文字で打つ必要がありました。

更にOmniverseを閉じたらDriveが閉じられなくなって、ずっとLocalhostがActiveな状態になっていました。

これは、もう一回OmniverseのLauncherを開始したら、DriveのIconも表示されるようになったので、そこから閉じ、直す事が出来ました。

もう一回Omniverseを起動してみます。

取り敢えずOmniverse Launcherを起動させました。

Driveは勝手に起動しました。

AdminでLoginしました。

Composerを起動させました。

前回作成したFileが見つかりません。

仕方ないので別なFileを開いてみます。

これはCreateで作成したFileです。

そうか当然ですがCreateで作成したFileも開ける訳です。

今度はIssac Simを開いてみます。

いきなり訳分からんのが出て来た。

分からないのでStartを押します。

結構時間がかかって以下のWindowが開きました。

取りあえずここまで確認出来たら準備体操としては十分です。

一端Omniverseは閉じます。

4.1.2 作成したURDFのFileをIssac SimにImportする

やり方は2024-09-23のBlogに書いてありました。

じゃあ、やってみますか。

Issac Simをもう一回起動しました。

URDFをImportします。

Isaac Utilsを開き、WorkflowからURDF Importerを選択します。

URDF Importerが開きました。

Fix Base LinkのCheckを外します。

Joint Drive TypeにVelocityをセットします。

Convex DecompositionにCheckを入れます。

Input Fileに前回生成したURDFのFileをセットしました。

Importを押しました。

何も表示されません。

Importはされているみたいです。

うーん。

どういう事?

一端閉じて考えます。

考えました。

これは別のURDF Fileを開いて確認するのが一番早いです。

公式SiteにImport URDFがありました。

https://docs.omniverse.nvidia.com/isaacsim/latest/advanced_tutorials/tutorial_advanced_import_urdf.html

そうだ。こっちも勉強しよう。とか言ってたんだ忘れていました。

ExampleからFranka PandaをImportしました。

3D Modelが表示されています。

うーん。

Stageを見ると以下のようになっていました。

GeomとかのMeshを示しているような表記があります。

半年かけて作成したUDRFの方は以下のDataしかありません。

でもTutorialを見ると同じです。

うーん。分からん。

URDFを開いてみたら以下のようになっていました。

URDFをCopyして別の場所に移動させたからPathが認識出来ないんだ。

しかしOmniverseからUbuntuにはAccessできません。

ならばMushr_descriptionごとCopyしてWindowsに持ってきます。

出来ました。

USD Fileも出来てました。

新しいStageにこのUSDを配置してみます。

こっちも出来ました。

はあ。疲れた。

4.2 Nvidia Omniverse Issac Sim [5]の勉強

今週から公式SiteのNvidia Omniverse Issac Sim [5]も一寸ずつ読む事にします。

4.2.1 What Is Isaac Sim?を読む

Issac SimはRobotのDesign、TrainingとTune、そしてDeployを出来るだけ簡単に出来るように設計されてるそうです。

ふーん。と軽く読んだらここで言うDesign、TrainingとTune、そしてDeployには特別な意味があり、それについても解説していました。

<Design>

Unified Robotics Description Format (URDF)などからImportしUSDに変換出来るようにした事で、Dataの統一と交換を可能にするDesignになってるそうです。

こうやって聞くとUSDを採用した事はかなり凄い事ですね。

<Tune and Train>

ここは専門用語が多すぎて、言いたい事がよく分かりません。

唯一理解出来たのは、このIsaac Simを利用すれば現実の世界でTrainingするのと同じ事が仮想空間でも出来るという事です。

<Deploy>

単にRobotをTrainingするだけじゃなくて、現実の目的に合わせた色々なApplicationやExtensionを自作して追加する事も可能だそうです。

<Useful API links>

Isaac Simに関連するもののAPIのLinkが載っていました。

<Useful Manuals>

Isaac Simに関連するもののManualが載っていました。

<Getting Started>

初心者向けのTutorial集です。

気になったのは

これですね。

Reinforcement learningについてのTutorialですね。

<System Architecture>

System Architectureが何を指しているのかは分からないんですが、以下の図が非常に興味深かったです。

まずLsaac LabはTrainに繋がっています。Deployした後にROSがあります。

Isaac Simの目的は他に存在しているSoftと競争するのが目的ではなく、協力して発展していくのが目的だと言っていました。

<Omniverse Kit>

Omniverse Kitについての解説です。

<Development Workflows>

他のWorkflowとも協力してやっていけると書いていました。

<USD>

USDについての解説です。

以上でした。

こんな感じで、来週から、一寸ずつ読んでいくことにします。

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

5.1 VroidとUE5の勉強

5.1.1 UE5 Gameplay Animation Sample | Climbing System (Freeclimb) \\ Tutorial [6]を勉強する

この動画で、壁を上るAnimationを追加する方法が説明されていました。

これを勉強すればAnimationの追加をする方法が分ると思います。

これを勉強します。

ここまで壁を登れるようにしたんですが、最後の登るAnimationを追加してないので、ここから登る事が出来ないそうです。

この部分をこれから作成するみたいです。

まず必要なAnimationを全部選択して

Retarget Animationを選択します。

すると以下の画面が表示されます。

ちなみに使用しているUE5のVersionは5.4だそうです。

TargetにSKM_UEFN_Mannequinを選択します。

以下のようにSKM_UEFN_Mannequinが表示されます。

IPとつくAnimationを全部選択しました。

以下のようなAnimation Sequenceが生成されます。

AnimationからBlend Spaceを選択します。

SkeletonにSK_UEFN_Mannequinを選択します。

更に名前をBS_ClimbingXと名付けました。

開くと以下のようになっています。

この設定をやり直すのは面倒なので完成したので説明すると言っていました。

Blend Spaceの作成方法は別のTutorialを参考にする事にします。

これが完成したらAnimation Blueprintの改良をします。

でIs ClimbingのBooleanの解説になります。

で以下の部分の解説になります。

これは何を説明しているのでしょうか?

恐らく先程のBooleanの値を得る方法を説明しているんだと思います。

結構複雑な事をしています。

Sphereを追跡させてどうするんでしょうか?

以下のようになっています。

あ、分かった。

これで壁の終わりを検知するんです。

で、壁の終わりに当たると以下のStop Climbingノードが実行されます。

うーん。

これは説明があまりにもごもごしていて頭にまったく入って来ません。

取りあえず最後まで見てどうするか考えます。

Animation Blueprintの設定が終わったら、今度は以下のCharacterのBPを開きました。

Anim Classを開きました。

結局、ここでAnimationを追加するの?

また、Characterに戻ってState MachineのClimbingを以下の場所にセットしました。

この動画みて理解出来る人がいたら奇跡です。

まったく何をやっているのか分かりません。

で動画は終わりました。

5.1.2 UE5 Gameplay Animation Sample | Climbing System (Freeclimb) \\ Tutorial [6]を勉強した感想

ほとんど何をやっているのか分からなかったですが、分かった事もあります。

それはUE5.4になってもAnimationの作成方法は少なくとも基礎の部分はUE4の頃と同じだという事です。

UE5を起動してそれを確認します。

Anim Classを見ると以下のAnimation BPがセットされていました。

開きます。

Amin Graphを開きます。

ぎええ。

なんじゃこれは。

まずは通常版のUE5で確認する事にします。

ABP_Mannyを開きます。

Anim Graphです。

こっちならまだ理解出来そうです。

今週はこっちを勉強します。

Locomotionを開くと

が表示されます。

ここまでくれば前と同じです。

Idleを開きます。

このMM_Idleノードに

Animation Sequenceがセットされています。

今度は矢印をClickします。

Should MoveノードがBooleanになるのか。

Event GraphにこのVariableの値を指定する実装がありました。

全部の実装ですが、

Jumpした時のAnimationはここには無いですね。

Third Person Characterの実装にJumpノードがありました。

このJumpノードは既存のNodeのようですね。

でもここにはJumpのAnimationは無いでしょう。

何処でJumpのAnimationを設定しているんでしょうか?

またAnim Graphに戻って来ました。

これだな。

あれ?

Control Rigノードとかあります。

このNodeの意味は不明ですね。

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

来週はこのControl Rigノードの内容から調べる事にします。

6. Houdiniの勉強

6.1 VEX Isn't Scary Project - Part 3: Geometry [7]を実装する

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

<Intro>

特になし

<Time Scale>

前回のTutorialで使用したAttribute Wrangleノードの名前をCircle_Setupに変更しました。

Time Scaleを作成します。

まずTimeScaleと言う名前のVariableを作成しました。

更に@Frameが使用されている部分をTimeScaleに変更しました。

Testします。

思っているより遅いです。

速度を3倍にしました。

<Primitive Groups>

次にはGroupを作成します。

これは以下の事をやるのに便利だからです。

  • PointとLineを分ける
  • SphereをCopyする

まずAddprim()関数にVariableを追加します。

そしてSetPrimeGroup()関数を使用してこのPrimをlinesというGroupに追加します。

出ました。

SetPrimgGroup()関数、SetPointGroup()関数です。

Pointの方も同様にします。

先週のBlogには

と書いていましたが、実際はPointです。

<Separate Groups>

以下のように2つのGroupが出来ています。

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

Blastノードについてです。

なんとこのNode、PrimitiveやPointを消す働きをするそうです。

以下のように設定しました。

BlastノードのGroupに指定した名前がDeleteされています。

だからLinesをセットしたBlastの名前はSpheresになっています。

Spheresノードの方から実装しています。

結果です。

おお。

らしくなって来ました。

Spheres

Nullを追加して名前をSpheres_GEO_OUTにしました。

<Polywire>

今度はLinesの方を実装します。

LinesをPolywireノードを使用してPolygonに変換しました。

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

Circule Set UpノードのLineの値を4に下げると

こうなりました。

確かこのPolywireノード、色々設定を変更したはずです。

が先週のBlogにはその値が書いて無いです。

Tutorialを見て確認します。

と思ったら先週のBlogにやり方が書いてありました。

Wire Radiusの値を以下のようにしました。

更にSub Divideノードを追加しました。

いや、Tutorialを見たらやっぱり先週のBlogには書いてないNodeのParameterの調整をしていました。

それらをして、以下のようになりました。

次にTubeノードを追加します。

結果です。

<Transform Handle>

Tubeを以下の位置に移動しました。

<VDB From Polygons>

Vdb from polygonsノードを追加します。

Voxel Sizeの値を0.005にしました。

結果です。

ConvertVDBノードを追加して

Convert toの値をPolygonに変更しました。

ドンでもない数のMeshが生成されています。

Tubeノード側も全く同じ事をします。

こっちも細かいMeshが形成されました。

TutorialにはVDBを追加するのは以下の理由があるからだ。と書かれていました。

確かに均等に分割されています。

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

Normalを表示したら以下のように凄い事になりました。

<Transfer Normals>

Attribute Transferノードを追加して

設定も先週のBlogでまとめたように変更しました。

特に外観に変化はありません。

Attribute Wrangleノードを追加して

以下の実装を追加します。

以下の実装を追加します。

これで先週のBlogの内容の実装は終わりました。

Testします。

なんだこれ?

出来てないです。

うーん。

どこを間違えてしまったのでしょう。

今週はここまで。

直すのは来週やる事にします。

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

7.1 onnxruntimeが無い事について

ComfyUIを起動させると以下のような警告が表示されます。

Onnxruntimeがないと言っています。

更にその下では

と言っています。

どうも私のVideo CardにはOnnxが入ってないみたいです。

そしてそのせいで計算が遅くなっているみたいです。

これについて色々調べて、大体どうしたら良いのか分かったんですが、どのように理解したのかをまとめておいた方が良い気がしています。

ので、ここにまとめ直す事にしました。

7.2 ComfyUI_Portable "Onnxruntime not found or doesn't come with acceleration providers" #4999 [7]について

今、Onnxruntime、ComfyUIで検索するとこのSiteが一番上に表示されます。

結論から言うとこのSiteの言っている事は半分ぐらい間違っている可能性が高いんですが、Googleが一番お勧めしているのでまずこのSiteについて解説します。

このSiteでは以下の方法で直ると言っています。

まず以下のCommandでInstallされているPyTorchをUnstallして、別なVersionのPyTorchをInstallします。

次に今あるOnnxruntimeをUninstallして別なVersionのOnnxruntimeをInstallします。

でComment欄に以下のように書かれています。

python_embeded\python.exe -m pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

 

つまりPyTorchをUninstallする必要はないそうです。

しかしonnxruntimeをInstallするには別なCommandが必要だそうです。

7.3 How to Resolve DWPose/Onnxruntime Warning (or How to Run Multiple CUDA Versions Side-by-Side) [8]の回答

このSiteには以下のように書いてありました。

onnxruntime-gpuが、システムにインストールされているものとは異なるバージョンのPyTorch/CUDA(v11.8)を必要とすることを意味してるそうです。

PowerShellから以下のCommandを実行すると

python -c "import torch; print(torch.__version__); print(torch.version.cuda)"

こんな感じの回答が返って来るそうです。

しかしonnxruntime-gpu が現時点(この記事が書かれたのは一年前)でSupportしているPyTorch/CUDA Versionは11.8 だそうです。

で解決策としてはPython virtual environments (venv),を使用してComfyUI environmentの時だけ11.8のPyTorch/CUDA Versionを使用するような設定に変更するそうです。

はい。

で以下の手順が紹介されています。

Python仮想環境のSetup>

  1. Pythonをインストールする(公式サイトからダウンロード)
  2. PowerShellを開き、ProjectのDirectoryに移動する

cd path\to\ComfyUI

  1. 以下のCommandでVirtual Environment:を作成する(myenvは何でも良い)

python -m venv myenv

  1. 以下のCommandでEnvironmentをActivateします。

.\myenv\Scripts\activate

これで仮想環境がSetup出来るそうです。

<PyTorch for CUDA 11.8のInstall方法>

  1. 以下のCommandを実行して今のPyTorch VersionをUninstallする(仮想空間を初めて作成した場合はこの作業は要らない)

pip uninstall torch torchvision torchaudio

  1. 以下のCommandを実行してPyTorch for CUDA 11.8をInstallする

pip install torch==2.1.1+cu118 torchvision==0.16.1+cu118 torchaudio==2.1.1+cu118 -f https://download.pytorch.org/whl/torch_stable.html

  1. 以下のCommandを実行してPyTorchのVersionを確認する

python -c "import torch; print(torch.__version__); print(torch.version.cuda)"

正しくInstall出来たら以下のようになるそうです。

<ONNX RuntimeのInstall>

最後に以下のCommandを実行してONNX RuntimeをInstallします。

pip install onnxruntime-gpu

正しくInstallされた場合は以下の回答が表示されるそうです。

DWPose: Onnxruntime with acceleration providers detected

でComment欄に以下のように書かれていました。

以下のCommandを使用すればCuda 12.xで動くOnnxruntimeがInstall出来るそうです。

pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

しかしこの回答も一年前のもので現在はどうなのかは不明です。

で、そもそも自分のPCのPyTorchやCudaのVersionを知らないのでその辺を先に調べる事にしました。

7.4 PowerShellからPythonが使えない!

ComfyUIを起動するとTerminalには以下の表示が出ます。

このPythonはComfyUIのFolderにあるPython.exeを使用してるはずです。

今、私のPCに入っているPythonのVersionを見ると3.13.2だからです。

ではPython.exeを使用するためにPython_embeded Dirctioryまで移動して以下のCommandを実行すると

Python 3.13.2との返事が返って来ます。

つまり、Python.exeが使用出来ないんです。

ところが、Command Promptから実行すると

との返事が返って来ます。

何でなんでしょう?

まあいいです。Command Promptから実行すれば良いだけです。

7.5 ONNX RuntimeをInstallする

ではONNX RuntimeをInstallするための手順をまとめます。

ComfyUI_Portable "Onnxruntime not found or doesn't come with acceleration providers" #4999 [7]では結局以下のCommandを実行すれば良いという結論になりました。

python_embeded\python.exe -m pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

How to Resolve DWPose/Onnxruntime Warning (or How to Run Multiple CUDA Versions Side-by-Side) [8]では

pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

となっていました。

これは、Directoryの場所が違うのと、Python.exeから実行しないといけない。の2つの条件が違うだけで、同じCommandです。

私の場合は以下のCommandになります。

python.exe -m pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

後は、仮想空間でやる場合とやらない場合の違いが分かりません。

それについてはCopilotに聞いてみます。

以下の回答が返って来ました。

まあ、これは今の時点で理解してる内容と同じです。

もう少し深く聞いてみます。

以下の回答が返って来ました。

一応、Think deeperで聞いているんですが、なんか返答が軽いです。

で核心の質問に移ります。

回答です。

うーん。

本当かな。

Perplexityにも聞いてみました。

同じような回答でした。

うん。

Virtualは使用しないでやる事にします。

つまり以下のCommandを実行するだけです。

python.exe -m pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

後はOnnxruntimeのVersionの確認とか、Uninstallする方法とかか。

Perplexityの回答は一寸違っていました。

これは失敗しても実害無いでしょう。

1.18.0が入っていましたね。

これを消してから別なVersionのOnnxruntimeをInstallする必要があるのかな?

Onnxruntime 1.18.0と互換可能なPytorchのVersionについても確認します。

PytorchのVersionは2.3.1まで大丈夫って言っています。

Reference先のSite()を見ると以下のように書いてありました。

あれ?自分のPyTorchのVersionを忘れてしまいました。

PyTorchのVersionは2.5.1 + cu124でした。

成程。

これだとOnnxruntimeをUpdateしないとPyTorchとの互換性は無いですね。

では今InstallされているOnnxruntimeをUninstallすべきかどうか調べます。

まずCopilotに聞いてみます。

絶対しろ。って言っています。

うーん。

これで新しいVersionのOnnxruntimeが正しく機能しなかったらComfyUI自体が動かなくなってしまいますね。

その時は、ComfyUIを消して再Installすれば良いのか。

まあ出来なくはないか。

Perplexityは以下の回答が返って来ました。

そうだ。

これを外付けのHDDにCopyしとけば良いんだ。

それなら失敗してもこのFolderを戻せば良いだけです。

何と外付けHDDにCopyするのに30分もかかりました。

確かにSizeは大きかったですが、そんなにかかるもんでしょうか。

まずはこのCommandから試してみます。

python.exe -m pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

結果です。

あれ?

Updateしてなさそう。

確認します。

駄目じゃん。

前のVersionのOnnxruntimeのままです。

今度はOnnxruntimeをUninstallしてからやります。

しました。

これでInstallします。

同じ結果ですね。

確認します。

なんとOnnxruntimeなんてないよ。って答えが返って来ました。

ひええ。

仕方ありません。

今度は以下のCodeでOnnxruntimeをInstallします。

結果です。

もう一回Onnxruntimeを確認します。

おお、今度はVersionが1.20になっています。

うーん。

出来たって事?

テストしてみます。

同じ警告が表示されてます。

うーん。

今回は諦めるか。

一応、既存のWorkflowで確認しましたが、画像や映像が生成されないという事は無かったです。

7.6 Image to Video ( ComfyUI Workflow using AnimateDiff and IP Adapter ) ready to use [9]を勉強する

今度はImageからVideoを生成するためのTutorialを勉強します。

以下の手順が説明されていました。

やってみます。

DownloadしたWorkflowをDropします。

Errorの表示のあるNodeがありました。

Nodeを追加します。

Errorが消えないNodeがありましたが、以下のComment欄のAdviceに従ってそのNodeを取り替えました。

ModelをDownloadします。

ModelsのFolder内にIpadapterと言う名前のFolderがないです。

自作しました。

DownloadしたModelの名前がModelになっています。

CLIP-ViT-H-14-laion2B-s32B-b79K_modelに変更しました。

これは今あるやつから選択します。

以下のModelをセットしました。

これは最初からSetされていました。

それぞれのNodeの設定も確認します。

再起動してそれぞれのNodeからModelをセットし直します。

Imageもセットしました。

実行します。

出来ました。

けど

これになってしまったの?

やっぱりSD1.5は駄目ですね。SDXLでやらないと。

CIVITAIのAnimationを見てたら以下のModelを使用して凄いAnimationを作成してるのがありました。

しかもこのModel、SD1.5です。

これを使用してAnimationを作成してみます。

www.youtube.com

 

出来の良かったのだけまとめて動画にしました。

まず服装が一貫してないです。

更に、指の数が5本ではなくなっています。

アニメ調の絵柄を指定しましたが、一寸アメコミ調になってしまいます。

AIによる映像の制作は想像してたよりも制限が多いです。

Illustrationの制作ですが、

CheckPointノードにhassakuXLIllustrious_v13StyleA.safetensorsを使用したのが

もっとも綺麗な結果が出ています。

こんな感じです。

ただしAI Illustration Generatorで生成したIllustrationはこんな感じでもっとすごいです。

こんな感じの絵を数秒で作成してくれます。

さらにPixverseというSiteで映像化するとこんな感じの映像が作成出来ます。

www.youtube.com

凄いです。

このLevelの映像がComfyUIで直ぐに作れると思ったんですけど、出来ないですね。

ただこのSite、無料で利用できるのは一日2回までの制限があります。

8. DirectX12の勉強

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

8.1.1 Resource State | D3D12 Beginners Tutorial [D3D12Ez] [10]の最後の10分を実装する

<Swap Chain>

の続きからやります。

今度はGPUが実際に動いている事を見せるそうです。

Release ModeでCompileします。

NVIDIA Nsight Graphicsから開きます。

真っ黒で左上に文字が表示されているだけの画面が表示されました。

F11を押すとFrame Debugger : Activeと表示されました。

更に以下にしめしたBarが表示されるようになりました。

Bar上にある丸を左とか右に移動出来ます。

Renderingの実装が出来たら、片方は真っ黒で、もう片方にはRenderingした3Dが表示されるそうです。

中を見ると以下のようになっています。

<Event View>

以下のDescriptionのところを見ると今何が起きているのかが分かります。

上からReset()関数が呼ばれて、今ExecuteCommandList()関数が実行されています。

このExecuteCommandList()関数がGPUで動くEventを開始しているそうです。

この後はNisightの機能を紹介する感じでExecuteCommandList()関数が保持しているDataを紹介したりしていました。

これでこのTutorialは終わっていました。

うん。

Nsightは実際には使用しないのでこれは見るだけで良いです。

来週は次のTutorialを勉強します。

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

8.2.1「 5.8.3 Descriptor Range」を勉強する

教科書の説明ではDescriptor Rangeの役割をDescriptor Heap上に存在する同じ種類のDescriptorを一個にまとめる事だと説明していました。

一応、Copilotにも聞いてみます。

同じような説明がありした。

要は同じTypeのDescriptorだったら一辺に読んだ方が効率が良いので、GPUに同時に読めるDescriptorが何個あるのかをDescriptor Rangeで教えるという事です。

CopilotのThink Deeperにも同じ質問をしてみました。

この例えはあんまり良くない気がします。

本を渡すのに一個ずつ渡すのも、まとめて渡すのもそんなに違わないでしょう。

いや、図書館が5階建て位の大きさだったらそんな事ないか。

本が種類毎にまとめられていたら、同じ種類の本は一回取りに行けばいいから、まとめたら楽になるか。

次のParagraphはDescriptorの説明をしています。

でDescriptor Rangeの説明です。

さっきの本の説明と同じですね。

このあたりの仕組みを理解するための用語の確認です。

こうやって直前で一端説明してくれると、前に勉強した内容についても思い出せて、全体像を描くのが楽になります。

Descriptor Rangeの設定方法も例を示して説明していました。

Descriptor Rangeがある事のMeritについても説明していました。

Performanceが上がるのは当然ですし、最後の整理整頓になるのも納得です。

でも2番目の説明のDynamic Resourceってなんなんでしょう。

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

こういう解説が欲しかった。

でもここで述べられている事、あんまり理解出来ないですね。

こんな話ももっと深く勉強する時は知る必要があるんだ。位の理解で先に進みます。

最後にPro Tipです。

GPUによるRenderingの速度を速めるためには、Descriptor TableやこのDescriptor Rangeをしっかり扱う事が大切だと。言っています。

Descriptor Rangeは、いわゆるAccelerate Computingの分野にも関係する結構大事な部分だったんですね。

以上で、CopilotのThink Deeperの説明は終わりでした。

結構、勉強になりました。

公式SiteのCD3DX12_DESCRIPTOR_RANGE structure [11]を見ると、

以下のParameterを使用するそうです。

ここの機能についてはここにまとめるのはSkipします。

Sample Codeを見ると以下のように指定していました。

完成したDescriptor Rangeは前に作成したRoot Parameterにセットします。

この後、教科書ではRoot Signature DiscのParameterの設定をしていますが

これは既にやっています。

これでこの節の説明は終わっていました。

Descriptor Rangeについては大体理解しました。

今週はここまでにして実装は来週やる事にします。

9. まとめと感想

なし。

10. 参照(Reference)

[1] 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

[2] Creating and Modifying Control Rig. (n.d.). Unreal Engine. https://dev.epicgames.com/community/learning/courses/5vL/unreal-engine-creating-and-modifying-control-rig/DnO1/unreal-engine-creating-and-modifying-control-rig-overview

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

[4] NVIDIA Isaac Sim - MUSHR RC Car - Ackermann Tutorial. (n.d.). YouTube. https://www.youtube.com/playlist?list=PL60qgWqGu6k82AJ2SDWOscEKLjCc5tdEW

[5] What is Isaac Sim? — Omniverse IsaacSim. (n.d.). https://docs.omniverse.nvidia.com/isaacsim/latest/index.html

[6] kaiserflamius. (2025, January 3). UE5 Gameplay Animation Sample | Climbing System (Freeclimb) \\ Tutorial [Video]. YouTube. https://www.youtube.com/watch?v=hPq_R4c4ogw

[7] Comfyanonymous. (n.d.). ComfyUI_Portable “Onnxruntime not found or doesn’t come with acceleration providers” · Issue #4999 · comfyanonymous/ComfyUI. GitHub. https://github.com/comfyanonymous/ComfyUI/issues/4999

[8] How to Resolve DWPose/Onnxruntime Warning (or How to Run Multiple CUDA Versions Side-by-Side). (n.d.). Reddit. https://www.reddit.com/r/comfyui/comments/1842k7j/how_to_resolve_dwposeonnxruntime_warning_or_how/

[9] Image to Video ( ComfyUI Workflow using AnimateDiff and IP Adapter ) ready to use | Civitai. (n.d.). https://civitai.com/articles/4339/image-to-video-comfyui-workflow-using-animatediff-and-ip-adapter-ready-to-use

[10] [GUIDE] ComfyUI AnimateDiff Guide/Workflows including Prompt Scheduling - an Inner-Reflections Guide | Civitai. (n.d.). https://civitai.com/articles/2379/guide-comfyui-animatediff-guideworkflows-including-prompt-scheduling-an-inner-reflections-guide

UE5の勉強などなど

1.今週の予定

先週から以下のように勉強するようにしました。

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

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

2.映像作成用UE5の勉強

先週までの題である「映像作品としてのLevelの作成」は上記の題に変更する事にしました。

Control RigなどのLevelの作成とは一寸ズレた内容も勉強しているのが理由です。

ただしControl Rigから変更したAnimationもLevel Sequenceに追加するので広義の意味ではLevelの作成に含ます。ので先週までのこの節の題である「映像作品としてのLevelの作成」が間違っていた訳ではありません。

2.1 PCGの勉強

2.1.1 先週の勉強の復習

先週の勉強をBlogを読み返す事で復習します。

Floorを作成してるだけでした。

特に難しい所は無かったです。実装します。

2.1.2  Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]の最後の部分を実装する

<Interior Floor Generation>

先週のBlogには以下の実装をします。とだけ書いてあってどこでするのかが書いていません。

どうせPCB_Building内でしょう。そこに実装しておきます。

作成しました。

次に新しいPCG Graphを作成し、PCG_CopyPointUp_Simpleと名付けます。

しました。

これをPCG Building GraphにDropします。

すると以下のように聞いてくるので

Create Loop Nodeを選択します。

PCG Copy Point Up Simpleノードが作成されました。

PCG Copy Point Up Simpleノードを開きます。

Inputノードから設定していきます。

PinsにあるIndex[0]の値を以下のように変更しました。

更にIndex1を追加して以下のように設定を変更します。

こっちのPin StateはNormalのままですね。

なんか一貫性が無いような。

Outputノードの設定も変更しました。

Inputノードに戻ってIndex2を追加します。

PCG_CopyPointUp_Advancedノードを開きます。

以下の箇所をCopyします。

しました。

以下のように繋ぎました。

PCG Copy Point Up Simpleノードの実装はこれで終わりみたいです。

PCG Building Graphに戻ります。

以下の実装を追加しました。

Original Sample PointsとFloor Loopsは何を計算した値なのか覚えていません。

この2つは後で復習します。

Static Mesh Spawnerノードを追加します。

このStatic Mesh SpawnerノードにFloorに使用するStatic Meshを追加します。

なんと適切なFloor用のStatic MeshがMega Scanにはありません。

Mega Scanにある建物用のStatic Meshは外装だけです。

FabにあるFreeのAssetに以下のがありました。

室内のScreenshotを見ると綺麗な床をしています。

このAssetをImportしてこの床を使用出来ないか試してみます。

以下の4つのFloorがありました。

それぞれ見ていきます。

SM_Floor_3です。

もうこれで良いじゃんと思ったんですが、Sizeは

でかいし、300cmじゃないです。

このズレを調整するのに特別に計算する必要があるかもしれません。

今、WallSizeは400cmです。

0.64516129032倍と0.66666666666倍してSizeを調整する必要があるかもしれません。

これだったら400㎝のStatic MeshからFloorを自作した方が簡単かもしれません。

GeometryからBoxを選択してSizeを400x400x24にしました。

Materialに先程DownloadしたCar DealerのFloor3のMaterialを追加しました。

結果です。

うーん。

使えそう。

このStatic Meshの名称はBox_F1956A47となっていました。

以下のFolder内にあります。

分かり易いように名前をMyFloor1に変更しました。

セット出来ました。

結果です。

完璧に出来ていました。

近づくとこんな感じです。

だけど2階のFloorは生成されないです。

これであってるのか?

あってないです。

Tutorialを見るとそれぞれの階のFloorが形成されています。

なんで形成されないんでしょうか?

InputのIndex[1](Loopの値をInputするPin)のUsageの値がNormalのままでした。

直します。

はい。

直りました。

外から見た感じです。

うーん。

一寸は変わってるんでしょうか?

Floorを消してみました。

確かに全然違うわ。

一応これで、 Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]の実装が終わりました。

2.1.3  Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]を勉強した感想

WallのStatic Meshを改良して窓から内部が見れないようにすればFloorの設定は要らないかもしれません。

後、縦の階だけじゃなくて横の部屋も階段とかが5部屋に一回とか入るはずです。

そういう部分の改良が欲しいですね。

後、屋根が無かった。

屋根を作成する必要があった。

Tutorialを見たらTutorialの3でRoofを追加していました。

Tutorialの2ではWallのStatic Meshで内側が透明になっているのでも使用出来るような設定をしていました。

うーん。

これは一応、全部勉強します。

その後で、どうやって改良するのかを考える事にします。

後、Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]の実装で理解してない部分があります。

その辺を理解するために復習もやります。

最後に今日の実装で、以下の2つの部分はやってません。

Floorの位置もずれてないし、FloorのSizeもWallのSizeと同じなのでこれらの実装で調整する必要が無いからです。

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

2.2.1 先週の復習

先週、Control Rigについての勉強をしたのは覚えていますが、Control Rigの何を勉強したのかはすっかり忘れてしまいました。

Blogを読み直して思い出します。

まずControl Rigの内Skeletal MeshにControl Rigを追加する方法を調べていました。

Copilotに聞いたら、簡単にやり方を教えてくれました。

いや。

そんな簡単に出来るなら今までやってるわ。

とかなり疑心暗鬼になりながらこのCopilotの回答のReferenceの動画を見て確認しました。

以下の方法で簡単にやっていました。

更に別な方法でControl Rigを追加する方法も紹介していました。

Dragonで試すと簡単に出来ました。

しかしここで問題発生です。

生成されたControl Rigを開くと

中の実装が何も無いです。

他のDefaultでUE5にあるControl Rigを試しに開いてみると

こんな感じで凄い実装がされています。

更にここで新情報としてUE5.4からModular Control Rigと言うのがReleaseされた事が判明しました。

こっちを勉強すべきなのか全然分かりません。

ので以下のTutorialを見てModular Control Rigについての情報を得る事にしました。

その結果、Modular Control Rigと言うのは、Control RigとSkeletal MeshのCharacterを紐づけるのを簡単にするための技術という事が判明しました。

更にこの方法で動物とかのSkeletal MeshにもControl RigとSkeletal Meshの紐づけが出来ると書かれていました。

これはもっと調べる価値があると思い、Modular Control Rig to Unhuman UE5で検索すると以下のSiteが引っかかりました。

このTutorialを今週する予定だったのか。

最後に公式SiteのControl Rig [2]を読んで終わっています。

これは何が書かれているのか今週確認しましょう。

2.2.2 先週の復習をした感想など

まずDragonから作成したControl Rigですが、Nodeが全く組まれてない点は分かったんですが、肝心のRigはどうなってたんでしょう。

それを確認します。

何も無いです他のControl Rigを開くと以下のようにPreviewには以下のようにControl Rigが表示されますが、

これの設定画面とかは無かったです。

あ、分かった。

私はSkeletal Meshの周りに表示される四角とか丸の事をControl Rigと呼んでいましたが、ここで作成されるControl Rigは別なものかもしれません。

あ、Modular Control Rigで試したら良いんです。

2.2.3 Modular Control Rig Tutorial | Unreal Engine 5.4 [3]を試す

やってみましょう。

AnimationからControl Rigを選び更にControl Rigを選択します。

以下のBoxが表示されるのでModular Rigを選択します。

Modular Rigが生成されました。

名前をMyDragonRigと変更しました。

開くと以下のような画面になっています。

Preview Tabを選択してPreview MeshにDragonのSkeletal Meshを追加しました。

結果です。

おお、真ん中に丸が表示されています。

Animal Spine Moduleを追加しました。

Errorになっています。

あってるかどうか不明ですが一応全部のSocketにModule Assetをセットしました。

TutorialだとModule Assetを追加すると以下のようなRigと矢印が表示されます。

それが表示されません。

やっぱり最初からDragonで試すのは難しすぎた。

人間のCharacterで試します。

Spine Rig Modularを追加しました。

おお四角いRigが形成されています。

しかしShoulder SocketにShoulder Rig Moduleをセットした場合は何も表示されません。

Tutorialでは以下のようにCircleが表示されています。

動く事は動くみたいです。

どんどん追加していきましょう。

ThighのSocketですがShoulder Moduleを追加しろってありました。

TutorialではLegを追加していましたがShoulder Moduleを追加します。

うーん。

これ間違ってますね。

これはShoulderを追加すると滅茶苦茶になります。

Leg Moduleを追加しました。

更にFoot Moduleを追加すると今まで作成した足のSocketが消えてしまいます。

これはバグでしょう。

更にこの状態で足を上げたら以下のようになりました。

Tutorialでは以下のようになってるので

Modular Control Rigはまだ実験段階のようです。

Meta HumanのModelで試してみます。

うーん。

Meta HumanはSkeletal Meshが体の部位毎に分離しています。

これもまた基本から離れているので中止します。

仕方ないです。

Tutorialと同じModelで試します。

Footを追加したらErrorになりました。

何回やっても駄目でした。

もうこうなったら全部手動でControl RigとSkeletal Meshを繋げる方法を勉強します。

2.2.4 更なるControl RigのTutorialの探索

いきなり見つかりました。

公式SiteにControl Rig Resources [4]がありました。

ここにあるCreating and Modifying Control Rig [5]が

Control Rigの基礎から教えてくれそうです。

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

3.AIの勉強

3.1 先週の復習

先週はLecture1の宿題で作成したModelを別なProjectに書き直してCleanを行いました。

更にLocalで動くようにしたJupyter NotebookのProjectの開始方法を確認しました。

で後になって気が付いたんですが、Cleanした後、もう一回Leanerを走らせないとCleanしたDataでTraining出来ません。

その辺の解説がLectureにも教科書にも無いです。

そこから今週は始めます。

3.2 Cleanした後の学習方法について

Lectureを見直したんですが、DataをCleanした後にもう一回Trainingとかしてないです。

しかも学習にいらないImageを排除するのにLearnからやっています。

Learnは勿論AIの学習で作成されたObjectです。

しかも最後のFileを消すCodeもLearnから作成されたCleanerを使用しています。

ひょっとするとこれ以上やらなくても良いのかもしれません。

Copilotに聞いてみました。

だそうです。

Data Loaderの作成からやり直せって言ってます。

この回答が正しいなら、以下のCodeは

Leanerの中をいじっているのではなく学習に使用したImageが入っているFolderを弄った事になりますね。

そっちの方が感覚的には正しい気がします。

取りあえずはこのCopilotの回答が正しいと仮定してData Loaderの作成からやり直します。

Learnerの実装も追加しました。

テストもします。

最後におまけでConfusion Matrixも表示させます。

もう一回実行します。

最初のLearnの結果です。

PikachuのImageを見せてテストしました。

Confusion Matrixの結果です。

あれ?

数が増えてない?

あ、やり直したら前のDataがFolderに残っているのかも?

まあいいや。

Prediction/Actual/Loss/Probabilityです。

やっぱり同じImageが2枚あります。

一端、Colabを閉じてやり直します。

駄目だ。

前のように一週間とか空いた場合はもう一回最初からCodeを走らせる必要がありましたが、今回のように閉じて直ぐ開いた場合は前の計算結果は残っていました。

うーん。

一端、完成したModelをDownloadする方法の復習をやります。

3.3 完成したModelのDownload方法の復習

これ非常に簡単だったはずです。

2024-09-23のBlogにやり方が載っています。

これは簡単なのでここにもう一回書き直す事はしません。

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

これでModelがExportされたはずです。

CopilotのFileを開きました。

Model.pklがありました。

あれ?

Pikachu_or_notというFolderもあります。

ここにImportしたImagesがSaveされていたのか。

これをDeleteしたら最初から学習をやり直せるのか。

まあいいや。

Model.pklをDownloadしました。

3.4 Jupyter Notebookを使用してLocalな環境でModel.pklを動かす

ExportしたModelを使用してPredictionをするCodeを実装します。

前のBlogを見直したんですがその辺りをしっかりまとめた部分が無いです。

2024-09-23のBlogにこの部分を最初に勉強した時の内容がまとめられていました。

ただしこの時はLocalでJupyter Notebookを使用してやっているという事を理解してない状態でまとめたので、解釈の部分がかなり間違っています。

で、最初に2024-09-23のBlogでまとめた内容を復習します。

その後で、この部分のLectureを見直して更にここにまとめます。

2024-09-23のBlogのまとめ>

DownloadしたModelのFileをUbuntuのDirectoryに移しました。

ここに.gitが入っていますが、これってHugging FaceのCloneかもしれません。

この辺のやり方も復習する必要がありそうです。

まず以下の実装をしています。

GradioをImportしていますね。

後、Model内で使用する関数の定義をしていました。

以下の実装でDirectory内にあるImageを開いていました。

次です。

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

これで配置したPkl FileからModelをLoadします。

Load出来たのでPredict()関数を使用して画像の予測をしています。

ここで使用されているimは先程の犬のImageですね。

取りあえずはここまでで良いです。

Hugging FaceとGradioの使用方法が分らなくてもここまでは試す事は出来るでしょう。

別にLectureを見直す必要もないのでここまでの内容を試してみます。

3.5 Jupyter NotebookからModel.pklを動かす

まずピカチュウのImageをDownloadしてUbuntuのDirectory内に配置します。

Window TerminalからUbuntuを開き、このDirectoryに移動します。

ここからJupyter Notebookを開きます。

Homeに先程追加したImageのFileが表示されています。

Projectを開きImageを表示してみます。

確かFastAIはInstallしたはずですが、確認します。

Copilotに聞いたら以下のCommandでInstallされているFastAIのVersionが表示されるそうです。

結果です。

はい。

FastAIはInstallされています。

今度はLectureで使用していたCodeを使用してピカチュウのImageを表示させてみます。

FastAIのVisionを使用出来るようにしました。

Test2のImageをLoadしました。

Test2のImageのSizeを192x192 pixelに変更しました。

Imageを表示させます。

結果です。

出来ましたね。

今度はDownloadしたModel.pklを使用してこのImageがPikachuかどうかを検査します。

DownloadしたModel.pklをこのDirectoryに移します。

以下の実装を追加しました。

実行します。

おお、出来たのか。

あれ?

そう言えば、Functionを代入するのを忘れていました。

けど出来たのか?

うーん。

出来たことにします。

Functionはこの後ColabのCodeを見直して確認します。

<Functionの確認>

以下の関数を作成して使用していました。

が、この関数はImageをネットから集める為の関数なのでJupyter Notebookでは使用しないです。

のでErrorにならなかったようです。

これぐらい出来たら今週は十分です。

来週はHugging FaceやGradioについてやります。

4.Nvidia Omniverseの勉強

先週やっとURDF fileが完成したので、Omniverseの勉強に戻ります。

4.1 2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial [6]の復習

2024-09-23のBlogには2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial [6]を勉強した内容がまとめてあり、

2024-10-06のBlogには2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial [6]を途中まで実装した内容がまとめてあります。

今週はこれらを復習します。

まず2024-09-23のBlogですが、前半はMuSHERのXacroのFileをどうやってURDFに変換するかを解説しています。

これは出来ました。

後半はこのURDFのFileをどうやってIssac Simから使用するのかを説明しています。

そもそもOmniverseの開き方すら覚えていません。

その辺から復習します。

2024-07-07のBlogにOmniverseの開き方がまとめてありました。

これ見て復習します。

しました。

久しぶりにOmniverseを起動させてみますか。

Localhostを開きます。

AdminでLoginしようとしたら出来ません。

admimで入れました。小文字じゃないと駄目だったです。

開けました。

開けたけど、中身が違うような。

Createとかどこにあるんでしょうか?

Libraryを開いたらありました。

Createを開いてみます。

Launchを押しても始まりません。

うーん。

困った。

再InstallしたらとCopilotが言ったので一端消しました。

Exchangeに移動したらCreateがありません。

うーん。

CreateはOmniverse USD Composerに統合されたみたいです。

へえ。

Issac SimでもInstallしてみます。

後、思い出しました。

Cashが入ってないんです。

Cashの意味も不明です。

Omniverse USD ComposerもInstallします。

Create Cinematic Environments in Minutes! Nvidia Omniverse USD Composer Tutorial [7]にOmniverse CreateのTutorialがありました。

うーん。

これ勉強するか。

4.2 Create Cinematic Environments in Minutes! Nvidia Omniverse USD Composer Tutorial [7]を勉強する

もうこれは実装しながら勉強します。

CacheもInstallしました。

ただ使用方法はまだ分かりません。

Omniverse USD Composerを起動しました。

お、CacheがOnになっています。

多分効いているんでしょう。

ではTutorialの方をやっていきます。

<Intro>

特になし

<Download>

Omniverse LauncherからUSD ComposerをInstallする方法を説明しています。

ただ説明と言ってもClickしてるだけでした。

USD Composerを開きましたがTutorialが示しているようなAssetはありません。

と思ったら以下に示したNVIDIA Assetsを選択する必要がありました。

開いたら凄いです。

<Interface>

SkyをEnvironmentにあるSun Flowersに変更しました。

位置を調整しました。

<Tutorial>

以下の箇所からCameraを生成しました。

Assetを追加しました。

以下に示したCameraの横にある三角を押して

Cameraの設定を開きます

これは今まで散々勉強したやつです。

でも今これをいじる気力が湧きません。

うーん。

ここまでとしますか。

続きは来週やります。

<Rendering>

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

今週は両方やります。

5.1 GaeaのTutorialの作成

今回からGaea2のTutorialは中級編になります。

中級編では逆引き辞典のように問題点を説明して、その解決策を説明します。

今回はMountainノードの縁に生じているでっぱりを消す方法を説明します。

中級編では3つの工程のどの工程に関しての話なのかを必ず説明する事にします。

まとめのPowerPointは作成しましたが使用はしませんでした。

5.2 VroidとUE5の勉強

今週は先週、Game Animation Sample内で作成した以下のThird PersonをExportして他のProjectで使用出来ないのか確認します。

これですね。

何とExportしている時点でUE5がCrashしてしまいました。

もう一回やり直します。

もう一回やり直しましたがやはりCrashしてしまいました。

これはExport出来ない仕様なのかもしれません。

一応、Export出来た分だけでも確認します。

ExportしたProjectを開いてDefault Pawn ClassにCBP_Animeをセットします。

Errorが発生しました。

まずCBP_SandboxCharacterのBlueprint内のErrorです。

このNodeにあるPinは今では無くなっていると書かれていました。

そもそもMotion MatchというNodeがありません。

うーん。

よく分からないです。

他のCharacterで試してみました。

新しいCharacterを作成しました。

髪に輪郭線が欲しいですね。

後、動作を追加したいです。

この辺は来週検討します。

6.Houdiniの勉強

6.1 VEX Isn't Scary Project - Part 3: Geometry [8]を勉強する

<Intro>

このLectureでは一般的なHoudiniにおけるGeometryの作成方法を勉強出来るそうです。

<Time Scale>

前回のTutorialで使用したAttribute Wrangleノードの名前をCircle_Setupに変更しました。

Time Scaleを作成するそうです。

Tutorialの説明だと、DefaultのFrameのSpeedだと動きが遅すぎるのでそれを調整するためだそうです。

前回、実装した時Frameの速度って何かの設定を変更したらがくっと変わった気がします。

ここで調整しないといけない理由があるんでしょうか?

まず以下のVariableを作成しました。

更に以下の実装で@Frameが使用されている部分をTimeScaleに変更しました。

以下のTimeScaleでSpeedを調整しています。

<Primitive Groups>

次にPointとLineを分けるそうです。

更にSphereをCopyする必要もあるそうです。

これらの事をやるにはGroupを作成すると便利だそうです。

Groupか。

Groupって何だっけ?

そのためにまず以下のCodeを追加して

Addprim()関数の結果をint型のVariableであるprimにAssignします。

そして以下に示したsetprimgroup()関数を用いてprimをlinesと言うGroupにセットしました。

Setprimgroup()関数について調べます。

公式Siteのsetprimgroup VEX function [9]に以下の説明がありました。

この関数は前に一回使用した記憶があります。

Blogを検索して調べたら2024-02-19のBlogでSetprimgroup()関数についての記述がありました。

2024-02-19のBlogでは Houdini - Wall Tool 07 を勉強しています。

Blogを読み直したら、何とTutorial通りの結果にならなかったのを、自分で勝手にSetprimgroup()関数を使用してCodeを追加し、Tutorial通りの結果になるようにしていました。

思い出しました。

このTutorial Series、この後の動画からぐっと再生回数が減っています。

つまりみんなこの問題を解決出来なかったんです。

私はこの問題をSetprimgroup()関数のお陰で解く事が出来たので、今もHoudiniの勉強を続ける事が出来ています。

そういう因縁のある大事な関数でした。

今度はLineで同様の事をやります。

こっちはSetpointgroup()関数を使用してPointをGroupに追加していますね。

<Separate Groups>

以下のBoxを開くと

Point GroupにSpheres、Prim Groupにlinesがあるのが確認出来ます。

そして以下のように2つのBlastノードを追加して

一つ目には

GroupにLineを設定し

2つ目には

GroupにSphereを追加します。

更にそれぞれのBlastノードの名称もLinesとSpheresに変更しました。

Spheresノードの方から実装しています。

この実装は理解出来ます。

前に散々やったPointに指定した形状を生成するためのものです。

Copytopointsノードを使用しています。

Spheres

Sphereノードの設定です。

別にこの通りにやらないといけない理由はないですが、Primitive TypeをPolygon Meshに変えるとSphereのPolygon数を増やした時に見た目が良くなるので、こっちの方が良いです。

Uniform Scaleの値を小さくしたので以下のような小さなSphereが形成されました。

ここでCopytopointsノードにnullノードを追加しました。

名前はSpheres_GEO_OUTにしました。

こういう所でNullノードを使用するのは確か理由があったはずですが、その理由を忘れてしまいました。

Copilotに聞いたら以下の回答が返って来ました。

このNodeのOutputをどこか別な箇所で利用するのかもしれませんね。

そう言う所にこのNull Nodeを使用するのかもしれません。

<Polywire>

今度はLinesの方を実装します。

LinesをPolywireノードを使用してPolygonに変換しました。

こんな結果になっています。

このPolywireノードでLineから生成したPolygonは、先程生成したSphereが転がる溝を生成するためのもののようです。

WireRadiusSphereの直径と同じ?(少しだけ大きくないといけないんじゃ)になるように以下の実装をしました。

この実装のやり方は

SphereノードのUniform Scaleを右Clickして

Boxを開き、Copy Parameterを選択し

先程のPolywireノードのWire Radiusを右ClickしてBoxを開き、Paste Relative Referenceを選択すれば出来ます。

その後で1.5倍にしていました。

これなら納得です。

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

こんな結果になっています。

次にTubeノードを追加して

Primitive TypeにPolygonをセットし

OrientationをZ軸に変更しました。

Tubeの形状が以下のように変化しました。

Tutorialではこの辺は非常に簡単にやっていますが、見るだけで理解するのは結構大変です。

RowとColumの値も以下のように変化しました。

End CapsもOnにしました。

結果です。

<Transform Handle>

ここまでやって気が付いたんですが、これ結構勉強する内容があってHardです。

やっぱり10分毎に区切って、勉強する週と実装する週に分ける事にします。

左のTool barから以下のIconを選択して

以下のTransformを選択します。

こういう細かい作業でも、なんでいきなりTransformを選択しちゃ駄目なのかとか全然分かりません。

Tubeを以下の位置に移動しました。

<VDB From Polygons>

Vdb from polygonsノードを追加します。

Vdbは初めて使用するかもしれません。

ふーん。

Simulationを作成する時に使用するNode群のようです。

私にはまだ早い内容ですね。

Voxel Sizeを以下の値に変更しました。

次にConvertvdbノードを追加します。

Convert toの値をPolygonに変更します。

Tubeノード側も全く同じ事をします。

何故、こんな工程をかましたのが説明されていました。

これをする事でPolygonが均等に分割されるようになるそうです。

今度はPolywireにNormalを追加して、そのNormalを利用してTubeにPolywireの形状を押し込むそうです。

ConvertvdbノードにNormalノードを追加しました。

Add Normals toの値をPointsに変更します。

<Transfer Normals>

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

更にAttribute TransferノードのPrimitivesの値をOffにし、Pointの値をNにセットします。

更にConditionに移ってDistance Thresholdの値を0.1に変更しました。

Attribute Wrangleノードを追加します。

以下の実装を追加しました。

Multの値を増やすと

以下のようになります。

成程、TubeのPの位置をPolywireのNormalの方向に向かってMultで指定した値だけ移動させたのか。

移動させた後はNormalノードをまた繋ぎました。

Normalの値を元に戻したのかな?

こんな結果になっています。

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

Parameterは以下のようにセットしていました。

結果です。

おおすげえ。

ここで10分たったので、今週のHoudiniの勉強はここまでとします。

結構疲れました。

来週はここまでを実装して、残りの勉強は来週以降やる事にします。

Blur Normal>

<Tube Size>

<BaseGeoOut>

<Poly Wire

<Transform Node>

<Transform Lines>

<Increase Tube Size>

<Add Base Group>

<Add Face Group>

<The Problem>

<The Circle Setup>

<The Axis Visualization>

<The Rotation Visualization>

<Hide Element Trails>

<Rotate>

<Recap>

<Outro>

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

先週、時間が空いた時にComfyUIの勉強をしていました。

それを以下にまとめておきます。

7.1 How to AI Animate. AnimateDiff in ComfyUI Tutorial. [10]を実装する

早く映像を生成する方法を勉強したいのでこれの実装をやる事にしました。

まずWorkflowをDownloadします。

CVITAIのSiteに移動しました。

Attachmentを見ると

これしかありません。

取りあえずこれをDownloadします。

解凍すると以下のようになっていました。

1.5を開くと以下のようになっていました。

VideoのTutorialがあるの?

と思って見たら映像を生成するためのSample用の映像でした。

ComfyUIを開いて以下のWorkflowをDropします。

Boxが開き以下のNoteがInstallされていません。と表示されました。

Managerを開きます。

以下のBoxがWindowが開きました。

Install Missing Custom NodesをClickします。

以下のCustom Nodeが表示されました。

全部にCheckを入れて

以下のInstallを押しました。

Restartを押しました。

Terminalが止まったのでBrowserをRefreshしました。

あれ?

うーん。

正しくRestart出来たんでしょうか?

一端ComfyUIを閉じてもう一回開始します。

うーん。

Errorは消えてるみたいです。

Load Videoノードは最初から繋がっています。

Addressはどうやって取得するんでしょうか?

と思ったらそもそもこのNodeを使用していませんでした。

Load Video(Uploag)ノードを使用しています。

このNodeを追加しようとしたら、

Add NodeからTypeしてNodeを指定する方法がありません。

うーん。

一寸使いにくいですね。

Load Video(Uploag)ノードはVideo Helperの中にありました。

ParameterにあるVideoを指定しようとしたらうんともすんとも動きません。

あ、これはVideoと言うFolderがどっかにあってそのFolderに入ってるmp4 Fileだけ表示するんだ。

うーん。

探したけどないですね。

Copilotに聞いてみます。

いや、Set出来ないから聞いているんだけど。

何回やってもうんともスンと言いませんね。

こんなButtonが一番下にありました。

セット出来ました。

Parameterの値を以下のように変更しました。

これはTutorialの値と全く同じですが、生成されたVideoを見たらそれなりに良い部分を切り抜いているので、これで行きます。

次はControlNet内のNodeを調整します。

Load Advanced ControlNet Modelノードです。

ここにあるModelがセットされていますが、このModel持ってないです。

Managerを開きますが、Tutorialで言っていたようなInstall Modelと言うButtonはありません。

ただ代わりにModel ManagerというButtonはありました。

これを押してみます。

以下のWindowが開きました。

このInstallと言うやつにCheckをつけてInstallすれば良いのでは?

やってみます。

と思ったら431個もInstallしないといけません。

これは実行した後にErrorになったら考える事にします。

もしかしたらErrorになったらInstall ModelのButtonが現れるのかもしれません。

実行してみました。

Errorになりました。

しかしManagerを開ても何も変わりません。

Model Managerを開いて直接、Control_v11p_sd15_lineartと打ってみました。

お、これが必要なのか。

Instillします。

出来たんですが、Refreshしてくれ。と出て来ました。

Main Menuにあると書いてありましたが、どこにあるのか分かりません。

Browserの更新Buttonを代わりに押してみました。

駄目してた。

もう一回ComfyUIを再起動しました。

Queueします。

同じところでErrorになりました。

Modelにある以下に示したControlnetを開くと

以下のFileが追加されていました。

これ微妙に違うFileじゃないですか。

control_v11p_sd15_lineart.pthはHugging Faceから直接Downloadしました。

今度はセット出来ました。

やっぱりErrorになります。

2時間ぐらい試したが解決しません。

調べても参考になりそうな意見はないので一端諦めます。

7.2 How to AI Animate. AnimateDiff in ComfyUI Tutorial. [10]をもう一回実装する

まずErrorの原因ですが、Modelが読み込めないのではなく以下のNodeが原因でした。

そしてそのNodeが起動しない原因は

Fileのある場所の名称が長すぎるのでAccess出来なくなっているという意見がありました。

のでComfyUIのFolderを少なくしてD Driveの直下に配置してみます。

これで試してみます。

を起動させました。

何と別なComfyUIの設定がそのまま開きました。

そして以下のNode Typeが無いと警告が表示されました。

そうだ。ComfyUI ManagerもInstallする必要があります。

一端、ComfyUIを閉じてManagerをInstallします。

ManagerのInstall方法をBlogにまとめてなかったのでここにまとめる事にします。

まずGitHubのComfyUI ManagerのPageに行きます。

で以下のMethod1の方法でInstallします。

ここで絶対にやっていけないのはZip FileでDownloadしたComfyUI ManagerをCustom Nodeに配置する事です。

一見、同じ事してるように思いますが、以下の警告を見ると

問題が起きてComfyUI Managerが動かなくなります。

Custom_NodeからTerminalを開きました

あれ? Window PowerShellが開いています。

最新のPowerShellを代わりに開きました。

まあそんなに変わりはないかもしれませんが念のためこっちでCommandを実行します。

しました。

ComfyUIを起動します。

同じErrorが表示されていますが、今度はComfyUI Managerがあります。

ここからMissing Custom NodesをInstallします。

あれ、警告が出てます。

うーん。

警告をClickしたら以下のBoxが開きました。

LineArtPreprocessorノードがConflictedノードとして表示されています。

何で?

検索します。

Weird Conflicted Nodes with ComfyUI-tbox after installing comfyui_controlnet_aux through ComfyUI-Manager #464 [後で設定]に以下のCommentがありました。

まだFile名が長いって事みたいです。

以下のCommentを言っている人もいます。

これも原因ですね。

一回、Comfyui_controlnet_auxをUninstallして再Installしたらどうでしょう。

試してみます。

あれ、警告が消えています。

もしかしたら今回は動くかもしれません。

Modelを追加していきます。

全部追加しました。

Load Video Uoloadノードも追加しました。

実行してみます。

駄目だ。

同じErrorが表示されました。

Test Fileに作成したComfyUIは消しました。

今度はこれを試します。

やりました。

一回、Comfyui_controlnet_auxをUninstallして再Installしてから試します。

動きました。

今度はこの2つのNodeがErrorになっています。

Terminalには以下の表示がありました。

この2つを直していきます。

Tutorialは以下のModelを使用していました。

取りあえずあるのを使用します。

Load VAEはDownloadしたのやつのExtensionが違っていました。

直しました。

かなり時間がかかりましたが出来ました。

7.3 How to AI Animate. AnimateDiff in ComfyUI Tutorial. [10]を実装した後にしなければならない事

以下の事をやる必要があります。

  • Workflowの意味を理解する事
  • CudaのInstall
  • Onnxの追加

CudaのInstallは時間をかければ可能です。

Onnxの追加についてはまだ調べる必要があります。

Workflowの意味を理解するためにはHow to AI Animate. AnimateDiff in ComfyUI Tutorial. [9]の説明をもう一回見てまとめるのが一番手っ取り早いです。

<Workflowの意味を理解する事>

How to AI Animate. AnimateDiff in ComfyUI Tutorial. [9]の説明をもう一回見てまとめます。

Control NetのPreviewのImageです。

これ、前回は見逃していました。

Control Netの説明は聞いても理解出来ないですね。

これだけを説明したTutorialがあるそうなのでそれを見て勉強する事にします。

これがPromptでした。

どれくらいPromptを変える事が出来るんでしょうか?

次はVideo Combineノードの設定方法についての解説でした。

まずFrame RateがDefaultでは8になっているので12に変更しました。

Formatもh264-mp4に変更しました。

私のProjectで変更したら更にParameterが増えました。

増えたParameterの機能は全く分かりません。

K samplerの設定は以下の部分を変更していました。

Primitiveノードの設定です。

4は縁起が悪いので最後の値を5にしました。

後、Randomizeに変更しました。

Promptを変更してもう一度Queueを押しました。

先週のBlogを読み直したら<Prompt travel/scheduling>から違うWorkflowを使用していました。

これは別な日に勉強する事にします。

7.4 Window PowerShellについて

Window PowerShellを起動させる度に

新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows

と表示されます。

これを直します。

「新機能と改善のために最新のPowerShell をインストールしてください」対処法。のやり方をやってみます。

まずPowerShell7の場所を調べます。

以下の場所にありました。

"C:\Program Files\PowerShell\7\pwsh.exe"

これをWindows Termianlの設定でコマンドラインの部分に貼り付けます。

一応、今までのCommand Lineの部分に書かれているAddressを以下に張り付けておきます。

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe

Terminalを再起動します。

Window PowerShellから通常のPowerShellが開いています。

これは違うでしょう。

うーん。

Window PowerShellはほっておくか。

PowerShell 7.4.6を開くと

A new PowerShell stable release is available: v7.5.0

Upgrade now, or check out the release page at:

https://aka.ms/PowerShell-Release?tag=v7.5.0

と書かれています。

こっちをやります。

PowerShellのバージョンアップをするのやり方で出来ました。

これに従ったらすぐにPowerShellのVersionをUpdate出来ました。

Window Terminalを開いたときにDefaultで開くのがWindow PowerShellなんですが、これって普通なんでしょうか?

調べたら普通みたいです。

Defaultで普通のPowerShellを開くように設定を変更しました。

<ここから今週の内容になります>

7.5 How to AI Animate. AnimateDiff in ComfyUI Tutorial. [10]の続きを実装する

How to AI Animate. AnimateDiff in ComfyUI Tutorial. [10]にはPromptから映像を生成するためのWorkflowも載っています。

それをためしてみます。

これですね。

Comfy UIにDrag and Dropしました。

特にErrorとかは出てないです。

InstallしないといけないNodeとかは無いようです。

Modelは以下の設定に変更しました。

取りあえず、これでQueueを押します。

映像が生成されました。

生成された映像のScreenshotを貼り付けておきます。

先週のBlogを見ると以下に示したBatch Prompt Schedule (Latent Input)ノードの設定を変更していますが、

このNodeはありません。

Tutorialを見て確認します。

何も説明していません。

こっちのWorkflowを使用したのかもしれません。

試してみます。

いきなりErrorになりました。

私が無いと言っていたNodeがErrorになっています。

Managerから足りないNodeを読み込みました。

再起動します。

以下の2つのNodeのModelの設定を変更します。

Queueを押しました。

うーん。

Errorになりましたか。

ErrorのBoxから何かをClickしたらあるPageが開いてそこには、Second Frameが0になっているからErrorになった。と書かれていました。

WorkflowにあるNodeからSecond Frameを探したんですが、ありません。

Errorになっているのは、Batch Prompt Schedule (LatentInput)ノードです。

このNodeにはSecond Frameはありませんが、End_Frameはあります。

試しにEnd_Frameの値を1に変更してみました。

出来ました。

首が逆に回っていますが、映像は出来てます。

以下に映像のScreenshotを貼っておきます。

何で春の部分しか作成されないんでしょうか?

直し方が分かりました。

2つ直す必要がありました。

まず以下のNumber of FramesノードのValueです。

これをPromptで指定したFrame数と同じにする必要があります。

次にBatch Prompt Schedule (Latent Input)ノードのEnd Frameの値です。

これもPromptで指定した値に変更する必要がありました。

結果です。

秋です。

冬です。

夏の画像なんですが、何故かToplessになってるのでここには貼れません。

出来た映像のSaveの仕方が分かりません。

[GUIDE] ComfyUI AnimateDiff Guide/Workflows Including Prompt Scheduling - An Inner-Reflections Guide [11]を見るとComfyUIのFolder内にあるOutputというFolderに今まで作成した全ての映像がSaveされているそうです。

え?

そうなの?

確認します。

されていました。

うわ。

これは知らなかった。

全部消しました。

Mp4 Fileも生成されていました。

色々いじってみます。

7.6 ImageからAnimationを作成するWorkflowを探す

あるImageから別のImageに移行する部分のAnimationを作成するためのWorkflowが欲しいです。

調べます。

Copilotに聞いたら以下の回答が返って来ました。

Civitaiにある以下のPageの内容をまとめていました。

Image to Video ( ComfyUI Workflow using AnimateDiff and IP Adapter ) ready to use | Civitai

うーん。

ただしよく読んだらこれはImageからAnimationを生成しているだけでした。

Perplexityにも同様の質問をしてみました。

以下のCivitaiのPageの内容を紹介していました。

https://civitai.com/models/630602/multi-image-to-video-workflow-for-comfyui

こっちは望んだWorkflowですがアニメ調の動画は作れなさそうです。

今度はそれを聞いてみます。

アニメ調の動画を作成する場合でもこのWorkflowが一番良いみたいです。

更に以下のTutorialも紹介していました。

https://www.youtube.com/watch?v=HBRPA1TsFGQ

軽く見ましたがBoneを追加してAnimationを作成していました。

完成品を見ましたがあまり美しくないです。

ただこのChannelはComfyUIのいろいろな情報を紹介して非常に有用です。登録しました。

7.7 「5 - Txt2Vid with Prompt Scheduling.json」でアニメ調の動画を生成する

「5 - Txt2Vid with Prompt Scheduling.json」でアニメ調の動画を生成しようと思い、

Load Checkpointノードに以下のModelをセットしました。

すると以下のErrorが発生しました。

Motion ModelにSDXL用のModelをInstallする必要があるみたいです。

Copilotに聞いたら、AnimeteDiff motion module for SDXLを入れたらと回答されました。

うーん。

なんか違いそう。

ModelをInstallしなければならないFolder名とかを具体的に示していません。

Perplexityに聞いてみます。

同じ回答でした。

これ見ると

と書かれていました。

うーん。

Automatic 1111の事はまだ分かりません。

SD1.5から作成されたアニメ用のModelをInstallする事にします。

こっちを試してみます。

一端ComfyUIを再起動します。

出来ました。

アニメ調の映像が出来ました。

でもやっぱりAIで生成したImageっぽいです。

画像に連続性がまったくないです。

4時間ぐらい頑張って以下の映像を作成しました。

www.youtube.com

画像に連続性を保てるのは2秒が限界でした。2秒で作成した動画を5つまとめて上げました。

8.DirectX12の勉強

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

8.1.1 Resource State | D3D12 Beginners Tutorial [D3D12Ez] [11]の次の10分を実装する

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

<Resource Barrier>

BeginFrame()関数とEndFrame()関数にParameterを追加しました。

BeginFrame()関数の中身を実装していきます。

Command ListであるCmdlistからResourceBarrier()関数を呼び出します。

更にResourceBarrier()関数のParameterであるD3D12_DEROURCE_BARRIER型のObjectであるbarrを作成し、ResourceBarrior()関数にPassしました。

<Resource Transition>

Barrの値をセットします。

pResourceのm_buffersの値はまだ分かりません。

<Swap Chain>

M_buffersの値を得る為に以下のようにしました。

Window.hにsize_t型のVariable、m_currentBufferIndexを作成します。

Preset()関数ないで以下のCodeを追加する事で

現在のBufferのIndexの値を取得します。

これでm_bufferの値を取得出来ました。

後はこの値を以下のようにしてm_bufferにセットします。

EndFrame()関数も同じようにやります。

Main()関数にBeginFrame()関数とEngFrame()関数を追加します。

ここでTestします。

Errorが表示されました。

Errorの表示はTutorialとは違うようですが、言っている中身は同じみたいです。

まずTutorialの言う通りに直してみます。

先程、Preset()関数内に実装したCodeを外して

BeginFrame()関数内に実装し直しました。

これで先程のErrorは無くなったはずです。

Testします。

実行した瞬間に以下のMessageが表示されました。

これはBeginFrame()関数とEndFrame()関数内で、D3D12_DEROURCE_BARRIER型のObjectであるbarrを作成しましたが、その時に初期化してないのでした方が良いというMessageです。

別にErrorではないので無視します。

WindowのSizeを変更します。

実行を止めた後で、OutputをCheckします。

Errorの表示は無くなっていました。

はい。

直りました。

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

8.2.1「 5.8.2 Root Parameterの設定」を実装する

今週はRoot Parameterを作成します。

Root ParameterのParameter TypeとShader Visibilityを指定しました。

今回はRoot ParameterはDescriptor Tableとして指定するので、D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLEを選択する必要があります。

これは分かります。

次にShader VisibilityにD3D12_SHADER_VISIBILITY_PIXELが選択されています。

先週のBlogを読むと

D3D12_SHADER_VISIBILITY_PIXELは以下のように定義されていました。

Vertex ShaderはRoot Signature SlotにAccessする必要はないんでしょうか?

Textureだから無いんでしょうね。

はい。

納得しました。

Sample Codeには指定したDescriptor Tableの値を指定するCodeもありました。

これは次の節で、Descriptor Rangeについて勉強してから実装するみたいです。

ので今週の実装はこれだけです。

9.まとめと感想

なし。

10.参照(Reference)

[1] 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

[2] Control rig. (n.d.). Epic Dev. https://dev.epicgames.com/documentation/en-us/unreal-engine/control-rig-in-unreal-engine

[3] Smart Poly. (2024, March 24). Modular Control Rig Tutorial | Unreal Engine 5.4 [Video]. YouTube. https://www.youtube.com/watch?v=0KrrE4heS7s

[4] Control Rig Resources. (n.d.). Unreal Engine. https://dev.epicgames.com/community/learning/tutorials/6VM8/unreal-engine-fortnite-control-rig-resources

[5] Creating and Modifying Control Rig. (n.d.). Unreal Engine. https://dev.epicgames.com/community/learning/courses/5vL/unreal-engine-creating-and-modifying-control-rig/DnO1/unreal-engine-creating-and-modifying-control-rig-overview

[6] erk Tepebağ. (2024, August 20). 2 - Importing URDF to NVIDIA Isaac SIM - MUSHR RC Car - Ackermann Tutorial [Video]. YouTube. https://www.youtube.com/watch?v=fbgJAwI5iYY

[7] pinkpocketTV. (2023, September 16). Create cinematic environments in minutes! Nvidia Omniverse USD Composer tutorial [Video]. YouTube. https://www.youtube.com/watch?v=k9w5d7zHXPs

[8] Nine Between. (2021, February 12). VEX isn’t scary Project - Part 3: Geometry [Video]. YouTube. https://www.youtube.com/watch?v=uYC-tBtCtLA

[9] setprimgroup. (n.d.). https://www.sidefx.com/docs/houdini/vex/functions/setprimgroup.html

[10] Sebastian Kamph. (2023, November 10). How to AI animate. AnimateDiff in ComfyUI tutorial. [Video]. YouTube. https://www.youtube.com/watch?v=iucrcWQ4bnE

[11] [GUIDE] ComfyUI AnimateDiff Guide/Workflows including Prompt Scheduling - an Inner-Reflections Guide | Civitai. (n.d.). https://civitai.com/articles/2379/guide-comfyui-animatediff-guideworkflows-including-prompt-scheduling-an-inner-reflections-guide

UE5の勉強 -映像作品としてのLandscapeを作成する-

1.今週の予定

先週は色々新たに勉強したい内容が増えました。

基本的には以下のように勉強しますが、勉強内容を整理します。

  • 映像作品としてのLevelの作成
  • AIの勉強
  • Nvidia Omniverseの勉強
  • Gaeaの勉強
  • Houdiniの勉強
  • AIについての調査
  • DirectX12の勉強

1.1 先週新たにした勉強の内容

以下の内容を、新たに勉強しました。

  • VroidをUE5のThird Personとして使用
  • ComfyUIをInstallして画像生成をLocalで作成

この2つの勉強は継続してやる事にします。

どこに追加しますか。

Gaeaの勉強は、GaeaのTutorialを作成する時だけして、それ以外の週はVroidとUE5の勉強をしますか。AIについての調査はしばらくの間はComfyUIの勉強をする事にします。

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

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

DirectX12の勉強については、正直今あまりモチベが湧きません。続けるだけは続けていきます。

2.映像作品としてのLevelの作成

2.1 PCGの勉強

2.2.1 Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]の最後の部分を勉強する

<Interior Floor Generation>

今度はFloorを作成します。

まずActor Propertyの値を2で割ります。

Loopで増やします。

新しいPCG Graphを作成しました。

名前はPCG_CopyPointUp_Simpleにしました。

PCG Building Graphに配置しCreate Loop Nodeを選択します。

以下のようなNodeが生成されました。

中を開き

Inputノードを選択して設定を以下のように変更します。

更にIndex1を追加して以下のように設定を変更します。

今度はOutputノードの設定です。

Index 0は以下のような設定にしていました。

Labelの値はMeshです。

何故かTutorialでは物凄く急いていて、Labelの値は最後まで写ってなかったです。

まだInputノードに戻ってIndex2を追加しました。

Advanced Pointに移動して以下の箇所をCopyします。

PCG_CopyPointUp_Simpleに戻ってPasteし、以下の実装を作成します。

PCG Building Graphに戻り以下の実装を追加しました。

そしてStatic Mesh Spawnerノードを追加して

Static Mesh Spawnerノードの以下のParameterにFloor用のParameterを追加します。

Floorのズレを直すために以下の実装を追加しました。

更に以下の実装を追加しました。

結果です。

確かにFloorのずれが無くなっています。

これでこのTutorialが終わっていました。

これは来週実装する事にします。

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

これはDragonなどのControl Rigが無いSkeletal MeshにControl Rigを追加する方法が判明したら出来るという事が判明しています。

それが可能なのかどうかは不明ですが、その辺を今週は調査する事にします。

2.3.1 Control Rigを追加する方法の調査

どこで調べれば良いのか分からないので取りあえずCopilotに聞いてみます、

これが正しいのかが問題です。

Referenceを見てみます。

Rigging with Control Rig [2]です。

以下の方法でControl Rigを追加出来ると書いてありました。

更に手動でControl Rigを追加する方法も載っていました。

こっちなら先程のDragonにもControl Rigを追加出来そうです。

今週はこの辺を勉強しますか。

取りあえずここに書かれている事を試してみます。

MetahumanのModelで試してみますか。

うーん。

どうやってMetahumanをImportしたらいいのか分かりません。

まずFabを開きましたがMetahumanはありません。

次にMetahumanのHomepageに移動して自分のAccountを開き以下のFileをExportしました。

しかしこれをUE5にImportする事が出来ません。

Googleで検索したらQuixel BridgeからImport出来るとありました。

試します。

お、順調にDownloadされています。

以下のBoxが開いたのでSkeletal MeshにSKM_Quinnを選択しました。

Importしている間に以下のErrorが表示されました。

両方ともEnable Missingを押しました。

当然ですがUE5が再起動しました。

これってもう一回MetahumanをInstallする必要があるかも?

再起動したUE5を見たら

Installされていました。

しかし、Skeletal Meshを組み合わせてBlueprintで合成されていました。

うーん。

よく分からない。

こっちはこっちで勉強しないといけませんが、今回の目的とは一寸違うので、以下のUE4のSK_Mannequinで試す事にします。

以下のSkeletal MeshからCreateを選択すると

Control Rigがあります。

Dragonで試してみます。

あ、このProjectにはDragonのAssetをImportしてなかったです。

Importする間、YouTubeを見てたらなんか役に立ちそうなTutorialを見つけました。

https://www.youtube.com/playlist?list=PLwNmoyWCxgGxNnIutI75kyI4mbA_Ku6xb

4年前で一寸古いですが、人でないSkeletal MeshのControl RigがThumbnailに載っています。

やっとDragonのAssetをImportする事が出来ました。

Control Rigはありますね。

普通にControl Rigを生成する事が出来ました。

開くと以下のようになっていました。

なんか一から自分でセットしないといけない感じです。

他のControl Rigを開くと以下のような実装が組まれていました。

こういうのが必要なのか。

更にUE5.4からModular Control Rigというのが出来たそうです。

https://www.youtube.com/watch?v=0KrrE4heS7s

これについても勉強する必要がありそうです。

軽く見ました。

これは先程の2番目の方法でControl Rigを作成していました。

その上でそのControl RigとSkeletal MeshのCharacterを紐づけるのを簡単にするために、UE5.4から新しく使用出来るようになったModular Control Rigを使用していました。

このTutorialでSmart Poly氏は試してないけどこのModular Control Rigは動物とかのSkeletal Meshにも使用出来るはずだ。と言っていました。

うーん。

これだ。

Modular Control Rig to Unhuman UE5で検索してみます。

まずこれが引っかかりました。

https://www.youtube.com/watch?v=J2ywoRHCWDU

なんか最初の方でLevel Sequence上でAnimationを直すと直面する問題を沢山説明しています。

これは凄い。

私がこれから直面するであろう問題に数年前から直面してその解決方法も知っています。

しかも以下のAssetがある事もここで知りました。

この中にControl RigがあるDragonも入っていました。

Fabから探したらありました。

My Libraryに追加しておきます。

次に以下のTutorialがありました。

https://www.youtube.com/watch?v=_yWcstq291E

見てみます。

これはBlenderでの設定方法を説明してるようです。

これぐらいしか検索では引っかからなかったです。

しかしこれくらい理解出来たら今週は十分でしょう。

2.3.2 公式SiteのControl Rig [3]を読む

一応これも読んでおきます。

最初から知りたい事が書かれていました。

Control Rigの目的がここに書かれていますが、その中の一つにAnimate in Sequencerとはっきり述べられていました。

control Rigについて何も知らない人は以下のTutorialを勉強してとありました。

その下に沢山のTutorialが紹介されていますが、

最初のはさっき見たやつです。

更に先週のBlogではこれを勉強したらどうやったらSkeletal MeshにControl Rigを追加出来るのか分かるのでは、と書いてありました。

更に以下のTutorialも紹介されていました。

Modular Control Rigは先程勉強したやつですね。

更にTutorialは続きます。

この辺になると勉強する必要がある部分なのかどうかの区別がつきません。

この辺で時間切れです。

続きは来週勉強します。

3.AIの勉強

3.1 先週の復習

先週何をやったのか既に忘れています。先週のBlogを読んで復習します。

分かりました。

先週は以下の2つの事をやりました。

  • Lecture2の宿題をやるための計画を建てる
  • LocalでJupyter Notebookが動くように環境をセットする

Lecture2の宿題は以下の手順で行います。

Modelは前回のLecture1の宿題で既に作成していますので、今週はCleanをしてModelの精度を上げましょう。

出来たらExportまでやりたいです。

Export出来たらJupyter NotebookからAccessして動かせるようにします。

はい。

この辺を目指して今週はやっていきます。

3.2 Modelを見直す

前にColabを開いたのは去年です。

まずColabを開いて前に作成したModelを確認します。

Codeはあったんですが整理されていません。

別なProjectを作成してそこにこのModelのCodeだけまとめる事にします。

まずこれがいるのかが分かりません。

PyTorchが無いと動かなかったか覚えていません。

Fastaiは最新のVersionにUpgradeする必要があったはずです。

DuckDuckgo_SearchをInstallします。

で以下の実装を追加しています。

これはPickachuのImageを探すためのCodeです。

DuckDuckGoでPickachu Pokemonで検索しHitしたImageのURLをurlesに30個ほどSaveしています。

次のCodeです。

Urlsの最初にあるURLのImageを開いています。

しっかりPickachuのImageが表示されました。

次のCodeです。

これはPikachuとCharizardのImageを集めています。30*3*2で180枚のImageを集めています。

次のCodeです。

取得に失敗したImageを確認しています。

次の実装です。

DataBlockを作成しています。

次のCodeです。

ここでやっとDeep Learningしています。

最後にTestをしています。

これで完成のはずです。

Colabを実行して確認します。

FastaiをUpgradeしました。

DuckDuckGo_SearchをInstallしました。

以下の実装を実行しPikachuのImageのURLを30個集めました。

更に最初のURLを表示させました。

この部分は要らないかもしれないですね。

次の実装です。

Urlsにある最初のURLのImageをDownloadしました。

更にそのImageを表示しています。

次に以下のCodeを実行しました。

先程のPikachuのCodeは実行しなくてもこっちをやれば良いはずです。

結果です。

なんかWarningが出てますね。

まあ大丈夫でしょう。

次に行きます。

Imageの獲得に失敗したURLを調べています。

結果です。

一個だけありました。

DataBlockを作成します。

Show_batch()関数を使用してSampleから6だけImageを表示させています。

Learner()関数を実行しました。

結果です。

なんか凄い結果良くない。

最後にPikachuのImageを見せてこれはCharizardだろと聞いています。

Charizardの確率は0%だと答えました。

うん。

これで良いです。

別なProjectを作成してこのCodeをCopyします。

以下のProjectに作り直しました。

先程のPikachuのImageを集める実装は、最後のテストでPickachuのImageを使用するのに必要でした。

結果なんですが、Fine Tuningをする前の結果が非常に悪いです。

最後のテストは勿論、パスしています。

3.3 Cleanをする

<Cleanのやり方を復習する>

そもそもCleanの具体的なやり方をまだ整理していません。

過去のBlogを見てCleanのやり方をここにまとめます。

2024-09-08のBlog2024-09-15のBlogでCleanのやり方を勉強していました。

まず以下の関数を使用して

Confusion Matrixを表示します。

次にInterpからplot_top_losses()関数を使用して

Prediction/Actual/Loss/Probabilityを表示しています。

最後にCleanerを使用しました。

でこれで終わりかと思った更に以下の関数を呼び出して排除したImageを消しています。

成程。

一連の流れは理解しました。

一応、この部分のLectureを見直します。

見直しました。

以外にPrediction/Actual/Loss/Probabilityの見方が大事でした。

<Cleanを実装する>

では実際に実装してみましょう。

Interまで打ったらAIが勝手に残りを実装してくれました。

AI偉い。

結果です。

間違えたのは一個だけですね。

Pikachuと思ったらCharizardだったのが一個だけあります。

次に以下の実装を追加してPrediction/Actual/Loss/Probabilityを表示します。

結果です。

最初のちびCharizardは確かに難しいです。

Cleanerを使用します。

そんな関数はないと返って来ました。

うーん。

Copilotに聞いてみました。

試してみます。

出来ました。

ではCheckしていきます。

これPichuかな?一応Deleteします。

これはPichuでしょう。

こういうCharizard以外も沢山写ってるImageってどうなんでしょう?

一応Deleteしておきます。

CharizardじゃなくてCharmanderです。

Deleteします。

こんなもんで良いでしょう。

選択したImageを消します。

Errorになりました。

どうもそんなFileは無いと言っています。

あ、分かった。

この最初のCode、一回間違って実行したんです。

でその時に既にImageは消してしまったのでもうないという事です。

多分そうでしょう。

もう一回最初から実行してみます。

やっぱりそうでした。

Errorが無くなりました。

しかしこのCode実際に打ってみると意味が分かりません。

<Clear Deleteについて解読する>

このCodeの意味を解読します。

DirectにCopilotに聞いてみました。

成程。

これは分かり易いです。

では2番目のCodeは何をしているんでしょうか?

Copilotに質問しました。

以下の回答が返って来ました。

どうやらCharizardに変更したImageの名前とFolderをCharizardに変更しているようです。

でも私のFileにはそんなのは無かったのでまあやらなくても良かった訳です。

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

3.4 Localで使用出来るようになったjupyterの使用方法を確認する

先週、Jupyter NotebookをLocalで使用出来るようになりましたが、どうやって使用するのかはまだ全く分かりません。

その辺を調べて実際に一寸だけ使用してみます。

Jupyter NotebookをLocalで開いてFileを選択したら使用出来るみたいです。

うーん。

やってみますか。

出来ました。

出来たんで今週のAIの勉強はここまでにします。

4.Nvidia Omniverseの勉強

先週はUbuntu22,04にROS2、Hamble HawksbillをInstallするところまでやりました。

今週はXacroをInstallし、MushrのCloneを作成して最後にXacro FileからURDFに変換します。

4.1 やり方を復習する

それぞれのやり方を復習します。

2024-12-08のBlog2024-12-22のBlogに大体のやり方がまとめれていました。

それを参考にしてまとめます。

<XacroのInstall方法>

以下のCommandでInstall出来るそうです。

sudo apt install ros-humble-xacro

<MushrのCloneを作成>

2024-12-08のBlogを見るとTutorialではsrcのDirectoryを作成してその中にCloneしています。

うーん。

同じにしますか。

CloneするCommandは

git clone https://github.com/prl-mushr/mushr.git

でした。

<Xacro FileからURDFに変換>

まずROS2を起動する必要があります。

ROS2の起動は

source /opt/ros/humble/setup.bash

で行います。

そしてDirectoryをMushr、Musher_description、Robotsと移動してmushr_nano.urdf.xacro FileのあるDirectoryに移動します。

そこで以下のCommandを実行します。

ros2 run xacro xacro --inorder -o mushr_nano.urdf mushr_nano.urdf.xacro

4.2 XacroをInstallし、MushrのCloneを作成して最後にXacro FileからURDFに変換します。

全部やった結果ですが、

が無いとの返事です。

やっぱりIntel RealSense ROS2 WrapperをInstallする必要があると出ました。

4.3 Intel RealSense ROS2 WrapperのInstall方法、並びに使用方法について

今度はこれのInstall方法を調べ直します。

GithubIntelRealSense/realsense-ros のInstallation on Ubuntuにやり方が全部載っていました。

そんなに難しくなさそうなのでこれの通りにやってみます。

出来たみたいです。

でこの内容は後でまとめるので、先にもう一回、Xacro FileからURDFに変換するCommandを試してみます。

うん。

出来てる?

出来てるみたいです。

のでここまでやった事を以下にまとめます。

GithubIntelRealSense/realsense-rosによるとRealSense ROS2 WrapperをInstallするには以下の手順が必要だそうです。

最初のROS2は既にInstallしてあります。

Step2のRealSense SDK 2.0をInstallします。

このSiteには3つのやり方が載っていましが2番目のやり方が

単にCommandを打つだけなのでこれを試す事にしました。

しかしここである疑問が生じます。

どのDirectoryからこのCommandを実行する必要があるのかです。

分からない。

のでCopilotに質問しました。

どっからやっても大丈夫と言っています。

だたし以下の手順でやれ。と言って来ました。

ROS2を起動させて、最新のVersionにUpdateしその後でこのCommandを実行しています。

この通りやりました。

次にStep3を実行しました。

Step3はOption1で実行しました。

UbuntuにおけるConfigureの意味は先週じっくり勉強し理解しました。

ここは無視して進んで良いはずです。

次のCommandを実行しました。

でInstallが完成したみたいです。

試しにDirectoryを移動してXacroからUrdfに変換するCommandを実行しました。

xacro: in-order processing became default in ROS Melodic. You can drop the option.

と言って来ましたが、Errorとは言っていません。

出来たのかもしれないと思いLsでFileを表示すると

URDF fileがありました。

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

今週はVroidとUE5の勉強をします。

5.1 Game Animation SampleでVroidを試す

なんと前回、VroidをUE5のThird Person Characterにセットした方法をBlogにまとめてなかったです。

ああ、やってしまった。

UE5.5 - Let's fast setup the Vroid anime character in Unreal and apply the animation. (Subtitled) [4]の内容をまずはまとめます。

5.2 UE5.5 - Let's fast setup the Vroid anime character in Unreal and apply the animation. (Subtitled) [4]を勉強する

まずVroidのCharacterをUE5にInstallする時の設定で、以下にしめしたSkeletonの値にSK_Mannequinをセットします。

うーん。

これ、先週やった時はThird Personに使用してるCharacterのSkeletonをセットした気がします。

一寸確認します。

SK_Mannequinって書かれていますね。

うーん。

そうだったかな。

BP_ThirdPersonCharacterをDuplicateします。

名前はBP_VroidCharacterに変更しました。

Duplicateした方を開き、MeshにSkeletal Meshを追加します。

名前はVroid Meshに変更しました。

Skeletal Mesh AssetにImportしたVroidをセットしました。

今度はMeshを選択し

VisibleをOffにし

更にVisibility Based Anim Tick Optionに

Always Tick Pose and Refresh Bonesをセットします。

Animation Blueprintを作成します。

Specific SkeletonにSK_Mannequinを選択します。

最後にABP_Vroidと名前を変更しました。

中を開きRetarget Pose From MeshノードをOutput Poseノードに繋げました。

次にIKRetargeter AssetにVroidをImportした時に生成されたRig Fileを追加します。

名前が見えない。

これのようです。

DuplicateしたBP_VroidCharacterを開き

VroidMeshを選択し

Anim Classに今作成したAnimation Blueprintをセットします。

最後にWorld SettingsのDefault Pawn ClassにBP_VroidCharacterをセットします。

以上でした。

5.3 UE5.5 - Let's fast setup the Vroid anime character in Unreal and apply the animation. (Subtitled) [4]の方法をGame Animation Sampleで試す

前回作成したProjectはProject名が長すぎてSave出来ない可能性があると警告が出たので、新しいProjectを作成しました。

VRM4Uをセットしました。

Projectを開きます。

World Settingsを開きDefault Pawn Classの設定を見ると

CBP_SandboxCharacterがセットされていました。

これをDuplicateします。

中を開くとThird Person Characterと同じComponentでした。

これなら出来そうです。

Vroidをimportしました。

SkeletonにはSK_Mannequinをセットしました。

CBP_SandboxCharacterのMeshにSkeletal Meshを追加します。

名前はVroidMeshに変更しました。

VroidMeshのSkeletal Mesh AssetにImportしたVroidのSkeletal Meshをセットしました。

Meshを選択して

VisibleをOffにして

Visibility Based Anim Tick Opt…にAlways Tick Pose and Refresh Bonesをセットします。

次はAnimation Blueprintを作成します。

Specific Skeletonを選択して

ABP_Vroidと名付けました。

中を開きRetarget Pose from MeshノードをOutput Poseノードに繋ぎます。

IKRetargeter AssetにVroidをImportした時に生成されたRig Fileを追加します。

適切なのがありません。

何で?

先週のProjectを開いて確認します。

前回のFileには何故かRTG_Test1_4というFileがありました。

VroidをImportした時の設定が何か間違ってたのかもしれません。

もう一回VroidをImportしてみます。

駄目ですね。

でももしからしたらこれが正しいのかもしれません。

こっちを使用してみましょう。

CBP_SandboxVroidを開き

作成したABP_VroidCharacterをセットしました。

最後にWorld SettingsのDefault Pawn Classの設定をCBP_SandboxVroidに変更しました。

これで設定は完成しました。

テストします。

駄目です。Animationが動きません。

やっぱりRTGのせいでしょう。

前のProjectからMigrateしてやってみます。

駄目でした。

Blueprint Runtime Error: "Accessed None trying to read property As CBP Sandbox Character". Node:  Pre CMC Tick Graph:  EventGraph Function:  Execute Ubergraph Pre CMCTick Blueprint:  PreCMCTick

うーん。

駄目か。

5.4 Game Animation SampleのCharacterをVroidに変更する方法を探す

Errorの原因を解明するよりこっちを先にやる事にします。

まず以下のTutorialがありました。

https://www.youtube.com/watch?v=gsV1A1vrWJM

DirectにVroidを追加する動画もありました。

https://www.youtube.com/watch?v=H63IXj625Qc

更に日本語のTutorialもありました。

https://www.youtube.com/watch?v=dksiFBeK_zY

これらを見る事にします。

Anime Character to Game Animation Sample in Unreal Engine 5 [5]を見る>

この動画は5日前に公開されています。

一番、参考になりそうです。

これから見ていきます。

VroidをImportする時に設定を弄っていません。SK_mannequinを選択していないです。

以下のRetargeted CharactersというFolderを開き

中にあるCBP_SandboxCharacter_QuinnをDuplicateしました。

TutorialによるとここにあるFileのどれをDuplicateしても良いそうです。

Duplicateした方です。

CBP_Animeと名付けていました。

これを開き、Skeletal Meshを選択します。

以下示したSkeletal Mesh AssetにImportしたVroidのSkeletal Meshをセットします。

次はComponent TagsのIndex[0]の値をRTG_Animeに変更します。

これはどこで作成したのかな?

Tutorialを見直しましたがどこにもありません。

今度はSkeletal MeshのAnim ClassにセットされているABP_GenericRetargetを選択して

ABP_Generic Retargetを開きます。

IKRetargeter Mapのところに

ここにRTG_Animeを追加しました。

これ見るとRTG_Animeと言うFileは無くても問題ないかもしれません。

ここにRTG_UEFN_AvatorSample_Bをセットしました。

お、このRTGならあります。

World Settingsの設定に戻ります。

そしてCBP_AnimeをDefault Pawn Classにセットしました。

これで完成でした。

Anime Character to Game Animation Sample in Unreal Engine 5 [5]を実装する>

簡単そうなので試してみます。

Vroidはもう一回Importし直しました。

DefaultでImportしました。

CBP_SandboxCharacter_QuinnをDuplicateします。

CBP_Animeと名付けました。

Skeletal Meshを選択して

Skeletal Mesh AssetにImportしたVroidのSkeletal Meshをセットします。

更にComponent TagsのIndexにRTG_Animeをセットします。

ABP_Generic Retargetを開き

IKRetargeter Mapのところに

以下の設定を追加しました。

World Settingのところに戻りDefault Pawn ClassにCBP_Animeを追加しました。

Testします。

おお。

今度は動くようになりました。

6.Houdiniの勉強

6.1 VEX Isn't Scary Project - Part 2: Point Generation [6]を実装する

<Cosine>

Attribute Wrangleノードを新たに追加して以下のCodeを追加しました。

何にも表示されない。

と思ったらRun Overの値を直すのを忘れていました。

更にPointsの値を360に変更しました。

Sin Curveか?

逆から見たらSince Curveです。

更に以下の実装も追加して

Cosine Curveも追加しました。

更に以下の実装を追加して

色を付けました。

更に以下の実装を追加して

以下の円を作成しました。

Front Viewに変更したら以下のようになりました。

<Point Generation >

この節は実装はしてないです。

<Float Progress>

以下の実装を追加しました。

結果です。

おお、Tutorialの結果と同じになりました。

7.AIについての調査

今週はと言うか、これからしばらくはSebastian Kamph氏のComfyUI Tutorials [7]を勉強します。

7.1 ComfyUI Tutorials [7]の内容を確認する

以下のTutorialが載っていますが全部勉強する必要はないと思います。

知りたいのは

  • Cosmosの使用方法
  • 生成された画像をAnimationにする方法
  • Nodeの組み方

うーん。

やっぱり全体像がまだ分からないので全部勉強する必要があるかもしれません。

仕方ないです。

最初のTutorialから勉強する事にします。

7.2 SDXL 1.0 in ComfyUI - Stable Diffusion[8]を勉強する

SDXLを実行する方法を勉強するそうです。

そもそもSDXLが何なのか知りません。

Copilotに聞いたらStable Diffusion XLの事だそうです。

2つのModelがあると書かれていますね。

<Intro>

特になし。

<Getting SDXL>

このTutorialでは以下のWorkflowを作成するそうです。

ふええ。

かなり複雑ですね。

まずStable Diffusion XLを入手します。

Hugging Faceの以下のSiteに行きます。

StabilityaiをClickして以下のPageに戻ります。

すると以下に示した様にXLのModelが表示されていますが、RefinerとBaseの2つがある事が分かります。

これ、両方Downloadする必要があります。

Baseの方に入ります。

まずGated Modelと言う所でこのModelをDownloadする許可をもらう必要があるそうです。

このTutorialの著者は既に許可を取っているので実際のやり方を示してはいませんが、このPageの一番下に許可をもらうButtonがあるそうです。

これは実際にやる時に確認します。

許可が下りるとFiles and Versionsに移動出来るようになるそうです。

ここにあるSd_xl_base_0.9.safetensorsをDownloadするそうです。

Refinerも同様の手順でDownloadします。

DownloadしたFileは両方とも以下のCheckpointsに配置します。

これはいつもの場所ですね。

<Setting up ComfyUI>

ComfyUIのWorkflowの作成です。

まずLoad buttonを押して

以下のWindowを開き

SDXL09を選択しました。

うーん。

これって最初から付いて来てるの?

Descriptionを見たらWorkflowのFileがDownload出来るようになってたので

これの事かもしれません。

WorkflowがInstallされました。

はあ。

これじゃNodeの組み合わせについては何も学べませんね。

この後、このWorkflowについて簡単な説明がありました。

まあ、最初はこんなものか。

この後に新しいProjectを開いてそこにImageをDropしてWorkflowを表示するのもやっていました。

これは先週勉強したのと同じなのでSkipします。

7.3 SDXL 1.0 in ComfyUI - Stable Diffusion[8]を実装する

では実際にやってみましょう。

Hugging FaceのStability AIのPageに移動しました。

SDXLのModelを探します。

なんじゃこれ?

一年前からの進歩が凄すぎ。

XLのFileがありません。

いやこれがあったけど

多分全然違うでしょう。

うーんと下の方にありました。

最後にUpdateしたのが2023年です。

絶対最新版じゃないわ。

Copilotに聞いてみます。

うーん。

本当かな?

まあこの2つをDownloadしてみますか。

Baseの方を開きました。

Downloadの許可を得るButtonとか無いです。

Files and Versionsを開くと以下のようになっていました。

ExtensionがSafetensorsのFileもここにありました。

Downloadしてみます。

CheckpointsにDownloadしました。

結構時間がかかります。

出来ました。

Refineも同様にやってみます。

 

待ってる間、NvidiaのHomepage(https://build.nvidia.com/nvidia/cosmos-1_0-diffusion-7b)でCosmosに映像を作成させます。

ゴミ箱にゴミを捨てます。そのゴミ箱を覗きます。

で、本当にゴミがごみ箱内にあるかを確認します。

以下のPromptを指定しました。

生成されたPromptです。

In a sleek, modern kitchen bathed in soft, ambient light, a first-person perspective captures the intimate details of a trash disposal ritual. The camera, fixed on a polished wooden table, reveals a pristine, empty trash can, its metallic sheen glinting under the warm glow of overhead lights. As the scene unfolds, a hand enters the frame, clutching a crumpled piece of paper, which is deftly tossed into the trash can with a satisfying rustle. The camera remains steady, inviting viewers to share in this mundane yet intimate moment, as the hand reaches back, this time holding a small, clear plastic bag, its contents hinting at a recent meal. With a gentle flick, the bag is discarded, and the hand lingers, poised to ensure the trash can's lid is securely closed. The scene concludes with a contemplative gaze into the trash can, encapsulating the quiet efficiency of daily life.

結果です。

ちがーう。

そもそもゴミをゴミ箱の上に置いてどうするの?

でも映像は凄いです。

とやってる間に、RefineのDownloadも終わりました。

今度はComfyUIのWorkflowをDownloadします。

こっちはすぐにDownload出来ました。

ではやってみます。

DownloadしたWorkflowを開きました。

Modelも正しいのが選択されているようです。

実行してみます。

UpScaled Imageは表示されませんね。

あ、分かった。このUpScaled Modelが無いから実行できないんだ。

4x_NMKD-Siax_200k.pthを探します。

後、Load Upscale Modeノードが参照するFolderの名前も調べます。

Copilotに聞いたら以下の返事が返ってきました。

Upscale_Modelsを開いたら

空でした。

検索したら一般出て来ました。

どれも同じでしょう。

一番上のヤツをDownloadします。

お、これは一瞬でDownloadが終わりました。

今度は表示されました。

Workflowを見てみます。

まずBase用のKSamplerノードです。

Modelですが

Load Checkpointノードが繋がっていました。

これは前回のWorkflowと一緒ですね。

ただ色が違います。

Positiveの先です。

CLIPTextEncodeSDXL PosというNodeが繋がっていました。

このNodeは前のWorkflowではなかったです。

で今気が付いたんですが、このNodeの名前、変更出来るんでした。

変更前の名前が分かりません。

後は色々見ましたが、だいたい理解出来ました。

でこのDiffusionの生成する絵が私の好みにあわないのでこの辺でこのWorkflowの勉強は終わりにします。

7.4 DragしたImageから再現したWorkflowを使用する

以下のImageをcivitaiからDownloadしてComfyUIの空のProjectにDropしました。

Workflowは形成されましたが以下のErrorが表示されました。

Prompt outputs failed validation

CheckpointLoaderSimple:

- Value not in list: ckpt_name: 'WAI-ANI-NSFW-PONYXL-13' not in ['cyberrealisticPony_v7.safetensors', 'deliberateForInvoke_v08.ckpt', 'hassakuXLIllustrious_v13StyleA.safetensors', 'noobaiXLNAIXL_vPred10Version.safetensors', 'prefectPonyXL_v50.safetensors', 'sd_xl_base_1.0.safetensors', 'sd_xl_refiner_1.0.safetensors', 'waiANINSFWPONYXL_v130.safetensors', 'waiNSFWIllustrious_v90.safetensors']

これを直し待て動くようにします。

WAI-ANI-NSFW-PONYXL-13がないって言ってるだけじゃないですか。

Installします。

このImageが載ってるPageに移動すると

WAI-ANI-NSFW-PONYXLと書かれていますが実際にInstall出来るのは

waiANINSFWPONYXL_v130.safetensors

です。

うーん。

多分前のVersionで作成したんだと思います。

Load Checkpointノードの設定をwaiANINSFWPONYXL_v130.safetensorsに変更しました。

結果です。

なんか凄い事になっています。

他の絵も試したんですが似たような結果になりました。

K SamplerノードのPositiveにPassされているTextです。

glowing eyes, streaked hair, glowing inner hair, glowing streaks, 1girl, jinhsi \(wuthering_waves\),

white hair,blonde_eyes, large_breasts, (upper_body,close-up:1.4),Dynamic pose,串,*1,Yellow lightning,(makeup,white eyeliner),white eyeshadow,white eyes,(long eyelashes),half-closed eyes,Dragon skirt,blush,holding sword,chinese sword,(dynamic angle:1.2),(hanfu:1.4),chinese clothes,transparent clothes,tassel,chinese knot,bare shoulders,kanzashi,draped silk,gold trim,wind,bokeh,scattered leaves,flying splashes,waterfall,splashed water,looking at viewer,

,masterpiece,best quality,amazing quality,

 

¥とか//とかの意味が分からないです。

7.5 How to AI Animate. AnimateDiff in ComfyUI Tutorial. [9]を勉強する

ComfyUIで画像を生成する方法は大体理解出来たので、今度は映像を生成する方法を勉強します。

<AI Animation with AnimateDiff>

ただしこのTutorialはTextからVideoとVideoからVideoを作成する方法だそうで、ImageからVideoではないそうです。

うーん。

残念。

Copilotに聞いたら以下の回答が返って来ました。

ComfyUI Image to Video Workflow Tutorial: AI Latest: Convert Images to Videos with CogVideoX-Fun [10]の内容をまとめたみたいです。

これはこのTutorialを勉強した後で勉強する事にします。

以下の2つの方法を勉強するそうです。

<Download workflows>

以下のSiteのGuideを利用してやるそうです。

CIVITAIにはやり方を説明するGuideもあるのか。

AttachmentにあるWorkflowのどれかをDownloadします。

以下のTxt2Vid.jsonをDownloadします。

<How to use AnimateDiff…>

そして以下のSiteに移動します。

こっちは有料版みたいです。

うーん。

これは見るだけにしますか。

見ました。

結構、勉強しないと理解出来なさそうな概念が出て来てました。

この部分を勉強しないと、この後の無料版の理解も出来ない場合は戻ってまとめる事にします。

<Video2Video + Local Install>

Comfy UIとComfy UI Managerの両方をInstallしておくのが条件だそうです。

これはやりました。

前にDownloadしたWorkflowを開きます。

すると以下のErrorが表示されます。

ComfyUI Manager Menuを開き

Install Missing Custom Nodesを選択します。

すると以下のようにInstallする必要のあるFileを表示します。

Installを押します。

全部のInstallが終わったらRestartします。

またWorkflowをDropします。

もしまたErrorが出た場合はManualでInstallする必要があります。

その場合は以下のButtonを押します。

以下のNodeから説明しています。

Load VideoノードとLoad Imageノードです。

うーん。

VideoじゃなくてImageからもVideoを生成出来るのか?

今回はVideoから生成するので以下のようにNodeを繋ぎ直しました。

なんとこのNodeも消して以下のNodeを代わりに使用しました。

まあ、どのNodeを使用してもVideoをInputする限りは同じです。

今度は以下の設定についての説明です。

Frame_load_capの値はFrameを何枚使用するのかを指定するParameterだそうです。

50にセットしました。

次にSkip_First_Framesの値を40にしました。

最初の40枚のFrameをSkipします。

最後のSelect_every_nthは1の場合は全部のFrameを使用し、2の場合は一個抜かして使用します。

Tutroialでは3にセットしていました。

次は以下のControlNetについてです。

今回はDefaultのまま使用するそうです。

まずLoad ControlledNet Model(Advanced)ノードです。

このModelが無い場合は、Mangarを開き

以下のInstall Modelを開きます。

更に検索でLine Artと打って以下のModelを探し出していました。

ここでPreviewノードで結果を確認しています。

ControlNetについては別のTutorialで詳しく解説しているそうです。

それは後で勉強する事にします。

更にLoad VAEノードのModelを以下のものに変更しました。

今度はPromptです。

取りあえずはこのままにしておくそうです。

結果です。

Video Combineノードに結果が表示されています。

カクカクしています。

Frame Rateを12に変更しました。

VideoのFormatはH264に変更しました。

この辺はDavinci Resolveで勉強しました。

PingpongはAnimationが最後に最初に戻るそうです。

K samplerノードの設定で以下の設定を進めていますが、

意味が分かりません。

Divergenceになるとか言っていますが、何がDivergenceになるんでしょうか?

Diverging the same Imageとかいっていますが、同じImageになるからConvergingじゃないんでしょうか?

うーん。

こういう一寸専門的な説明になると訳分からなくなります。

結果が気に入らない場合は以下のNodeの値を変更する事で違う結果を得る事が出来ます。

Promptの内容を変更しました。

結果です。

凄い。

以下のようにこのNodeをCloneして、それぞれの設定を変更して違いを比較する事も可能だそうです。

以下のApply ControlNetノードのStrengthの値を変更する事で

映像のZoomを管理出来るみたいです。

<Prompt travel/scheduling>

今度はPromptをDropしたそうです。

これって、Descriptionにあるこれの事でしょうか。

まあやったら分かるでしょう。

前のWorkflowと大きく違うのはこれだそうです。

BatchPromptScheduleと書かれているNodeです。

このNodeは以下のようなPromptを設定出来るそうです。

説明聞いたけどよく分かりません。

以下のPromptも追加していました。

更にErrorの修正で以下のLatent ImageのInputを

以下のLatentからInput_Latentに変更していました。

結果です。

冬のImageが

春になって

夏になって

今度は男に変化しました。

さっきのPromptはそれぞれのFrameに対してやっていたんだ。

成程。

後、YouTube Shortとかで妖怪が人間に変身する映像をよく見ますがそれらはこれを使用してるのかもしれません。

以下のようにPromptを追加しました。

Errorが表示されました。

Commaが無いからだ。

最後の行以外はCommaが必要だそうです。

<How to install ffmpeg

ここはffmegの説明です。

AIで生成したFrameからVideoを生成するのに使用するみたいです。

これは私はDavinci Resolveでやるので必要ないです。

見るだけにします。

Command promptを使用して色々やっていました。

7.6 How to AI Animate. AnimateDiff in ComfyUI Tutorial. [9]を勉強した感想

うん。

そんなに難しくは無かったです。

実装は出来そうです。

ただ一寸深い説明に入ると訳分からなくなりますね。

 

8.DirectX12の勉強

最近はDirectX12の勉強をサボり気味です。

今週は一寸気合を入れてやる事にします。

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

8.1.1 Resource State | D3D12 Beginners Tutorial [D3D12Ez] [11]の次の10分を勉強する

<Resource Barrier>

先週、宣言した関数にParameterを追加しました。

何だ。

こんなに直ぐにParameterを追加するなら、先週、実装した時点で追加しとくべきでした。

BeginFrame()関数の中身を実装していきます。

ParameterでPassしてID3D12GraphicsCommandList7型のObjectからResourceBarrier()関数を使用します。

更にこの関数に使用するArgumentであるD3D12_RESOURCE_BARRIER型のVariableであるbarrを作成します。

<Resource Transition>

Barrは以下のようにAssignしました。

pResourceのm_buffersの値はまだ分かりません。

<Swap Chain>

M_buffersの値を得る為に以下のようにしました。

まずWindow.hにsize_t型のVariable、m_currentBufferIndexを作成します。

そしてPreset()関数ないで以下のCodeを追加する事で

現在のBufferのIndexの値を取得します。

これでm_bufferの値を取得出来ました。

後はこの値を以下のようにしてm_bufferにセットします。

EndFrame()関数も同じようにやります。

Main()関数にBeginFrame()関数を追加します。

更にEndFrame()関数も追加しました。

ここでTestしています。

Errorの表示が出てました。

これはResizeした時に現在のBufferのIndexの値が正しく変更されてないからだそうです。

この問題を直しています。

まずPreset()関数に追加した以下のCodeを消します。

そしてBeginFrame()関数の最初に追加しました。

もう一回Testしています。

今度はErrorは表示されませんでした。

丁度10分たったので、今週のLötwig Fusel氏のD3D12 Beginners Tutorial [D3D12Ez]の勉強はここまでとします。

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

8.2.1「 5.8.2 Root Parameterの設定」を勉強する

Root ParameterはD3D12_ROOT_PARAMETERを使用して指定するそうです。

公式SiteであるD3D12_ROOT_PARAMETER structure (d3d12.h)[12]によると

以下の構造になっています。

今回はDescriptor Tableとして使用するのでParameter TypeにはUnionのMemberはD3D12_ROOT_DESCRIPTOR_TABLE型であるDexcriptorTableを使用します。

教科書の解説によると、このD3D12_ROOT_DESCRIPTOR_TABLE型については後で解説するそうです。

次にShaderVisiblityについてですが、これはD3D12_SHADER_VISIBILITY_PIXELを指定していました。

公式SiteのD3D12_SHADER_VISIBILITY enumeration (d3d12.h) [13]には

以下の種類が載っていました。

更にD3D12_SHADER_VISIBILITY_PIXELについて

と説明されていました。

実際の実装をSample Codeで確認すると以下のようになっていました。

ここではDescriptorTableの値も定義していました。

教科書では、DescriptorTableはどこで定義するのかと思ったら、すぐにDescriptorTableの話が始まりました。

まずDescriptorTableの定義からです。

公式SiteのD3D12_ROOT_DESCRIPTOR_TABLE structure (d3d12.h)[14]のSyntaxです。

話は一寸それますが、Syntaxって定義って意味ではなかった気がします。

ここでは定義と同義で使用していますね。

一応調べるか。

Copilotに聞いたら以下の回答が返って来ました。

要はみんな(Programmingの場合はComputer)が理解出来るために定めたRuleの事だそうです。

こういう順番に並べます。といかそういうRuleの事をSyntaxと呼ぶんだそうです。

DescriptorTableの話に戻りますが、このSyntaxの中にDescriptor Rangeがあります。

DescriptorTableを作成するためにはこのDescriptor Rangeを先に作成する必要がある訳です。

でこのDescriptor Rangeは次の節で勉強するそうです。

これで「 5.8.2 Root Parameterの設定」は終わりでした。「 5.8.2 Root Parameterの設定」の実装は来週やる事にします。

9.まとめと感想

なし

10. 参照(Reference)

[1] Procedural Minds. (2024, July 28). Get started with PCG 5.4 by creating a full building | UE 5.4 p1 [Video]. YouTubehttps://www.youtube.com/watch?v=oYNA24tcYc0

[2] Rigging with Control Rig. (n.d.). Unreal Enginehttps://dev.epicgames.com/documentation/en-us/unreal-engine/rigging-with-control-rig-in-unreal-engine

[3] Control rig. (n.d.). Epic Dev. https://dev.epicgames.com/documentation/en-us/unreal-engine/control-rig-in-unreal-engine

[4] Yepkoo. (2024, December 14). UE5.5 - Let’s fast setup the Vroid anime character in Unreal and apply the animation. (Subtitled) [Video]. YouTubehttps://www.youtube.com/watch?v=srS3O_PxzUM

[5] Code With Ro. (2025, January 19). Anime Character to game Animation sample in Unreal Engine 5 [Video]. YouTubehttps://www.youtube.com/watch?v=H63IXj625Qc

[6] Nine Between. (2021, February 11). VEX isn’t scary Project - Part 2: Point Generation [Video]. YouTubehttps://www.youtube.com/watch?v=hkdKxfHSFvo

[7] Kamph, S. (n.d.). ComfyUI Tutorials. YouTubehttps://www.youtube.com/playlist?list=PLXS4AwfYDUi5wW_Uo2nj90guu-_hUl96x

[8] Sebastian Kamph. (2023, July 15). SDXL 1.0 in ComfyUI - Stable Diffusion [Video]. YouTubehttps://www.youtube.com/watch?v=sgYC9eWClCY

[9] Sebastian Kamph. (2023, November 10). How to AI animate. AnimateDiff in ComfyUI tutorial. [Video]. YouTubehttps://www.youtube.com/watch?v=iucrcWQ4bnE

[10] ComfyUI Workflow Blog. (2024, September 19). ComfyUI Image to Video Workflow Tutorial: AI Latest: Convert Images to Videos with CogVideoX-Fun [Video]. YouTubehttps://www.youtube.com/watch?v=OpWua6XQ_I0

[11] Lötwig Fusel. (2023, July 8). Resource State | D3D12 Beginners Tutorial [D3D12EZ] [Video]. YouTubehttps://www.youtube.com/watch?v=yWg0TVahQzI

[12] Stevewhims. (2021, April 2). D3D12_ROOT_PARAMETER (d3d12.h) - Win32 apps. Microsoft Learn. https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ns-d3d12-d3d12_root_parameter

[13] Stevewhims. (2024, February 22). D3D12_SHADER_VISIBILITY (d3d12.h) - Win32 apps. Microsoft Learn. https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_shader_visibility

[14] Stevewhims. (2024, February 22). D3D12_ROOT_DESCRIPTOR_TABLE (d3d12.h) - Win32 apps. Microsoft Learn. https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ns-d3d12-d3d12_root_descriptor_table

 

*1:aqua and yellow:0.85) but Limited palette:1.2),//,Chinese architecture,Ink,hair flowers,bamboo forest,bamboo,//(long hair),small breasts,smile,((dragon

UE5の勉強 -映像作品としてのLandscapeを作成する-

1.今週の予定

Houdiniの勉強の時間を一日減らして「AIの調査」に変更しました。

「AIの調査」では「AIの勉強」の続きをしても良いですし、公開されているAIのServiceを試してその結果などをまとめる事もやります。

  • 映像作品としてのLevelの作成
  • AIの勉強
  • Nvidia Omniverseの勉強
  • Gaeaの勉強
  • Houdiniの勉強
  • AIについての調査
  • DirectX12の勉強

2.映像作品としてのLevelの作成

2.1 3D Gaussian Splatting

狭い部屋を撮影してみました。

しかし全く綺麗に作成されませんでした。

前回見た非常に綺麗な3D Gaussian Splattingは3D Cameraを使用して撮影したのかもしれません。

3D Gaussian Splattingの調査はこれで一端終了します。

2.2 PCGの勉強

2.2.1 先週までの復習

前回、何を勉強したのか全く覚えていません。調べると前にPCGを勉強した記録があるのは2024-12-22のBlogでした。

これを読み直します。

PCGでLoopを作成しています。

作成の仕方は分かりましたが何でこれでLoopになるのかが分かりません。

その辺は作成しながら勉強します。

とりあえず2024-12-22のBlogで勉強した内容を実装してみます。

2.2.2 Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]の最後の部分を実装する

<28:53 - Advanced Copy Points Up Loop>

新しいPCG Graphを作成します。

名前はTutorialと同じくPCG_CopyPointUp_Advancedとしました。

PCG_Building内にDragし以下のNodeを作成します。

2024-12-22のBlogではLoop Nodeを選択せよ。と書いてありますが、ScreenshotではSubgraphの作成の方が選択されています。

間違えてSubgraphの方を最初作成してしまいました。

Double Clickして中を開きます。

2024-12-22のBlogでまとめた内容と同じInputノードとOutputノードがありました。

InputノードのParameterを変更します。

Allowed Typesの値をPointに変更します。

更にPin StatusをRequiredに変更します。

しました。

新しいIndexを追加し、そのAllowed Typesの値をAttribute Setに変更します。

更にUsageの値をLoopに変更します。

最後にLabelの値をLoopsに変更します。

しました。

こっちはPin Statusはそのままのようです。

更に2つのIndexを追加します。

2024-12-22のBlogには「最後のIndexはLevel名だけ変更しました。」と書かれていますが、心配なのでTutorialで確認します。

あってました。

Inputノードです。

2024-12-22のBlogと同じになってます。

今度はOutputノードの設定を変更します。

Pinを追加して以下のような設定に変更しました。

こっちはPointを出力するのか。

またInputノードに戻って以下のIndexを追加しました。

ここからLoop内の実装が始まります。

ここで気が付いたんですが、2024-12-22のBlogのScreenshotにあるInputノードのInputのIconがIndex1~4まで全部Attribute Setになっています。

あれ?

InputノードのIndexのAllowed TypeはAnyにセットしたはずじゃ。

Tutorialを見て確認します。

何とTutorialでは三番目のInput、Unique Floor OffsetのAllowed Typeは最初からAttribute Setになっていました。

最後のInput、Wall HeightではしっかりAllowed Typeの値をAttribute Setに変更していました。

以下のような実装を追加しました。

これはInputsされたPointの位置を壁の高さ*Loop Indexの値だけ上にずらしています。

更に以下の実装を追加しました。

これはFloorと同じ形状にする階を決定しています。

2024-12-22のBlogでは以下のように書いていますが

Moduloって余りを計算しているだけです。

Inputノードの設定も間違えて記録していましたし2024-12-22のBlogのまとめはボケボケです。

更に以下の実装を追加しました。

Create Attributeノードの値は0になっていますが、これってDoubleなんでしょうか。

Create Attributeノードを作成するとDefaultではDoubleになっています。

Tutorialで確認します。

うーん。

単に追加しただけですね。

これで余りが0のPointだけ選別出来ました。

更に以下のような実装を追加しました。

成程。

こうする事で余りが0でないFloorはBranchノードのBから出力されるようになるのか。

ああ、分かりました。

このLoopはFloorと同じ形状で作成する階とそうでない階のPointを分けてるんです。

やっと理解出来た。

以下のようにOutputノードに繋ぎました。

PCG Buildingに戻ります。

Static Mesh Spawnerノードを外してPCG Copy Point Up Advancedノードを追加します。

更にFloor LoopsノードをPCG Copy Point Up AdvancedノードのLoopsに繋げました。

Floor Loopsの実装は間違っている訳では無いですがTutorialの実装と少しだけ違っていたのでそれも直しました。

BP_Buildingを開きUnique Floor OffsetとUnique Floor Every Xの値を作成します。

Unique Floor Every Xの設定です。

Variable TypeはIntegerです。

となるとさっきのPCG Copy Point Up Advancedノード内で使用したCreate AttributeノードのTypeもIntegerで良いのでは?

これは後で確認します。

Default Valueは2にセットしました。

Unique Floor Offsetの設定です。

2024-12-22のBlogには以下のようなCommentが書き込まれていましたが

今はこれらのVariableが何を示しているのかは分かります。

Unique Floor Offsetは一階と同じ形状の階のFloorのOffsetの値を示していて、Unique Floor Every XはそのFloorが何回毎に繰り返し現れるのかを示しています。

まあそう言う訳で一寸は成長しているのは確認出来ました。

更に壁の高さを指定するVariableを追加します。

これはWallSizeとは違うんでしょうか。

この辺はまだよく分かってないです。

TypeはFloatでした。

これInstance EditableがOnになっていたんですけど、2024-12-22のBlogにはその事の記録が無かったです。

うーん。

2024-12-22のBlogの勉強はダメダメだな。

最後にDefault値を300.0にしました。

PCG Buildingに戻りPCG Building内で作成したVariableを呼び出して繋ぎました。

最後にStatic Mesh Spawnerノードを繋ぎます。

2番目のStatic Mesh Spawnerノードに追加するStatic Meshを選びます。

見た目が違う奇抜なのを選びました。

サイズが前のWallと違いますね。

これは後で調整します。

Wallの大きさは調整出来ないかもしれません。

その時は別なWallに変更します。

結果です。

やっぱりWallのSizeは調整出来ないのか。

横幅が400 cm、高さが300cmのWallを探します。

以下のMeshに変更しました。

Mesh1にセットしたMeshと同じような形状ですが仕方ありません。

結果です。

おお。

出来てそうですね。

値をいじってみました。

結果です。

おお、出来てます。

ここで色々試したいですが、先に2024-12-22のBlogの残りをやってしまいます。

PCG Get Floor LoopsノードのInputの名前をWall SizeからWall Heightに変更してInputする値をWall Heightに変更しました。

あ、そういう事か。

今まではWall SizeをWall Heightとしても使用していたのか。

ぞれぞれにCommentを追加します。

<37:20 - Interior Floor Generation>

何とこの節以降は後でやると書いてありました。

のでここからの勉強は来週やります。

2024-12-22のBlogの実装は出来ました。

2.2.3 Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1 [1]の最後の部分を実装した感想

まず最後まで終わってなかったです。

PCG_CopyPointUp_Advancedノード内のCreate AttributeノードのTypeを直しておきます。

Moduloの答えは常に整数ですので、ここはIntegerで良いです。

次はここです。Wall HeightはFloatですので、Create AttributeノードのTypeもFloatにします。

というかなっていました。

Field of Viewの値を60に変更しました。

建物が白過ぎます。

Post Process Volumeを追加して以下の設定にしました。

画面を少しだけ暗くしました。

結果です。

うーん。

他のWallを探しますか。

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

かなり良いですね。

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

「HDRIを使用したLevelの作成」は「Level Sequence上でAnimationの編集をする方法」に変更しました。

これからはAnimationに集中して勉強していくからです。

前回、以下のように書きましたが

流石に3カ月に一回は大変です。

まあ出来たら位に考えてやっていきます。

2.3.1 How To Make Animations For The Unreal Engine 5 Mannequin [2]を勉強する

今週はこれを勉強します。

この辺がLevel Sequence上でCharacterのAnimationを作成するための基礎のような気がします。

Level Sequenceを追加しました。

MannequinsのAnimationを一つ選択しました。

このAnimationをLevel上に追加し

更にLevel Sequenceに追加しました。

Mannequinsの表示が以下のようになりました。

肩を回転させて以下のPoseを作成しました。

以下のButtonを押してPoseをSaveします。

更にPoseを追加してAnimationを作成していきます。

これは昔流行ったMMDと同じ原理です。

Animationの長さを30までにしていました。

画面の表示を見ると30fpsなので一秒間の長さのはずですが、実際に再生している所を見ると一秒よりかなり長く感じます。

?っとなりました。

今度はこのAnimationのBakeの仕方です。

これでこのAnimationを持つSK_Mannequin_Sequenceが作成されました。

開くと手を振ってるAnimationが表示されました。

今度は、既にあるAnimationを編集する方法だそうです。

Level SequenceにあるAnimationを消してもう一回MM_Idleを追加し直しました。

以下に示したCR_Mannequin_Budyを消します。

編集したいAnimationを以下の箇所から追加します。

以下のようにAnimationのSequenceが追加されました。

MM_Idleを選択して以下のBoxを開き、Bake To Control Rigを選択します。

ここでCR_Mannequin_Bodyを選択します。

すると以下のWindowが開きます。

CreateをClickするだけです。

結果、

以下のようなRigが表示されたり

Level Sequenceに以下のようなAnimationの記録が表示されるようになりました。

ここでPoseを変更してBakeし直したら、編集が出来るそうです。

編集したAnimationをExportするのは新しいAnimationを作成した時と同じ方法で出来るそうです。

2.3.2 How To Make Animations For The Unreal Engine 5 Mannequin [2]を試してみる

これは簡単なので今すぐ試してみます。

MannequinsのAnimationをLevelに配置してLevel SequenceにそのAnimationを追加しました。

Level Sequenceの状態です。

簡単なAnimationを追加しました。

このAnimationをAnimation SequenceとしてBakeします。

出来てるか確認します。

出来てました。

開いて確認すると確かに作成したAnimationです。

今度は既にあるAnimationを編集してみます。

Level Sequenceに合ったAnimationを消してもう一回、同じAnimationを追加し、CR_Mannequins_Bodyを消しました。

更にAnimationを追加しています。

Bake To Control Rigを選択しました。

Windowが開いたのでCreateを押すと、

Animationが追加されました。

一寸だけ編集しました。

BakeしてAnimation Sequenceから確認します。

以下のPoseを追加したんですが

前後のつながりがおかしいので変な動きしています。

Animationの編集はかなり難しいそうです。

が一応、Tutorialに書かれている事は出来ました。

2.3.3 How To Make Animations For The Unreal Engine 5 Mannequin [2]を試した感想

やっぱり既存のAnimationを編集して改変するのは大変だと分かりました。

私が直したいのはDragonの爪が地面に食い込んでいる部分のAnimationだけです。

なんか別の方法はないんでしょうか?

後、前にDragonのAnimationを編集しようとして出来なかったのは何故なんでしょう?

これも調べます。

2024-12-22のBlogでDragonのAnimationを調整しようとしていますね。

出来てないですけど、Bake to Control Rigが無かったから出来なかったみたいです。

Dragon用のControl RigがUE5にはあった気がします。

調べます。

それっぽいのが出て来ました。

Full Body IK: Procedural Dragon Animationsについては来週、見る事にします。

HOW TO ANIMATE SKELETEAL MESH IN LEVEL SEQUENCER UNREAL ENGINE 5 [3]にControl Rigを追加する方法が載っていました。

その方法でDragonにControl Rigを追加出来ないか確認したところ

出来そうではあります。

Control Rigについての基礎を勉強する必要があります。

公式SiteにControl Rig [4]というのがあり

この中にRigging with Control Rigがありました。

この辺を勉強したらどうやってControl RigをSkeletal Meshに追加出来るかが分かるかもしれません。

3.AIの勉強

3.1 Lecture 2の宿題、Hugging FaceにWeb Appを公開する、をやるための手順をまとめる

来週からHugging FaceにDeep Learningを使用して作成したModelを使用出来るWeb Appを作成します。

そのための手順をまとめます。

  1. Modelを作成する
  2. CleanしてModelの精度を上げる
  3. ModelをExportする
  4. LocalでJupyterを使用出来るようにする
  5. JupyterからModelを使用出来るようにする
  6. Jupyterから使用出来るようになったModelにGradio interfaceを使用してUIを追加する
  7. Hugging FaceのCloneを作成してHugging Faceに自分のWebsiteを公開する
  8. Localで作成したWeb AppをHugging Face上に公開

まず使用するModelですがLecture1の宿題で作成したPikachuとCharizardを区別する画像認識を使用します。ので1の部分は大体は終わっています。

次にこのModelをCleanして精度を上げます。

そしてModelをExportします。これはColabからやりますが既にやり方は判明しているので簡単でしょう。

同時にLocalでJupyterを使用出来るようにします。

この部分は全く勉強していません。今週はこの部分の勉強もやる事にします。

Localな環境でJupyterが動くようになったらDownloadしたModelを使用してPikachuとCharizardを区別する画像認識を試してみます。

更にこのLocalな環境からGradio interfaceを使用してUIを追加します。たしかここでPythonとかも追加する必要が有った気がします。

この辺は後で確認します。

Localな環境でWeb Appが動くようになったらHugging FaceのCloneを作成してHugging Faceに自分のWebsiteを作成します。

そこにLocalで作成したWeb Appを公開します。

以上です。

この計画で出来るか分かりませんが、とりあえずこれでやってみます。

3.2 Localでjupyterを使用出来るようにする設定をまとめる

< Lesson 2: Practical Deep Learning for Coders 2022 [5]の「Getting Python, Jupyter notebooks, and fastai running on your local machine」を勉強する>

この節は要らないと思いSkipしていました。

が今は最も重要な節の一つである事が判明しています。

のでここでまとめます。

LocalにFast AIを動かすためにはPythonとJupyterをPCにInstallする必要があるそうです。

GitHubのFastai/fastsetupに移動します。

でCloneを作成するんですが

GitHubのDesktopからCloneを作成しています。

何で?

せっかくWSL2を入れてUbuntuからCloneを作れるようにしたのに?

なんか理由があるんでしょうか?

WindowsのFolderにCloneしていますね。

これだったらZipでDownloadして解凍しても同じかもしれません。

今度はTerminalからCloneしたFolderの内容を確認しています。

これUbuntuのような気がするんですが、どうなんでしょう?

生のWindowのTerminalだとlsってCommand使用出来ないはずです。

うーん。

早速謎。

次に以下のCommandを実行しています。

vim setup-conda.sh

vimってどういう意味なんでしょうか?

Copilotに聞いてみます。

Tex Editorの事だった。

そして

と言っていました。

やっぱりUbuntuでやってそうです。

setup-conda.sh Fileが開きました。

このCodeがPythonをInstallしてくれるそうです。

このCodeを見るとMac OSLinuxの設定はありますが、Windowsの設定はありません。

やっぱりUbuntuでやってますね。

./setup-conda.sh

ここでLinuxMacを使用している生徒に対してのAdviceがありました。

LinuxMacにはDefaultでPythonが入っていますがそのPythonはSystemを動かすのに使用しているので別なPythonをDownloadする必要があるそうです。

でもまあやる事はこのFileを実行するだけみたいですけど。

Installが終わったらTerminalを閉じて開きます。

そして以下のCommandを打つと

以下のような長い解説が表示されるそうです。

MambaがInstallされた証拠です。

そして以下のCommandでMambaにFastAiをInstallするように命令します。

mamba install fastai

結果です。

と思ったらこっちのCommandだと中止して新しいCommandをTypeしました。

mamba install -c fastchan fastai

だそうです。

FastAiだけでなくPyTorchなどの他の必要なSoftもInstallしてくれるそうです。

このInstallが終わったら今度はNbdivをInstallするそうです。

でもしなくても良いみたいです。

よく分からない内にNbdivの説明は終わってしまいました。

そもそもNbdivの意味が分かりません。

Copilotに聞いてみます。

Nbdevでした。

この説明を読む限りでは必要な機能のように思えます。

一応、Commandを記録しておきます。

画面の端に一瞬写しただけなのでこれを解読するしかないです。

Mamba install -c fastchan nbdev

だそうです。

あ、分かりました。

ここで説明が有りました。

これでJupyter Notebookが使用出来るようになったそうです。

うん。

そうなのか。

結構簡単ですね。

以下のCommandを実行しました。

jupyter notebook –no-browser

以下の回答が表示されるそうです。

その回答の一つにあるURLをClickすると

以下のようにBrowserが開きJupyterが表示されるそうです。

この説明通りに出来るのなら簡単に出来そうですね。

以上だそうです。

< Lesson 2: Practical Deep Learning for Coders 2022 [5]の「Getting Python, Jupyter notebooks, and fastai running on your local machine」を勉強した感想>

これならすぐに出来そうです。

最初のfastsetupのCloneを作成するとこだけ、Ubuntuで直接やれば良いはずです。

今、やってみます。

FastAI/fastsetupが無いです。

URLで飛ぶと以下のSiteに移動します。

うーん。

これってあってるの?

Setup-conda.shがありました。

開いてみます。

書いてあるCodeは同じっぽいです。

しかもCodeの提供者がこのTutorialを作成している教授なのであってそうですね。

これをCloneします。

Ubuntuに以下のFileを作成しました。

ここにCloneします。

git clone https://github.com/AnswerDotAI/fastsetup.git

でClone出来たはずです。

一応Copilotに聞いて確認します。

あってました。

Clone出来ました。

ここでいきなりsetup-conda.shを実行しても良いんですが、せっかくですので以下のCommandでVimからSetup-conda.shを開いてみます。

vim setup-conda.sh

おお、開けました。

CodeはTutorialで使用しているCodeと同じですね。

でもどうやって閉じるんでしょうか?

Copilotに聞きました。

やってみます。

Escを押しました。

うーん。

Command Modeになってるのか不明です。

実行してCodeに変更が追加されたら面倒です。

このTerminalを閉じちゃいます。

もうTerminalを開いて戻って来ました。

では

./setup-conda.sh

を実行してSetupを開始します。

一応、CopilotにこのCodeの意味だけ確認しておくか。

大丈夫みたいです。

実行しました。

結果です。

Terminalを一回閉じて開き直せ。と言っています。

Tutorialと全く同じ状況です。

MambaとCommandを打ったら以下の回答が表示されました。

これもTutorialとまったく同じです。

MambaのInstallは出来たみたいです。

今度は以下のCommandでFast AIをInstallします。

mamba install -c fastchan fastai

これも一応、CopilotでどんなCommandなのか確認してから実行します。

Mambaを使用してFastaiをInstallするためのCommandだそうです。

Errorになりました。

うーん。

なんで?

TutorialではFastaiのDocumentのPageからこのCommandを得ていましたが、今でも同じCommandが載っているのかそのSiteを確認してみます。

https://docs.fast.ai/

いきなり以下のCommandが書いてありました。

conda install -c fastai fastai

こっちのCommandをMambaに変更したら行けるかも

mamba install -c fastai fastai

なんか出来たみたいです。

Tutorialには表示された以下のMambaのImageは表示されなかったです。

でも大丈夫でしょう。

次はJupyter notebookをInstallします。

Tutorialは以下のCommandでInstallしていました。

mamba install -c fastchan nbdev

がこのFastchanが怪しいんです。

どうしよう。

やってみるか。

駄目でした。

やっぱりfastchanが駄目みたいです。

検索したら以下のSiteがありました。

https://nbdev.fast.ai/getting_started.html

ここにNbdevをCondaからInstallするCommandが書いてありました。

conda install -c fastai nbdev

これをMambaに変更して試してみます。

mamba install -c fastai nbdev

一瞬で出来ました。

これでInstallは完成です。

以下のCommandを実行してJupyter Notebookが開けるか確認してみましょう。

jupyter notebook –no-browser

以下の回答が返って来ました。

Jupyter入ってないじゃん。

Copilotは以下の回答を返してきました。

どっちが正しいんでしょうか?

色々調べたんですが分かりません。

それぞれのSiteで微妙に違うCommandを使用しています。

mamba install notebook

を試してみます。

出来ました。

ではテストしてみます。

そんなFileはないって返事が返って来ました。

でもJupyterは入っているみたいです。

以下のSiteをみたら

https://christianjmills.com/posts/mamba-getting-started-tutorial-windows/

と打ったらJupyter Notebookは起動するみたいです。

打ってみました。

LocalのURLをCopyしてBrowserから開いてみました。

はっはは。

動いています。

出来ました。

今週はここまで出来たら十分です。

Ctr-cでServerをShutdown出来るそうですので、試します。

出来ました。

4.Nvidia Omniverseの勉強

今週から通常運転に戻れます。

4.1 前回までの復習

復習しなくても覚えています。

やっとXacroをURDFに変換出来る環境が完成したら、Errorで動かなかったんです。

2024-12-22のBlogを読み直すとrealsense2_descriptionというPackageが無いというErrorでした。

うーん。

更に最後にこんな過激なCommentを言っています。

こんなの全部やるのは無理です。

じゃどうするかですが、一個ずつ調べていきます。

まずこれからです。

これが正しいのか調べます。

まずはCopilotに聞きます。

Supportしてるって言っています。

本当かな?

参照元を見てみます。

https://github.com/IntelRealSense/librealsense/issues/13663

うーん。

これ見るとSupportしてるみたいです。

となるとIntel RealSenseをInstallする方向で頑張るのが良いのか。

もしくは単にJazzyをUpdateしたらいいのかも。

あれ?

GitHubRealsense-rosのVersion4.55.1になっています。

これは一つ前のUbuntuのVersionでやり直した方が良さそうです。

それは兎も角として以下に書かれているConfigure your Ubuntu repositoriesの意味が分かったのでここに記録しておきます。

UbuntuのSeverにはInstall出来るPackageが沢山用意されています。その場所をRepositoriesと呼ぶそうです。

正しそのRepositoriesには以下の4種類があって

通常の設定ではMainしかAccess出来ないそうです。

つまりDownloadしたいPackageが見つからない事態になる訳です。

で、設定を変更するとMain以外のRepositoriesにもAccess出来るようになるそうです。

と理解して成程とこの部分を読んだんですが、

後で、Copilotで確認したらDefaultの設定でもこの4つのRepositoriesにはAccess出来るそうです。

うーん。

どういう事。

じゃ設定変える必要はないの?

4.2 Ubuntu20をInstallしてそれにふさわしいROS2をInstallしてそこで試す

Ubuntuの前のLTS(Long-Term Support)は22でした。こっちを調べます。

2024-10-27のBlogにROSのVersionが詳しくまとめられています。このBlogを見るとUbuntuの22に対応するROS2はHumble Hawksbillです。

これをInstallして試してみます。

Microsoft Storeから以下のUbuntuをInstallしました。

普通に出来ました。

次にROS2をInstallします。

2024-10-27のBlogを見るとUbuntu 22.04に対応するROS2のVersionは

Humble HawksbillとIron Irwiniの2つだそうです。

Humble HawksbillがLTS(Long-Term Support)だそうなのでこっちをInstallします。

2024-11-17のBlogにROS2のInstallのやり方がまとめられています。

更に2024-11-24のBlogに実際にROS2をUbuntu 24.04にInstallした話がまとめられています。

これ読んだら今すぐ出来そうですね。

一寸だけ読んでみます。

大体理解しました。

公式の以下のSiteに沿ってやってるだけです。

https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html

やってみますか。

<Set locale>

まずUbuntuのCharacter Encodingの設定がUTF-8になっているかどうかを確認します。

なってますね。

一応UTF-8にUpdateしておきます。

以下にあるCommandは全部実行しました。

結果です。

LanguageがEn_USのUTF-8に変更されています。

<Enable required repositories>

Ubuntu Universe repositoryをEnableします。

この2つのCommandには後で言いたい事があります。

今は先に進みます。

ROS 2 GPG keyをAptを使用して追加します。

そしてSource ListにこのRepositoryを追加します。

<Install development tools (optional)>

Updateします。

このCommandは2024-11-24のBlogのCommandと一寸違いますね。

と思ったらこれは次の節の<Install ROS 2>の内容でした。

HumbleのInstallには<Install development tools (optional)>の項が無かったです。

Updateします。

こんな警告が書かれていました。

以下のCodeを実行してROS2をInstallします。

物凄い時間がかかっています。

しばらく待ちます。

終わりました。

Errorが出てないって事は出来たって事でしょう。

2024-11-24のBlogではここで終わりですが、HumbleのInstallにはまだ続きがあります。

更に以下のCommandを実行します。

これで完成したはずです。

<Try some examples>

以下のCommandを実行しました。

TalkerのTestをやります。

結果です。

動いてますね。

別のTerminalからLinsterを起動します。

はい。

出来ました。

もう少し進めたかったですが、一寸まとめたい事があるのでそっちをやる事にします。

4.3 Ubuntu20をInstallするためのCommandの意味を勘違いしてた件

ROS 2 apt repositoryをInstallするための手順ですが、以下のようになっています。

これってさっき勉強したUbuntuのRepositoryの話じゃないですか。

最初のCommandはUbuntuUniverse RepositoryにAccess出来るようにしてるみたいです。

Copilotに聞いたら理解出来ました。

以下のCommandがUbuntu Universe RepositoryにAccess出来るようにするCommandだそうです。

sudo add-apt-repository universe

このCommandが入っているPackageがsoftware-properties-commonで、これをInstallするためのCommandが

sudo apt install software-properties-common

でした。

はい。

やっとこの辺のCommandの意味が理解出来ました。

で次のCommandですが、GPG key (GNU Privacy Guard key)についてです。

これって所謂Public KeyとPrivate Keyのやつでしょう。

もう分からないのでCopilotに直接聞きました。

こういう意味だそうです。

うーん。

成程。

このKeyでDownloadしたROS 2 apt repositoryが正式である事を証明するのか。

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

5.Gaeaの勉強

今週でGaea2のTutorialの基礎編はお終いです。

5.1 PowerPointの作成

今週はMW Landscape Auto Materialの使い方を勉強します。

Installの方法と、使い方を説明します。

Fabにある新しい無料Assetの説明です。

MWのInstallのやり方を説明します。

使用するMaterial Instanceの場所を説明しています。

LandscapeのMaterialをセットしました。

Material InstanceのParameterの操作方法についての説明です。

結果を示しています。

まとめです。

6.Houdiniの勉強

6.1 VEX Isn't Scary Project - Part 2: Point Generation [6]を勉強する

<intro>

このTutorialでは前回作成したLineをなぞって動くPointを生成するそうです。

更にSine、Cosineについての数学的な理解を更に深めるための講義もやるそうです。

<SineCosine>

Sine、Cosineの本当の基礎を説明してただけでした。

Houdiniを勉強する人達はデザイナーなので高校Levelの数学を知らないのかもしれません。

<Cosine>

SineとCosineがどうのように働くのかを示すために別のAttribute Wrangleノードを作成しました。

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

これはSine CurveのGraphを描くためのCodeですね。

Run Overの値をDetail(Only Once)に変更して

結果です。

Sine Curveが生成されました。

更に以下のCodeを追加して

Cosine Curveも作成しました。

SetPointAttrib()関数を追加しました。

この関数の機能は調べなくても分かります。

PointのAttributeの値を指定した値に変更します。

上記のCodeの場合、SinptのCdの値を1,0,0、CosptのCdの値を0,0,1に変更します。

結果です。

CdはPointの色を管理するCommon Attributeなので指定したPointの色が指定したRGBの色に変更されています。

このCommon Attributeと言う言い方があってるのか確認するのに前のBlogを総復習しました。

あってました。

2024-12-01のBlogに書いてありました。

CopilotにCdのような特定の機能を持ったAttribute達を総称して何と呼ぶのかと質問したら、回答が無かったです。

Common Attributeとは何ですか?と質問したら以下の回答が返って来ました。

うーん。

一寸違うような。

まあ、AIに回答出来ない内容なら時間をかけて調べても価値があります。

更に以下の実装を追加して

以下のCircleを描いていました。

Xの値を以下のように変更して

見やすくしています。

<Point Generation >

それでは前回作成したLine上にPointを作成します。

先程作成したAttribute Wrangle2ノードはけしてしまいます。

Attribute Wrangle1ノードを開いて以下のCommentを追加します。

このLine上にPointを生成するのか。

どうやるんでしょう。

Sine、Cosineを使わないならResampleノードとかでLine上にPointを生成したら出来そうですが、ここはVEXの勉強なのでそんな事はしないでしょう。

先をみます。

それぞれの場所におけるiの値を以下の図で示しています。

LineのStarting PointとEnd Pointは+―の値が変わっただけです。

そしてLine上の点はその間の値が順次変わっているだけです。

はい。

で、このLine上の間のPointがCosの値と同じである事を示しています。

うーん。でもこれって具体的にiが何を指しているのか不明なので何とも言えないです。

Iがyの値を指してるとしたら、Y軸上にあるLineのStarting Pointの値は1になってEnding Pointの値はー1になり、Cosの値と一致はします。

よく分からないので続きをみます。

<Float Progress>

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

ああ、ProgressにSin(Theta)をかけてxの値を計算しています。

そういう事か。

Progressは単にー1から1の線上のどこにPointがあるのかを0.8とか0とかの値で示します。

しかしそれでは3D空間にPointを生成出来ないので、Sin(Theta)とCos(Theta)でCoordinateに変換しています。

結果です。

おお。PointがLine上を移動してまるで円が動いているかのように見えます。

以上でした。

7.AIの使い方

7.1 Vroid Studioが凄い進化してた件

前回、AIから生成されたアニメ風のVideoが凄いので衝撃を受けたんですがVroid Studioも凄い進化してました。

Vroid Studioの最新版を試したら、ポチポチ選択しただけで以下の3D Characterが生成出来てしまいました。

凄い。

UE5.5で動かしてみます。

UE5.5 - Let's fast setup the Vroid anime character in Unreal and apply the animation. (Subtitled) [7]のやり方で設定しました。

公式Siteを含めて色々なSiteの説明を見ましたがここが一番分かり易かったです。

結果です。

後に写っているのはAIで作成した動画です。

移動してる時のSkirtのヒラヒラ感が凄いです。

このやり方でThird Personに適用させた場合、MToonMaterialSystemなどの適用は出来ないんでしょうか?

一寸深くなると分からないです。

こっちはこっちで勉強する事にします。

同じ作者の人が続きのTutorialを出していました。

こっちも勉強します。

更にGame Animation SampleのAnimationにも対応出来るのかも試したいです。

こっちはUE5.4でReleaseされて勉強しなければと思いつつ今までやっていません。

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

7.2 GenesisとCosmosとWorld Foundation Modelについて

まずCosmosとは何ですか?との質問に対して、World Foundation Modelです。と言う回答が返ってくる訳です。

で、じゃあWorld Foundation Modelは何ですか?との質問が来る訳です。

ここから解決していきます。

Nvidiaの公式SiteにあるWorld Foundation Models [8]には以下の説明がありました。

テキスト、画像、ビデオ入力から実世界の環境をSimulateし正確な結果を予測するNeural Networkのことである。

と定義されていました。

この定義から推測すると、例えばBallが浮いている画像を入力して動画を生成したら、そのボールが地面に向かって落ちる映像が生成される。という事になります。

更にWorld Modelの定義が以下のように述べられていました。

正確な結果の中には、物理と空間の特長、と明言してありました。

これが先週のBlogでまとめたJensen Huang氏のCESにおける発表に繋がる訳ですね。

これはCosmosを実際に試して確認しないと分からないですが、これを目指しているだけで実際に実現した訳ではないと思います。

いきなりこんな革命的な技術が降って湧く訳ないです。

ただしAI RobotのTraining用の映像を生成する目的だったら、ある程度の精度があったら十分なのかもしれません。

例えば、人間は車が接近していると危険だと認識しますが、その瞬間に車のタイヤの形状については特に気にしません。

次がGenerative Foundation Modelsについてです。

Foundation Modelは、膨大な量のLabelなしData Setを用いて訓練されたAI Neural Networkであり、さまざまなTaskを実行することができます。

と書かれていました。

ここで大切なのは、

  • 膨大な量のLabelなしData Setを用いて訓練
  • さまざまなTaskを実行することが出来る

の2点です。

この2点を備えたAI Neural NetworkをGenerative Foundation Modelsと呼ぶみたいです。

そしてWorld Foundation ModelはこのGenerative Foundation Modelsの上にWorld Modelを構築する事で達成している。と説明されています。

World Foundation ModelがどんなものかのImageはかなり掴めました。

如何にまとめてみます。

まずWorld Foundation ModelであるCosmosを理解するためにはその前にOmniverseを理解する必要があります。

Omniverseはそれ自体が膨大な概念で一言で説明するのは容易ではないんですが、Cosmosとの関係に限定して解説するなら、AI Robotを学習させるための仮想空間を提供する環境の事です。

AI Robotを仮想空間で学習させることで、現実空間では不可能だった故障Riskの回避や学習時間の短縮、適切な環境の確保が可能になりAI Robotの性能が爆発的に上がりました。

これがOmniverseです。

このOmniverseでやっていた事をAIでやったらもっと学習の効率が上がるはず。というのがCosmosの発想なんです。

で、Omniverseでやってる内容をAIでやるためには今の映像を生成するAIには絶対的に足りない2つの要素があります。

それが物理と空間の特長を現実世界と同じ原理で再現する事です。

そのために開発されたのがWorld Foundation Modelという新しい手法です。

となると、このWorld Foundation Model内で現実の物理現象がどれくらい再現出来てるのかが問題になります。

あんまり上手く行ってないんじゃないのかな。というのが今の私の率直な感想です。

というのは正しい空間をAIが生成出来るなら以下のようにOmniverseで生成した3D空間をCosmosにPassする必要はないからです。

ただしこれを見るとRenderingをかなり自由に変更出来てるのは確認出来ます。

倉庫内におけるRobotの学習といっても色々な環境があり、それぞれの環境に適用した教材を用意する必要があります。

それに関してはこのCosmosが最適解になりそうです。

<Physics EngineとGenesis

Cosmosの説明のところで、現実世界の物理現象をAIで正確に再現するという説明をしました。

現実世界の物理現象をAIで再現するというのは、実は今かなり研究されている分野だそうです。

伝統的な3DではPhysics Engineというのを使用して現実空間の物理現象を再現しています。

仮想空間にこのPhysics Engineを追加すると、現実の物理現象と同じように仮想空間の物体も動くようになります。例えば、空中にある物質はSimulationを開始した瞬間に地面に向かって落ちるようになります。

このPhysics Engineで最も有名なのがNvidiaが公開しているPhysXです。

でこのPhysics Engineを備えた仮想空間内で学習したAIに空中に浮いたBallと地面を作成してSimulationさせると、Physics Engineを備えていないにも関わらず、Ballが地面に落ちる結果を描くそうなんです。

でこのAIの計算Costが実際のPhysics Engineよりもかなり低いそうなんです。

じゃPhysics EngineをつけるよりもこのPhysics Engineを備えた仮想空間内で学習したAIに計算させた方が効率的じゃない。

というのが、現実世界の物理現象をAIで再現する。と言う話の今の状況らしいんです。

で、そのPhysics Engineの代わりになるAIのもっとも最先端のAIがGenesisだそうです。

如何にGenesisGitHubのPageを示しますが

https://genesis-embodied-ai.github.io/

しっかりNvidiaの研究者も名前が入っています。

これの発展形がCosmosのはずです。

このPageを読んでいきます。

あれ?

これってCosmosと同じじゃん。

AI Robotの学習のSpeedがIssac Gymの10~81倍になると書いていました。

そういう事か。

Genesisで生成したCharacter Motionを説明する映像です。

CameraがCharacterの周りを一周回って戻って来ました。

部屋の構造が前と全く同じです。

これはAIが部屋の構造がCameraが写していなくても変わらない事を完全に理解しているようにみえます。

公式のSiteには無かったんですが、RedditNew physics AI is absolutely insane (opensource) [9] には以下の映像がありました。

BeerのBottleの表面の水滴が垂れる映像です。

3つのCameraを生成して、それぞれのCameraに何を写すのかを指定しています。

結果です。

凄い。

で絶句Levelで凄いのが次の映像です。

移動する水滴のVelocity、Friction、Gravity、そしてSupport Forceの値を全部表示しています。

これ凄いのがコマ送りに見ると、それぞれの値が全部変わっているのにGravityの値だけは一定なところです。

ただ重力加速度って9.8m/s^2じゃなかったでしたっけ。

Copilotに聞いて確認します。

水やBeerだったら1mlで大体1ℊでしょう。

その3分の1である0.3gだと0.3mlになります。

水、一滴にしては重すぎでしょう。0.03gが妥当じゃないでしょうか?

それだと水滴が流れないので10倍の重力にしたんでしょうか?

細かい点ですが、一寸気になりました。

がそういう点を除けば絶句Levelの凄さです。

で、分かったんです。

これ見てNvidiaは焦ったんです。

ヤバい。Omniverseを誰も使わなくなると。

Omniverseを使わなくなったらAI Robotの開発においてNvidiaGPUが覇権を握る事は出来ません。

で、慌ててCosmosを開発したんです。

でここでTwo Minute PapersのNVIDIA Cosmos - A Video AI…For Free! [10]ですよ。

以下の欠点があると語っています。

これは実際のPaperを読んでまとめているので、やっぱりJensen Huang氏のCESにおける発表ほど、凄い結果は出てないみたいです。

となるとこのGenesisの結果も一寸怪しいです。

たまたますごい結果だけ載せてるのかもしれません。

よく分からないですね。

まあ、私はOmniverseの勉強を堅実に続けていきます。

7.3 CosmosをComfyUIで動かす

なんとYouTubeにCosmosをComfyUIから動かす方法を解説している動画がありました。

Best Open Source Video Model - How to run Nvidia Cosmos in ComfyUI [11]です。

ざっと見ましたが、私のRTX3,070tiではCosmosを動かすにはPower不足みたいです。

それよりもComfyUIの方に興味が出て来ました。

これって画像生成系のAIを設定するためのNoteを使用したUIのようです。

これは一寸勉強したいです。

調べたら、このChannelでComfyUIのTutorialもありました。

https://www.youtube.com/playlist?list=PLXS4AwfYDUi5wW_Uo2nj90guu-_hUl96x

最初のTutorial、How to install and use ComfyUI - Stable Diffusion. [12]を見てみます。

これなら今すぐ出来そう。

勉強する事にします。

7.4 How to install and use ComfyUI - Stable Diffusion. [12]を勉強する

<Intro>

ComfyUIは自分で自由にWorkflowを作成出来る非常に強力なUIである。との解説がありました。

<Download ComfyUI>

GitHubのComfyUIのPageからInstallingに飛ぶと以下に示したDirect link to downloadがあるそうです。

これをClickしたらDownload出来るそうです。

DownloadしたFileを解凍して開くと以下のようになっています。

Read Me Fileの内容を説明しています。

NvidiaGPUがある場合はRun_Nvidia_GPUを使用するとか、Updateする時はUpdate Fileを開いてupdate_comfyuiを使用するとかです。

もしUserがAutomatic1111とかStable Diffusion用の別のInstallationを既に使用している場合についても説明しています。

以下のFolderに移動して

以下のFileを選択して

.exampleを取り

Text Fileとして開きます。

Base_Pathの値を

Automatic 1111がある場所に変更します。

だそうです。

そもそもComfyUIを知ったのが今ですのでAutomatic 1111が何なのかも全く分かりません。

この部分の設定は無視して良いでしょう。

このTutorialの著者はAutomatic 1111を既にInstallしているので以下のように設定を変更していました。

Modelを全く持ってない人は、以下のCivitaiのSiteに移動し、

ここでよく分からないんですが、以下の猫の画像をClickしています。

そして以下のPageに移動して

DownloadをClickしました。

そして先程のComfyUIのFolder内にあるModelsを開き

Checkpointsを開きます。

以下のFileを貼り付けました。

これがさっきCivitaiでDownloadしたFileなの?

これがModelなんでしょうか?

これで設定は終わりだそうです。

以下のFolderに戻りrun_nvidia_gpuをClickします。

<Nodes>

こんなのが開くそうです。

DefaultのInterfaceだそうです。

<Prompts>

以下の2つのNodeの名前を変更しました。

KSamplerノードについて解説しています。

このNodeが全体を管理しているみたいですね。

後、このNodeに被る様にQueue Promptと書かれたNodeが有りますね。

このNodeは何か特別なNodeなんでしょうか?

説明がありました。

このQueue Promptを押すとRenderingが開始するそうです。

以下のImageが完成しました。

これは簡単ですね。

KSamplerノードのSampler_nameの値を以下のdpmpp_2mに変更していました。

更にSchedulerの値をkarrasに変更していました。

この後KSamplerのAdvance版のNodeを紹介していますが、これは今はSkipします。

<Using an image>

別のComfyUIの凄い所をこれから見せるそうです。

まず以下のImageをComfyUIにDrag & Dropします。

すると以下のようにNodeを自動で生成するそうです。

このImageをDragしたComfyUIのGraphには先程のDefaultの実装が無かったんですが、これはどうやって開いたんでしょうか?

謎です。

Errorが表示されていますが、これを見せるのが目的ではなくて、このWorkflowは先程Drag and DropしたImageを再現するものだそうです。

そういうのをComfyUIは自動で生成してくれるんだそうです。

本当でしょうか?

これは実際に起動して試す必要がありますね。

で、Errorの方の直し方なんですが、このErrorの原因は必要なNodeがInstallされてないからだそうです。

でそれらをこれからInstallするそうです。

<Installing custom node>

先ほどのCviitaiに移動して以下のComfyUI ManagerをDownloadします。

今度はComfyUIのFolderに移動して

Custom_nodesを開き、

ここに先程DownloadしたComfyUI Managerの中身全部をPasteします。

ComfyUIをRestartします。

まだErrorが表示されています。

Queue PromptのManagerを押し

以下のBoxを開きます。

Install Missing Custom Nodesを押します。

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

Installを押します。

でまたComfyUIを再起動します。

再起動すると今度はErrorが消えました。

Queue Promptを押すと以下の画像が生成されました。

<Examples>

ComfyUIのGitHubのPageにあるExampleを紹介しています。

これで終わりでした。

こんなに簡単なの。

7.5 How to install and use ComfyUI - Stable Diffusion. [12]を実装する

こんなに簡単なら今試してみます。

以下の箇所からDownloadしました。

結構時間がかかっています。

中を開くと以下のようになっていました。

Tutorialと一緒です。

今度はCivitAIに移動してDeliberateをDownloadします。

そんなModelはないです。

後、CheckpointsにSD1とかPonyとか書いてあります。

Tutorialにはそんな表現は無かったです。

人気があるModelは以下のですが、よく分かりません。

これをDownloadしてみます。

このPageに以下のCommentがありました。

Deliberateは無くなったようです。

Check PointにDownloadしました。

ComfyUIを起動させます。

なんとBrowserから開きました。

驚き。

今のWeb Appは凄いですね。

こんなのまでBrowserで対応するのか。

Load Checkpointノードを見ると

Check Nameの値に、先程セットしたのが表示されています。

Queue Promptノードが以下のようになっていました。

多分、Version Upして改良されたんでしょう。

Queueを押してみます。

おお、画像が生成されました。

KSamplerノードのSampler_Nameの値をdpmpp_2mに変更してみます。

結果です。

なんかIllustrationっぽいImageに変化しました。

今度はImageをDragしてみます。

アニメ風の画像だったからでしょうか?

どんなImageをDragしても出来ません。

今、作成したImageをDragしたら流石に作れるでしょう。

試してみます。

出来ました。

ComfyUI ManagerですがDownloadしましたが以下のBat Fileしか入っていません。

しかも起動させてもすぐに止まります。

Adminからじゃないと駄目なんでしょうか。

他のModelも試してみます。

これを追加してみます。

動いてはいるみたいです。

以下のImageが生成出来ました。

もう時間切れです。残りは来週やります。

8.DirectX12の勉強

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

8.1.1 Resource State | D3D12 Beginners Tutorial [D3D12Ez] [13]の最初の10分を実装する

先週のBlogには実装すると書いてありましたが、実際にしたのは勉強です。

ので今週は実装をやります。

以下の関数の宣言を追加しただけでした。

先週は用事があって勉強する時間が取れなかったんでした。

うーん。

今週も用事があって時間が取れない。

DirectX12の勉強はこれでいいや。

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

8.2.1「 5.8.1 Descriptor Tableとは」を実装する

先週勉強したRoot Parameterをセットする方法の部分だけ実装しておきます。

ErrorになってるRootparamは次の節で作成します。

9.まとめと感想

今週はやりたい内容が更に沢山増えました。

整理してやりたい奴からやっていきます。

10.参照(Reference)

[1] 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

[2] Unreal University. (2022, October 29). How to make animations for the Unreal Engine 5 Mannequin [Video]. YouTube. https://www.youtube.com/watch?v=tnZv7KQPai0

[3] AMMediaGames. (2024, January 23). HOW TO ANIMATE SKELETEAL MESH IN LEVEL SEQUENCER UNREAL ENGINE 5 [Video]. YouTube. https://www.youtube.com/watch?v=1hgkTN-L1hA

[4] Control rig. (n.d.). Epic Dev. https://dev.epicgames.com/documentation/en-us/unreal-engine/control-rig-in-unreal-engine

[5] Jeremy Howard. (2022, July 21). Lesson 2: Practical Deep Learning for Coders 2022 [Video]. YouTube. https://www.youtube.com/watch?v=F4tvM4Vb3A0

[6] Nine Between. (2021, February 11). VEX isn’t scary Project - Part 2: Point Generation [Video]. YouTube. https://www.youtube.com/watch?v=hkdKxfHSFvo

[7] Yepkoo. (2024, December 14). UE5.5 - Let’s fast setup the Vroid anime character in Unreal and apply the animation. (Subtitled) [Video]. YouTube. https://www.youtube.com/watch?v=srS3O_PxzUM

[8] What are World Foundation Models? - NVIDIA Glossary. (n.d.). NVIDIA. https://www.nvidia.com/en-us/glossary/world-models/

[9] New physics AI is absolutely insane (opensource). (n.d.). Reddit. https://www.reddit.com/r/LocalLLaMA/comments/1hhmebr/new_physics_ai_is_absolutely_insane_opensource/

[10] Two Minute Papers. (2025, January 7). NVIDIA Cosmos - a video AI. . .For Free! [Video]. YouTube. https://www.youtube.com/watch?v=QhA2CH6Z-v4

[11] Sebastian Kamph. (2025, January 17). Best Open Source Video Model - How to run Nvidia Cosmos in ComfyUI [Video]. YouTube. https://www.youtube.com/watch?v=v--lUeuUVOs

[12] Sebastian Kamph. (2023, July 14). How to install and use ComfyUI - Stable Diffusion. [Video]. YouTube. https://www.youtube.com/watch?v=KTPLOqAMR0s

[13] Lötwig Fusel. (2023, July 8). Resource State | D3D12 Beginners Tutorial [D3D12EZ] [Video]. YouTube. https://www.youtube.com/watch?v=yWg0TVahQzI

UE5の勉強 -映像作品としてのLandscapeを作成する-

1.今年の予定、目標

今年の勉強する内容は去年と同じです。

今のところ、効果がしっかり出て来ているのでこれを続けます。

  • 映像作品としてのLevelの作成
  • AIの勉強
  • Nvidia Omniverseの勉強
  • Gaeaの勉強
  • Houdiniの勉強
  • VFXの勉強
  • DirectX12の勉強

それぞれの節で何をやるのかはそれぞれの節で説明します。

2.映像作品としてのLevelの作成

2.1 去年のまとめと今年予定

去年は3D Gaussian Splatting、PCGの勉強、HDRIを使用したLevelの作成などをやりました。

それぞれについて追加情報や、考察などがあるのでそれをここにまとめます。

<3D Gaussian Splatting>

去年の検証では3D Gaussian SplattingはUE5で背景に使用すると歪みが生じるのでPhoto-Realisticな3Dを作成するための質は確保出来ない。と結論が出ました。

しかし以下に示したScanning Tokyo using Luma AI and Unreal Engine 5[1]を見ると

www.youtube.com

現実世界そっくりの映像がUE5で再現されています。

こういう奥行のある狭い街道を撮影した場合は、3D Gaussian Splattingの方がPhoto-Realisticな3Dを作成出来るのかもしれません。

後は、360度Cameraで撮影したのかもしれません。

後、Luma AIのGaussian Splatting for UE5にSample Dataが5つ位あるらしいです。

それが結構Photo-Realisticらしいです。

それのCheckもしてみます。

後、狭い部屋を撮影したら結構綺麗に出る可能性もあります。これも試してみます。

<PCGの勉強>

これは順調に成果が出ているので続けます。

完成した建物がもっとPhoto-Realになるためにはどうしたら良いのかの検証も行いたいと思います。

後、Condominium(マンション)がどんな最小単位を繰り返して建築されているのかの検証もやって行きます。

<HDRIを使用したLevelの作成>

Level Sequence上でAnimationの編集をする方法なんですが未だによく分かりません。

これについての調査も続けていこうと思っています。

それを踏まえて、今度の動画は路地裏に迷い込んだら死体が転がっていて、その死体が起き上がって襲い掛かって来るという物にします。

今年はこういう15秒程度のVFXの動画を3カ月に1本は出していこうと思います。

3.AIの勉強

AIの勉強に関しては、今までの続きをそのままやって行くだけです。ので特別なまとめは無いです。

続きをやっていきます。

3.1 Lecture 2の復習のまとめ

Lecture 2の勉強としてYouTubeの講義を見て、教科書のThe fastaiの第2章Productionを全部読み、更に副教材として用意されていたPractical Deep Learning for Codersの2章 Deploymentも読みました。

その結果分かったのは、このLecture 2ではLecture 1で作成したDeep LearningのModelをUIなどを追加して誰でも利用出来るWeb Appとして公開する事を方法を教えているという事です。

そしてLecture 2の宿題はLecture 1で作成したModelをWeb Appとして公開する事でした。

しかし教科書のThe fastaiの第2章Productionのやり方は、一寸古く、最新のWeb Serviceなどを利用したやり方を紹介しているのはYouTubeの講義とそれの解説をしている副教材のやり方でした。

つまりYouTubeの講義のやり方に沿ってWeb Appを作成するのが正しいやり方になります。

それでYouTubeの講義の復習をする事にしました。

2024-12-08のBlogからYouTubeの講義の復習をしています。

今週もこの続きをやります。

3.2 2024-12-22のBlogを復習する

で、YouTubeの講義の復習をどこまでやったのか全く覚えていないのでその復習からやります。

前半部分は単にFastAiを使用してDeep LearningのModelを作成する方法についての説明をしているだけです。Colabを使用して作成する手順をまとめ直していますが、このModelはOriginalな画像認識AIをLecture 1の宿題として既に作成しています。

のでそんなに重要ではないはずです。

次にこのModelをExportする方法が紹介されています。

これはKaggleのやり方しか書いてないです。Colabでどうやるのかの説明はまだないと書いてありました。

ExportしたModelはHugging Faceから利用出来るようにする必要があります。

そのためのFolderにこのExportしたModelを貼り付けました。

このFolderの位置はHugging FaceをGitHubからCloneした時のFolderです。

で、ここで一端Hugging Faceから離れてまたKaggleに戻っています。

今度はExportしたModelを利用してDeep LearningのPredictionを実行するための実装方法について解説しています。

2024-12-22のBlogではURLがどこでやってるのか分からない。とかなり焦っていました。

KaggleからExportしたFileを参照出来るのはどのFolderにそのFileをPasteする必要があるのかが不明だからでしょうか。

ああ、分かりました。

このテストを実装するのにKaggleをLocalで起動させる必要があるのかもしれないと書いてありました。

だからURLをみて焦っていたのか。

やっと前回、何を勉強していたのかが分かりました。

ここでまた問題発生です。

先程、Ubuntu上(つまりHugging FaceをDownloadしたFolder)のFileにあるdog.jpgをここから開いていました。

その後はLoad_Leaner()関数を使用してExportしたModelを使用したりしています。

この辺の実装方法に関しては特に疑問はありません。

そして更にGradioを使用したUIの作成にも取り掛かっていました。

Classify_image()関数を作成しています。

2024-12-22のBlogでは、これはGradioから使用出来る関数を作成する必要があるからだ。と書いてありましたが意味不明です。

GradioからはFastAIの関数を使用する事は出来ないから、この関数を作成する必要があるという事でしょうか?

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

GradioはTensor Valueを扱う事が出来ないのでTensorをFloatに変換する必要があります。

あ。

そういう事。

そして<Creating a Python script from your notebook with #|export>は来週やると書いて終わっていました。

その後に「3.2 今日の復習で分からなかったところ」という節があり、その言葉通り、分からなかったところがまとめられていました。

これは重要な疑問ですね。

Copilotに質問したら以下の方法でColabからHugging Faceを使う事が出来るよ。

と返って来ました。

うーん。

ExportしたModelを試すのはこれでもいいのかな?

いや、これだとHugging FaceにWebpageを作る事は出来ないです。

そうか、どうやってPC上にあるFileをColabから参照するのかの方法が分らないのか。

調べます。

Import data into Google Colaboratory [2]を見ると

ColabにImportしたいFileをGoogle Driveに上げて、ColabからGoogle DriveAccessするのが一番早そうです。

久しぶりにStack Overflowを見ましたが、質問者に対する回答の意地悪ぶりは健在ですね。

こいつら本当にProgramming界の癌ですわ。

それは兎も角、ColabからLocalにあるFileをUploadする方法は分かりました。

後はKaggleからColabを使用する方法か。

うーん。

なんか違う事をやってる気がして来た。

もう一回Lectureを見直します。

ああ、分かりました。

DownloadしたModelをHugging FaceをDownloadしたFolderにSaveしたところまではあってるんですが、その後です。

KaggleからそのFolderに直接、Accessしています。

これか。

これのやり方が分からないのか。

そしてその後KaggleからGradioの実装をしています。

すると以下のWebpageが出来ています。

あ、これLocalhostじゃん。

そういう事か。

まだHugging FaceのWebは作成してなかったんだ。

この部分は納得。

でもLectureを見直してみると、やっぱりKaggleからUbuntuのFolderに直接Access出来るようになっていますね。

この設定をどうやるのかはまだ分かりません。

分からない部分はそれなりにありますが、とりあえず全体像を掴むため、先に進みます。

3.3  Lesson 2: Practical Deep Learning for Coders 2022 [3]の続きを復習する

実際は2024-09-23のBlogにまとめた内容を復習していきます。

<Creating a Python script from your notebook with #|export>

以下の#|exportについての解説です。

この印があるCodeだけが実装に必要なCodeだそうです。

そういう事なの?

いやここでやってる事は全く意味不明です。

以下の方法でNotebook2scriptをImportし

更に以下の方法でこのappの名前を指定します。

以下の返事が返ってきます。

ここまでは、#|exportが書かれているCodeをScriptとしてExportしたんだな。と分かります。

しかしここからが分かりません。

何とこのExportしたFile、VS CodeからApp.pyとして開けます。

なんで?

と思ったらその下に理由が説明されていました。

以下の設定があるので

うーん。

この設定でそうなるの?

よく分からん。

一応、TutorialのVideoの方で確認しますか。

うーん。

ここにまとめた以上の説明は無かったです。

App.pyをGradioにUpします。

TerminalからGit Commitと打つだけです。

Hugging Faceで確認すると以下のようになっていました。

うーん。

成程。

これで一応、Deep Learningを使用したWebsiteが完成しましたね。

残りは何をしているんでしょうか?

<Hugging Face deployed model>

Web上でテストしているだけです。

<How many epochs do you train for?>

ここはWeb Appとは関係ない話題でした。

<How to export and download your model in Google Colab>

おお、今度はColabでのExportのやり方を説明しています。

まあ非常に簡単なので2024-09-23のBlogの方を見て下さい。

<Getting Python, Jupyter notebooks, and fastai running on your local machine>

LocalでFastaiを走らせる方法を説明しています。

TutorialのVideoの方で確認したら、

やっぱりここでJupyterをLocalで走らせていました。

さっきのKaggleからExportしたFileを呼び出して動かしていたCodeはこのLocalで走らせているJupyterだったようです。

さっきのLocalhostのPageをもう一回見たら、以下に示した様にjupyterとしっかり書かれていました。

はい。

これで全部謎が解決しました。

<Comparing deployment platforms: Hugging Face, Gradio, Streamlit>

2024-09-23のBlogには

GradioとStramlitを比較してStramlitの方がFlexibleだとかそんな話だけでした。

とだけ書かれていました。

ここからは2024-10-06のBlogの内容になります。

<Hugging Face APIとJeremy's deployed website example – tinypets>

Hugging FaceのAPIについての説明です。

ここはHugging FaceではJavascriptが使用出来るので、Front Endの設定が自由に出来ますよ(Javascriptが使える事は前提)と言ってるだけです。

TutorialのVideoの方で確認しました。

Javascriptを使用して複数のImageを同時にUpload出来るようにWebsiteを改良した例が紹介されていました。

<Get to know your pet example by aabdalla>

これもJavascriptを使用した一例として紹介されています。

<Source code explanation>

使用したJavascriptの解説がされていました。

GitHub Pages>

この最後の部分は2024-10-06のBlogではまだよく理解して無くて、この部分でやっとWebsiteが完成すると思っています。

ので何でGitHub Homepageに貼ってるの、Hugging FaceにWebsiteを作るんじゃななかったの。

って書いてありました。

このSiteは単に無料でHomepageが作成出来ますよ。と言う紹介でしょう。

無視します。

3.4  Lesson 2: Practical Deep Learning for Coders 2022 [3]の復習を終えた感想など

やっとLecture2の全体像が理解出来ました。

まずModelをCleanします。

その後でそのModelをExportします。

ExportしたFileを使用してLocalのJupyterからModelを実行出来るCodeを実装します。

更にGradioを使用したUIの作成の実装も追加します。

これが完成したらGitHubから別にDownloadしたHugging FaceのFileにExportします。

このHugging FaceをUPするとHugging FaceからこのModelを使用して画像分析出来るようになります。

その後はJavaScriptの説明とかです。

大体、こんな感じでした。

来週は実装をやるための計画を作成し、再来週から実装を開始する事にします。

4.Nvidia Omniverseの勉強

なんと今週はNvidiaが以下の発表を行いました。

これについてまとめる事にします。

4.1 NVIDIA CEO Jensen Huang Keynote at CES 2025 [4]を見る

一回、全部見たんですがあまりにもVolumeが多すぎてどこからまとめたら良いのか分かりません。

そうだ、AIにまとめてもらいます。

まずCopilotに聞きました。

うーん。

なんか抜けてる部分が沢山あるような。

Perplexityにも同じ質問をしました。

こっちも似たようなものか。

なんかここにまとめられている事ってそんなに重要じゃない気がします。

もう一回動画を見ながら自分でまとめる事にします。

まず最初に大事だと思うのがこの図です。

Exponentialに成長してる様が可視化されています。

さっき勉強していた画像認識のAIはここではPerception AIに属しているそうです。

その次に生成AIが来ます。

そしてAgentic AIとは人が作業をするのをAssist出来るAIだそうです。

そして最後にRobotがあります。

これこそがAIの発展の何たるかを示す世界地図だと思うんです。

こういうのが大切だという事はAIにはまだ理解出来ないみたいですね。

今度はAIを利用したRenderingがGPUの画像生成に革命をもたらしている件について話しています。

ここは最新のDLSSについての解説でした。

Ray Tracingを用いてPixel2つだけ計算したら残りの3300万個のPixelはAIが勝手に予測してくれるそうです。

凄い。

あれ、次のセリフではPixel200万個だけ計算したら、と言っています。どっちが正しいんでしょうか?

RTX50 Seriesの解説です。

Shader LanguageからNeural Networkが使用出来るようになったそうです。

もっと具体的に言うとMaterialの生成やTextureの圧縮にAIが使用できるようになったそうです。

これって結構凄いと思うんですがどうなんでしょう。

でこれですね。

RTX4090と同程度の機能を持つRTX5070が$549で買えてしまう訳です。

勿論、これはNvidiaが〇兆円かけて開発したAIが搭載されているからこの程度のGPUでもRTX4090と同程度の機能を発揮できる訳です。

〇兆円かけてAIを開発しても儲からないとか寝言言ってる連中は、この事実を噛みしめて咀嚼してほしいですね。

こんなの儲かるに決まってるし、この分野に資本をつぎ込まなかったらこれからの競争に勝ち残る事は出来ないじゃないですか。

今度はAIの性能と学習に使用するGPUの規模の関係についてのお話です。

AIの学習に巨大なData Centerが必要なのはこの最初のPre-Training Scalingの話です。

残りのPost-TrainingやTest-Timeが何を指してるのかよく分からなかったです。

一応、Jensen Huang氏の説明ではPost-TrainingはAIの答えを人間の専門家がCheckする段階、Test-Timeは同じ結果を出すのにどれだけ計算量を減らせるのかの段階、

だそうです。

こんなのにもScalingがあるのか。初耳です。

今度はBlack WellによるData Centerのお話です。

ここはまあ凄く儲かってます。て結論でしょうね。話を聞いていると。

Agentic AIのTesting Time Scalingの図が紹介されていました。

これは後でNvidiaのHomepageでしっかり勉強します。

Agentic AIの潜在的な顧客はSoftware Engineerで、彼らが仕事でProgrammingを書く時のAdvisor的な存在になるそうです。

それは理解出来たのですが、そこで表示されている以下の図との関係がよく分からないです。

ここの説明は最後まで理解出来なかったです。

次は以下の解説でした。

これは興味がないのでSkipします。

次はNvidiaのAI Systemを構成するために強力している会社の紹介です。

日本の会社は一個も無いですね。

この後またAgentic AIの説明がありました。今度はもっと詳しく説明していました。

これはあんまり心に響きません。

最後にこのAgentic AIはWindows PCのWSL2を使用する事で全てのWindow PCで動くようになるらしいです。

うーん。

値段が知りたいですね。

今度はAIで3D Modelを作成してそれをArtistが配置し、その風景の写真を撮り、その写真からAIがImageを生成する話です。

これもさっきのAgentic AIがやってくれるそうです。

うーん。

これは革命的な技術でしょう。

最後にとんでもなく凄い話になりましたね。

これが実現したらPhotoshopとか要らなし、下手したらUE5やBlenderも要らなくなるかもしれません。Houdiniの勉強も無駄になるかもしれません。

恐ろしい。

今度はPhysical AIについてです。

ここでWorld Foundation Modelについての説明がありました。

これが空間、重力、遠心力、原因と結果などの世界を構成するものを表すModelだそうです。

例として述べていたのが、ボールを塀の向こうに投げてボールが見えなくなっても塀の裏側にはボールがしっかり存在している。とかだそうです。

確かにこういうのはAIがImageを生成した時に忘れそうです。

ここから生成されるものって現実の3D空間で適用出来るものになるって事なんでしょうか?

そしてこのWorld Foundation Modelの名前がCosmosだそうです。

ここからCosmosの説明に入ります。

まず以下の図が表示されましたが

あんまり深い説明はありませんでした。

その後、Textから3D空間を生成していました。

凄い。

こんなのが出てきたら今までのように一々3D Modelなんて作ってる必要なくなりますね。

Robotの学習において、視覚だけが必要な場合はこれで完璧でしょうね。

ネジのような複雑な形状のものやパンのようなソフトなものもこれで生成出来るんでしょうか?

さっきはTextから全部生成していましたが、次の説明ではOmniverseで生成したのをCosmosにPassしていました。

全部Textureで生成する事もあらかじめ3D空間を作成してそれを元にCosmosで生成する事も出来るみたいです。

あ、これはあれだ。最初のころに説明していたAIを使用したRenderingだ。

うーん。でもBallを転がしたりした時の物理計算とかもやってくれそうですね。

そういうのをまとめたのがCosmosって事なんでしょうか?

一寸Cosmosの実態が見えて来ました。

もっと説明を聞いたら更に理解が深まりました。

要は強化学習に必要な一寸だけ変化した環境を生成するんです。

後、3Dの世界を作成するための学習はしてないそうです。Cosmosは我々の世界がどんな風に構成されどんな仕組みで動いているのかを学習しているそうです。

でRobotに必要な3つのComputerの話になりました。

DGXはData CenterでAIの学習に使うやつだと思います。

AGXが何なのかが分かりません。

RobotについてるComputerの事でしょうか?

今度はこれらの技術の実際の応用について解説しています。

まず倉庫の設計にOmniverseが使用された例が紹介されました。

次の例は車です。

自動運転の学習に使用するんでしょうか?

ここでToyotaが紹介されています。

で次世代のAGXを生成するための共同開発を始めるって言ってるように聞こえるんですが、どうなんでしょう。

Captionで確認したらAGXとは出て来ませんでした。

AGXって一台一台の車に付くんでしょう。

これってとんでもない売上になるんじゃないでしょうか?

で車に積むほうのAIのProcessorを紹介していました。

更に車用のOSも紹介していました。

今度はRobotの話です。

うーん。

これが最後の話ですかね。

人間型のRobotはImitation Informationが少ないと言っていました。

Imitation Informationて、学習に使用する人間が動いている映像の事でしょうか。

それなら少ないとは思えないですが。

動画で説明していましたが、やっぱり学習用に使用するDataの事でした。

動画を見た感じではまだ人型Robotは解決しないといけない問題が沢山ありそうです。

今度はDjx1の話です。

これはDjx1では無くてDix1の機能を持つNvidiaが作成した最新のAI Computerだそうです。

NvidiaのAI関連の全てがこのAI Computer内で動くそうです。

Localでやりたい事がある企業向けの製品ですね。

AIのRaspberry Piみたいなものでしょうか。

名前はDigitと言うのかな。

以上でした。

4.2 NVIDIA CEO Jensen Huang Keynote at CES 2025 [4]を見た感想

大体どんな話をしているのか分かりました。

まずCopilotとPerplexityのSummaryを見直してみます。

AI Foundation Modelが何を指しているのか分からなかったんですが、AI Agentの事みたいです。

かなり綺麗に内容がまとめられていて結構凄いと思いました。

10点満点で9点以上はありますね。

PerplexityのSummaryです。

CosmosはHardwareじゃないです。

更に言うとNIMやBlueprintはAI Agentの一部でSoftware EngineerがProgrammingをするのをAssistするのが主の目的です。Gamingのためではないです。

ToyotaとAGXを開発すると断言しています。

Citationもあるみたいですね。

この辺はPerplexityの強みですね。

うーん。

Copilotには無いSearchした結果を反映している点は評価出来ますが、内容に間違いが多すぎます。

10点満点で5~6点ですね。

こういう風に比較するとCopilotが意外と優れている事が分かります。

発表を聞いた感想ですが、まあCosmosには驚きましたがRobotの研究はまだまだ始まったばかりで、特にOmniverse+Cosmosの部分はRTXが一台あれば大企業の研究とも渡り合えそうです。

この辺に集中して勉強していきます。

5.Gaeaの勉強

5.1 IllustrationをAIでAnimationにする

今のAIの技術なら以下のIllustrationをAnimationにする事も可能な気がします。

調べてみます。

Copilotに聞きました。

この中だとToonCrafterが使用出来そうです。

なんか最近Copilotの質が落ちている気がします。

Perplexityでも聞いてみます。

Animakerばかり進めて来ます。

うーん。

日本語で検索してみます。

Meta社のAnimated Drawingsがお勧めに出て来ました。

うーん。

子供向けって感じがします。

Animate Anyoneもありました。

これは凄い。

Animate Anyone - Only 1 Image needed!!!!というTutorialもありました。

一寸見たら結構難しそうです。GitHubのCodeから一々セットしています。

Comment欄を見ると動かないとのCommentが沢山書かれていました。

どうしようかな。

これを勉強しますか。

画像が動き出す!…驚きのAI技術! Moore-AnimateAnyoneとMagicAnimateの使い方を紹介! AI TikToker GoogleColab AnimateAnyoneに別なSoftの紹介がありました。

ーん。

軽く見ただけですがAIはAIで色々問題ありますな。

Animate AnyoneはColabにあるMoore_AnimateAnyone_colab.ipynbを試してみたんですが、Errorになって動きませんでした。

だそうです。

YouTubeでも去年に大騒ぎしてそれ以降音沙汰無しです。

もっと簡単に出来るのはないんでしょうか?

Viggle AIというのがありました。

Tutorialを探したら、最近Websiteの形式が変わったらしくて、Discordのやり方しか説明していません。

How To Use Viggle AI For Beginners | Viggle AI Step-By-Step Tutorial 2025がWebでのやり方を説明していました。

これ見ると全身のImageが必要みたいです。

perchance.orgというAIのSiteで全身絵を生成してくれるそうです。

試してみます。

似たImageにするために以下のPromptを入れました。

a woman in school uniform. whole body, standing next to blackboard, make v-sign, (Your Name art style:1.3), Red hair, pony-tail

結果です。

え。

これAIが生成したの?

凄すぎない。

もっとPromptに拘ったらもっとすごいのが出来るの?

このイラストを利用してViggle AIで動きをつけます。

www.youtube.com

何故かShort Videoになってしまいました。

設定を確認します。

分からんけどUnlistになってるから良いか。

後、今気が付いたけど、BGMがついたままになっていました。

今度はBackgroundをGreenにして作成してみます。

www.youtube.com

これならIllustrationの代わりに使用出来るかも。

6.Houdiniの勉強

あまりにもAIの生成したAnimationが凄いので予定を変更する事にします。

今まではAIの勉強は一週間に一回でしたが、これからは2/Weekにする事にします。

でどれを削るのかですがVFXの勉強はHoudiniの勉強ですので、これは今のVEX Isn't Scaryの勉強が終わったらやる事にします。

6.1 VEX Isn't Scary Project - Part 1: Line Generation [5]を実装する

<Intro>

特になし

<Coding>

新しいProjectを作成してGeometryノードを配置しました。

GeometryノードはVEX_Projectと名付けました。

Geometryノードを開いてAttribute Wrangleノードを追加します。

Run Overの値をDetail(only once)に変更します。

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

ここで使用するVariableを宣言しました。

更にFor Loopを追加しました。

以下の実装を追加しました。

そしてlineStartの値をAssignする方法、つまりSet()関数を使用する必要も確認しました。

結果です。

<Degrees>

HoudiniはDefaultでは角度の単位はDegreeではなくRadianなのでCodeを直します。

更にLineのEndにもPointを追加するためのCodeを実装します。

結果です。

<Add Prim>

作成したPointを繋げてLineを作成します。

Addprim()関数を追加してLineを作成しています。

結果です。

出来ました。

<Code>

作成したLineがCircle内にぴったし一致する事を示すTestをやりました。

Linesの値を46にしました。

お、Tutorialで言っていた通り、Lineの一部が消えています。

以下のLineの

180を180.0に変更しました。

結果です。

直りました。

以上です。

7.AIの勉強2

ここはAIの勉強に使用します。

これだけAIが発展してくると、もうHoudiniの勉強をしてもあまりメリットは無い気がします。

で、何を勉強するのかですが、

  • AIの勉強
  • Omniverseの勉強

を勉強します。

つまり2馬力でAIの勉強をします。

しかし他の事を勉強しても良い事にします。

例えば今週のGaeaでやったAIのSiteをもっと使用してみる。とかです。

7.1 「Gaeaの勉強」でやったAIによる動画の作成の続きをやる

以下の講義の動画を見つけたのでこれを使用してViggle AIで講義しているAnimationを生成します。

結果です。

www.youtube.com

凄い。

ここで終わったんですが、あまりにも結果が凄いので次の日も試してみました。

まず以下のIllustrationで試してみました。

なんとどんでもない化け物動画が生成されました。

気持ち悪くてすぐに消してしまいました。

どうも私の描いたIllustrationのそれぞれの人体のPartsをAIは単なる模様と認識したらしく、とんでもない結果になりました。

今度は以下の画像で試しました。

結果です。

何とPonytailが無くなってしまいました。

あれ。

後なんか手が大きい過ぎる気がします。

うーん。

AIが生成したIllustrationの方が良い結果が出るみたいです。

今度は一分ぐらいの長さで講義している動画が見つからないのでUE5でMannequinにIdlingの動作をさせてそれを撮影し、Sourceの動画として使用してみます。

youtu.be

結果です。

youtu.be

肩幅がとんでもない事になっている。

AI Illustration Generatorで以下の新しいIllustrationを生成して

試してみましたが

肩幅がとんでもない事になりました。

あれ?

昨日生成したVideoは正面から見ても普通の肩幅をしています。

うーん。

もしかしたらSource用のVideoに使用したMannequinの肩幅が広いのが原因?

じゃ代わりにSKM_Quinnを使用して動作を作成します。

あれ?

QuinnにMannequinのAnimationを追加出来ません。

そうなの。

UE4 Marketplace Animation Packs in UnrealEngine 5 (IK Retargeter) にやり方が載ってるみたいです。

今は試している時間はないです。

SKM_Quinn用のAnimationで歩いているのがありました。

これで試してみます。

やっぱり凄い肩幅になってる。

何で?

ここで一日に使用出来るMaxを超えてしまいました。

8.DirectX12の勉強

今週は別な用事が入ってDirectX12を勉強する時間が無くなってしまったんですが、出来るだけやる事にします。

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

8.1.1 Resource State | D3D12 Beginners Tutorial [D3D12Ez] [6]の最初の10分を実装する

今週からResource Stateについて勉強します。

<Intro>

特になし。

<Explanation>

なんかずっとOptimizationについて語っています。

でこういうOptimizationを実行するためにはResourceがどんな風に使用されるのかについてのMetaな情報を教える必要があると。

ずっと話を聞いているとどうもResource Stateで画面に表示するImageの話のようです。

<Memory Barriers>

やっと実装が始まりました。

まずWindow.h Fileの以下の場所にBeginFrame()関数を追加しました。

更にEnd Frame()関数も追加しました。

ここでこの節は終わりです。

今週は時間がないのでここまでとします。

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

8.2.1 前回の勉強の復習をする

前回何をやったのか忘れてしまっています。2024-12-22のBlogを見て復習します。

Blogを全部読み直しました。

「5.8 Root SignatureにSlotとTextureの関連を記述する」を全部読んで内容をまとめていました。

ここではRoot Signatureに新しく追加したTextureの情報を追加しているようです。

8.2.1「 5.8.1 Descriptor Tableとは」を勉強する

DirectX12ではDescriptor TableはRoot ParameterというStrictを使用して表すそうです。

この節では以下のように前に作成したRootSignatureにRoot Parameterをセットする方法を紹介しているだけでした。

実際のRoot Parameterは次の節で作成するみたいです。

ちなみにこの実装のNumParametersは追加するRoot Parameterの数を指定しているのだそうです。

今回はRoot Parameterは一個だけ追加するので1がセットされています。

以上です。

9.まとめと感想

なし

10.参照(Reference)

[1] jeff wilkins jr. (2024, January 12). Scanning Tokyo using Luma AI and Unreal Engine 5 [Video]. YouTube. https://www.youtube.com/watch?v=xUh4RnFkbPw

[2] Import data into Google Colaboratory. (n.d.). Stack Overflow. https://stackoverflow.com/questions/46986398/import-data-into-google-colaboratory

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

[4] NVIDIA. (2025, January 7). NVIDIA CEO Jensen Huang keynote at CES 2025 [Video]. YouTube. https://www.youtube.com/watch?v=k82RwXqZHY8

[5] Nine Between. (2021, February 10). VEX isn’t scary Project - Part 1: Line Generation [Video]. YouTube. https://www.youtube.com/watch?v=XDFELm4bcFk

[6] Lötwig Fusel. (2023, July 8). Resource State | D3D12 Beginners Tutorial [D3D12EZ] [Video]. YouTube. https://www.youtube.com/watch?v=yWg0TVahQzI

UE5の勉強 -映像作品としてのLandscapeを作成する-

1. 2024年の反省と2025年の目標

2024年はYouTubeに完成した作品やGaeaのTutorialなどを動画として公開しました。

その結果、作品として何が足りないのかと、必要以上に詳しくなっている部分がある事が判明しました。

例えば、Materialの勉強はBen Cloward先生のYouTubeで3年以上勉強しました。

その結果、Materialに関するTechniqueのほとんどは実装出来るようになりました。

しかし実際に映画の背景で使用するようなPhoto-RealisticなMaterialを作成する場合、そんなに専門的な知識は必要ではなく、それよりもResolutionの高い写真のTextureが重要でした。

つまり私の作品に足りないのは映画で使用出来るLevelの精度の高くResolutionが4K LevelのTextureの写真で、必要以上に詳しくなっている部分は、Materialの実装に関するProgrammingの知識でした。

こういう事が理解出来るようになるとGoalの設定が間違っていた事も分かって来ました。

今まではGoalの設定をUE5の最新の機能や難しくてだれも理解出来ない機能をYouTubeのTutorialを通して理解する事でした。

しかしこれはいくらがんばっても商業的な成功には結びつかない事が判明しました。

そもそも商業的な成功をどうやって定量的に測定したらいいのかすら分かりませんでした。

そこで最初はGameを完成させて公開し、その売り上げからで商業的な成功を数値化しようとしました。

しかしUE5でGameを作成するとなると、RPG的なかなり広大なGameになってしまい、結局、完成しなかったです。

しかも個人が作成したGameは完成しても一個も売れない事が普通である事も分かって来ました。

これではGameのどこを改善していけば、商業的な成功を納められるのかの指標に使う事は出来ません。

更に言うと、私はあまりGameをPlayするのが好きではなくてGameを完成させる事に対しての情熱もあまり湧きませんでした。

そこで、Plan BとしてUE5を使用して映像作品を作成し、それをYouTubeに公開してその再生回数から商業的な成功を数値化して図ろうと考えました。

この考えは結構当たりでした。

何故ならYouTubeYouTube上に公開した動画の再生回数などの詳細なDataを公開しくれるので、そこから定量的な解析をする事が可能だからです。

その結果分かった事ですが、視聴者が私に対して最も望んでいる事は、今まで勉強したUE5の内容を簡潔に整理した状態でTutorialとして動画で公開する事でした。

確かに10時間かけて理解した内容の骨子を20分の動画で説明してくれたら、その20分の動画は視聴する価値があります。

ので今年からは今までUE5で勉強した内容をYouTubeのTutorialに落とし込んで動画にする事をやっていきます。

今まで勉強した内容はかなりVolumeがありますので大切な部分を簡潔にTutorialにしてまとめたいと思います。

2.今週の予定

先週は風邪を引いて寝込んでしまったので、正月の休みは返上してやる事にします。

2024年の勉強内容をまとめます。

3. 映像作品としてのLevelの作成

3.1 Blogのまとめ

2024-01-07のBlog

Unreal Engine 5 for Architecture - 2023 Full Beginner Courseの勉強の一環として以下の家のAssetでSquare Lightを配置していました。

そう言えばこんな勉強もしていました。

これははっきり言って無駄な勉強だったと思っているんですが、このTutorialを勉強した事で、

  • Lightの配置方法
  • Cameraの設定
  • Photo-RealisticなMaterialの作成方法

などがPhoto-Realisticな3Dを作成するのに大切である事を学べたので、必要な勉強ではありました。

ただ効率は悪かったです。

更に3D Gaussian Splattingについての調査も行っていました。

2024-01-14のBlog

Unreal Engine 5 for Architecture - 2023 Full Beginner Courseの勉強をしています。

更に3D Gaussian Splattingの勉強としてStep-by-Step Unreal Engine 5 Tutorial: 3D Gaussian Splatting for Beginnersを実装しています。

PolycamのHomepageから3D Gaussian SplattingのDownloadが出来ないと書いてありました。

ここで撮影した2Dの映像をGreen Screenで貼り付ける事が出来ないか調査していました。

その過程で、3D CameraのMotion Trackerを使用すると2Dの映像無いに3Dを追加出来る事が判明しました。

ただしこれができるのはBlenderとAfter Effectだけでした。

2024-01-21のBlog

Unreal Engine 5 for Architecture - 2023 Full Beginner Courseの勉強をしています。

以下のAssetにあるLandscape用のMaterialが凄いって話がありました。

これは後で確認する必要がありますね。

ここでCameraのExposure Compensationについて勉強していました。

こういう大切かつ必要な事をもっと効率的にまとめて勉強出来るようにする必要があります。

UEにおけるGreen Screenの使用方法を"Unreal Engine: Step-by-Step Green Screen Import Guide!"で勉強していました。

2024-01-29のBlog

Unreal Engine 5 for Architecture - 2023 Full Beginner Courseの勉強をしています。

草木をLandscape上に配置しました。

今見るとLandscapeのMaterialが変なのはおいておいて木は兎も角、草は日本にある雑草とはまったく違います。

この辺は3D Gaussian Splattingの方が優秀です。

3D Gaussian Splatを無料でDownloadする方法があるみたいだと書いてありました。

これは今になってしまえば簡単な事ですが当時は本当に訳分からないかったです。

2024-02-04のBlog

なんとここではLandscapeに道路を追加する方法を勉強しています。

2024-02-12のBlog

3D Gaussian SplattingをUE5で実装しています。

ここではLuma AI PluginをInstallしてPly FileをUE5から開いています。

でCameraを動かすとブレブレな画像になります。

これってPlyでは無くてlumaだったらブレないはずです。

後、Level sequence上でCameraを動かして、画像をExportした場合はどうなるのかの確認もしてないですね。

これは後でやる事にします。

2024-02-19のBlog

この週でやっと3D Gaussian SplattingのDataをDownload出来るようになったんですが、PlyのFileをDownloadしていました。

でもブレてないです。

あれ?

Unreal Engine 5 for Architecture - 2023 Full Beginner Courseの続きも勉強しています。

2024-03-10のBlog

3D Gaussian SplattingをUE5で開いてPhoto-realisticな3Dを作成する方法を調査していました。

2024-03-17のBlog

3D Gaussian Splattingの勉強でKIRI Engineについて勉強しています。

2024-03-24のBlog

KIRI Engineを実際に使用しています。

2024-03-31のBlog

KIRI Engineを実際に使用してまた撮影しています。

2024-04-07のBlog

Luma AIで3D Gaussian Splattingを試しています。

以下の条件を初めて述べています。

2024-04-14のBlog

Luma AIで作成したGaussian SplattingをUEにImportしています。

色が白過ぎる問題を解決出来ないで終わっていました。

確かSky Lightを変更したら3D Gaussian Splattingの色は変わったはずです。

これは後で試す事にします。

2024-04-21のBlog

前回の3D Gaussian Splattingで作成した色が白過ぎる問題ですが、Post Process VolumeのExposureの値を変更して改善していました。

まだ変ですが前に比べるとかなり良い感じです。

更に背景を3D Gaussian Splattingで作成する方法を調査していました。

2024-04-28のBlog

沢山Videoを撮影して沢山3D Gaussian Splattingを作成すると宣言していました。

自転車とDragonに使用した3D Gaussian Splattingはここで作成していました。

Unreal Engine 5 for Architecture - 2023 Full Beginner Course」の勉強も再開しています。

2024-05-05のBlog

以下の草を撮影していました。

3D Gaussian Splattingはこういう草に適用したかったんですが、結論から言うと、こういう草は撮影時に少しだけ風に揺られて動いているんです。

そのせいでピントがズレたようになります。

つまり使えないって事です。

Unreal Engine 5 for Architecture - 2023 Full Beginner Courseの勉強もしています。

2024-05-12のBlog

草の作成の続きをやっています。

Unreal Engine 5 for Architecture - 2023 Full Beginner Courseの勉強の続きもやっています。

2024-05-19のBlog

3D Gaussian SplattingをUE5で落としてそれを撮影しています。

ここから自転車とDragonの制作が始まります。

2024-05-26のBlog

3D Gaussian Splattingで作成したUEの3D空間内にLevel Sequenceを使用してCameraを動かしています。

2024-06-03のBlog

以下のDragonの映像をBrush upしています。

更にNiagaraを追加しました。

2024-06-10のBlog

Dragonと自転車の映像を更に改良しています。

更に追加した音をExportする方法を調査していました。

2024-06-17のBlog

ここでDragonと自転車を公開しました。

更に以下のように影をつける方法をテストしています。

これを読むとLuma Fileの方は影がつきますが、画像がブレます。

Plyの方は画像がブレない代わりに影は付きません。

逆に理解していました。

後、この映像を見るとLuma FileをjpegでExportした場合でも画像はぼやけるみたいです。

調べたら以下のようにぼやけたJpegがありました。

つまりLumaは使えないって事です。

2024-06-23のBlog

3D Gaussian Splattingの撮影方法について勉強しています。

2024-07-07のBlog

3D Gaussian Splattingに配置したStatic Meshに影を配置する方法をTestしています。

当然LumaではなくPly Fileで試しています。

2024-07-14のBlog

色々な条件で撮影した映像をLuma AIで3D Gaussian Splattingにしています。

一つだけはっきりしたのは撮影する時には携帯を横向きにした方が良いという事です。

2024-07-22のBlog

更に撮影方法について検証しています。

以下のように左右を撮影した動画も追加しました。

結果はかなり良くなりました。

2024-08-04のBlog

3D Gaussian SplattingをUE5にImportしてLevel Sequenceを追加し更にCameraを追加していました。

更にDragonを追加しました。

2024-08-11のBlog

前回はDragonを歩かせるところまでやったんですが、その後にDragonを飛ばすAnimationを追加しています。

歩くと飛ぶの2つのAnimationの繋ぎ目がブチっと切れています。

これを直す方法を調査しています。

これ結果を言うと単にAnimationのSequenceを重ねると直ります。

2024-08-18のBlog

Cameraの挙動を修正しています。

後、これから修正する箇所についてまとめています。

2024-08-25のBlog

CameraとDragonの挙動が変になってしまったので別なLevel Sequenceを追加して新しく作り直しています。

これってやってはいけない事のような気がします。

Level Sequenceというくらいだから一つのLevelに一個しか作成してはいけないはずです。

後はplaneを追加してDragonの影を表示しようとしています。

2024-09-01のBlog

以下の事をやっています。

Level Sequence上でAssetを消したり表示したりする方法ですが、Sub Levelを作成してそこにそれらのAssetを写して、そのSub LevelをLeve Sequence上で消したり表示したりして実装しています。

これは結構気に入った方法でした。

2024-09-08のBlog

Terrain Remix Brushes - Unreal Engine 5 TutorialというYouTubeにあるTutorialがUE5内だけで凄いPhoto-realisticなLandscapeを作成しているので驚愕して急遽予定を変更してこのTutorialを勉強する事にしていました。

確かこれってこの動画を制作した人が作成した有料のPluginを購入しないと作成出来なかったはずです。

3D Gaussian Splattingの方は、先週勉強したPlateを別なSub Levelに移動してLevel SequenceからPlateを消す方法を実装していました。

2024-09-15のBlog

Terrain Remix Brushes - Unreal Engine 5 Tutorialを実装しています。

で直ぐに有料のPluginを購入しないと出来ない事に気が付きました。

自分で言うのもあれですが、転んでもただでは起きないのが凄いです。

ここでEnableしたLandscape Patchってどんな機能なのかを調査しています。

3D Gaussian Splattingの方は、Plateに自作したMaterialを使用しています。

2024-09-23のBlog

3D Gaussian Splattingの方は、影を写すPlateの調整とか、Cameraの調整とかしていました。

ここで、3D Gaussian SplattingはUE5では実用に耐えるLevelではないと結論づけていました。

2024-10-06のBlog

3D Gaussian Splattingの勉強は一端中止してこの週からUE5のPCGの勉強を再開する事にしました。

How to Make a Forest in Minutes with PCG in Unreal Engine 5を勉強しています。

更に、背景は写真でも良いのではないかとなり、HDRIの勉強もする事になりました。

How to Add Background Image in Unreal Engine 5.4 | How to Import Background Image in UE 5.4を勉強しています。

HDRIを携帯を使用して自分で作成する事は出来るけど360度Cameraを使用しないと商業Levelの質の製品は出来ないようだとも書いてありました。

この週から、PCGとHDRIの勉強に切り替わったようです。

PCGとHDRIはまだ3カ月しか勉強してないのか。

2024-10-13のBlog

先週勉強したHow to Make a Forest in Minutes with PCG in Unreal Engine 5を実装しています。

木をまっすぐ生やす方法が載っていました。

これ以外にやり方を良く忘れます。

ここに記録しておく事にします。

結果が凄いので以下に示しておきます。

HDRIの勉強ですが、HDRIにLandscapeなどを追加しています。

その結果HDRIに使用出来るのは空と海の背景だけだとわかって来ました。

木や建物があるHDRIは大きさを調整するのがとても難しいです。

The Secret to Photoreal Skies in Unreal Engine!を勉強しています。

このTutorialはHDRIを空の作成に使用しています。

凄い綺麗です。

2024-10-20のBlog

PCGの勉強では、

今まで勉強したFree Time Coder氏のUnreal PCG Tutorialの内容をまとめています。

どうもこれは今までよく分からないで勉強していたFree Time Coder氏のUnreal PCG Tutorialで本当は何を教えていたのかを確認したくてまとめたんじゃなくて、単にLandscapeのLayer毎に生成するPCGを指定する方法を知りたかったからまとめたみたいです。

しかし勉強した範囲にはその情報はなくてその後にあるTutorialでLandscapeのLayer毎に生成するPCGを指定する方法を教えているみたいでがっくりしていました。

HDRIの勉強は

The Secret to Photoreal Skies in Unreal Engine!を実装しています。

結果ですが以下のようになりました。

あまりPhoto-Realisticではないですね。

2024-10-27のBlog

PCGの勉強では、

これからPCGで何を作成したいのかを考えています。

その結果、PCGで作成したいのは建物であるとの結論にいたりGet Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1を勉強する事にしました。

このTutorialは今も勉強中ですが、一つ理解した事があります。

それは建物って同じPartの繰り返しなんです。のでその繰り返している部分をぬきだしてPointで表示出来るようにすれば、どんな複雑な建物もPCGで再現する事は可能なんです。

でここが大切な所なんですが、その建物から同じPartを抜き出す作業のやり方はどのPCGのTutorialも教えてくれないんです。

HDRIの勉強は

UE5に付属のHDRIとLandscapeを組み合わせて以下のような背景を作成していました。

2024-11-10のBlog

PCGの勉強では、

Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1を実装しています。

特に問題なく終わっていました。

HDRIの勉強は

作成した風景にVFXを追加すると宣言していました。

2024-11-17のBlog

PCGの勉強では、

Create Entire Cities Automatically With PCG Splines! Procedural Content Generation in Unreal Engineを勉強しています。

このTutorialはPointに建物を直接生成しています。そして建物同士がぶつかって重なって生成されていました。

更にGet Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1の続きを勉強していました。

HDRIの勉強は

色々弄ったらこのLevelがおかしくなってしまったので新しく作り直していました。

以下に示したLevelを作成し直していました。

2024-11-24のBlog

PCGの勉強では、

Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1の続きを実装していました。

PCGの建物の勉強がかなり本格的になって来たので、新しいProjectを作成してそこに全部作り直す事にしました。

HDRIの勉強は

Dragonに火を吹かせています。

2024-12-01のBlog

PCGの勉強では、

Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1の続きを勉強していました。

HDRIの勉強は

Control Rigを使用してLevel SequenceからAnimationを編集する方法を調査していました。

もうHDRIの勉強とは関係ないですね。

2024-12-08のBlog

PCGの勉強では、

Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1の続きを実装していました。

HDRIの勉強は

Control Rigを使用してLevel SequenceからAnimationを編集する方法を調査している時に見つけたTutorial、How to Edit Mannequin and/or Metahuman Animations directly in Sequencerを勉強していました。

更に先週、完成した動画をYouTube上に公開しました。

2024-12-22のBlog

PCGの勉強では、

Get Started With PCG 5.4 By Creating a Full Building | UE 5.4 P1の最後の部分を勉強していました。

ところが途中でこの時点でかなり複雑になって理解出来なくなってきたのでここで中止して来週にこの部分を実装してその後で残りは勉強する。と書いていました。

HDRIの勉強は

Control Rigを使用してLevel SequenceからAnimationを編集する方法をDragonにためしてみようとしています。

しかし使用しているDragonにはControl Rigがないのでどうしたらよいのか分からず中止となりました。

3.2 「映像作品としてのLevelの作成」のまとめと感想

まずこの節の目的ですが、映画で使用出来るようなPhoto-Realisticな3DをUE5のLevel上で生成する事です。

最初は、「Unreal Engine 5 for Architecture - 2023 Full Beginner Course」で勉強していました。

このTutorialでは建物を作成するSoftが有料だったのでその部分はUE5のAssetの建物で代用しました。

このAssetの建物がかなり凄くて以下に示した様にほぼ写真です。

ここにLightの設定などの勉強をしていました。

しかしこれを勉強していた時は、このAssetを使用してどうやってYouTubeで再生数を稼げる動画を取ろうとは考えず、これと同じものをどうやったら作成出来るのかばかり考えていました。

ので、このAssetは一寸宝の持ち腐れにしてしまいました。

次に3D Gaussian SplattingというAIを利用した新技術が出て来て、それを使用すると携帯でちょろっと撮影しただけで、写真そっくりの3D空間を生成出来るという噂でした。

これを試してみたんですが、結論を述べるとUE5にImportすると質がかなり落ち、そのままでは使用出来ない事が判明しました。

特に背景のBuildingなどが歪んで表示されます。

次にHDRIで背景を作成する事を考えました。背景ですのではっきり言って写真で良いです。

これはHDRIを空と海などに限った場合、大成功しました。

後は建物が必要です。

建物はPCGで作成する事にしました。

PCGの勉強は始めたばかりですが、それなりの成果は出て来ました。

ここまでが2024の成果です。

更にLevel上にDragonなどの3D Modelを配置してAnimationで動かし、VFXで炎などを追加しました。

これは厳密に言えば「映像作品としてのLevelの作成」とは関係ないですが、YouTubeに動画として公開した場合、人の目を引きやすいし、結局これも必要な技術なので一緒にやる事にしました。

ここで勉強した内容は

  • Level Sequenceの使用方法
  • Cameraの配置方法
  • Animationの追加方法
  • Niagaraの追加

となります。

そして今はAnimationをLevel Sequence上から変更する方法を模索しています。

こんな感じです。

4. Niagaraの勉強

4.1 Blogのまとめ

2024-01-07のBlog

何と、この時期はまだNiagaraの勉強をしていました。

あれだ。

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強していたんだ。

「木の生成Simulations」を勉強しています。

2024-01-14のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-01-21のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-01-29のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-02-04のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-02-12のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-02-19のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-03-10のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-03-17のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-03-24のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-03-31のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-04-07のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-04-14のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-04-21のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-04-28のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-05-05のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

2024-05-12のBlog

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しています。

この週で最後の実装が終わっています。

ここでNiagaraの勉強は一端終了しています。

4.2 「Niagaraの勉強」のまとめと感想

2024-01-07から2024-05-12までやっているので約半年間、勉強していました。

Unreal Engine 5で学ぶビジュアルエフェクト実装 基本機能からNiagara、シミュレーションまで」を勉強しただけです。

5.Materialの勉強

5.1 Blogのまとめ

2024-01-07のBlog

何と今年の始めはまだMaterialの勉強をしていました。

この勉強自体はUE5のMaterialの仕組みを理解したり、3D GraphicsにおけるMaterial一般の考え方を理解したりするのに非常に役に立ちましたが、いかんせん結果に結びつきません。

ここでいう結果というのはGameを完成させたりとか、Materialを自分で作成してAssetなどで販売したりとかしてお金に換えると言う意味です。

Using Custom HLSL Code - Advanced Materials - Episode 24を勉強していました。

2024-01-14のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-01-21のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-01-29のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-02-04のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-02-12のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-02-19のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-03-10のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-03-17のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-03-24のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-03-31のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-04-07のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-04-14のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-04-21のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-04-28のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-05-05のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-05-12のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-05-19のBlog

Ben Cloward先生のTutorialを勉強しています。

2024-05-26のBlog

Ben Cloward先生のTutorialを勉強しています。

更にこの週からPwnisher氏のUnreal Engine Materials in 6 Levels of Complexityを勉強しています。

2024-06-03のBlog

この週からPwnisher氏のUnreal Engine Materials in 6 Levels of Complexityだけを勉強する事にしました。

2024-06-10のBlog

Pwnisher氏のUnreal Engine Materials in 6 Levels of Complexityを勉強しています。

2024-06-17のBlog

なし

2024-06-23のBlog

Pwnisher氏のMaterialを利用して自分専用のPhoto-realisticなMaterialを作成すると書いてありました。

これは最終的には挫折しました。

完成はしたんですが今は使用していません。

2024-07-07のBlog

自分専用のPhoto-realisticなMaterialを作成しています。

2024-07-14のBlog

自分専用のPhoto-realisticなMaterialを作成しています。

以下の質感を出す方法を調査する必要がある。と書いていました。

こんなのすっかり忘れていました。

後、YouTubeのTutorialの問題点についてのEssayが書いてありました。

かなり含蓄に富み、読み応えのある内容でした。

こんな名文を自分で書いたなんてびっくりです。

2024-07-22のBlog

自分専用のPhoto-realisticなMaterialを作成しています。

更に金属とPlasticのMaterialについてテストしています。

2024-08-04のBlog

金属の質感を出すための調査をしています。

2024-08-11のBlog

なし

5.2 「Materialの勉強」のまとめと感想

2024-01-07から2024-05-26まではBen Cloward先生のTutorialを勉強していました。

これは筋トレのようなもので直接は役には立たないけど、やっておくと得と言う感じでやっていました。

YouTubeに載せる動画を作成するためにPhoto-RealisticなMaterialを作成する必要は出て来ましたが、それは今まで勉強した知識で十分です。

ので途中で中止する事にしました。

6. Gaeaの勉強

6.1 Blogのまとめ

2024-01-07のBlog

何と7つ目のGaeaのTutorialを作成してました。

一年前からGaeaのTutorialは既に作成していたんですね。

このTutorialついこの間作成した気がしますが一年前に作成したのか。

2024-01-14のBlog

7つ目のGaeaのTutorialの動画を作成しています。

2024-01-21のBlog

3つの工程の最初の工程の総集編のTutorialを作成していました。

2024-01-29のBlog

前回作成した総集編の録画を行っていました。

2024-02-04のBlog

ColoringのTutorialを作成していました。

2024-02-12のBlog

ColoringのTutorialの続きを作成していました。

2024-02-19のBlog

ColoringのTutorialの続きを作成していました。

2024-03-10のBlog

MaskingのためのTutorialを作成しています。

2024-03-17のBlog

Gaea2.0の動画を見ただけです。

2024-03-24のBlog

Gaeaの勉強はしていません。色々な話が書かれています。

2024-03-31のBlog

この週もGaeaの勉強はしていません。

2024-04-07のBlog

Gaea 2.0の公開に関しての連絡という動画を作成しました。

2024-04-14のBlog

なし

2024-04-21のBlog

あれ?

まだGaea1のTutorialを作成しています。

どうやら前に作ったGaea2.0の動画はGaea2.0が公開されたらこうします。と言う動画だったみたいです。

Coloringの続きをやっています。

2024-04-28のBlog

SatMapノードの使用方法についてのTutorialを作成しています。

2024-05-05のBlog

PowerPointを作成しています。SatMapノードの使用方法についてです。

2024-05-12のBlog

なし

2024-05-19のBlog

SatMapノードの使用方法についてのPowerPointを作っていました。

2024-05-26のBlog

なし

2024-06-03のBlog

この週もSatMapノードの使用方法についてのPowerPointを作っていました。

2024-06-10のBlog

なし。

2024-06-17のBlog

Buildについてまとめています。

2024-06-23のBlog

Tutorialの動画を作成したとだけ書いてありました。

2024-07-07のBlog

Tutorialを録画したとだけ書かれていました。

2024-07-14のBlog

なし

2024-07-22のBlog

Buildで作成するTextureの指定方法をPowerPointに落としていました。

2024-08-04のBlog

ここでGaea2.0が公開されています。

Gaea2.0では無料版の商業利用が禁止された事を衝撃的に書いていました。

2024-08-11のBlog

Gaea2.0とGaea2.0のTutorialについて調査しています。

一寸しかやっていません。

2024-08-18のBlog

Gaea2.0の公開に従ってこれからのGaeaのTutorialはどうするのかを説明するPowerPointを作成していました。

2024-08-25のBlog

Gaea2の勉強をしています。

Gaea2のGroupを確認していました。

2024-09-01のBlog

Gaea2のTutorialを作成していました。

Gaea2のInstall方法を説明するTutorialを作成していました。

2024-09-08のBlog

Gaea2のHomepageの解説を読んで勉強していました。

2024-09-15のBlog

How to Make Landscape FAST using Gaea 2.0 and Unreal Engine 5を勉強していました。

このTutorialでMW Landscape Auto Materialについて知ったんでした。

2024-09-23のBlog

前回、勉強したHow to Make Landscape FAST using Gaea 2.0 and Unreal Engine 5を実装していました。

2024-10-06のBlog

新しくReleaseされたUE5.5のPress Releaseの内容をまとめています。

この中で私の興味を引いたのは、Level Sequence上でMeshのDeformationが出来るようになった件です。

2024-10-13のBlog

Gaea2.0の4回目のTutorialを作成していました。

もう4回目のTutorialなのか。

2024-10-20のBlog

なし

2024-10-27のBlog

Gaea2.0の5回目のTutorialを作成していました。

2024-11-10のBlog

作成したPowerPointが載っていました。

2024-11-17のBlog

なし

2024-11-24のBlog

7つ目のTutorialを作成していました。

2024-12-01のBlog

なし

2024-12-08のBlog

8つ目のTutorialを作成していました。

2024-12-22のBlog

9つ目のTutorialを作成していました。

6.2 「Gaeaの勉強」のまとめと感想

これはYouTubeにあげるGaeaのTutorialの作成をしていました。

はっきり言って今年一番成果が出ました。

7. Houdiniの勉強

7.1 Blogのまとめ

2024-01-07のBlog

Houdini 19 - Wall Toolの勉強をしていますね。

2024-01-14のBlog

Houdini 19 - Wall Toolの勉強をしていますね。

2024-01-21のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-01-29のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-02-04のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-02-04のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-02-12のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-02-19のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-03-17のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-03-24のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-03-31のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-04-07のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-04-14のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-04-21のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-04-28のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-05-05のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-05-12のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-05-19のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-05-26のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-06-03のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-06-10のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-06-17のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-06-23のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-07-07のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-07-14のBlog

Houdini 19 - Wall Toolの勉強をしています。

2024-07-22のBlog

Houdini 19 - Wall Toolの勉強をしています。

ここでこのTutorial Seriesの最後のTutorialの実装が終わりました。

2024-08-04のBlog

Houdini 19 - Wall Toolのまとめをやっています。

HoudiniでProceduralな3D Modelを生成するための最低限の要素を以下のようにまとめました。

2024-08-11のBlog

「VertexのためのPointを生成する」には何をする必要があるのかをまとめています。

2024-08-18のBlog

Resampleノードの機能を調査しています。

2024-08-25のBlog

PolyFrameノードについて勉強していました。

更に「PointからLineを生成して面を作成し、その面から立体を作成する」方法をまとめていました。

2024-09-01のBlog

「PointからLineを生成して面を作成し、その面から立体を作成する」を実際にHoudiniで試していました。

2024-09-08のBlog

ConvertlineノードとGroupノードについて勉強していました。

2024-09-15のBlog

For Each Primitiveノードについて勉強していました。

ここでVEX Isn't Scary(HoudiniのTutorial Series)を初めて発見しました。

2024-09-23のBlog

VEXがよく分からないのでVEX Isn't Scary(HoudiniのTutorial Series)を勉強する事にしました。

この週からVEXの勉強と2024-08-04のBlogの勉強の続きをやる事にしました。

2024-10-06のBlog

前の週からVEXの勉強と2024-08-04のBlogの勉強の続きをやる事にしましたが、具体的には

  • VEX Isn't Scaryの勉強
  • 2024-08-04のBlogの勉強の続き

をやる事にしていました。

VEX Isn't Scaryの勉強では

VEX Isn't Scary - Part 1: Basicsの実装をしていました。

更に次のTutorialであるVEX Isn't Scary - Part 2: Conditionalsの勉強もしていました。

凄いやる気を感じます。

2024-08-04のBlogの勉強の続きでは、

Textureを追加する方法を試しています。

Textureの追加以前にMaterial Networkノードを使用してShaderを追加する方法を知らなかったみたいで凄い苦労してやり方を解明していました。

今、Houdini 19 - Wall Toolを見直すとかなりHoudiniの仕組みに詳しくないと理解出来ない技術がそこかしこに使用されています。

これ全部理解できたらHoudiniのUserとしては中級Levelとしても十分でしょう。

初心者には重すぎる気がします。

2024-10-13のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary - Part 2: Conditionalsの実装をして、更にVEX Isn't Scary - Part 3: Functionsの勉強をしていました。

2024-08-04のBlogの勉強の続きでは、

uvTextureノードの使用方法の確認だけやっていました。

2024-10-20のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary - Part 3: Functionsの実装をしていました。

2024-08-04のBlogの勉強の続きでは、

UV Mapの編集方法を調べていました。

2024-10-27のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary - Part 4: Channel Functions の勉強をしていました。

2024-08-04のBlogの勉強の続きでは、

UV Editノードの使用方法を調べていました。

2024-11-10のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary - Part 4: Channel Functions の実装をしていました。

2024-08-04のBlogの勉強の続きでは、

「Digital Assetを作成してDesignerが操作出来るようにする。」を勉強していました。

2024-11-17のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary - Part 5: Loopsの勉強をしていました。

2024-08-04のBlogの勉強の続きでは、

なしでした。

2024-11-24のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary - Part 5: Loopsの実装をしていました。

2024-08-04のBlogの勉強の続きでは、

Digital Assetについての勉強をしていました。

2024-12-01のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary Part 6 Clarificationを勉強していました。

2024-08-04のBlogの勉強の続きでは、

なしでした。

2024-12-08のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary Part 6 Clarificationを実装していました。

2024-08-04のBlogの勉強の続きでは、

もうお終いにするそうです。

2024-12-22のBlog

VEX Isn't Scaryの勉強では、

VEX Isn't Scary Project - Part 1: Line Generationを勉強していました。

7.2 「Houdiniの勉強」のまとめと感想

Houdiniの勉強を始めたのは何と2023の1月からです。

勉強初めて丁度2年が経ちました。

そしてやっとHoudiniの仕組みが理解出来るようになりました。

まあ週一の勉強ですのでこれでも早い方だと思います。

8. UEFNの勉強

8.1 Blogのまとめ

2024-01-07のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-01-14のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-01-21のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-01-29のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-02-04のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-02-12のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-02-19のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-03-17のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-03-24のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-03-31のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-04-07のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-04-14のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-04-21のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-04-28のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-05-05のBlog

お休みしています。

2024-05-12のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-05-19のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-05-26のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-06-03のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-06-10のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-06-17のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-06-23のBlog

Pi Equals Three氏のTutorialを勉強しています。

2024-07-07のBlog

公式のSiteであるCreate Custom NPC Behaviorを勉強しています。

これはUEFNでは兎に角、Mapを公開する方法を勉強したかったのにPi Equals Three氏のTutorialでは中々その方法が教えてもらえないので、別なTutorialを勉強する事にしたからです。

と言ってもこの公式のTutorialで真っ先にMapの公開方法を教えてもらえるわけでもないです。

ここに<何でYouTubeには商業LevelのGameを作成するのに必要でないUE5の技術や知識を得るためのTutorialが溢れているのか>というEssayが書かれていましたが、かなり示唆に富んでいて読み応えがありました。

2024-07-14のBlog

Create Custom NPC Behaviorを実装しています。

2024-07-22のBlog

先週作成したmy_first_npc_behavior.verseのDefaultで生成されるCodeを勉強しています。

2024-08-04のBlog

なし

2024-08-11のBlog

my_first_npc_behavior.verseのDefaultで生成されるCodeの勉強の続きをしています。

2024-08-18のBlog

ClassやObjectの生成方法などのVerseの基礎を復習しています。

2024-08-25のBlog

前回勉強したClassやObjectの生成方法などを実装していました。

2024-09-01のBlog

今までの復習していました。

2024-09-08のBlog

npc_behaviorのDefaultのCodeの続きを勉強していました。

2024-09-15のBlog

一端、UEFNの勉強は中止してHoudiniのVFXについて勉強する事にしました。

8.2 「UEFNの勉強」のまとめと感想

UEFNの勉強はPendingする事にしました。

その理由ですが

  • Pi Equals Three氏のTutorialをいくら勉強しても金銭的な収入になるMapの公開方法は学べない
  • VERSEはFunctional LanguageでこれからのStandardになる。と思われていたのにFunctional Languageが主流になる時代は来ない事が判明したから。

です。

まあ、Photo-RealisticなLevelの作成が完成して凄い神社を作成したら、それをUEFNのMapとして公開して賽銭を集める事はいずれします。

9. DirectX12の勉強

9.1 Blogのまとめ

2024-01-07のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-01-14のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-01-21のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-01-29のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-02-04のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-02-12のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-02-19のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-03-17のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-03-24のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-03-31のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-04-07のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-04-14のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-04-21のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-04-28のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-05-05のBlog

お休みしています。

2024-05-12のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-05-19のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-05-26のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-06-03のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-06-10のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

2024-06-17のBlog

Lötwig Fusel氏のD3D12 Beginners Tutorialと「DirectX 12の魔導書」の勉強を勉強しています。

以下略

9.2 「DirectX 12の勉強」のまとめと感想

これはまあ、こつこつ勉強しています。と言う感じです。

10. Google Appの作成

Google Developer Accountを消します。という連絡がきたので慌ててGoogle Appを作成しました。

で、その内容をYouTubeの動画にまとめたんですが、全く再生されないのでやった甲斐が全く無かったです。

如何に示した週でやりました。

2024-02-26のBlog

2024-03-04のBlog

2024-03-10のBlog

2024-03-17のBlog

11. UE5.4の新しい機能について

2024年の4月にUE5.4がReleaseされました。

このVersionには新しい機能が沢山追加され、それらについて勉強しています。

11.1 Blogのまとめ

2024-04-07のBlog

Motion Designを勉強しています。

2024-04-14のBlog

Motion Designを勉強しています。

2024-04-21のBlog

Motion Designを勉強しています。

2024-04-28のBlog

Motion Designを勉強しています。

そしてUE5.4に新しく追加された他の機能についても調査しています。

2024-05-05のBlog

UE5.4に追加された新しい機能を勉強するために以下の内容を勉強すると書いていました。

これは結構なVolumeです。

こんなに勉強してたなんて全く覚えていませんでした、

これで評価されないんだから、まあ頭に来るのも当然でしょう。

2024-05-12のBlog

Unreal Engine 5.4: Create STUNNING Product Commercials with Motion Designを勉強しています。

2024-05-19のBlog

Unreal Engine 5.4: Create STUNNING Product Commercials with Motion Designの続きを勉強しています。

2024-05-26のBlog

Unreal Engine 5.4: Create STUNNING Product Commercials with Motion Designを実装していたら色々な問題が発生したのでそれをまとめて解決しています。

2024-06-03のBlog

Unreal Engine 5.4: Create STUNNING Product Commercials with Motion Designの問題を直しています。

更にLevel Sequenceの使い方について勉強しています。

2024-06-10のBlog

Texture Graphについて書いてありました。

これってどうなったんでしょう。

5.5で確認したら

普通にありました。

Unreal Engine 5.4 Plant Growth Effect Tutorial In Under 5 Minsを勉強しています。

2024-06-17のBlog

Unreal Engine 5.4 Plant Growth Effect Tutorial In Under 5 Minsを実装しています。

2024-06-23のBlog

Official Android Support for Unreal Engine Virtual Camera を実装しようとして出来なかった事が書かれていました。

後、Level Sequenceの勉強もしていました。

2024-07-07のBlog

Biome Generatorについて勉強しています。

これは木専用のPCGなんですが、勉強した結果、別に普通のPCGでも同じ事が出来るみたいで、何で別な機能として作成したのか不明です。

2024-07-14のBlog

Biome Generatorについて勉強しています。

Create Biome with PCG with this New Biome Plugin in Unreal Engine 5.4 !を実装しています。

木が生成されないで終わっています。

Level Sequenceの勉強もしていました。

Look at Trackingの機能についてある疑問があったのでそれについてTestしていました。

このTestだと厳密に言ったら疑問の解答を得る事は出来ないような気もしますが、今回は今年のまとめなのであんまり深入りはしません。

2024-07-22のBlog

なし

2024-08-04のBlog

前回、Create Biome with PCG with this New Biome Plugin in Unreal Engine 5.4 !を実装したのにErrorになった原因を追究しています。

気が生えるようになりました。

Level Sequenceの勉強もしていました。

2024-08-11のBlog

予定した勉強が終わったので、次に何を勉強するかを考えていました。

Level Sequenceの勉強は続けていました。

11.1「UE5.4の新しい機能について」のまとめと感想

Motion Designに関しては私が学びたい事は商業Levelで使用されている人を引き付ける為に必要なDesignのTechniqueなんです。

別にUE5.4のMotion Designの使用方法が知りたいんじゃないんです。

その辺は少ししか学べなかったのが残念です。

Texture Graphは機会が有ったらもっと学びたいです。

12. AIの勉強

12.1 Blogのまとめ

2024-05-19のBlog

ここからAIの勉強が始まります。

まあ半年前から勉強を始めたんですね。

Jeremy Howard氏のPractical Deep Learning for Codersを勉強すると言っています。

2024-05-19のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

2024-05-26のBlog

Practical Deep Learning for Codersを勉強して理解出来なかった部分(特に環境周り)について調査しています。

2024-06-03のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

2024-06-10のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

2024-06-17のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

後、Omniverseの勉強を一寸だけしていました。

2024-06-23のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

Lecture1の宿題に取り掛かっていますね。

2024-07-07のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

Lecture1の宿題をやっています。

2024-07-14のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

Lectureで使用されたCodeをそのまま書いたらErrorになったので公式Siteにあるお助けSite(Is it a bird? Creating a model from your own data)のCodeを試しています。

2024-07-22のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

Is it a bird? Creating a model from your own dataの続きを勉強しています。

2024-08-04のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

Is it a bird? Creating a model from your own dataの続きを勉強しています。

2024-08-11のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

Is it a bird? Creating a model from your own dataの続きを勉強しています。

Learner()関数を実行してFine Tuningまでやっていますね。

始めてAIを作成した記念すべき週になります。

2024-08-18のBlog

AIで出て来た結果の意味を調べていました。

そしてIs it a bird? Creating a model from your own dataの続きを勉強していました。

以下のImageを示して

鳥か森かと聞いています。

私が作成したAIが

と答えていました。

今、見ても結構感動です。

2024-08-25のBlog

ここでやっとLecture1の宿題である自分独自の画像認識AIの作成を始めています。

リザードンピカチュウの画像の区別がつくAIを作成する事にしました。

以下のIllustrationがリザードンピカチュウかを私の作ったAIに判別させました。

結果です。

2024-09-01のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

この週からLecture2の勉強を始めました。

2024-09-08のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

Lecture 2の動画の続きを見てまとめています。

2024-09-15のBlog

Jeremy Howard氏のPractical Deep Learning for Codersを勉強しています。

Lecture 2の動画の続きを見てまとめています。

前回の勉強の続きをやってるだけですね。

2024-09-23のBlog

この週もLecture2の動画を勉強しているだけでした。

2024-10-06のBlog

この週もLecture2の動画を勉強しているだけでした。

この週でやっと講義を見終わりました。

2024-10-13のBlog

Lecture2をやっと見終わったので、Practical Deep Learning for Codersの2章 Deploymentを読んでいます。

更にここに紹介されていたSample CodeであるCollabのGradio PetsのCodeも一つ一つ読んでいました。

これは途中で終わっていました。

これは全部読み終わった今だから言える事ですが、Lectureの内容より古いので特別勉強する必要はなかったです。

まあ勉強にならないかというとそんな事はなかったですが。

2024-10-20のBlog

CollabのGradio Petsの続きを読んでいます。

そして教科書のThe fastaiの第2章Productionを読んでいます。

これAIに要約させたりして結構面白いです。

2024-10-27のBlog

「CollabのGradio Petsを読む」の続きをやると書いてありましたが、実際は教科書のThe fastaiの第2章Productionの続きを読んでいます。

2024-11-10のBlog

教科書のThe fastaiの第2章Productionの続きを読んでいます。

2024-11-17のBlog

教科書のThe fastaiの第2章Productionの続きを読んでいます。

2024-11-24のBlog

教科書のThe fastaiの第2章Productionの続きを読んでいます。

最後まで読み切りました。

2024-12-01のBlog

教科書のThe fastaiの第2章Productionの内容を復習していました。

2024-12-08のBlog

Lectureの内容を復習していました。

とても全部の復習は出来ません。途中で終わっていました。

2024-12-22のBlog

Lectureの内容の復習の続きをやっていました。

12.2「AIの勉強」のまとめと感想

まだLecture2の途中までしか勉強してないので今、どうこう言える段階ではないです。今年一杯勉強してどうなるかですね。

13. Nvidia Omniverseの勉強

13.1 Blogのまとめ

2024-06-23のBlog

この週からOmniverseの勉強を始めていました。

Getting Started in NVIDIA Omniverseを勉強しています。

更にHow to Setup Nvidia Omniverse も勉強しています。

2024-07-07のBlog

OmniverseのLauncherをInstallしています。

DriveをInstallして起動させますが、Login出来ません。

Adminと打ってLoginしていました。

更にPCを起動させるたびにOmniverseのLauncherが起動するのを停止する方法も記録されていました。

2024-07-14のBlog

Exploring the NVIDIA Omniverse World, Including IsaacSimを勉強しています。

これは韓国語のTutorialで機械翻訳の日本語を読んで勉強したんですが、かなり勉強になりました。

特に公式SiteのOmniverseの見方が凄くよく分かりました。

2024-07-22のBlog

前のBlogで勉強した内容を元に自分でOmniverseの公式Siteを見て何が書かれているのかを勉強していました。

これ、何が書かれているかを理解するのは簡単なんですが、何でそれが書かれているのかを理解するのは結構大変です。

2024-08-04のBlog

先週の続きであるOmniverseの公式Siteを見て何が書かれているのかを勉強していました。

2024-08-11のBlog

今までどんな勉強をしたのかの復習をしていました。

2024-08-18のBlog

久しぶりにOmniverseを起動させていました。

Omniverse Createを起動させたんですが、Save出来ないって書いてありました。

2024-08-25のBlog

この週はどうやったらSave出来るのかを調査すると書いていたんですが、何もしなくてもSave出来るようになっていました。

のでSketchfabにある以下の3D ModelをOmniverse Createに表示させていました。

この車のMaterialは改善したいですね。

後UE5でもこの車は使用出来そうです。

2024-09-01のBlog

先週、Omniverse Createで作成したProjectにLightを追加する方法を勉強していました。

具体的に言うとSetting Up A Project in NVIDIA Omniverse Create Part 2: Lighting & Renderingを勉強しています。

2024-09-08のBlog

前回に勉強したSetting Up A Project in NVIDIA Omniverse Create Part 2: Lighting & Renderingの実装を前に作成した車を配置したProject上でやっています。

HDRIの空に黒い霧が発生しています。

更に車は真っ黒ですし、全然Photo-Realisticには見えませんね。

100点満点で8点ぐらいです。

と書いてありました。

2024-09-15のBlog

この週からIsaac SimのTutorialの勉強に切り替えていました。

Skyentific氏のFrom Reality to Simulation with Isaac Sim (+ RTX3080Ti raffle)を勉強していました。

2024-09-23のBlog

Isaac Simの勉強を以下のTutorial Seriesで勉強する事にしました。

最初のTutorialはIntroだけだったので、2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorialを勉強しています。

2024-10-06のBlog

2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorialを実装しています。

Xacro FileをURDFに変換するところで詰まっています。

これは今でも詰まっている所で、これをここで整理して説明するのは結構しんどいです。

この週は2024年の全体の流れを把握するのが目的なのであまり細かい点には入らないでサラッとまとめておきます。

2024-10-13のBlog

今週は以下の部分をやる事と宣言して

  • Windows TerminalをInstallする
  • WSLをInstallする
  • GitHubからURLを使用してCodeをDownloadする

実際にやりきっていました。

2024-10-20のBlog

以下の3つのやり方を調査すると言っています。

  • Ubuntu内のFileをWindowsに移動する方法
  • Ubuntu内でDataをD fileにSaveする方法
  • 先週勉強した「2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial[3]」がWindow上で動いてるのかどうかの確認をする

それなりの結果を得ていました。

更にXacroをURDFに変換するためにROSをInstallする必要があるのかなどを調査していました。

この辺の細かい内容は後で整理してきちんとまとめます。

2024-10-27のBlog

XacroをURDFに変換するため調査を続行していました。

2024-11-10のBlog

XacroをURDFに変換するため調査を続行していました。

その中でROSをWindowにInstallするための調査をしていました。

2024-11-17のBlog

XacroをURDFに変換するため調査を続行していました。

Install ROS2 Jazzy in Windows by Using WSL - Windows Subsystem for Linuxを勉強していました。

このTutorial通りにやったらROS2はInstall出来たはずです。

2024-11-24のBlog

XacroをURDFに変換するため調査を続行していました。

ROS2をInstallしました。

2024-12-01のBlog

XacroをURDFに変換するため調査を続行していました。

以下の2つの事をやると書いていました。

  • 2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial[3]におけるXacro FileからURDFに変換する手順を復習
  • ROS2でXacro FileをURDFに変換するためのCommandを調査

2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial[3]におけるXacro FileからURDFに変換する手順を復習は出来ないで終わっていました。

2024-12-08のBlog

XacroをURDFに変換するため調査を続行していました。

2 - Importing URDF to NVIDIA Isaac Sim - MuSHR RC Car - Ackermann Tutorial[3]におけるXacro FileからURDFに変換する手順を復習していました。

更に「Xacro FileからURDFを作成する手順」をまとめていました。

2024-12-22のBlog

とうとうXacro FileからURDFに実際に変換するところまで来ました。

結果なんですが、以下のErrorが出てできませんでした。

ああ。

もう本当にがっくりしました。

13.2 「Nvidia Omniverseの勉強」のまとめと感想

これもまだ初めて半年しか経っていません。

今年一杯勉強してからどうこう言う事にします。

14. VFXの勉強

14.1 Blogのまとめ

2024-09-15のBlog

この週からHoudini is HIP - Part 1: What is VFX?を勉強しています。

2024-09-23のBlog

Houdini is HIP - Part 2: The Basicsを勉強していました。

2024-10-06のBlog

Houdini is HIP - Part 3: Geometry and Objectsを勉強していました。

40分もある大作ですが、一回で何とか勉強しきっていました。

2024-10-13のBlog

Houdini is HIP - Part 3: Geometry and Objectsの実装をしていました。

2024-10-20のBlog

Houdini is HIP - Part 4: Renderingの勉強をしていました。

2024-10-27のBlog

Houdini is HIP - Part 4: Renderingの最初の10分を実装していました。

2024-11-10のBlog

Houdini is HIP - Part 4: Renderingの次の10分を勉強していました。

2024-11-17のBlog

Houdini is HIP - Part 4: Renderingの次の10分を実装していました。

Principled ShaderノードのDisplacement Tabを選択してNoiseからEnable Noise Displacementを選択したら、Tutorialのような変化が起きませんでした。

2024-11-24のBlog

前回実装して出来なかったHoudini is HIP - Part 4: Renderingの次の10分の箇所をやり直していました。

Houdini 20.0では出来ない事が判明しました。19.5で試したら出来ました。

2024-12-01のBlog

Houdini19.5で今までのTutorialをやり直しています。

2024-12-08のBlog

「Houdini is HIP - Part 4: Renderingの最後の10分を勉強していました。

2024-12-22のBlog

「Houdini is HIP - Part 4: Renderingの最後の10分を実装していました。

14.2「VFXの勉強」のまとめと感想

これはHoudiniの勉強の続きみたいなものです。

Houdiniは週2回勉強してるようなものです。

その分の成果は欲しいですね。