MENU

NVIDIAユーザー必見!高性能グラボでMMDの高画質化設定

グラフィックボードをNVIDIAのGTX 1060 6GBからRTX 3060 12GBに交換した。約8年前の発売の1060と、約4年前の発売の3060では、当然にグラボの基礎性能が違いすぎる。だがしかし!グラボを交換しただけではMMDは「自動的に高画質」にはならなかったのだ!😱 筆者が色々試した結果、安定して60Hzで最も綺麗にリアルタイム表示できる設定を見つけたので、その設定方法のご紹介です。

大和 司

フルHDのディスプレイで60Hz描画の場合のみの設定方法です。1920×1080より高画素のディスプレイの場合や、リフレッシュレートが120, 144Hzなどのゲーミング用モニターの場合については未検証です。ご注意ください。

4Kディスプレイや120Hz以上の場合は要注意

まず4Kディスプレイになると画素数が2倍になるため、3060では能力不足になりがち。またリフレッシュレートも60Hzではなくて、ゲーミング用の120, 144Hz以上の場合も、これまた3060では能力不足になりがち。なので3060で十分快適なのは、前提として1920×1080(フルHD)の60Hz、という前提になります。

(約 5,000文字の記事です。)

更新履歴
2025/07/15 公開

目次

そもそもグラボの能力で60fps以上出るか?

あなたが編集したいステージやキャラクター数体をMMD本体に読み込んで、②情報表示、③fps無制限でMMDを再生させてみよう。fps表示が常に60fps以上なら、高画質化できる。

もしMMEなどの重い複数エフェクトのせいだったり、人数が多すぎたり、モデルそのもののデータ量が多かったりすれば、いくらグラボの性能が高くても、60fpsを常に下回る場合がある。あるいはシンプルにグラボの性能が低いばあいも、そうなる。その場合はお手上げ。高画質化できません。

大和 司

私の環境では、GTX 1060 6GBではMMDでVRAM不足になったことはないが、処理速度が遅いため、fps無制限でも48fps程度が頭打ちだった。うろ覚え。でも、もうグラボ交換しちゃったし……。

高性能グラボに変えただけでは高画質化されない理由

私の場合、3060に変えたところ、再生状態で約110~170fpsくらいで推移した。モデルのみだと330fpsくらい出たw

だがしかし!私のモニターのリフレッシュレートは、ごく普通の60Hz。これが上限だ。ゲーミング用ディスプレイみたいに120Hz, 144Hzなど出ない。なので60Hz以上のfpsは、はっきり言って無駄なのだ。

無駄にグラボに電力を使って無駄にフレーム情報を破棄させている状態。

モニターのHzとfpsが一致していないと、絵が乱れる?

そう、その通り!実はモニターのリフレッシュレートとfpsが一致していないと、厳密に言うと「絵が乱れる」のだ!これを専門用語でティアリング(Tearing)という。

ドスパラのこのヘルプページが一番分かりやすかった。

私の場合、1060の48fpsでも、当然ティアリングが出ていた(画面上側で6分の1あたりで描画が切り替わっている印象?)。見づらい。80~90fpsが最もカクツク感じだ。動きの激しいシーンでは目が追いつかない(というかブレた絵に見える。)

だが60の倍数である120や300fpsでは当然カクツキが減る。

せっかく60fps越えしていても、これまたティアリングやスタッタリングがでて角付いていては、せっかく60Hz越えできているのに、絵が綺麗じゃない。コレジャナイ。なんで~😭

60フレームのmp4動画と同じ見た目にできないの?

大和 司

なのでMMD動画をavi 60フレームでUT Video Codecで出力し、AviutilでNVENCでmp4化した「60フレームのmp4動画」のほうがヌルヌルと綺麗に描画されるのだ。1060時代はそれしか手が無かったが、せっかく3060で60fps越えしているのだから、mp4化しなくても綺麗にヌルヌル動かすにはどうすれば……😭

60フレームの動画としてMMDから書き出せば、ティアリングのない「綺麗な1枚絵」が1秒あたり60枚描画される。これをMMD上で直接実現できないのか?と思って色々テストしてみた。

MMDの「60fps制限」はときどき58fpsにズレる

③の2行下の60fps制限、これを試してみたが、それでもモデルの動きの激しいシーンなどでときどき不意に58fpsに落ちるのだ。なぜ?GPU的には余裕が有るはずなのに……。色々調べてみた結果、決定的な情報は見つからなかったが、どうやらMMD側のバグというか仕様制限というか、要するに2021年製のグラボに対して上手くfps制限(指定)ができていないみたい。

そりゃそうだ、MMDは2011年で開発終了しているのだから、無理もない。

そうなると安定して60fpsにならず、ティアリングが出たり出なかったりする。イライラする。

【解決策】NVIDIAコントロールパネルで設定する

色々試した結果、NVIDIAのコントロールパネルで強制的にfpsを60fpsに指定し、垂直同期をONにすることで、解決した😍

STEP
デスクトップ背景を右クリック
STEP
MMD専用の設定を追加する
  1. 3D設定の管理
  2. プログラム設定をクリック
  3. (ほとんどの人はおそらく)mikumikudance.exeが登録されていないので追加ボタンからexeを追加
STEP
垂直同期をオン、最大フレームレートを60FPSにする

かなり下の方にこの2つの設定がある。②についてはオン:60を入力(私の場合ではなぜかデフォルトが58だった。謎。60に書き換えてOKボタン)

STEP
重要!画面右下の「適用ボタン」を必ず押す

これを押さないと適用されません。

画面を最大化していたらあまりにも画面の右下にボタンがあって気が付かず。無駄に1時間ほど悩んでしまった😭

STEP
MMDを起動させて60fps固定状態を確認

そうなっていれば成功。そうなっていなければ、指定したmikumikudance.exeのファイルパスが違っていないか確認する。(例えば複数箇所にMMD.exeを置いていたり、別のバージョンのMMD.exeを指定していないか?)

垂直同期:オンのみだと、fpsが58前後で60fps一定にならない

これも謎。理屈上、NVIDIAコンパネで垂直同期ONならば、MMD出力が60fpsに貼り付いてもよさそうだが、試してみたらなぜか58fps。60fpsぴったりではないので不定期なカクツキ(スタッタリング)が表示されて不快だ。

だからNVIDIAコンパネ上で明示的に最大フレームレートを最大60fpsに指定する必要があった。そしてMMD側のfpsは無制限にすること。この2点が肝。

(予測)おそらく4Kや120, 144Hzディスプレイでもヌルヌル?

上記設定であれば、4Kディスプレイの場合でもグラボの能力次第では、60fpsをキープできるかもしれない。

またリフレッシュレートが120Hz以上のゲーミングディスプレイでも、60fpsでキープされれば、いわゆるYouTubeなどの高画素動画と同じフレームレートであり、しかも垂直同期がONなのでティアリングは発生しないようだ。また120Hzのモニタならば同じフレームが2回表示されるだけで、60fpsの動画と実質何も違いがない

144Hzのモニタの場合、周期が合わないタイミングで若干のスタッタリングが有り得るが、垂直同期がONなのでティアリングは発生しないようだ。(もしNVIDIAコンパネで最大フレームレートを72fps指定で、MMD再生時でも実際に72fpsキープできるなら、144の半分なのでスタッタリングは回避できるはず。だがグラボの処理能力的に72fpsキープできるかどうかは、状況による?)

技術解説

垂直同期のオンとは?

詳細はこちらの解説が詳しいので、探究心のある人はあとでじっくりどうぞ。

垂直同期の項目がいくつかあるが、これ、実はゲーマー向けにNVIDIAが色々工夫して生み出したオプションが複数あるってことね。具体的には、

  • 前述のようにティアリングが出てきても構わないから、とにかく応答速度をキープしたい
  • ティアリングの他にカクツキ(スタッタリング, stuttering)があっても構わない、というなりふり構わぬ設定
  • いいとこ取りのハイブリッド作戦だったり

などなど。だが今回のMMDでは「60fps固定で、ティアリングもスタッタリングもなし」という場合、垂直同期がオンでいい。この設定だと「1秒間に60枚の静止画」が表示されることになる。つまりヌルヌル表示になる。

この60fps縛り(指定)は、MMD本体では上手く指定しきれなかったので、NVIDIAコントロールパネル側で指定してあげて、しかも垂直同期をオンに指定したわけ。これでヌルヌル描画設定になった。

大和 司

くどいが、MMDでfps無制限状態で60fps以上出ていないなら、この指定は例えNVIDIAコンパネ側で指定しても無意味。グラボを買い換えるか、MMEでの重いエフェクトを減らすか、軽いモデルへの変更や人数を絞るか、しかない。

垂直同期:高速、はGPUの無駄遣い

MMDの場合、ここをオン以外の「高速」にしても60fpsに貼り付く。だがこの高速モード、どうやら内部的に可能な限りの速度で「何でもかんでも全部レンダリング」し、最終的に60回/秒でフレームを送出しているという、GPUの無駄遣いだったりする(それでもゲーム用途ではそれに意味があるから実装されたアルゴリズムとのこと)。だがMMDでは普通に垂直同期:ON、60fpsでプログレッシブな60枚の静止画/秒になる上に、グラボも無駄に稼働しないので、これが正解。電気も節約できる😊

だったらグローバル設定で全部それにしたら?No!

私は最初、MMDのみの指定ではなくて、グローバル設定で垂直同期:ON、60fps固定にしてみた。ところが、思わぬ弊害が出てきた。

というのもUnreal Engineを普通に開けば、最大負荷状態で120fpsで描画されている。例えディスプレイが60Hzであったとしても、マウスやキーボードの入力操作の処理は1秒間に120回判定されている。つまりレスポンスが割と早い。

スタッタリングが画面のどこかで起こっているかも知れないが、キャラクターがマウスやキーボード操作に応じて120分の1秒で確実に動き始めるわけよ。ゲームではレスポンスが超重要。

ところがこれをNVIDIAコンパネで60fpsに固定すると、入力操作のレスポンスが「ワンテンポ遅れる」のだ😭 いわゆるモッサリ感が出てしまう。素早くキャラクターを右向きにさせたはずが、ワンテンポ遅れて振り向くのだ。う~ん、この違和感。

大和 司

そういう理由で、ゲーム系の表現では、ティアリングを許容してでも、こういった入力操作の遅延を少なくするために、fpsは重要だったりする。

なのでNVIDIAコンパネのグローバル設定はいじらずに上で示したとおり、「MMD.exeのみ特例的な設定」にしておいた方が無難。

そもそもMMD自体が最近のグラボの高性能を引き出せない

そりゃタイムマシンにでも乗らない限り、未来の技術なんて知りようがないから、MMD側では最近の高性能グラボの「その高性能な部分」を使っていない。なので1060と3060の違いはシンプルに「VRAMメモリの転送速度やクロックなど、基本的な部分でのハードウェア部分の高速化」が理由であって、アーキテクチャとかはほぼ無関係。なのでMMDについては30系と40系では速度差がほぼないらしい。どちらもGDDR 6。むしろ30系のほうがメモリ帯域幅が広い360GB/s (192bit)ので、40系よりも「MMD限定」で言えば、3060のほうが軽快に動く。(4060は272GB/s (128bit))

MMDが特殊すぎるのだ

要するにMMDはあまりにもレガシー過ぎて、3DCG処理部分のコアな部分しか使えないので、最新グラボの旨味を引き出せないのだ。

  • DirectX 9ベース(MikuMikuDance本体)
  • シングルスレッド依存
  • GPUの最新機能は一切活用されていない
  • 主に描画負荷は「ピクセルシェーダー(後処理・エフェクト)」と「ポリゴン描画数」による
  • MMEによるポストエフェクト(エッジ・SSA0・オーバーレイ系)の処理は帯域とフィルレートに依存
  • フィルレートとは、1秒間にGPUが処理できるピクセル数(画面に描画できるピクセル数)のこと

高性能グラボでヌルヌルなMMD体験を!

MMDの場合、高性能グラボに交換しただけではダメだったとは。普通の人は気が付かないだろう。あれぇ?こんなもんか?でもfpsは爆速になっているし、気のせいか……。なんて思うくらいかもしれないが、私は気が付いてしまった。そしてようやくmp4動画と同じプログレッシブ60枚/秒の、ヌルヌルしたリッチな表現をMMD画面上でリアルタイムに手に入れることができた。

大和 司

この設定と、元の「垂直同期:アプリに任せる、最大フレームレート:グローバル(アプリによるコントロール)」とを見比べると、やはり1フレーム毎の「フラット感、チラツキのなさ」が異なる。何度か繰り返せば分かる程度の、それくらい小さな違いだが、知ってしまえば、垂直同期ONの60fps固定のほうが、よりmp4動画の見た目に近い。

これがやりたかった。GTX 1060からRTX 3060になったらそれができるかも?と思って、苦難を乗り越えてのこの達成感は、半端ない😍

fpsは早くても遅くてもダメ。丁度いいfps(Hz)ってのが有ることを学んだ。フレームレートとリフレッシュレートの関係を深く学べたいい機会でした。

皆さんもよいMMD体験を。👍

今回の創作活動は約2時間(累積 約4,341時間)
(1,070回目のブログ更新)

目次