”3Dmigotoのツール解説”

この記事を読むのにかかる時間 3
管理人

現在、コメント(メール量)が普段よりも多くなっている関係上
コメントによる承認と返信は、控えさせていただいております。

ただ、コメント内容は全て読みメール返信しています。
届いていない場合には、迷惑メール確認やメールアドレスが正しいかを
確認してください(基本的に、1~2日以内に返信するように心がけています)

9月3日AM7時(日本時間)までに来たコメントは全てメール返信しました
メールアドレスを変えてコメント再送信した方は、メール受領した場合に
簡単で良いので受領確認メールを返信してください。

9月19日(金)~22日(月)まで、管理人が完全に対応できない日時が発生します。
「コメント承認、メール等のやり取り」など一連の業務が行えません。
上記日時に該当する場合、予めご了承ください。

3Dmigotoを解説してみた!!

”3Dmigoto” というツールは、簡単に言うとゲームの見た目をリアルタイムで
自由に変えられる、PCゲーム用の強力なツールです。特に3Dゲームで使われます。
画像や3D描写を改善する目的、開発者がゲームグラフィックのデバック目的で
使用するなど用途は多岐に渡ります。

色々な使い方が出来るのですが、「Unity」また「UnrealEngine」で開発された
ゲーム内部のシェーダーを特定して削除することもできます。
これだけ聞いて「あ~なるほどね!!」ってそもそも思う人は極少数な訳でして
1つ1つ解説していきます。

ちなみに似たようなツールに「BepInEx」というものもあります。
3Dmingotoの後に視聴すると良いですよ♪

管理人

少しだけ日数がかかるのですが、メルマガを開設する予定です

法令や公序良俗を守った運用するので、直接的な事は話せないですが
皆さんが関心がある情報を別途定期配信しますので、当サイトの
お気に入り登録と合わせてお願いしますね♪

シェーダーって何だ?

例えば人物像を人の手で描くときには、身体全体のバランスを考えて
顔の大きさ、手足の長さや太さなど大きな所から描く人が多いと思います。
そこから「目はキラキラした目が良いかな?」とか「マフラー身に着けると可愛いな」
など細かなパーツを描いていきます。
私はイラストレイターでは無いですが、「マフラーからイラストを先に描こう」など
普通はしない事は素人目からも分かりますよね。
ただ、それらのパーツはコンピューター上で処理する場合、個別に設定できるのです。

これがゲーム制作をしてキャラを作成する場合には、パーツごとにキャラを組み立てる
ように1つのキャラに各パーツが存在する見方と言えるのです。

▼のアニメキャラを例に挙げて見てみましょう

オレンジの丸枠は、それぞれのパーツを表しています
イラストが見えやすいようにしているので4つの
囲み丸ですが、実際には靴、靴下など様々なパーツで
1つのキャラが構成されています

 

 

 

 

最初に解説した ”シェーダー” というのはパーツに近い概念です。
「プラモデルの各種パーツ、ジグソーパズルならばピース」のようなものです。

管理人

ある程度、専門知識を有している人ならば
「シェーダーはパーツではないですよね…」
という感じに思えるので厳密な事を捕捉すると、”メッシュ” という言葉が
ここでのパーツと言えまして、シェーダーはそのメッシュと結びついている
見た目のプログラムです

ここでは便宜上、分かり易くするため「シェーダー=パーツ」としています

シェーダーには番号が付いている

「”3Dmigoto”というツールは、ゲーム内部のシェーダーを特定して削除する事も可能」

先ほどの解説を理解していれば、勘の良い人なら
「パーツごとに何かの番号やIDが割り振られているのでは?」
と思い付くかもしれませんね。

その通りで、そのID番号が分かれば先ほどのアニメイラストを例に取ればマフラーだけ
取り除いたり、帽子だけ外したりと出来る訳なんです。

”3Dmigoto” を使用した方ならコードの中で、”hash=319715f1791f3b86”
というような16進数文字列を見た事あると思います。それがシェーダーIDになります。

デバック目的って具体的に何ができるの?

3Dmingotoにおけるデバック使用目的などで使用されるケースもあると紹介しましたが
どのような事ができるかを下記にまとめたものになります。

行える事内容
特定オブジェクト表示不可不要な描画パスを無効にして原因特定を絞り込む
描画バグの解析オブジェクトの描画順序が原因か、シェーダーの計算が原因か
など特定する
グラフィック品質の向上シェーダーを調整して反射、影の表現などを改善する
不要なUI要素の除去スクリーンショットや動画撮影時に邪魔になるUI要素を
一時的に非表示にする

「Unity」また「UnrealEngine」のゲームについて

「Unity」また「UnrealEngine」などの開発エンジンで、”3Dmigoto” が使えますが
どういうゲームがどんな開発エンジンかを調べるのは正直みなさんは面倒…だと思います。
プレイヤー個人がゲームプレイ前に開発エンジンを気にする人はあまり、いませんよねw

この記事を視聴者の方の多くは、私の姉妹サイトから来られていると思います。
姉妹サイトでは、「Unity」または「UnrealEngine」で開発したゲームを紹介しています。

記事の修正作業をしている関係上、リンク機能するのに数日かかるかもです…

成人向けゲームのリンクなので、興味無い方はリンク先に注意して下さい

3Dmigotoの導入方法について

3Dmigotoサイトへアクセスしましたら、少し下にスクロールして降りていくと
▼の画像内にありますAssets内の「3Dmigoto-1.3.4.zip」を
クリックしてダウンロードします。

Step2.「3Dmigoto」起動前の準備

「3Dmigoto-1.3.4.zip」zipファイルを解凍します。
「x32フォルダ」と「x64フォルダ」がありますが、これがどういう意味かと言うと
導入するゲームが32ビット制作ゲームなのか64ビット制作ゲームなのかで
分かれたフォルダ構成になっているという事です。

そのゲームに対応したビットフォルダを使う必要があるという事ですね。

管理人

ここ4~5年で制作されたゲームは、64ビットが大半です。
見分け方ですが、「Ctrl + Shift + Esc」を押すとタスクマネージャーが
開きますので、そこでゲーム起動プログラム(~.exe)の後に(32ビット)という
名前ならば32ビット制作されたゲーム、記載無しなら64ビット制作です

▼の画像はゲームではありませんが、32ビットのプログラムで
あることが分かりますよね

32ビット版で必要ファイル

「x32フォルダ」フォルダの中身を確認しますと、6つのファイルがあります。
この中で必要なのは、グレーアウトした3つのファイルになります。
「d3d11.dll」「d3dcompiler_46.dll」「d3dx.ini」

64ビット版で必要ファイル

「x64フォルダ」フォルダの中身を確認しますと、6つのファイルがあります。
この中で必要なのは、グレーアウトした3つのファイルになります。
「d3d11.dll」「d3dcompiler_46.dll」「d3dx.ini」

これらの3つのファイルをUnityの場合は、ゲーム起動ファイル(~.exe)と
同じ階層に
入れる事が最初のステップになります。
UnrealEngineの場合には、ファイルを入れる階層が全く異なります。
後ほど解説していますので注意して下さい

管理人

2015~2021年ぐらいまでに発売された作品の中には親切に
32ビット版と64ビット版を分けてあるゲームも存在します。
いわゆるOSビット数の転換期の時期に当たるため製作者の配慮ですね。

どんなコードが必要なのか?

これらのファイルを入れただけでは当然ながら何も起こりません。
「d3dx.ini」というファイルをテキストファイルで編集する必要があります。

最初に解説したように色々な使い方が出来ますが、
「ゲーム内部のシェーダーを特定して削除する場合」には下記のようなコードで成立させます。
「d3dx.ini」に書いてあるコードは全削除して▼のコードをコピペします。

[Logging]
calls=0
input=0
debug=0
unbuffered=0
force_cpu_affinity=0
convergence=0
separation=0
debug_locks=0

[Hunting]
hunting=0

[Rendering]
cache_shaders=0
export_fixed=0
export_shaders=0
export_hlsl=0
dump_usage=0

[ShaderOverrideUniqueName#1]
hash=
handling=skip

上の ”hash=  ”の部分が空白ですが、ここにシェーダー番号を入れます。
複数ある場合には、▼のようにして追記していきます

[ShaderOverrideUniqueName#1]
hash=
handling=skip

[ShaderOverrideUniqueName#2]
hash=
handling=skip

[ShaderOverrideUniqueName#3]
hash=
handling=skip

UnrealEngineで使用する方法

「UnrealEngine」で制作されたゲームで ”3Dmigoto” を利用する場合は、Unityゲームと
異なり手順が少し増えたりします。

手順を解説する前に、予備知識として知るべき情報が1つあります。
それが「DirectX(ダイレクトエックス)」、バージョンごとに呼ばれる
「DX11」と「DX12」という技術概念です。

簡単に言えば、ゲームがグラフィックを描画するための「言語」や「ルール」の
ようなものだと考えてください。
DX11はその古いバージョン、DX12は新しいバージョンです。

「UnrealEngine」の場合、「DX11」と「DX12」を使いゲーム開発するかは
開発初期段階で決定されるのですが、 ”3Dmigoto” はDX12は非対応のツールです。

「じゃあ、DX12制作された場合は無理なのかぁ…」
という訳ではなくてゲーム起動時にDX11で起動することが可能です。

つまり、「UnrealEngine」で ”3Dmigoto” を使う手間とは、このバージョンの違いです。

管理人

どのゲームが「UnrealEngine」なのかについては、
姉妹サイトのUnrealEngineの記事を参考にして下さい。

DX11で開発されている場合の手順

「x64フォルダ」フォルダの中身を確認しますと、6つのファイルがあります。
この中で必要なのは、グレーアウトした3つのファイルになります。
「d3d11.dll」「d3dcompiler_46.dll」「d3dx.ini」

UnrealEngineの時点で32ビットゲームはないはずなので64ビット版ですね。
本当に極一部で32ビット版のゲームが存在します
「ゲーム本体名フォルダ>>Binaries>>Win64」
というフォルダ階層に3つのファイルを移動させます。
同じ階層に「ゲーム名.exe」という起動ファイルがある場所になります。

続いて、先ほどゲーム本体に入れた「d3dx.ini」を開きます。
テキストファイルに書かれている文字列を全部消します。
その上で▼の文字列を入れて保存かけてください

[Logging]
calls=0
input=0
debug=0
unbuffered=0
force_cpu_affinity=0
convergence=0
separation=0
debug_locks=0

[Hunting]
hunting=0

[System]
allow_create_device=1
show_fps=0
show_visual_stats=0
show_shaders=0

[Rendering]
cache_shaders=0
export_fixed=0
export_shaders=0
export_hlsl=0
dump_usage=0

[ShaderOverrideUniqueName#1]
hash=
handling=skip

後はゲーム起動を行えば良いでしょう。

DX12で開発されている場合の手順

「x64フォルダ」フォルダの中身を確認しますと、6つのファイルがあります。
この中で必要なのは、グレーアウトした3つのファイルになります。
「d3d11.dll」「d3dcompiler_46.dll」「d3dx.ini」

「ゲーム本体名フォルダ>>Binaries>>Win64」
というフォルダ階層に3つのファイルを移動させます。
同じ階層に「ゲーム名.exe」という起動ファイルがある場所になります。

ここからの作業がDX12用の特別な作業が必要になってきます。

「ゲーム名.exe」を右クリックした後に、ショートカットを作成します。
ショートカット作成した後に、プロパティを起動してリンク先という欄の末尾に
「-dx11」という文字列を追記します。
※この時に半角を開けてから -dx11 を入力してください

続いて、先ほどゲーム本体に入れた「d3dx.ini」を開きます。
テキストファイルに書かれている文字列を全部消します。
その上で▼の文字列を入れて保存かけてください

[Logging]
calls=0
input=0
debug=0
unbuffered=0
force_cpu_affinity=0
convergence=0
separation=0
debug_locks=0

[Hunting]
hunting=0

[System]
allow_create_device=1
show_fps=0
show_visual_stats=0
show_shaders=0

[Rendering]
cache_shaders=0
export_fixed=0
export_shaders=0
export_hlsl=0
dump_usage=0

[ShaderOverrideUniqueName#1]
hash=
handling=skip

DX12の場合には、先ほど作成したショートカット経由では無いと
”3Dmigoto” として起動しませんし、場合によってエラー音が鳴って正常起動しません。

「UnrealEngine」でどのゲームがDX11なのかDX12なのかは、
姉妹サイトのUnrealEngineの記事を参考にして下さい。
個別記事のコメントで、分かるようにしています。

管理人

当ブログでもアフィリエイトリンクはありますが、
まだまだ充実していない状況です。
成人用ゲームに興味のある方は、是非とも姉妹サイトにて
購入支援していただけると助かります(*- -)(*_ _)ペコリ

4件のコメント

素晴らしい記事ですね。
いろいろ助かります。

UE版のほうの説明でhashについて何も書かれてないですが、hashは書かないとだめですよね?

Unity、UnrealEngine共にハッシュ情報は必要ですね。
メールにて少し捕捉します

いつもお世話になっております。

早速の技術的な記事の掲載ありがとうございます。
Unity、UEでhashの特定方法異なる(使用するコマンド、ツールが異なる?)と認識しています。
勉強不足で申し訳ございませんが、具体的なやり方に辿り付けず、管理者様のノウハウをご教授いただけますと幸いです。

姉妹サイトも少しずつ掲載が再開されていて安心いたしました。
これからも応援させていただきます。

少しずつ姉妹サイトに新記事を追加していく予定です♪
メールにて、補足情報を記載して送りましたの確認ください

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
管理人
ブログ初心者向けサイト「ブログ×ビギナー」、略して "ブロビギ” を運営しています。初心者の登龍門と言える月1万円を達成できる方法を、初心者の視点を重視しながら徹底的に解説している記事を重点に書いています。 複数サイトで月間PV 100万達成。得意分野はWEBマーケティング、人材育成。ビジネス書は1000冊以上の読んだことがある読書家でもでもあります。