RadeonでMMDのAVI出力を超高速にするツールを作りました

ダウンロードはこちら→ http://kuramo.ch/mmd/

インストール方法

MikuMikuDance.exeと同じフォルダに d3d9.dll をコピーしてください。

MikuMikuEffectと共に使用する場合は、先にMikuMikuEffectの d3d9.dll を d3d9_mme.dll という名前に変更してください。

使い方

通常どおりにAVIファイルの出力を行ってください。

Javie-0.5.13.201111132326

更新サイトからのみ利用できます。

Javie 0.5.13.201111132326 の変更点
  • 0.5.11で対策した Radeon HD 5000/6000 シリーズの問題に関して、動作速度が遅くなる状態を解消。


具体的には次の処理が速くなります。

  • 画質スイッチ: 最高画質
  • ライト: シャドウの拡散
  • テキストアニメータ: ブラー
  • エフェクト: モーションタイル、差分マット、回転、波紋、レンズ補正、ディスプレイスメントマップ、コーナーピン、ブラー(レンズ)、ブラー(合成)

Javie-0.5.13

ダウンロード: http://sourceforge.jp/projects/javie/releases/
更新サイトからも更新できます。

Javie 0.5.13 の変更点
  • Windows7において、MediaFoundationおよびDXVA2(動画再生支援機能)を利用したMP4等*1の読み込みに対応。また、MediaFoundationで利用可能なオーディオファイルの読み込みに対応。
  • システムメモリからビデオメモリへのデータ転送を高速化。サイズの大きな素材を使用した時などの動作が速くなります。
  • Wave出力で不正なファイル(再生時間が正常値より4倍長いと認識されるファイル)が作成されるバグを修正
  • NVIDIAビデオカードで使用すると「The NVIDIA OpenGL driver lost connection ...」というエラーが出る問題に暫定的に対処(この問題が発生していない環境で処理速度が遅くなる場合があります)


以下は更新サイトでは既に公開済みのものです。

Javie 0.5.12.201110291814 の変更点
  • 2011-10-18リリースの0.5.12でフラクタルノイズと拡散エフェクトが正常に動作しなくなっていた問題を修正
  • 拡散エフェクトで「ランダムに拡散」をオンにしたとき、脈動するような結果となるのを改善
Javie 0.5.12.201110291310 の変更点
  • コーナーピンのパラメーターが特定の条件のときに正常に動作しない問題を修正
  • Twitter連携機能を実験的に追加

MediaFoundationによるファイルの読み込みについて

Windows7でのみ使用できます。Windows VistaにもMediaFoundationはありますが、必要な機能が不足しているようなのでWindows7のみ対応としました。


オーディオファイルについては、MediaFoundationでの読み込みが優先されます。MediaFoundationで読めなかった場合、JavaSound, DirectShow の順に読み込みを試みます。

ビデオファイルの場合、DXVA2(動画再生支援機能)対応のもの*2についてはMediaFoundationで読み込みます。そうでない場合はDirectShowで読み込みます。


なお、動画再生支援機能を使用してはいますが、CPU負荷は高めです。*3

MediaFoundationによる読み込みを制御する

MediaFoundationを使用した読み込みは、まだ不具合が残っている可能性があります。もし、今まで正常に読めていたファイルが読めなくなった等があった場合、Javie.ini に次の一行を書き足すとMediaFoundationによる読み込みを無効にすることができます。

-Djavie.mfsrc.disabled=true


他にも以下の設定が可能です。これらの設定を変更すると編集作業が快適になる可能性がありますが、メモリを多く消費しすぎて不安定になることもあります。これらの設定項目は、いずれ環境設定画面で設定できるようにする予定です。

-Djavie.mfsrc.noSysMem=true

これは、バッファとキャッシュの領域をビデオメモリ上に確保します(デフォルトではシステムメモリを使用)。この設定を行うと少し速くなりますが、読み込むファイルの数が多くなるとビデオメモリが不足してエラーが発生しやすくなります。

-Djavie.mfsrc.bufferFrames=2

右辺の数がバッファ(先読み)するフレーム数です。初期値は2です。

-Djavie.mfsrc.cacheFrames=3

右辺の数がキャッシュするフレーム数です。初期値は3です。この値を大きくすると、編集中に逆方向へのフレームの移動がしやすくなります。


バッファとキャッシュの値を大きくするとメモリを沢山必要とします。-Djavie.mfsrc.noSysMem=true と組み合わせた場合はビデオメモリを消費しますので注意してください。

The NVIDIA OpenGL driver lost connection ... の問題について

今回、暫定的に対応しましたが、今までこの問題が発生していない環境では性能が低下してしまう場合があります。NVIDIAビデオカードを使用していて、今までこの問題は発生していない場合 Javie.ini に次の一行を書き足すことで、この問題への対応を無効にすることができます。

-Djavie.gl.nvTIUUnlimited=true

*1:ビデオカードによって対応フォーマットが異なります

*2:Javieが動作するビデオカードであればMP4には大抵対応しているようです

*3:Direct3DからOpenGLへ転送するための処理などがあるため

「The NVIDIA OpenGL driver lost connection ...」というエラーが出る件についてテストのお願い


Javieを使っていると「The NVIDIA OpenGL driver lost connection ...」というエラーが出る の続報です。


次の場所にあるものだと発生しないかもしれないのでお試しください。また、試したら必ず結果を報告してください。よろしくお願いします。


http://kuramo.ch/javie-experimental/20111102/



※以下、技術的な話

Texture Image Unitが32使える場合に、16より多く使おうとすると発生するとNVIDIAのフォーラムに投稿がありました。

なので、今回のテスト版はTexture Image Unitの使用数を16までに制限してみたものです。