PaperSloth’s diary

主にゲーム開発関連についての記事を書きます。

UML Notion × Mermaidはいいぞという話

目次

環境

Visual Studio Code(ver:1.77.3)
・Mermaid

Visual Studio Codeに拡張Pluginを追加

まずはCtrl + Shift + Xあるいは拡張機能のアイコンをクリックして拡張機能の追加画面を出す

・Mermaid Markdown Syntax Highlighting
・Mermaid Preview
の2つをインストールする

ここで動作確認のために簡単なMermaidのシーケンス図を記述する
このとき、ファイルの拡張子は.mdに変更する必要がある

```mermaid
sequenceDiagram
    %% Example Comment
    Character Blueprint ->> Weapon Actor: Factory経由でSpawn
    Weapon Actor -->> Character Blueprint: Spawnと同時にOwnerに対してAttach
```

続いて、Command Paletteを開く(Ctrl + Shift + P)

Mermaid Previewをインストールしている状態であれば
ここでPreview Mermaidが選択できる

Previewを開くと実際のMermaidの記述と、生成される図が表示されるようになる

NotionでMermaidを記述する

まずはUMLを追加したいページにコードを追加する

デフォルト設定がJava Scriptになっているため、これをMermaidに変更する


あとは先程記述したMermaidから```mermaid ```の部分を削除してコピペしてやれば簡単にプレビューできる

Mermaidについて

Mermaidで作成可能なものは非常に豊富で
フローチャート、シーケンス図、クラス図、ガントチャート...etcと様々なものを書くことができる
導入に至った経緯としては、図を書いて説明する工数を省きたいといったものからです。

また、Notionで使用できる点も優れていて、例えばチーム開発の際の情報共有にも使いやすいですね。

また、participant as を使うことでtypedef的な書き方が出来ます。
長い名称のものを書くときなんかには便利です。

participant rig as Control Rig
participant animbp as Animation Blueprint

UE5 .NET Core関連のビルドエラーあるいは文字化けしたエラーの対処について

目次

環境

Unreal Engine 5.1.1
・JetBraings Rider 2022.1.1

結論
.NetCoreをインストールすると解決する場合がある
.NET Core 3.1 Runtime (v3.1.32) - Windows x64 Installer のダウンロード

エラーについて

新規PCに移行後に、解決してしまったためスクショを載せれなかったのですが

UE5のプロジェクトに移行した後やBlueprintのプロジェクトを新規作成後に
C++コードを追加しようとするとエラーでビルドできなくなってしまった場合や
プロジェクトをパッケージ化しようとした際などに出力されるエラーになります。

例:
hostfxr.dllに関するエラー
Build.batを実行しているあとに、後半が文字化けしたエラーになっている場合も.NetCoreのComponentが不足しているだけの場合がある


このエラーのややこしい点はVisual Studio Installerで諸々のセットアップを行った際に
C++でのデスクトップ開発、ゲーム開発にチェックを入れていても、.NetCoreのSDK等が含まれないため、少し気付きにくかったりします。


また、この問題はUE5(恐らくUE5.1以降?)で発生するもので、UE4では使用する.Netのバージョンが異なるため発生しません。

お知らせ 株式会社インターネット立方体を設立しました

株式会社インターネット を設立しました

会社HPも作ったよ~(3時間の突貫工事なので、不備があったらこっそり教えてね)
www.internetcube.co

Twitterアカウント
twitter.com


主な事業内容

1. PC/家庭用テレビゲームソフトの企画及び制作
2. AR/VR/MR(Mixed Reality)の研究開発及びコンテンツの制作
3. VTuberのプロダクション/マネジメント/運営
4. 映像及び音楽等のコンテンツの制作
5. イベント、展示会の企画、制作、及び実施
6. 書籍、印刷物の企画、制作、出版及び販売
7. 前各号に附帯関連する一切の事業


基本的にはこれまでフリーランスでやってきたのと同様にゲーム作ったりXRコンテンツを作ったりするのがメインになります。
開発業務の請け負い自体は、夏以降まで一旦予約が埋まっていて難しいかも?という状況です
ただ、別途自身の事業を行う日を設けているため、その期間に色々とコネコネとしております。

今のところ正社員を雇用する予定はありません。
ただ、業務委託でエンジニアを募集することはあるかもです。
その際にはお手伝いしてもらえたら大喜びです!


で、事業内容の中で以下の2点について

3. VTuberのプロダクション/マネジメント/運営
5. イベント、展示会の企画、制作、及び実施

何かしらの配信プラットフォームでオーガナイザー契約を結べたらいいなぁとは思っとります。

また、会場をお借りしてのリアルイベントやアートコンペやゲームジャム等
そういったイベントを開催する際に個人Vの方やイベントをやってみたいけれど実施が難しいという開発者の方などで
法人名義が必要というケースではお手伝いできればと思っています。
(もちろん、状況によってはお応えできないケースもありますが)

上記に関しては会社HPにお問い合わせフォームを設置していますので気軽にご相談をいただければです。
当たり前の話ですが、その際に誰々さんからこういった相談をいただいたという内容を一切口外することはございません。

今後ともどうぞよろしくお願いします( ´∀`)

VTuberのためのトラブルシューティング

概要

VTuberさんが配信でなにかと遭遇したりしなかったりする諸々のトラブルの解決方法を書いていたり書いていなかったり
多分真面目に書くとキリがない
私自身はVTuberの配信を見ているただのおじさんです

環境

・PC
 ・OS: Windows10 Pro
 ・CPU: AMD Ryzen 5 3500
 ・GPU: NVIDIA GeForce RTX 2070
 ・RAM: 64GB
 ・Storage: SSD512GB + SSD2TB + 外付けSSD2TB
 PC周り
 ・Monitor: 43UN700
 ・Keyboard1: HHKB Professional Type-S(PD-KB800BNS)
  Keyboard2: ARESPEAR K100F
 ・Mouse1: MX Anywhere3
  Mouse2: MX Master 2S

・配信機材
 ・AudioInterface: Yamaha AG03
 ・Microphone: Audio-Technica AT2035(コンデンサーマイク)
  ・CANARE XLRケーブル(1.5m)
  ・SUNMON シザーアームマイクスタンド
  ・キクタニ ポップブロッカー
 ・Luppet (Personal License Ver)
 ・LeapMotion
  ・LeapMotion用ネックマウンタ

商品諸々のリンクや定価は記事の末尾に貼っておきます。

どこにでもいるリスナーのよくある視聴環境ですね!

配信全般の設定

歌枠をやりたいけど、音源ってどうしたらいいの?

https://www.youtube.com/channel/UC1tk9F5-MGXEq4LWnjmrtpA
 カラオケ歌っちゃ王の音源を使用するのが安全です
 詳しい規約については上記チャンネルの概要欄を読んでください
 MIDI打ち込みでの音源の場合は諸々の権利を侵害するリスクが少ないですが
 各投稿者さんの動画説明やチャンネル概要を見て問題がないかを事前に確認する必要があります

歌枠をやろうとしたけど、YouTubeが真っ黒な画面で音しか聞こえない(Google Chrome)

 原因としてはChromeのCacheがいっぱいになっていることが多いです
 1. 先ずはGoogleの設定画面を開きます

 2. プライバシーとセキュリティのタブから閲覧データの削除を選択

 3. 全期間を選択してキャッシュされた画像とファイルにチェックを入れてデータを削除

 これでひとまずは解決するとは思いますが、Cacheを消したことでYouTube等のWebサイトからログアウト状態になると思いますので
 再ログインを行ってください。

歌枠をやろうとしたけど、YouTubeの画面がチラつく(Google Chrome)

 原因としてはハードウェアアクセラレーションとの相性問題が多いようです
 1. 先程同様にGoogleの設定画面を開きます
 2. 詳細設定を開いてシステムタブのハードウェア アクセラレーションをオフにする

 ハードウェアアクセラレーションが有効な場合はGPUで処理を行うのですが
 GPUとの相性問題やSpec不足でチラつきが発生するようです
 ハードウェアアクセラレーションをオフにすることでCPU側で処理を行うようになります

AG-03のエコーのかかり具合を調整したい

 AG DSP CONTROLLER を使用することで調整が可能です
 以下のURLから自身のPCのOSに該当したものをDLしてインストールしてください

ヤマハ - ウェブキャスティングミキサー - AG DSP Controller
 Windowsの場合は「AG Controller V1.0.4 for Windows 11/10 (64-bit)」ですね
 起動するとEASY / EXPERTのメニューがありますが
 EASYのEFFECTのつまみを調整することでエコーの強さを調整することが可能です

配信に使えるBGMを探したい

 フリーBGMのサイトから探すのが安心ですね
FREE BGM (music materials) free download|DOVA-SYNDROME
 ・Morning_2
 ・パステルハウス
 ・野良猫は宇宙を目指した_2
 なんかは皆さんも聞き馴染みのあるBGMだと思います
 雑談枠でBGM無しかつ、Live2Dや3Dではないラジオ配信の場合は
 回線都合で止まっているのか、単純に無言の時間なのか判別がつきにくいため
 何かしらを流しておくと親切です

VTube Studioの起動

 SteamからDLする際にデスクトップショートカットを作成しておくと親切
 
 デスクトップショートカットを作成し忘れた!って人向け
 Steamの設定メニューを開く
 
 ダウンロードタブのSTEAMライブラリフォルダーを開く
 
 VTubeStudioをインストールしているドライブのフォルダーを表示
 
 
 CommonのVTubeStudioの中にVTubeStudioがあるので、ここからショートカットを作成しておくと便利
 
 かわいいにゃんね
 
 VTube StudioがSteamとのサーバー同期に失敗したりする場合
 Steam Clientの特定のProcessをkillして再実行するのが手ではありますが
 間違ってSystemのProcessをkillする可能性があるため
 大人しくPCを再起動するのが無難です
 Steam側の障害の場合はお手上げかも。

 因みにVTuber Studio ではなくてVTube Studioです
 言い間違いが多くて気になる民

SHOWROOMで配信する際の設定

SHOWROOMでOBSを使用して配信をしたい

 以下のサポートページにそってポチポチと設定をすればできます(難しいことはなかった記憶)
https://support.showroom-live.com/hc/ja/articles/900003010623-OBS-Studio%E6%9C%80%E6%96%B0%E7%89%88%E3%81%A8%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%82%AD%E3%83%BC%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E9%85%8D%E4%BF%A1
 設定が多くてややこしいよね
 以下にプロファイルが公開されているので、手順に従ってプロファイルをインポートするといい感じに設定してくれるよ
https://support.showroom-live.com/hc/ja/articles/900003224006-SHOWROOM%E6%8E%A8%E5%A5%A8%E8%A8%AD%E5%AE%9A%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6OBS%E3%81%A7%E9%85%8D%E4%BF%A1%E3%82%92%E8%A1%8C%E3%81%86%E6%96%B9%E6%B3%95

SHOWROOM すこアニ (仮) β版 を使おう

 すこアニを使うと配信画面にギフトや星を降らせたり配信が賑やかになって
 SHOWROOMだけでは飛んでしまうコメントログが追いやすいです

SHOWROOM すこアニ♪ (仮) β版
 自身の配信URLのhttps://www.showroom-live.com/ の後のURLを入力して接続を押せばつなげるよ
 1. OBSのソースに「ウィンドウキャプチャ」を追加
 
 2. ウィンドウキャプチャを選択して右クリックメニューから「プロパティ」を開こう
 
 3. ウィンドウからすこアニを選択して一致優先順位をウィンドウのタイトルに一致か、タイトルに一致、同じ種類のウィンドウを選択
 
 4. ウィンドウキャプチャを選択して右クリックメニューから「フィルタを追加」
 
 5. フィルタにクロマキーを追加
 
 6. 色キーの種類を「Custom」に変更
 
 7. 色を選択を押してHTML: の欄に「#dcffdc」を入力
 
 あとはすこアニのレイアウトを調整すればコメントログだけがリスナーに見れるようにできたりするよ
 

 配信に使える背景画像やマイクをお借りしよう
OKUMONO | サムネイルや配信画面に使える背景フリー素材のOKUMONO。VTuber・配信活動に。
 上記のサイトからDLできるよ
 先程のすこアニと組み合わせるとこんな感じの画面が作れるね
 

YouTubeで配信する際の設定


多いというか、気力が若干尽きたので気が向いたら書きます(多分書かない)
SHOWROOMのOBSの設定と同じように設定をポチポチといじればいい感じにできます。

商品リンクとか

(ここから買っても特にぼくにお金が入ることはないです)

AG-03 (定価: ¥18,150ほど)
https://www.yodobashi.com/product/100000001007024202/
AT2035 (定価: ¥19,580)
AT2035|マイクロホン|株式会社オーディオテクニカ
Luppet (個人向け: ¥6,000)
Luppet
LeapMotion (定価: ¥14,000)
Amazon.co.jp: 【国内正規代理店品】 Leap Motion 小型モーションコントローラー 3Dモーション キャプチャー システム : パソコン・周辺機器
LeapMotion ネックマウンタ (¥1,650 - ¥1,700)
LeapMotion用ネックマウンタ - 129製作所 - BOOTH

おまけ

Luppet + LeapMotionの精度が気になるから見てみたいという意見があったので。
標準の環境でもキーボード、マウスの操作がなんとなく分かるのと
じゃんけんをするぐらいならできます~


実際にVTuberとして活動する場合は
UltraLeap IR170をセットアップして、より精度の高い手の制御をしたり
パーフェクトシンク対応をしてより豊かな表情を見せれる方がいいとは思いますが、最低限のお手軽セットだとこんな感じ


最後まで読んでくれたの嬉しいので、ついでに推しの歌でも聞いてって欲しいしチャンネル登録もしてほしい( ´∀`)
www.youtube.com


youtube.com

UE4 Material Expressionの気持ちが知りたい

環境

UE4.27.0

概要

Material Expressionの実装が知りたくて追っていました。
docを読むだけで使い方は分かるものの、具体的な実装までは分からないことが多いためです。
Material FunctionなんかはEditorから実装が見れてお手軽ですね!

Material Expressionの例
図のような緑のノード。ダブルクリックしても実装が見れません。
f:id:PaperSloth:20220407192256p:plain
Desaturationのdocは以下。
Color Expressions | Unreal Engine Documentation

Material Functionの例
図のような青のノード。ダブルクリックすると実装が見れます。
f:id:PaperSloth:20220407192344p:plain

f:id:PaperSloth:20220407192354p:plain


Material Expression自体はかなりの種類があります。
詳細は以下のdocに目を通ると良いでしょう。(以下はUE5のdocです)
Unreal Engine Material Expressions Reference | Unreal Engine Documentation


Material Expressionはどこから見れるの?

1. HLSL Codeから追う

Material EditorのWindow -> Shader Code -> HLSL Codeを開けばMaterial 全体のHLSLが見れます。
f:id:PaperSloth:20220407192905p:plain

適当なEditorにコピペして「desaturation」を検索しますがヒットしません。
これは困った。
f:id:PaperSloth:20220407193107p:plain

実際にはちゃんと実装されているんですが、それは後程解説します。
因みにIncludeされている .ush ですが、これらはUnreal Shader Fileの略称(だと思います)で、色々と便利な関数等が登録されています。

2. MaterialExpression.cpp を追う

実際のMaterial Expressionの実装についてはMaterialExpression.cpp を追うのが一番確実でしょう。
Engine\Source\Runtime\Engine\Private\Materials\MaterialExpression.cpp 内に記述があります。

Desaturationの実装については、UMaterialExpressionDesaturation() を追っていきます。

UMaterialExpressionDesaturation::UMaterialExpressionDesaturation(const FObjectInitializer& ObjectInitializer)
    : Super(ObjectInitializer)
{
    // Structure to hold one-time initialization
    struct FConstructorStatics
    {
        FText NAME_Color;
        FText NAME_Utility;
        FConstructorStatics()
            : NAME_Color(LOCTEXT( "Color", "Color" ))
            , NAME_Utility(LOCTEXT( "Utility", "Utility" ))
        {
        }
    };
    static FConstructorStatics ConstructorStatics;

    LuminanceFactors = FLinearColor(0.3f, 0.59f, 0.11f, 0.0f);

#if WITH_EDITORONLY_DATA
    MenuCategories.Add(ConstructorStatics.NAME_Color);
    MenuCategories.Add(ConstructorStatics.NAME_Utility);
#endif
}

#if WITH_EDITOR
int32 UMaterialExpressionDesaturation::Compile(class FMaterialCompiler* Compiler, int32 OutputIndex)
{
    if(!Input.GetTracedInput().Expression)
        return Compiler->Errorf(TEXT("Missing Desaturation input"));

    int32 Color = Compiler->ForceCast(Input.Compile(Compiler), MCT_Float3, MFCF_ExactMatch|MFCF_ReplicateValue),
            Grey = Compiler->Dot(Color,Compiler->Constant3(LuminanceFactors.R,LuminanceFactors.G,LuminanceFactors.B));

    if(Fraction.GetTracedInput().Expression)
        return Compiler->Lerp(Color,Grey,Fraction.Compile(Compiler));
    else
        return Grey;
}
#endif // WITH_EDITOR

パッと見は何をしているのかよくわからないかもしれませんが、実装自体は非常にシンプルです。
UMaterialExpressionDesaturation::Compile() 内の一部分だけを見ればよいです。

int32 UMaterialExpressionDesaturation::Compile(class FMaterialCompiler* Compiler, int32 OutputIndex)
{
    ...
    int32 Color = Compiler->ForceCast(Input.Compile(Compiler), MCT_Float3, MFCF_ExactMatch|MFCF_ReplicateValue),
            Grey = Compiler->Dot(Color,Compiler->Constant3(LuminanceFactors.R,LuminanceFactors.G,LuminanceFactors.B));

    if(Fraction.GetTracedInput().Expression)
        return Compiler->Lerp(Color,Grey,Fraction.Compile(Compiler));
    else
        return Grey;
}

入力されたColorにDot() でLuminanceFactorsを指定し
入力されたFractionがある場合にはLerpして、ない場合にはDot() の結果を返しています。
LuminanceFactors はUMaterialExpressionDesaturation() で定義されており、カラーからモノトーンな色に変換するための適当な係数です。

LuminanceFactors = FLinearColor(0.3f, 0.59f, 0.11f, 0.0f);

3. HLSL Codeでは追えないの?

1. でコピーしたHLSLをもう一度見てみます。
3000行近いコードが生成されて何がなんだか……という感じなのですが、実際に見るべきは
CalcPixelMaterialInputs() 内を見れば良いです。

void CalcPixelMaterialInputs(in out FMaterialPixelParameters Parameters, in out FPixelMaterialInputs PixelMaterialInputs)
{
    // Initial calculations (required for Normal)

    // The Normal is a special case as it might have its own expressions and also be used to calculate other inputs, so perform the assignment here
    PixelMaterialInputs.Normal = MaterialFloat3(0.00000000,0.00000000,1.00000000);


    // Note that here MaterialNormal can be in world space or tangent space
    float3 MaterialNormal = GetMaterialNormal(Parameters, PixelMaterialInputs);

#if MATERIAL_TANGENTSPACENORMAL
#if SIMPLE_FORWARD_SHADING
    Parameters.WorldNormal = float3(0, 0, 1);
#endif

#if FEATURE_LEVEL >= FEATURE_LEVEL_SM4
    // Mobile will rely on only the final normalize for performance
    MaterialNormal = normalize(MaterialNormal);
#endif

    // normalizing after the tangent space to world space conversion improves quality with sheared bases (UV layout to WS causes shrearing)
    // use full precision normalize to avoid overflows
    Parameters.WorldNormal = TransformTangentNormalToWorld(Parameters.TangentToWorld, MaterialNormal);

#else //MATERIAL_TANGENTSPACENORMAL

    Parameters.WorldNormal = normalize(MaterialNormal);

#endif //MATERIAL_TANGENTSPACENORMAL

#if MATERIAL_TANGENTSPACENORMAL
    // flip the normal for backfaces being rendered with a two-sided material
    Parameters.WorldNormal *= Parameters.TwoSidedSign;
#endif

    Parameters.ReflectionVector = ReflectionAboutCustomWorldNormal(Parameters, Parameters.WorldNormal, false);

#if !PARTICLE_SPRITE_FACTORY
    Parameters.Particle.MotionBlurFade = 1.0f;
#endif // !PARTICLE_SPRITE_FACTORY

    // Now the rest of the inputs
    MaterialFloat3 Local0 = lerp(MaterialFloat3(0.00000000,0.00000000,0.00000000),Material.VectorExpressions[1].rgb,MaterialFloat(Material.ScalarExpressions[0].x));
    MaterialFloat Local1 = MaterialStoreTexCoordScale(Parameters, Parameters.TexCoords[0].xy, 0);
    MaterialFloat4 Local2 = ProcessMaterialLinearColorTextureLookup(Texture2DSampleBias(Material.Texture2D_0, Material.Texture2D_0Sampler,Parameters.TexCoords[0].xy,View.MaterialTextureMipBias));
    MaterialFloat Local3 = MaterialStoreTexSample(Parameters, Local2, 0);
    MaterialFloat Local4 = dot(Local2.rgb, MaterialFloat3(0.30000001,0.58999997,0.11000000));
    MaterialFloat3 Local5 = lerp(Local2.rgb,MaterialFloat3(Local4,Local4,Local4),MaterialFloat(0.75000000));

    PixelMaterialInputs.EmissiveColor = Local0;
    PixelMaterialInputs.Opacity = 1.00000000;
    PixelMaterialInputs.OpacityMask = 1.00000000;
    PixelMaterialInputs.BaseColor = Local5;
    PixelMaterialInputs.Metallic = 0.00000000;
    PixelMaterialInputs.Specular = 0.50000000;
    PixelMaterialInputs.Roughness = 0.50000000;
    PixelMaterialInputs.Anisotropy = 0.00000000;
    PixelMaterialInputs.Tangent = MaterialFloat3(1.00000000,0.00000000,0.00000000);
    PixelMaterialInputs.Subsurface = 0;
    PixelMaterialInputs.AmbientOcclusion = 1.00000000;
    PixelMaterialInputs.Refraction = 0;
    PixelMaterialInputs.PixelDepthOffset = 0.00000000;
    PixelMaterialInputs.ShadingModel = 1;


#if MATERIAL_USES_ANISOTROPY
    Parameters.WorldTangent = CalculateAnisotropyTangent(Parameters, PixelMaterialInputs);
#else
    Parameters.WorldTangent = 0;
#endif
}

またしても長くて何がなんだか……という感じなのですが、実際に見るべき箇所はたったの2行です。

MaterialFloat Local4 = dot(Local2.rgb, MaterialFloat3(0.30000001,0.58999997,0.11000000));
MaterialFloat3 Local5 = lerp(Local2.rgb,MaterialFloat3(Local4,Local4,Local4),MaterialFloat(0.75000000));

この処理をよく見るとDesaturation() の記述はないものの、実行している処理は先程MaterialExpression.cpp で見たものと同じです。
入力されたColor に対してdot() で LuminanceFactors = FLinearColor(0.3f, 0.59f, 0.11f, 0.0f);と同じ係数を使用して
入力されたFractionに対してLerp() を使用しているだけです。

まとめ

MathExpressionの実装がどうなっているのか知りたくて色々と追ってみましたが
上記のようにEngine側のCodeとHLSL Codeから追うことができます。

何かしらの参考になれば幸いです!
以上です。

書籍紹介 箱が一緒に働く人が読んでたら嬉しい書籍一覧

概要

※そのうちまとめる!!!!!!
まだ書いてる途中だけど、とりあえずババーンと公開しちゃうか~の気持ち
オススメ度とか、本の理解しやすさ、オススメ理由くらい書きなー?
とりあえず一部を列挙しただけ


最近、別業種でオススメ書籍一覧を公開されている方の記事を見てこれは良いなと思ったのでゲーム/AR/VRえんじにゃー向けに書いてみようと思って書きなぐりました。
割と仕事に関係ない趣味のものがちょいちょい混ざってます

ざっくり箱の経歴

ツール/言語 ジャンル 期間
Unity/C# モバイル運営/開発 1年
UE4/C++ 家庭用ゲーム 3ヶ月(会社ないなったので短め)
Unity/C# モバイル新規開発 1年
UE4/C++ VR R&D 1年半
C++ ツール作成 2年半
Unity/C# AR R&D 5ヶ月

実務的にはUE4とUnityトントンぐらいですね
趣味としてはUE4の方が長めという感じです
こういう経歴の箱がなんか良いらしいって言ってたなぁぐらいの感じで読んでもらえればです
ここのリンクから買おうがどこから買おうが、箱には何の利益にもなりません。

エンジニアリング (全般)

エンジニアリング (Animation)

エンジニアリング(Graphics)

Direct3D12 ゲームグラフィックス実践ガイド

Direct3D12 ゲームグラフィックス実践ガイド | Pocol |本 | 通販 | Amazon

ゲーム制作者になるための3Dグラフィックス技術 改訂3版

ゲーム制作者になるための3Dグラフィックス技術 改訂3版 | 西川 善司 |本 | 通販 | Amazon

MFSR AC Vの沼にハマって・・・2年目

この記事は もなふわすい~とる~む Advent Calendar 2021 - Adventar
12/17(17日目)の記事です。
Tech系とはちょっと分けたかったのですが、空いてる枠を埋めてたら3つ書くことになりました。
前々回の(といってもTech系という程でもないです)
papersloth.hatenablog.com
前回の
https://papersloth.hatenablog.com/entry/2021_mnfw_ac_02_day8papersloth.hatenablog.com



昨年に引き続き雑多な自分語り日記みたくなってしまった(申し訳NASA)

昨年の記事
papersloth.hatenablog.com
papersloth.hatenablog.com

巻乃もなか さんとは

Twitter巻乃もなか🐑VTuber 12/10 もなふわ3周年🥰 (@monaka_0_0_7) | Twitter
SHOWROOMもなふわすい〜とる〜む 🐑 - Profile - SHOWROOM
YouTubeもなふわちゃんねる - YouTube
・FANBOX:巻乃もなか|pixivFANBOX


カメラと星とマンガとコンビニスイーツが好きで生活リズムガタガタな女子校生(らしいです)
他にも工具やバイクが好きだったりと多趣味で歌も魅力的なかわいらしい子です。
雑学についても幅広い知識を持っており、雑談配信でも聞いていて飽きることがないのが魅力です!

ヤンデレとよく間違われるけど皆への愛が強いだけ(らしいです...)

要約するとみんなの最推しのエンジニアです(?)


そして、最近の出来事としては「池袋東口 肉寿司」の看板娘としても選ばれました!
掲出期間及びコラボメニューの販売期間は2021/12/24(金)~2022/3/31(木)を予定されています。
肉寿司でニッポンを元気に!『池袋東口 肉寿司』看板娘オーディション - SHOWROOM

沼にハマって2年目・・・

冒頭でも述べたように巻乃もなか さんはカメラやバイクが好きな子です。
で、それに触発されて昨年の記事ではカメラとバイクを買った話をしました。
あれから1年が過ぎて

カメラの話

見事にカメラ沼に沈みました。
結論から言いますとカメラが増えました。

どうせいっぱい買うでしょ!ってことで防湿庫が生えてきました。
これについては安かろう悪かろうで、ないよりマシ程度の物でしたが( ´∀`)


で、巻乃 さんが入門用としてオススメしていたα6000を買ってから少し経って……
最初に生えてきたのがこの子でした。
SONY α7C です!
買った理由はですね、なんかTLのみんながポンポン買ってたからです・・・w
この頃はカメラ片手に色んな物や風景を撮って楽しんでいました!

巻乃もなか さんに出会えたおかげで、自然のプラネタリウムを満喫することもできました。
出会わなければ、生涯拝むことがなかった最高の景色でした・・・

カメラがあるとついつい色んなところに足を伸ばしたくなるものです。


続いて買ったのがこちら!
NICON COOLPIX B500
こちらはですね、巻乃もなか さんが配信中に「月を撮るのはいいぞ~!」という話をしており
とりあえず入門用で!ってことで買ってみました。
これまた今までに見れなかった知らない世界を知ることができました・・・
本当に感謝しかないです。

巻乃もなか さんが撮った月の写真はこちらの記事で見れるので、気になる方は是非ともFANBOXにご加入を!
www.fanbox.cc



巻乃もなか さんに出会って、カメラ沼にハマったおかげで
カメラ好きの友人とストリートスナップに出かけたりと楽しみが増えました。


そして、バイクも買ったので行動範囲が広がって色々なところで素敵な景色に出会えました。


最後に買ったのが
RICOH GR IIIです!
f:id:PaperSloth:20211107194751j:plain
GR IIIを買ったきっかけは、巻乃もなか さんがGR IIを持っていて
桜の写真がとても美しかったことと、GR IIIの無骨なデザインに惹かれたからです!

GR IIIはめちゃくちゃ万能なカメラで、バイクで出かける際にも気軽に持っていけるので大変重宝しています!


カメラのファインダー越しでしか見られない景色を知ることができたのは全て巻乃もなか さんのおかげです!
こんなに楽しい世界を教えてくれたことに本当に本当に感謝しています!!!


バイクの話

昨年の記事ではバイクの話の最後にこんなことを書いていました。

そのうち中型、大型2輪の免許も取ろうかなと思っています。

結論から言いますと、その半年後には中型/大型2輪免許を取りました。
で、気が付いたら中型と大型のバイクを納車していました。

普通自動二輪(中型バイク)免許取得日:4/6
大型自動二輪(大型バイク)免許取得日:5/11
中型バイク(Ninja 150 RR)納車日:5/15
大型バイク(YZF-R1)納車日:6/12

免許取得と購入のペースが控えめに言って頭おかしいんですね。



それぞれ、購入のきっかけとしては
Ninja 150RRについては、巻乃もなか さんが配信の中で
「2st(2ストロークエンジン)のバイクのオイルの独特の匂いが好き」って話をしていて

2stのバイクに乗ってみたいな~と思って探したのがきっかけです。
時代に逆行してエコとは真逆の位置にいる対極的なバイクですが
2st独特の加速感が楽しく、メンテが大変で素人の自分には敷居が高いバイクでしたが
買ってからというもの、バイクに乗る喜びをより一層深くしれて、本当に楽しいです。

YZF-R1購入のきっかけはフォロワーが「200psの世界はいいぞ」って言ってたので
割となんとなくの興味で買いました。(自分のYZF-R1は型が古いので152psです)


バイクを買ってからというもの、行動範囲が広がってたくさんの景色を見ることができました。

念願のさわやかにも行くことができました!バイク万歳!

他にもバイクレンタルでNinja 250やMT-03やMEGURO K3に乗ったりと楽しみが増えてハッピーです( ´∀`)
f:id:PaperSloth:20211107200725j:plain
f:id:PaperSloth:20211107200924j:plain

まとめ

推しに出会えたおかげで、カメラ沼とバイク沼にハマって
人生の楽しみが本当にたくさんたくさん増えました!

出会えていなかったら絶対に見ることができなかった景色が見れて
出会えていなかったら絶対に行くことがなかったであろう場所に行けました

自分の人生を大きく変えた出会いというのはこれまでも沢山ありましたが
ここまで大きく変えたのは最初で最後なんじゃないかと思います。

推し事はいいぞ。
「お前もMDCにならないか?」


以上、最高の景色と楽しい毎日をありがとう!
f:id:PaperSloth:20211107201416j:plain
f:id:PaperSloth:20211107201419j:plain