MMF事始め <導入> 改訂版

※この記事は改訂版です。前回の記事で根本解決とならない方法を示してしまったので書き直しました。

現在は開発がストップしてしまっていますが、以前から手を出してみたかったMMF(MikuMikuFlex)に手を出してみました。MMFが初心者にも門戸を開いているにも関わらず、初心者では困って諦めるような落とし穴がありましたので自分用メモを兼ねて同じ思いをする人がいなくなることを願ってここに書いておきます。

MMFとは

 MMFとはMikuMikuFlexの略でニコニコ動画等で人気のあるMikuMikuDance、その拡張機能であるMikuMikuEffectなどの独自ファイル形式に対応したC#MMD描画ライブラリです。

私はC++erですがこれを機会にC#も習得できたらいいな、なんて都合のいいこと考えてたりします。

環境整備

まずは、MMFのページに行ってMMFをダウンロードします。

mmflex.codeplex.com

まだ正式なリリースは行っていないので「DOWNLOADS」からはダウンロード出来ないようで、しばらく探しまわった結果

  1. 「SOURCE CODE」をクリック
  2. 右の方にある「Download」ボタンをクリック

でダウンロードできることに気付きました。

ファイルサイズは155MBほどあり、ダウンロードには少し時間がかかります。ダウンロードが終了したらzipファイルを解凍*1して中に入っているReadMeを参考に環境を整えていきましょう。

 

.Net FrameWork 4.5

http://www.microsoft.com/ja-jp/download/details.aspx?id=3065

DirectX End User Runtime

http://www.microsoft.com/ja-jp/download/details.aspx?id=35

SlimDX End User Runtime ※

http://slimdx.org/download.php

※ 現在は、End User Runtimeの中の.Net4.0、x86を利用してください。

MMFx86版で開発されており、正式リリースのみx64版を同梱します。

この中でDirectXのランタイムだけは指定のURLに飛ぶと何故かWindows10のページに飛ばされてしまうのでこちらを使用してください。

注)クリックすると自動でダウンロードが始まってしまうので注意してください。

 

ダウンロードしたランタイム類のインストールは流れに乗っていくだけなので省略します。

 

また、開発にはMicrosoftVisual Studioが必要です。おそらくVS2013以降のバージョンなら大丈夫だと思います。(VS2015では動作確認済み)実はVSのダウンロード&インストールが一番時間と容量を食ったりするので時間があるときにするのをおすすめします。

サンプル実行まで

さて、環境が整ったところで用意されているサンプルを実行してみましょう。

 

サンプルはMMFのフォルダの中の「Samples」というフォルダの中に10個程度用意されており、段階を踏んでMMFに慣れることができるようになっています。

 

まず、手始めに「01 3D空間をフォームに描画させよう!」を開き、中のVisual Studioのソリューションファイルを開いてビルドすると幾つかコンパイルエラーが出てきます。

 これには

  • MMFの参照追加が必要
  • そもそも「MMFLib」にある「MMF.dll」が最新版ではない

という2つの原因があります。

1つ目は前準備にも書いてあり、故意に行われたものですが2つ目は不具合だと思われます。

まず、1つ目を修正していきましょう。

  1. 「ソリューションエクスプローラー」の「参照」を開き、「MikuMikuFlex」の欄に警告マークが出ていることを確認する。
  2. 「MikuMikuFlex」を右クリックして「削除」を選び、「MikuMikuFlex」を削除する。
  3. 「参照」を右クリックして「参照の追加」を選び、以下の画像の順番でクリックする。

    f:id:HansKIT:20160423163845p:plain

  4. 開いたファイルダイアログで「Samples」内の「MMFLib」 を開き「MikuMikuFlex.dll」選択して「OK」を押す。

     

  5. 「参照マネージャー」に出てきた4で選んだ「MikuMikuFlex」の左にあるチェックボックスにチェックを入れて「OK」をクリック。

 

これで1つ目の問題は解決出来たはずです。

次に2つ目の問題を修正します。

そもそも「MMFLib」にある「MMF.dll」が最新版ではない

この問題を修正するためには、MMFを再コンパイルしてやって「MMF.dll」を生成する必要があります。

MMFのプロジェクトファイルは「MikuMikuFlex」フォルダ内に「MikuMikuFlex」という名前のソリューションファイルです。

プロジェクトファイルが見つかったら開いてください。するとソリューションエクスプローラーにプロジェクトがたくさん読み込まれるはずです。その中の下の方に「MikuMikuFlex」というプロジェクトがあるのでその上で右クリックメニューを開き、「ビルド」をクリックしたらコンパイルが始まります。

========== ビルド: 2 正常終了、0 失敗、0 更新不要、0 スキップ ==========

と出力に出たらコンパイル成功です。

次はコンパイルができ、めでたく「MikuMikuFlex.dll」の最新版が生成されたはずなのでそれを取りに行きます。

最新版dllは「/MikuMikuFlex/MikuMikuFlex/bin/Debug/MikuMikuFlex.dll*2」と結構深いところにあるのでこういう系の作業に慣れていない人は探すのに手間取るかもしれません。

 

最新版が見つかったら「Sample/MMFLib」フォルダの古い「MikuMikuFlex.dll」を上書きしてやったら問題修正完了です!

 

試しにサンプルプロジェクトを一つ開いて実行してみたら無事コンパイルエラーがでなくなっていると思います。

 

今回はここまでにしておきます。

大学が忙しいので次の更新がいつになるかわかりませんが次の記事もよろしくお願いします。

 

*1:注)解凍にLhplusを使うと一部のファイルやフォルダが文字化けするのでおとなしくWindows標準のzip展開ツールを使いましょう

*2:MikuMikuFlex.dllは複数ありますが全てコピーしてください

MMF事始め <導入>

※注意 この記事の内容で幾つか間違いが見つかったので以下の記事に書き直しています

 

hanskit.hatenablog.com

 

 

現在は開発がストップしてしまっていますが、以前から手を出してみたかったMMF(MikuMikuFlex)に手を出してみました。MMFが初心者にも門戸を開いているにも関わらず、初心者では困って諦めるような落とし穴がありましたので自分用メモを兼ねて同じ思いをする人がいなくなることを願ってここに書いておきます。

MMFとは

 MMFとはMikuMikuFlexの略でニコニコ動画等で人気のあるMikuMikuDance、その拡張機能であるMikuMikuEffectなどの独自ファイル形式に対応したC#MMD描画ライブラリです。

私はC++erですがこれを機会にC#も習得できたらいいな、なんて都合のいいこと考えてたりします。

環境整備

まずは、MMFのHPに行ってMMFをダウンロードします。

mmflex.codeplex.com

まだ正式なリリースは行っていないので「DOWNLOADS」からはダウンロード出来ないようで、しばらく探しまわった結果「SOURCE CODE」をクリック後、右の方にある「Download」ボタンでダウンロードできることに気付きました。ファイルサイズは155MBほどあり、ダウンロードには少し時間がかかります。

ダウンロードが終了したらzipファイルを解凍*1して中に入っているReadMeを参考に環境を整えていきましょう。

 

.Net FrameWork 4.5

http://www.microsoft.com/ja-jp/download/details.aspx?id=3065

DirectX End User Runtime

http://www.microsoft.com/ja-jp/download/details.aspx?id=35

SlimDX End User Runtime ※

http://slimdx.org/download.php

※ 現在は、End User Runtimeの中の.Net4.0、x86を利用してください。

MMFx86版で開発されており、正式リリースのみx64版を同梱します。

この中でDirectXのランタイムだけは指定のURLに飛ぶと何故かWindows10のページに飛ばされてしまうのでこちらを使用してください。

注)クリックすると自動でダウンロードが始まってしまうので注意してください。

 

ダウンロードしたランタイム類のインストールは流れに乗っていくだけなので省略します。

 

また、開発にはMicrosoftVisual Studioが必要です。おそらくVS2013以降のバージョンなら大丈夫だと思います。(VS2015では動作確認済み)実はVSのダウンロード&インストールが一番時間と容量を食ったりするので時間があるときにするのをおすすめします。

サンプル実行まで

さて、環境が整ったところで用意されているサンプルを実行してみましょう。

 

サンプルはMMFのフォルダの中の「Samples」というフォルダの中に10個程度用意されており、段階を踏んでMMFに慣れることができるようになっています。

 

まず、手始めに「01 3D空間をフォームに描画させよう!」を開き、中のVisual Studioのソリューションファイルを開いてビルドすると幾つかコンパイルエラーが出てきます。

 これには

  • MMFの参照追加が必要
  • サンプルが使っているMMFが最新版ではない

という2つの原因があります。

1つ目は前準備にも書いてありますが2つ目は不具合だと思われます。

まず、1つ目を修正していきましょう。

  1. 「ソリューションエクスプローラー」の「参照」を開き、「MikuMikuFlex」の欄に警告マークが出ていることを確認する。
  2. 「MikuMikuFlex」を右クリックして「削除」を選び、「MikuMikuFlex」を削除する。
  3. 「参照」を右クリックして「参照の追加」を選び、以下の画像の順番でクリックする。

    f:id:HansKIT:20160423163845p:plain

  4. 開いたファイルダイアログで「Samples」内の「MMFLib」 を開き「MikuMikuFlex.dll」選択して「OK」を押す。

     

  5. 「参照マネージャー」に出てきた4で選んだ「MikuMikuFlex」の左にあるチェックボックスにチェックを入れて「OK」をクリック。

 

これで1つ目の問題は解決出来たはずです。

1つ目のサンプルはこれだけで実行できるようになりますが、その他のサンプルは2つ目の修正が必要です。

以下、2つ目のサンプル、「02 PMXモデルを表示しよう」を例にあげて説明します。

  1. まず、「Form1.cs」の上の方にあるエラーを修正します。

    f:id:HansKIT:20160423172641p:plain

    この2行は最新版のMMFに沿ぐわないので削除してしまいます。別に1行目は「using MMF;」,2行目は「using MMF.CG.Model.MMD;」が対応するので書き換えても良いのですが始めのうちはIntellisence(予測入力支援システム)でMMFの構造を見て学びながら作業したほうが良いと思います。

  2.  次にソースコードの中ほどにあるエラーを修正します。ここからは自分でIntellisenceを見ながら試行錯誤することを今後の自分のためにもおすすめします。幸いにもMMFの構造は比較的わかりやすい良い設計がなされているのでそこまで苦労することはないでしょう。下はIntellisenceを使用しながらの入力作業風景です。f:id:HansKIT:20160423172145p:plain一応、分からない人のために答えを載せておくと

    f:id:HansKIT:20160423173650p:plainとなればOKです。

 

今回はここまでにしておきます。

大学が忙しいので次の更新がいつになるかわかりませんが次の記事もよろしくお願いします。

 

*1:注)解凍にLhplusを使うと一部のファイルやフォルダが文字化けするのでおとなしくWindows標準のzip展開ツールを使いましょう