現在、コメント(メール量)が普段よりも多くなっている関係上
コメントによる承認と返信は、控えさせていただいております。
ただ、コメント内容は全て読みメール返信しています。
届いていない場合には、迷惑メール確認やメールアドレスが正しいかを
確認してください(基本的に、1~2日以内に返信するように心がけています)
9月3日AM7時(日本時間)までに来たコメントは全てメール返信しました
メールアドレスを変えてコメント再送信した方は、メール受領した場合に
簡単で良いので受領確認メールを返信してください。
9月19日(金)~22日(月)まで、管理人が完全に対応できない日時が発生します。
「コメント承認、メール等のやり取り」など一連の業務が行えません。
上記日時に該当する場合、予めご了承ください。
Contents
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の記事を参考にして下さい。
個別記事のコメントで、分かるようにしています。
当ブログでもアフィリエイトリンクはありますが、
まだまだ充実していない状況です。
成人用ゲームに興味のある方は、是非とも姉妹サイトにて
購入支援していただけると助かります(*- -)(*_ _)ペコリ
素晴らしい記事ですね。
いろいろ助かります。
UE版のほうの説明でhashについて何も書かれてないですが、hashは書かないとだめですよね?
Unity、UnrealEngine共にハッシュ情報は必要ですね。
メールにて少し捕捉します
いつもお世話になっております。
早速の技術的な記事の掲載ありがとうございます。
Unity、UEでhashの特定方法異なる(使用するコマンド、ツールが異なる?)と認識しています。
勉強不足で申し訳ございませんが、具体的なやり方に辿り付けず、管理者様のノウハウをご教授いただけますと幸いです。
姉妹サイトも少しずつ掲載が再開されていて安心いたしました。
これからも応援させていただきます。
少しずつ姉妹サイトに新記事を追加していく予定です♪
メールにて、補足情報を記載して送りましたの確認ください